Learning AtlasIT Support → Cybersecurity
คลังบทอ่าน07.1 / โพรโทคอลและการเชื่อมต่อบทถัดไป
สารบัญบทอ่าน / Protocols and Connectivity / 07.1
02 · เข้าใจเครือข่ายและเว็บ · บท 07.1

Transport

การขนส่งข้อมูล

เมื่อ IP พาข้อมูลถึงเครื่องแล้ว ชั้น transport ช่วยส่งถึงบริการและกำหนดพฤติกรรมการส่ง

3 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
ควรรู้ก่อน: 06.3 การหาเส้นทาง
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
IP
ที่อยู่และโปรโตคอลส่ง packet ระหว่างเครือข่าย รุ่น IPv4 และ IPv6 มีรูปแบบต่างกัน
TCP
โปรโตคอลขนส่ง byte stream แบบมี connection ตรวจลำดับและส่งซ้ำตามกลไก
UDP
โปรโตคอลส่ง datagram โดยไม่สร้างความรับรองแบบ TCP ให้เอง
TLS
โปรโตคอลปกป้องช่องทางสื่อสารพร้อมการตรวจปลายทางตามแบบใช้งาน
HTTP
กฎคำขอกับคำตอบที่ใช้ในการสื่อสารเว็บ
จากหลักการไปถึงกลไก

TCP จัดลำดับไบต์และสถานะของสองปลายทาง

Connection ของ แยกได้ด้วยต้นทางและปลายทางทั้ง และพอร์ต โปรแกรมจึงมีหลายการสื่อสารพร้อมกันได้ TCP ให้ byte stream ที่จัดลำดับและตรวจการสูญหายตามกลไกของมัน ส่ง datagram โดยไม่ให้ความรับรองแบบ TCP เอง แต่แอปที่ใช้ UDP อาจสร้างกลไกเชื่อถือได้เพิ่มเติม

ข้อความหรือขั้นที่เกิดตามลำดับTCP จัดลำดับไบต์และสถานะของสองปลายทาง
  1. Client → server

    ส่ง SYN พร้อม sequence เริ่มต้น x ขอเปิด TCP connection

  2. Server → client

    ตอบ SYN + ACK พร้อม sequence y และ acknowledge x+1

  3. Client → server

    ACK y+1 จึงเข้าสู่การส่งข้อมูลได้ตามสถานะของแต่ละฝั่ง

  4. Data + acknowledgement

    sequence ระบุตำแหน่งไบต์ ACK ระบุไบต์ถัดไปที่คาดรับ เมื่อขาดข้อมูลมีกลไกส่งซ้ำ

  5. Closing

    FIN จบด้านการส่งทีละฝั่ง ส่วน RST ยุติตามเงื่อนไข บางข้อความจบรวมกันได้

ตาม TCP handshake และ ACK ของไบต์
อ่านจากบนลงล่าง ลูกศรแสดงผู้ส่งและผู้รับแต่ละข้อความ TCPClientServerSYN · seq 1000SYN + ACK · seq 5000, ack 1001ACK · seq 1001, ack 5001
อ่านค่าจากภาพเป็นตาราง
ทิศหรือเงื่อนไขข้อมูลในตัวอย่าง
Client → ServerSYN seq=1000
Server → ClientSYN, ACK seq=5000 ack=1001
Client → ServerACK seq=1001 ack=5001
ตัวอย่างใช้ initial sequence x=1000 และ y=5000 SYN ใช้พื้นที่ sequence หนึ่งค่า ACK จึงตอบ x+1 หรือ y+1

ภาพย่อการแลกข้อความ ไม่แสดง options timing และทุก ACK ของระบบจริง ข้อมูลแอปยังต้องมีรูปแบบข้อความของมันเอง TCP byte stream ไม่รับรองขอบเขต write ของแอป

ไม่รักษาขอบเขตข้อความแอป: write สองครั้งอาจถูกอ่านรวม หรือหนึ่งครั้งอาจอ่านหลายช่วง แอปต้องมี framing ของตัวเอง ACK ไม่จำเป็นต้องหนึ่งข้อความต่อทุก segment เพราะมีการตอบรับแบบสะสมและกลไกอื่น TCP handshake ผ่านไม่พิสูจน์ว่า หรือ ผ่าน และ TCP ไม่เข้ารหัสข้อมูลให้เอง

01 / 03

ทีซีพีและยูดีพีTCP and UDP · 07.1.1

TCP มีการเชื่อมต่อและกลไกส่งอย่างเชื่อถือได้ UDP ส่ง datagram โดยไม่รับรองแบบเดียวกัน

จัด byte stream ตามลำดับพร้อมกลไกรับและส่งซ้ำ ส่ง datagram โดยไม่ใช้ TCP connection กลไกความเชื่อถืออาจมาจากโปรโตคอลชั้นบน เช่น QUIC ใช้ UDP แต่เพิ่มความสามารถของตน

เทียบหน้าที่เพื่อไม่สับสน
•TCP

stream พร้อมสถานะและกลไกขนส่ง

•UDP

datagram ที่ไม่สร้าง TCP connection

•Application result

ความสำเร็จของงานอีกชั้นหนึ่ง

ส่งข้อมูลถึงไม่ได้รับรองว่าแอปทำงานสำเร็จและ ไม่ได้แปลว่าแอปไม่มีความน่าเชื่อถือ ต้องอ่านสิ่งที่ protocol กับแอปแต่ละชั้นรับผิดชอบ

Flow Control versus Congestion Control (ผู้รับไหว กับทางส่งไหว)

Flow control จำกัดการส่งตามความสามารถรับของปลายทาง เช่น receive window ที่แจ้ง Congestion control จัดการปริมาณตามสภาพเครือข่ายและ algorithm ที่ใช้ ทั้งสองลดสิ่งที่ส่งค้างอยู่ได้จากเหตุคนละแบบ จึงไม่ใช้คำว่า window หมายถึงข้อจำกัดเดียวทั้งหมด

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

Flow Control versus Congestion Control (ผู้รับไหว กับทางส่งไหว)
กลไกคำถามที่ตอบไม่รับรอง
Flow controlผู้รับมีพื้นที่รับเพียงใดแอปทำธุรกรรมสำเร็จ
Congestion controlเส้นทางรองรับปริมาณอย่างไรช่องทางเป็นความลับ
ACK / retransmissionข้อมูล TCP ต่อเนื่องถึงไหนผู้ใช้เห็นผลถูกต้อง

TCP ให้ byte stream ที่มีลำดับและกลไกจัดการความเชื่อถือในการส่ง ส่วน UDP ให้ datagram โดยไม่เพิ่ม TCP handshake กลไก retry หรือความเชื่อถืออาจมาจากโปรโตคอลด้านบน เช่น QUIC ใช้ UDP แต่เพิ่มความสามารถของตน

คำว่า TCP reliable ไม่ได้หมายความว่าแอปจะสำเร็จเสมอ Connection อาจขาด timeout หรืออีกฝั่งประมวลผลล้มเหลวได้ ต้องแยกความถูกต้องของการขนส่งจากผลของงานที่แอปทำ

ที่มาของหัวข้อนี้ · 2 รายการ

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

เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม

02 / 03

พอร์ตและซ็อกเก็ตPorts and Sockets · 07.1.2

Port ระบุจุดบริการ Socket อ้างถึงจุดสื่อสารด้วยที่อยู่ พอร์ต และชนิดโปรโตคอล

Port ช่วยแยกจุดรับส่งของบริการในเครื่อง Socket เป็นส่วนที่โปรแกรมใช้สื่อสาร ต้องอ่านร่วม protocol ที่อยู่ และสถานะ หมายเลข 443 กับ 443 เป็นคนละชุดปลายทาง

เทียบหน้าที่เพื่อไม่สับสน
•Address

เครื่องหรือ interface ที่ใช้

•Port

จุดรับส่งใน protocol

•Socket state

ฟังรับ เชื่อมต่อ หรือสถานะอื่น

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 รายการ

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

เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม

03 / 03

จับมือ แฟล็ก และสถานะHandshakes, Flags and States · 07.1.3

Handshake เตรียมการเชื่อมต่อ Flags และ state บอกช่วงและเงื่อนไขของการสื่อสาร

เริ่มด้วย SYN แล้ว SYN-ACK แล้ว ACK เพื่อจัดสถานะและข้อมูลลำดับ FIN ใช้เริ่มจบด้านการส่ง RST ใช้ยุติตามเงื่อนไข การจบ connection กับ request หนึ่งรายการเป็นคนละเรื่อง

อ่านภาพตามลำดับการทำงาน
01SYN

ขอเริ่มและเสนอข้อมูลลำดับ

02SYN-ACK

ตอบรับและเสนอข้อมูลอีกฝั่ง

03ACK

ยืนยันข้อมูลที่ได้รับ

สร้าง connection ได้ยังต้องตรวจ และ ต่อ การเห็น SYN ซ้ำอาจเป็นการรอคำตอบหรือ loss ไม่ใช่ข้อยืนยัน SYN flood ทันที ต้องดูปริมาณและบริบท

ที่มาของหัวข้อนี้ · 2 รายการ

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

เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม

เชื่อมความเข้าใจ

นำศัพท์มาเชื่อมกับงาน

ตัวอย่างให้เห็นภาพ

เว็บเปิดไม่ได้อาจไปถึง IP แล้ว แต่บริการไม่ฟังพอร์ตหรือ firewall ไม่อนุญาต

สิ่งที่บทนี้เชื่อมไว้

เมื่อ IP พาข้อมูลถึงเครื่องแล้ว ชั้น transport ช่วยส่งถึงบริการและกำหนดพฤติกรรมการส่ง

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

บันทึกในเบราว์เซอร์นี้
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน

transcript ที่เคยใช้ตรวจแนวคิดพื้นฐานและตัวอย่างบางส่วน: T0413 · 2.The Bits and Bytes of Computer Networking คำอธิบายเป็นการเขียนใหม่ ไม่ใช่การแปลครบทุกประโยค ภาพและตัวอย่างเป็นการเรียบเรียงเพื่อเชื่อมความเข้าใจ

คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้