ขนาดต่ำสุดของส่วนข้อมูลของ TCP เซ็กเมนต์


3

คำถามของฉันมีสองส่วน:

  1. ฉันรู้ว่าส่วน "data" ของเฟรม Ethernet นั้นมีขนาด 46 ~ 1500 ไบต์ เมื่อพิจารณาจากส่วนหัว IP 20 ไบต์ + ส่วนหัวของ TCP 20 ไบต์ขั้นต่ำ "ข้อมูล" ขนาดของส่วน TCP (46-20-20) = 6 bytesควรจะเป็น เมื่อพิจารณาจากส่วนหัวของ UDP 8 ไบต์ต่ำสุด "ข้อมูล" ขนาดของส่วน UDP (46-8-20) = 18 bytesควรจะเป็น ดังนั้นทุกคนสามารถอธิบายได้ว่าทำไมขอบเขตข้อมูลด้านล่างของแอปพลิเคชันจึงมีค่าสูงเช่น 6 ไบต์หรือ 18 ไบต์ ไม่ใช่ค่าเล็กเช่น 1 ไบต์? ฉันเชื่อว่าฉันพลาดอะไรบางอย่าง

  2. ฉันพบคำอธิบายสองสามข้อ[1] [2]ว่าขนาดต่ำสุดของแพ็กเก็ต IP ควรเป็น 64 ไบต์ ฉันคิดว่าคำอธิบายในลิงก์ด้านบนนั้นถูกต้อง ในกรณีดังกล่าวเหตุใดขนาด "ข้อมูล" ขั้นต่ำของเฟรม Ethernet จึง(64-20-20) = 24 bytesไม่ใช่

ใครสามารถอธิบายสิ่งนี้ชัดเจนยิ่งขึ้น?

คำตอบ:


6

ขนาดเฟรมต่ำสุดสำหรับอีเทอร์เน็ตกำหนดที่ 64 ไบต์ (ตามที่อธิบายไว้ในข้อมูลอ้างอิงของคุณ)

DMAC + SMAC + EtherType + Payload + CRC  
 6   +  6   +     2     +    46   +  4  = 64

ที่เลเยอร์ 4 (TCP หรือ UDP) 'ความยาว' จะครอบคลุมส่วนหัวของเลเยอร์ 4 และถูกติดตามในส่วนหัวของ IP
นี่หมายความว่าสำหรับ UDP ค่าต่ำสุดที่คาดไว้คือ 8 ไบต์ (สำหรับส่วนหัว) และสำหรับ TCP คือ 20 ไบต์ (ส่วนหัว TCP ขั้นต่ำ)

ส่วนที่คุณดูเหมือนจะหายไปเริ่มต้นในขณะนี้
ในขณะที่ความยาวข้อมูล Ethernet จำเป็นต้องมีอย่างน้อย 46 ไบต์ความยาว IP ไม่จำเป็นต้องเป็น46-20ไบต์ มันสามารถน้อยกว่านั้นมาก

ดังนั้นถ้าเรามีแพ็กเก็ต UDP ขนาด 8 ไบต์ที่ไม่มีข้อมูลเลยความยาวของ IP ก็จะเป็น20+8แต่ความยาวของอีเธอร์เน็ตจะยังคงเป็น46ไบต์ เกิดอะไรขึ้นกับ18รูไบต์? มันเป็นเบาะที่จะทำให้เฟรมอีเธอร์เน็ตในสาย64ไบต์ (ด้วยเหตุผลที่คุณรู้อยู่แล้ว)

[Eth: DMAC + SMAC + EtherType + [IP: Hdr + [UDP: Hdr + 0data ]] + PAD + CRC ]

ด้านล่าง: สิ่งที่คุณอ้างถึงเนื่องจากapplication data sizeไม่มีความคาดหวังขั้นต่ำตาม64ข้อกำหนดอีเทอร์เน็ตไบต์นี้ PADจะชดเชยความแตกต่างใด ๆ


ดังนั้นเพื่อให้อย่างน้อย 64 ไบต์ Ethernet Frame - (18 bytes Ethernet header / trailer + 20 bytes IP header + 20 (หรือ 8) bytes ส่วนหัวเลเยอร์ Transport + xxxx bytes ของ padding ใช้ฉันสับสนกับคำสั่ง "IP packet ไม่ควรต่ำกว่า 64 ไบต์" ที่ทำโดยคนจำนวนมากซึ่งไม่เป็นความจริงที่จริง. 'กรอบอีเธอร์เน็ตไม่ควรต่ำกว่า 64 ไบต์' ถูกต้องฉันขวา.
เอเดรีย

@ เอเดรียใช่ นั่นคือวิธีที่คำอธิบายทั้งหมดสำหรับการขยายไป คุณเริ่มย้อนกลับ - หรือจากด้านที่ผิดของสแต็กเครือข่าย (เลเยอร์แอปพลิเคชัน) และการเว้นช่องว่างระหว่างทาง
nik

4

คำตอบสั้น ๆ :
ความยาวต่ำสุดของส่วนข้อมูลของ TCP เซ็กเมนต์คือศูนย์ ความยาวขั้นต่ำของส่วนข้อมูลของดาตาแกรม UDP คือศูนย์

หากสแต็ค IP ต้องส่งดาตาแกรมที่น้อยกว่า 46 ไบต์ไปยังอีเธอร์เน็ตอีเธอร์เน็ตจะขยายออกเป็น 46 ไบต์โดยการเพิ่มการขยายแพ็ดไบต์ ส่วนหัวของ IP มีฟิลด์ความยาวของตัวเอง (เช่นเดียวกับส่วนหัว TCP และ UDP) ดังนั้นโปรโตคอลเหล่านั้นจะไม่สับสนและพยายามตีความการขยายลิงก์ของเลเยอร์เป็นส่วนหนึ่งของเพย์โหลดของตนเอง

ข้อมูลเพิ่มเติม:
อีเธอร์เน็ตเป็นเพียงหนึ่งในหลาย ๆ ชั้นของดาต้าลิงค์เลเยอร์โปรโตคอลที่ไอพีสามารถทำงานได้ อีเทอร์เน็ตมีความยาวของแพ็คเก็ตขั้นต่ำ 64 ไบต์ด้วยเหตุผลทางเทคนิคดั้งเดิม (เพื่อให้ "การชน" สามารถตรวจพบได้บนเครือข่ายอีเธอร์เน็ตเส้นผ่าศูนย์กลางสูงสุดได้อย่างน่าเชื่อถือย้อนกลับไปเมื่อเครือข่ายอีเธอร์เน็ตเป็น CSMA / CD และอาจมีการชนกัน full-duplex ในทุกเซกเมนต์ดังนั้น CSMA / CD และการชนจึงเป็นเรื่องในอดีต)

เนื่องจากเรามักจะใช้ IP ผ่านอีเธอร์เน็ตจึงเป็นเรื่องง่ายที่จะลืมว่า Ethernet และ IP เป็นเทคโนโลยีเครือข่ายที่แยกกันสองเทคโนโลยีที่สร้างขึ้นโดยสองสถาบันที่แยกกัน อีเธอร์เน็ตซึ่งได้มาตรฐานโดย IEEE (สถาบันวิศวกรไฟฟ้าและอิเล็กทรอนิกส์) ได้รับการออกแบบมาเพื่อจัดการโปรโตคอลเครือข่าย (เลเยอร์ 3) ที่ไม่ทราบจำนวนนอกเหนือจาก IP และ IP ที่สร้างโดย IETF (Internet Engineering Task Force) ถูกออกแบบมาเพื่อทำงานบน จำนวนที่ไม่รู้จักของโปรโตคอล Data Link (เลเยอร์ 2) นอกเหนือจากอีเธอร์เน็ต IP ไม่เปลี่ยนแปลงขั้นต่ำหรือขนาดดาตาแกรมสูงสุดเพียงเพราะหนึ่งในโปรโตคอลลิงก์เลเยอร์ยอดนิยม หากโปรโตคอลเลเยอร์ลิงก์ไม่ชอบดาตาแกรมขนาดเล็กที่ได้รับ และในกรณีที่ตรงกันข้ามถ้า IP ไม่ชอบ MTU ดาต้าลิงค์ปัจจุบันให้บริการก็ต้องแยกส่วน


ขอบคุณสำหรับคำตอบสั้น ๆ พร้อมข้อมูลเพิ่มเติม ข้อสรุปของฉันคือคำสั่ง "ขนาดต่ำสุดของแพ็กเก็ต IP ควรเป็น 64 ไบต์" ผิด แต่อาจกล่าวได้ว่า "ขนาดขั้นต่ำของ Ethernet Frame ควรเป็น 64 ไบต์"
เอเดรียน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.