กลับไปหน้าบทความ

อ่าน 4 นาที

โปรโตคอลการส่งข้อความแอปพลิเคชันเว็บ

โปรโตคอลชั้นแอปพลิเคชัน/รูปแบบการจัดลำดับข้อมูล/การสื่อสารระหว่างกระบวนการ/โปรโตคอลอินเทอร์เน็ต/เจสัน/มิดเดิลแวร์ที่เน้นข้อความ/มิดเดิลแวร์/โปรโตคอลเครือข่าย

WAMPเป็น ซับโปรโตคอล WebSocketที่จดทะเบียนที่IANA ระบุไว้เพื่อรองรับRPC แบบกำหนดเส้นทาง และPubSubเป้าหมายในการออกแบบคือการจัดหามาตรฐาน แบบเปิด...

โปรโตคอลการส่งข้อความแอปพลิเคชันเว็บ

WAMPเป็น ซับโปรโตคอล WebSocketที่จดทะเบียนที่IANA [ 1 ]ระบุไว้[ 2 ]เพื่อรองรับRPC แบบกำหนดเส้นทาง และPubSubเป้าหมายในการออกแบบ[ 3 ]คือการจัดหามาตรฐาน แบบเปิด สำหรับการแลกเปลี่ยนข้อความแบบเรียลไทม์ระหว่างส่วนประกอบของแอปพลิเคชัน และอำนวยความสะดวกในการสร้าง สถาปัตยกรรม ที่เชื่อมโยงกันอย่างหลวมๆโดยอิงตามไมโครเซอร์วิสด้วยเหตุนี้ จึงเป็นEnterprise Service Bus (ESB) ที่เหมาะสม [ 4 ]สำหรับการพัฒนาเว็บแอปพลิเคชันที่ตอบสนองได้ดี หรือการประสานงานอุปกรณ์ IoT ที่เชื่อมต่อหลายเครื่อง[ 5 ]

ลักษณะเฉพาะ

โครงสร้าง

WAMP ต้องการ[ 6 ] ช่องทางการส่งข้อความ แบบฟูลดูเพล็กซ์ที่เชื่อถือได้และเรียง ลำดับ เป็นเลเยอร์การขนส่งและโดยค่าเริ่มต้นจะใช้ WebSocket อย่างไรก็ตาม การใช้งานสามารถใช้การขนส่งอื่นๆ ที่ตรงกับคุณลักษณะเหล่านี้และสื่อสารกับ WAMP ผ่านซ็อกเก็ตดิบ[ 7 ]ซ็อกเก็ต UnixหรือHTTP long poll

การแปลงข้อความ เป็นอนุกรม ถือว่า[ 8 ]มีจำนวนเต็ม สตริง และประเภทลำดับที่เรียงลำดับพร้อมใช้งาน และค่าเริ่มต้นคือJSONเนื่องจากเป็นรูปแบบที่พบได้บ่อยที่สุดที่นำเสนอสิ่งเหล่านี้ การใช้งานมักจะจัดเตรียมMessagePackเป็นทางเลือกที่เร็วกว่า JSON โดยแลกกับการพึ่งพาเพิ่มเติม[ 9 ]

ขั้นตอนการทำงาน

WAMP ได้รับการออกแบบทางสถาปัตยกรรมโดยเน้นการสื่อสารระหว่างไคลเอ็นต์กับไคลเอ็นต์ โดยมีซอฟต์แวร์ส่วนกลางคือเราเตอร์ ทำหน้าที่ส่งข้อความระหว่างไคลเอ็นต์ ขั้นตอนการแลกเปลี่ยนข้อมูลโดยทั่วไปมีดังนี้: [ 10 ]

  • ไคลเอนต์เชื่อมต่อกับเราเตอร์โดยใช้ช่องทางการสื่อสารเพื่อสร้างเซสชัน
  • เราเตอร์จะระบุตัวตนของไคลเอ็นต์และให้สิทธิ์แก่ไคลเอ็นต์เหล่านั้นสำหรับเซสชันปัจจุบัน
  • ไคลเอนต์ส่งข้อความไปยังเราเตอร์ ซึ่งเราเตอร์จะส่งต่อข้อความเหล่านั้นไปยังปลายทางที่ถูกต้องโดยใช้ URI ที่แนบมาด้วย

ไคลเอนต์ส่งข้อความเหล่านี้โดยใช้สองฟังก์ชันพื้นฐานระดับสูง ได้แก่ RPC และ PUB/SUB ซึ่งมีการโต้ตอบหลักสี่อย่าง:

  • register : ไคลเอนต์จะเปิดเผยขั้นตอนการทำงานเพื่อให้สามารถเรียกใช้จากระยะไกลได้
  • การเรียกใช้ : ไคลเอนต์ขอให้เราเตอร์รับผลลัพธ์ของกระบวนการที่เปิดเผยจากไคลเอนต์อื่น
  • สมัครรับข้อมูล : ลูกค้าแจ้งความสนใจในหัวข้อใดหัวข้อหนึ่ง
  • เผยแพร่ : ลูกค้าเผยแพร่ข้อมูลเกี่ยวกับหัวข้อนี้

สิ่งนี้อาจมีความแตกต่างเล็กน้อยขึ้นอยู่กับการขนส่งพื้นฐาน[ 11 ]อย่างไรก็ตาม รายละเอียดการใช้งานจะถูกซ่อนไว้จากผู้ใช้ปลายทางซึ่งเขียนโปรแกรมด้วยสองฟังก์ชันพื้นฐานระดับสูงเท่านั้น ได้แก่ RPC และ PubSub

ความปลอดภัย

เนื่องจาก WAMP ใช้ WebSocket การเชื่อมต่อจึงสามารถเข้ารหัสด้วยTLSได้ แม้ว่าจะไม่ได้มีการรักษาความลับ อย่างสมบูรณ์ แต่ก็มีการนำกลไกหลายอย่างมาใช้เพื่อแยกส่วนประกอบและหลีกเลี่ยง การโจมตีแบบคนกลาง (man-in-the-middle attacks ) การใช้งานเริ่มต้นจะทำให้การพยายามลงทะเบียนขั้นตอนที่ลงทะเบียนไว้แล้วล้มเหลว

เราเตอร์สามารถกำหนดรีล์มเป็นโดเมนการบริหารได้ และไคลเอ็นต์ต้องระบุว่าต้องการเข้าร่วมรีล์มใดเมื่อเชื่อมต่อ เมื่อเข้าร่วมแล้ว รีล์มจะทำหน้าที่เป็นเนมสเปซป้องกันไม่ให้ไคลเอ็นต์ที่เชื่อมต่อกับรีล์มหนึ่งใช้ ID ที่กำหนดไว้ในรีล์มอื่นสำหรับ RPC และ PubSub นอกจากนี้ รีล์มยังมีสิทธิ์ที่แนบมาด้วย และสามารถจำกัดไคลเอ็นต์ให้ใช้ได้เฉพาะชุดย่อยของแอ็กชัน REGISTER/CALL/PubSub ที่มีอยู่เท่านั้น

บางโดเมนสามารถเข้าร่วมได้เฉพาะไคลเอ็นต์ที่ผ่านการตรวจสอบสิทธิ์แล้วเท่านั้น โดยใช้วิธีการตรวจสอบสิทธิ์ต่างๆ เช่น การใช้ใบรับรอง TLS , คุกกี้หรือตั๋วแบบง่ายๆ

RPC ที่กำหนดเส้นทาง

แตกต่างจาก RPC แบบดั้งเดิม ซึ่งผู้เรียกจะส่งคำขอไปยังหน่วยงานที่ให้บริการกระบวนการโดยตรง (โดยทั่วไปคือเซิร์ฟเวอร์แบ็กเอนด์) และเป็นแบบทิศทางเดียวอย่างเคร่งครัด (จากไคลเอ็นต์ไปยังเซิร์ฟเวอร์) แต่ RPC ใน WAMP จะถูกส่งผ่านมิดเดิลแวร์และทำงานได้แบบสองทิศทาง

การลงทะเบียน RPC จะทำผ่านเราเตอร์ WAMP และการเรียกใช้โปรซีเดอร์ก็ทำผ่านเราเตอร์ WAMP เช่นกัน นั่นหมายความว่า ลูกค้าสามารถส่ง RPC ทั้งหมดผ่านการเชื่อมต่อเดียวกับเราเตอร์ WAMP ได้ และไม่จำเป็นต้องรู้ว่าลูกค้ารายใดกำลังให้บริการโปรซีเดอร์อยู่ ลูกค้ารายนั้นอยู่ที่ใด หรือจะระบุที่อยู่ได้อย่างไร ซึ่งสามารถเปลี่ยนแปลงได้ระหว่างการเรียกใช้ ทำให้สามารถใช้งานฟีเจอร์ขั้นสูง เช่นการกระจายโหลดหรือการสำรองข้อมูลเมื่อเกิดข้อผิดพลาด สำหรับการเรียกใช้โปร ซีเดอร์ได้

นอกจากนี้ยังหมายความว่าไคลเอ็นต์ WAMP ทั้งหมดมีความเท่าเทียมกันในแง่ที่ว่าพวกเขาสามารถนำเสนอขั้นตอนการเรียกใช้งานได้ ซึ่งช่วยหลีกเลี่ยงความแตกต่างแบบดั้งเดิมระหว่างไคลเอ็นต์และแบ็กเอนด์เซิร์ฟเวอร์ และช่วยให้สถาปัตยกรรมที่ไคลเอ็นต์เบราว์เซอร์เรียกใช้ขั้นตอนบนไคลเอ็นต์เบราว์เซอร์อื่น ๆ เป็นไปได้ ด้วย API ที่ให้ความรู้สึกเหมือนการสื่อสารแบบ peer-to-peer

อย่างไรก็ตาม แม้จะมีสถาปัตยกรรมแบบหลายระดับ เราเตอร์ก็ยังคงเป็นจุดเดียวที่อาจเกิดความล้มเหลวได้ ด้วยเหตุนี้ แผนงานการใช้งานเราเตอร์บางส่วนจึงรวมคุณสมบัติการจัดกลุ่มไว้ด้วย[ 12 ]

การนำไปใช้

ลูกค้า

เนื่องจากเป้าหมายหลักของ WAMP คือแอปพลิเคชันบนเว็บและอินเทอร์เน็ตของสรรพสิ่ง (IoT) การใช้งานไคลเอ็นต์รุ่นแรกจึงใช้ภาษาที่ได้รับการยอมรับอย่างดีในอุตสาหกรรมเหล่านี้ (แสดงเฉพาะไคลเอ็นต์ WAMP v2 เท่านั้น):

ไลบรารีไคลเอ็นต์ภาษา
แองกูลาร์แวมป์JavaScriptสำหรับเฟรมเวิร์กAngularJS
ออโต้บาห์นซีพีพีซี++ 11
แวมป์ลวีแล็บวิว (จี)
ออโต้บาห์นเจเอสJavaScript ( เบราว์เซอร์และNode.js )
ออโตบาห์นไพธอนไพธอน
แวมปี้ไพธอน
เน็ต::ดับบลิวเอ็มพีเพิร์ล
แบ็คโบน.WAMPJavaScript สำหรับไลบรารีBackbone.js
ซีพีพีดับบลิวเอ็มพีซี++ 11
เออร์วาเออร์ลัง
จาวัมปาชวา
โลวี่ลัว
เอ็มดีแวมป์ออบเจกทีฟซี
มินเนี่ยนพีพี
rx.wampJavaScript สำหรับไลบรารีReact
ทางหลวงพีพี
แวมป์ โปโคซี++
wampccซี++
แวมป์ชาร์ปซี#
แวมปี้.เจเอสJavaScript (เฉพาะในเบราว์เซอร์)
เน็กซัสไป

ข้อกำหนดขั้นต่ำในการสร้างไคลเอ็นต์ WAMP คือความสามารถในการใช้ซ็อกเก็ตและการแปลงข้อมูลเป็น JSON ดังนั้น ภาษาโปรแกรมสมัยใหม่หลายภาษาจึงมีคุณสมบัติตรงตามข้อกำหนดเหล่านี้อยู่แล้วในไลบรารีมาตรฐานของตน คุณสมบัติเพิ่มเติมที่จะเพิ่มการพึ่งพา เช่น การเข้ารหัส TLS หรือการแปลงข้อมูลเป็น JSON ด้วย MessagePack นั้นเป็นตัวเลือกเสริม

อย่างไรก็ตาม ลักษณะการเชื่อมต่อแบบต่อเนื่องของ WebSocket จำเป็นต้องใช้ไลบรารีแบบไม่บล็อกและAPI แบบอะซิงโครนัส ในภาษาที่มีกลไกอย่างเป็นทางการเพียงกลไกเดียว เช่น JavaScript, Erlang หรือ Go จะไม่มีปัญหา แต่สำหรับภาษาที่มีโซลูชันที่แข่งขันกันหลายอย่างสำหรับการเขียนโปรแกรมแบบอะซิงโครนัส เช่น Python หรือ PHP จะบังคับให้ผู้เขียนฝั่งไคลเอ็นต์ต้องเลือกใช้ส่วนใดส่วนหนึ่งของระบบนิเวศนั้น

ด้วยเหตุผลเดียวกัน การผสานรวมโปรเจกต์เก่าๆ ก็อาจต้องใช้ความพยายามเช่นกัน ตัวอย่างเช่น เฟรมเวิร์ก Python สำหรับเว็บส่วนใหญ่ใช้WSGIซึ่งเป็น API แบบซิงโครนัส และการเรียกใช้ไคลเอ็นต์ WAMP ภายในเวิร์กเกอร์ WSGI จำเป็นต้องใช้อะแดปเตอร์แบบแมนนวล เช่น crochet

เราเตอร์

แม้ว่าเราเตอร์จะสามารถฝังลงในโค้ดแอปพลิเคชันได้โดยตรงในทางเทคนิค และไลบรารีไคลเอ็นต์บางตัวก็มีเราเตอร์ให้ด้วย แต่สถาปัตยกรรมนี้ไม่แนะนำตามข้อกำหนด[ 13 ]

เนื่องจากเราเตอร์เป็นชิ้นส่วนที่เคลื่อนไหวได้ จึงควรใช้มันเป็นกล่องดำที่สามารถเปลี่ยนได้ เหมือนกับที่เราพิจารณาใช้ApacheหรือNginxสำหรับHTTP :

เราเตอร์ภาษา
บอนดี้เออร์ลัง
ครอสบาร์.ไอโอPython (CPython และPyPy )
เออร์วาเออร์ลัง
wampccซี++
จาวัมปาชวา
ทางหลวงพีพี
แวมป์.อาร์ทีJavaScript (เฉพาะ Node.js)
แวมป์ชาร์ปซี#
วิโอลาลัว
ไนท์ไลฟ์-แรบบิทJavaScript (เฉพาะ Node.js)
เน็กซัสไป

Tavendoบริษัทที่เป็นผู้ริเริ่มโปรโตคอลนี้ ยังเป็นผู้เขียนCrossbar.ioซึ่งโปรโมตตัวเองว่าเป็นการใช้งานเราเตอร์มาตรฐาน[ 14 ]เนื่องจากพวกเขาสนับสนุนสถาปัตยกรรมแบบไมโครเซอร์วิส Crossbar.io จึงฝังตัวจัดการบริการสำหรับการโฮสต์และตรวจสอบส่วนประกอบแอป WAMP เซิร์ฟเวอร์เว็บไฟล์คงที่ และคอนเทนเนอร์ WSGI ไว้ด้วย การเขียนด้วย ไลบรารี Twistedทำให้เป็นหนึ่งในการใช้งานที่สามารถตั้งค่าในสภาพแวดล้อมการผลิตได้โดยไม่ต้องใช้พร็อกซี โดยมีเป้าหมายเพื่อทดแทนสแต็กต่างๆ เช่น Nginx ที่เกี่ยวข้องกับSupervisorและGunicorn

กรณีศึกษา

เนื่องจาก WAMP เป็นโปรโตคอลย่อยของ WebSocket จึงเหมาะสมอย่างเป็นธรรมชาติในทุกที่ที่ใช้เว็บซ็อกเก็ตแบบดิบ เช่น วิธีการซิงโครไนซ์ไคลเอ็นต์ เช่น เว็บเบราว์เซอร์ พุชการแจ้งเตือนไปยังไคลเอ็นต์เหล่านั้น และอนุญาตให้มีการทำงานร่วมกันแบบเรียลไทม์อย่างนุ่มนวลระหว่างผู้ใช้[ 15 ]นอกจากนี้ยังมีข้อจำกัดเช่นเดียวกัน คือต้องมีการสนับสนุนไคลเอ็นต์ ซึ่งไม่มีในInternet Explorerเวอร์ชันที่เก่ากว่า 10 [ 16 ]ปัญหานี้ได้รับการแก้ไขโดยการมีอยู่ของpolyfills [ 17 ]โดยใช้เทคโนโลยีที่พกพาสะดวกกว่า เช่นFlashหรือการใช้ HTTP Longpoll เป็นตัวเลือกสำรอง ในแง่นั้น WAMP จึงเป็นคู่แข่งกับDDPของMeteor

WAMP ยังมุ่งเป้าไปที่ IoT ซึ่งใช้ในลักษณะเดียวกับMQTT [ 18 ]ในฐานะสื่อที่มีน้ำหนักเบาและมีประสิทธิภาพในการจัดการคลัสเตอร์ของวัตถุที่เชื่อมต่อ การใช้งานในภาษาต่างๆ ทำให้เหมาะสำหรับการควบคุมและตรวจสอบอุปกรณ์ขนาดเล็ก เช่นRaspberry Pi (ใน Python) หรือ Tessel [ 19 ] (ใน JavaScript)

และสุดท้ายแต่ไม่ท้ายสุด WAMP สามารถทำหน้าที่เป็นบัสบริการระดับองค์กร ทำหน้าที่เชื่อมโยงระหว่างไมโครเซอร์วิสต่างๆ เช่นเดียวกับที่ทำได้ด้วยCORBA , ZeroMQ , Apache Thrift , SOAPหรือAMQP

วิวัฒนาการ

ปัจจุบัน WAMP อยู่ในเวอร์ชัน 2 [ 20 ]ซึ่งได้นำ RPC แบบ routed มาใช้ ณ ตอนนี้เราเตอร์ทั้งหมดเข้ากันได้กับเวอร์ชัน 2 ไคลเอนต์บางตัวยังคงไม่ได้รับการพอร์ต ได้แก่ Wamp.io, AutobahnAndroid และ cljWAMP

ข้อกำหนดเวอร์ชัน 2 แบ่งออกเป็นสองส่วน: โปรไฟล์พื้นฐาน ซึ่งรวมถึงเราเตอร์ RPC และ Pub/Sub และโปรไฟล์ขั้นสูง ซึ่งประกอบด้วยระดับความเชื่อถือ การจับคู่รูปแบบ URI และการแสดงรายการไคลเอ็นต์ โปรไฟล์พื้นฐานถือว่ามีความเสถียรและเป็นสิ่งที่ไลบรารีปัจจุบันนำไปใช้งาน ในขณะที่โปรไฟล์ขั้นสูงยังอยู่ในระหว่างการพัฒนา

การเปรียบเทียบ

เว็บไซต์ WAMP อ้างว่า[ 21 ]มีจุดขายดังต่อไปนี้สำหรับเทคโนโลยี:

  • Native PubSub : รองรับการเผยแพร่และสมัครรับข้อมูลได้ทันที (ไม่ต้องใช้ส่วนเสริมใดๆ)
  • RPC : รองรับการเรียกใช้ฟังก์ชันระยะไกล (Remote Procedure Calls) ได้ทันที (ไม่ต้องใช้ส่วนขยายเพิ่มเติม)
  • Routed RPC : รองรับการเรียกใช้ฟังก์ชันระยะไกลแบบกำหนดเส้นทาง (ไม่ใช่แค่แบบจุดต่อจุด)
  • เว็บเนทีฟ : ทำงานบนเว็บโดยตรง (โดยไม่ต้องใช้การเชื่อมต่อผ่านอุโมงค์หรือบริดจ์)
  • ข้ามภาษา : สามารถทำงานได้ทั้งบนและระหว่างภาษาโปรแกรมและรันไทม์ที่แตกต่างกัน
  • มาตรฐานเปิด : คือข้อกำหนดอย่างเป็นทางการแบบเปิดที่ผู้ผลิตหลายรายนำไปใช้งาน

ในทางกลับกัน WAMP ไม่ได้พยายามบรรลุเป้าหมายบางประการของโปรโตคอลอื่นๆ:

  • การส่งผ่านอ็อบเจ็กต์แบบเต็มรูปแบบเหมือนในCORBA
  • การซิงโครไนซ์ข้อมูล เช่น DDP
  • การสื่อสาร แบบPeer-to-peer เช่นZeroMQ
  • การสตรี มมัลติมีเดีย เช่นWebRTC
  • การถ่ายโอนไฟล์ขนาดใหญ่ เช่น HTTP

อย่างไรก็ตาม โปรโตคอลจำนวนมากมีลักษณะบางอย่างร่วมกับ WAMP:

เทคโนโลยีพับซับอาร์พีซีRPC ที่กำหนดเส้นทางเว็บเนทีฟข้ามภาษามาตรฐานเปิด
แวมป์ใช่ใช่ใช่ใช่ใช่ใช่
เอแจ็กซ์ใช่ใช่ใช่
เอเอ็มคิวพีใช่ใช่ใช่ใช่
อะปาเช่ ทริฟท์ใช่ใช่
กัปตันและโปรโตใช่ใช่
ดาวหางใช่ใช่
โอ้พระเจ้า DDSใช่ใช่ใช่
ดี-บัสใช่
คอร์บาใช่ใช่ใช่ใช่
ดีคอมใช่ใช่ใช่
จาวา เจเอ็มเอสใช่ใช่
จาวา อาร์เอ็มไอใช่ใช่
เจซอน-อาร์พีซีใช่ใช่ใช่ใช่
เอ็มคิวทีทีใช่ใช่ใช่ใช่
พักผ่อนใช่ใช่ใช่
สบู่ใช่ใช่ใช่ใช่
ซ็อกเก็ตไอโอใช่ใช่
ซ็อคเจเอสใช่ใช่
เหยียบใช่ใช่ใช่ใช่
อีเอ็มแอลอีอาร์พีซีใช่ใช่ใช่ใช่
เอ็กซ์เอ็มพีพีใช่ใช่ใช่ใช่ใช่
ซีโร่เอ็มคิวใช่ใช่
ดีพีดี[ 22 ]ใช่ใช่ใช่ใช่

อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือ แม้ว่า DDP จะใช้กลไก Pub/Sub ในการซิงโครไนซ์ชุดข้อมูลภายใน แต่ก็ไม่ได้เปิดเผยฟังก์ชันพื้นฐานของ Pub/Sub ออกมา นอกจากนี้ยังเป็นข้อกำหนดแบบเปิดที่มีการใช้งานหลายรูปแบบ แต่ไม่ได้จดทะเบียนเป็นมาตรฐาน

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Web_Application_Messaging_Protocol&oldid=1255123814 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ โปรโตคอลการส่งข้อความแอปพลิเคชันเว็บ

WAMPเป็น ซับโปรโตคอล WebSocketที่จดทะเบียนที่IANA ระบุไว้เพื่อรองรับRPC แบบกำหนดเส้นทาง และPubSubเป้าหมายในการออกแบบคือการจัดหามาตรฐาน แบบเปิด...

โครงสร้าง

WAMP ต้องการ [ 6 ] ช่องทางการส่งข้อความ แบบฟูลดูเพล็กซ์ ที่เชื่อถือได้และเรียง ลำดับ เป็น เลเยอร์การขนส่ง และโดยค่าเริ่มต้นจะใช้ WebSocket อย่างไรก็ตาม การใช้งานสามารถใช้การขนส่งอื่นๆ ที่ตรงกับคุณลักษณะเหล่านี้และสื่อสารกับ WAMP ผ่านซ็อกเก็ตดิบ [ 7 ] ซ็อกเก็ต...

ขั้นตอนการทำงาน

WAMP ได้รับการออกแบบทางสถาปัตยกรรมโดยเน้นการสื่อสารระหว่างไคลเอ็นต์กับไคลเอ็นต์ โดยมีซอฟต์แวร์ส่วนกลางคือเราเตอร์ ทำหน้าที่ส่งข้อความระหว่างไคลเอ็นต์ ขั้นตอนการแลกเปลี่ยนข้อมูลโดยทั่วไปมีดังนี้: [ 10 ]

ความปลอดภัย

เนื่องจาก WAMP ใช้ WebSocket การเชื่อมต่อจึงสามารถเข้ารหัสด้วย TLS ได้ แม้ว่าจะไม่ได้มี การรักษาความลับ อย่างสมบูรณ์ แต่ก็มีการนำกลไกหลายอย่างมาใช้เพื่อแยกส่วนประกอบและหลีกเลี่ยง การโจมตีแบบคนกลาง (man-in-the-middle attacks )...