Transport
การขนส่งข้อมูล
เมื่อ IP พาข้อมูลถึงเครื่องแล้ว ชั้น transport ช่วยส่งถึงบริการและกำหนดพฤติกรรมการส่ง
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
- IP
- ที่อยู่และโปรโตคอลส่ง packet ระหว่างเครือข่าย รุ่น IPv4 และ IPv6 มีรูปแบบต่างกัน
- TCP
- โปรโตคอลขนส่ง byte stream แบบมี connection ตรวจลำดับและส่งซ้ำตามกลไก
- UDP
- โปรโตคอลส่ง datagram โดยไม่สร้างความรับรองแบบ TCP ให้เอง
- TLS
- โปรโตคอลปกป้องช่องทางสื่อสารพร้อมการตรวจปลายทางตามแบบใช้งาน
- HTTP
- กฎคำขอกับคำตอบที่ใช้ในการสื่อสารเว็บ
TCP จัดลำดับไบต์และสถานะของสองปลายทาง
Connection ของ แยกได้ด้วยต้นทางและปลายทางทั้ง และพอร์ต โปรแกรมจึงมีหลายการสื่อสารพร้อมกันได้ TCP ให้ byte stream ที่จัดลำดับและตรวจการสูญหายตามกลไกของมัน ส่ง datagram โดยไม่ให้ความรับรองแบบ TCP เอง แต่แอปที่ใช้ UDP อาจสร้างกลไกเชื่อถือได้เพิ่มเติม
- Client → server
ส่ง SYN พร้อม sequence เริ่มต้น x ขอเปิด TCP connection
- Server → client
ตอบ SYN + ACK พร้อม sequence y และ acknowledge x+1
- Client → server
ACK y+1 จึงเข้าสู่การส่งข้อมูลได้ตามสถานะของแต่ละฝั่ง
- Data + acknowledgement
sequence ระบุตำแหน่งไบต์ ACK ระบุไบต์ถัดไปที่คาดรับ เมื่อขาดข้อมูลมีกลไกส่งซ้ำ
- Closing
FIN จบด้านการส่งทีละฝั่ง ส่วน RST ยุติตามเงื่อนไข บางข้อความจบรวมกันได้
อ่านค่าจากภาพเป็นตาราง
| ทิศหรือเงื่อนไข | ข้อมูลในตัวอย่าง |
|---|---|
| Client → Server | SYN seq=1000 |
| Server → Client | SYN, ACK seq=5000 ack=1001 |
| Client → Server | ACK seq=1001 ack=5001 |
ภาพย่อการแลกข้อความ ไม่แสดง options timing และทุก ACK ของระบบจริง ข้อมูลแอปยังต้องมีรูปแบบข้อความของมันเอง TCP byte stream ไม่รับรองขอบเขต write ของแอป
ไม่รักษาขอบเขตข้อความแอป: write สองครั้งอาจถูกอ่านรวม หรือหนึ่งครั้งอาจอ่านหลายช่วง แอปต้องมี framing ของตัวเอง ACK ไม่จำเป็นต้องหนึ่งข้อความต่อทุก segment เพราะมีการตอบรับแบบสะสมและกลไกอื่น TCP handshake ผ่านไม่พิสูจน์ว่า หรือ ผ่าน และ TCP ไม่เข้ารหัสข้อมูลให้เอง
ทีซีพีและยูดีพีTCP and UDP · 07.1.1
TCP มีการเชื่อมต่อและกลไกส่งอย่างเชื่อถือได้ UDP ส่ง datagram โดยไม่รับรองแบบเดียวกัน
จัด byte stream ตามลำดับพร้อมกลไกรับและส่งซ้ำ ส่ง datagram โดยไม่ใช้ TCP connection กลไกความเชื่อถืออาจมาจากโปรโตคอลชั้นบน เช่น QUIC ใช้ UDP แต่เพิ่มความสามารถของตน
stream พร้อมสถานะและกลไกขนส่ง
datagram ที่ไม่สร้าง TCP connection
ความสำเร็จของงานอีกชั้นหนึ่ง
ส่งข้อมูลถึงไม่ได้รับรองว่าแอปทำงานสำเร็จและ ไม่ได้แปลว่าแอปไม่มีความน่าเชื่อถือ ต้องอ่านสิ่งที่ protocol กับแอปแต่ละชั้นรับผิดชอบ
Flow Control versus Congestion Control (ผู้รับไหว กับทางส่งไหว)
Flow control จำกัดการส่งตามความสามารถรับของปลายทาง เช่น receive window ที่แจ้ง Congestion control จัดการปริมาณตามสภาพเครือข่ายและ algorithm ที่ใช้ ทั้งสองลดสิ่งที่ส่งค้างอยู่ได้จากเหตุคนละแบบ จึงไม่ใช้คำว่า window หมายถึงข้อจำกัดเดียวทั้งหมด
Checksum ตรวจความเสียหายตามส่วนที่โปรโตคอลกำหนด ไม่ได้เข้ารหัสหรือยืนยันว่าไม่มีผู้แก้ข้อมูลอย่างจงใจ Retransmission ซ่อมการสูญหายตามการตรวจ ACK และเวลา ส่งไบต์ได้ต่อเนื่องยังไม่พิสูจน์ว่าแอปบันทึกหรือทำงานที่ขอสำเร็จ
| กลไก | คำถามที่ตอบ | ไม่รับรอง |
|---|---|---|
| Flow control | ผู้รับมีพื้นที่รับเพียงใด | แอปทำธุรกรรมสำเร็จ |
| Congestion control | เส้นทางรองรับปริมาณอย่างไร | ช่องทางเป็นความลับ |
| ACK / retransmission | ข้อมูล TCP ต่อเนื่องถึงไหน | ผู้ใช้เห็นผลถูกต้อง |
TCP ให้ byte stream ที่มีลำดับและกลไกจัดการความเชื่อถือในการส่ง ส่วน UDP ให้ datagram โดยไม่เพิ่ม TCP handshake กลไก retry หรือความเชื่อถืออาจมาจากโปรโตคอลด้านบน เช่น QUIC ใช้ UDP แต่เพิ่มความสามารถของตน
คำว่า TCP reliable ไม่ได้หมายความว่าแอปจะสำเร็จเสมอ Connection อาจขาด timeout หรืออีกฝั่งประมวลผลล้มเหลวได้ ต้องแยกความถูกต้องของการขนส่งจากผลของงานที่แอปทำ
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersVideo: Dissection of a TCP SegmentIT2.M3.V3
- The Bits and Bytes of Computer Networking · Module 4: Networking ServicesVideo: DNS and UDPIT2.M4.V4
เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม
พอร์ตและซ็อกเก็ตPorts and Sockets · 07.1.2
Port ระบุจุดบริการ Socket อ้างถึงจุดสื่อสารด้วยที่อยู่ พอร์ต และชนิดโปรโตคอล
Port ช่วยแยกจุดรับส่งของบริการในเครื่อง Socket เป็นส่วนที่โปรแกรมใช้สื่อสาร ต้องอ่านร่วม protocol ที่อยู่ และสถานะ หมายเลข 443 กับ 443 เป็นคนละชุดปลายทาง
เครื่องหรือ interface ที่ใช้
จุดรับส่งใน protocol
ฟังรับ เชื่อมต่อ หรือสถานะอื่น
Client source port มักต่างจาก server listening port การเห็นพอร์ตในรายการจึงต้องรู้ว่าฟังรับหรือเชื่อมออก ไม่ใช้ทุกบรรทัดเป็นหลักฐานว่ารับจากทุกเครือข่าย
Connection-oriented / connectionless (มีและไม่มีบริบทการเชื่อม)
ต้องตั้งบริบท connection และมี state ของการส่ง ส่วน ส่ง datagram โดยไม่มีการตั้งและรับรองแบบ TCP ให้เอง แอปบน UDP อาจสร้าง reliability ของตนได้ คำว่า connectionless ไม่ได้แปลว่าข้อมูลไม่ถึงหรือไม่มีการตอบกลับเลย
Listening and Established Sockets (เปิดรับ กับต่ออยู่)
Socket ที่ LISTEN เตรียมรับ connection ตาม protocol ที่อยู่และพอร์ต ส่วน ESTABLISHED แสดง connection ที่เปิดกับคู่ปลายทางแล้ว 127.0.0.1 จำกัดบริบท loopback ส่วน 0.0.0.0 ใช้ bind ทุก local IPv4 addresses ตามระบบ ไม่ใช่ ของ remote peer ทุกคน
การฟังรับยังต้องผ่าน host firewall network route และนโยบายอื่นหมายเลขพอร์ตเพียงอย่างเดียวไม่พิสูจน์ว่าเป็นผลิตภัณฑ์หรือบริการใด 443 และ 443 เป็นคนละ transport endpoints แม้มีเลขเดียวกัน ต้องดู process และ protocol ที่ใช้
Endpoint ของการขนส่งต้องอ่านร่วมกับ protocol ที่อยู่ และ port เช่น TCP 443 กับ UDP 443 เป็นจุดรับส่งคนละชุด แม้ใช้หมายเลขเท่ากัน Source port ของ client มักแตกต่างจาก port ที่ server ฟังรับงาน
Socket เป็นส่วนที่โปรแกรมใช้สื่อสารกับระบบเครือข่าย ความหมายการแสดงผลจากเครื่องมือขึ้นกับสถานะและระบบ จึงดูว่าฟังรับอยู่ เชื่อมต่ออยู่ หรือเป็นค่าปลายทางก่อนสรุปว่าพอร์ตเปิด
ที่มาของหัวข้อนี้ · 3 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersReading: Supplemental Reading for System Ports versus Ephemeral PortsIT2.M3.R1
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersVideo: TCP Socket StatesIT2.M3.V5
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersVideo: Connection-oriented and Connectionless ProtocolsIT2.M3.V6
เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม
จับมือ แฟล็ก และสถานะHandshakes, Flags and States · 07.1.3
Handshake เตรียมการเชื่อมต่อ Flags และ state บอกช่วงและเงื่อนไขของการสื่อสาร
เริ่มด้วย SYN แล้ว SYN-ACK แล้ว ACK เพื่อจัดสถานะและข้อมูลลำดับ FIN ใช้เริ่มจบด้านการส่ง RST ใช้ยุติตามเงื่อนไข การจบ connection กับ request หนึ่งรายการเป็นคนละเรื่อง
ขอเริ่มและเสนอข้อมูลลำดับ
ตอบรับและเสนอข้อมูลอีกฝั่ง
ยืนยันข้อมูลที่ได้รับ
สร้าง connection ได้ยังต้องตรวจ และ ต่อ การเห็น SYN ซ้ำอาจเป็นการรอคำตอบหรือ loss ไม่ใช่ข้อยืนยัน SYN flood ทันที ต้องดูปริมาณและบริบท
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersVideo: TCP Control Flags and the Three-way HandshakeIT2.M3.V4
- The Bits and Bytes of Computer Networking · Module 3: The Transport and Application LayersVideo: TCP Socket StatesIT2.M3.V5
เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม
นำศัพท์มาเชื่อมกับงาน
เว็บเปิดไม่ได้อาจไปถึง IP แล้ว แต่บริการไม่ฟังพอร์ตหรือ firewall ไม่อนุญาต
สิ่งที่บทนี้เชื่อมไว้
เมื่อ IP พาข้อมูลถึงเครื่องแล้ว ชั้น transport ช่วยส่งถึงบริการและกำหนดพฤติกรรมการส่ง
ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน
transcript ที่เคยใช้ตรวจแนวคิดพื้นฐานและตัวอย่างบางส่วน: T0413 · 2.The Bits and Bytes of Computer Networking คำอธิบายเป็นการเขียนใหม่ ไม่ใช่การแปลครบทุกประโยค ภาพและตัวอย่างเป็นการเรียบเรียงเพื่อเชื่อมความเข้าใจ
คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้