อีเธอร์เน็ตทราบได้อย่างไรว่าเฟรมยาวเท่าไหร่?


17

เมื่อดูที่รายการEthernetใน Wikipedia ฉันไม่สามารถทราบได้ว่าจะระบุได้อย่างไรว่าเฟรม Ethernet ใช้เวลานานเท่าใด ฟิลด์ส่วนหัว EtherType / Length เห็นได้ชัดว่าสามารถระบุประเภทเฟรมหรือความยาวอย่างชัดเจนและฉันเดาว่าในกรณีของประเภทเฟรมจะต้องทำตรรกะอื่น ๆ เพื่อหาระยะเวลาที่แพ็กเก็ต ตัวอย่างเช่นถ้าฟิลด์ EtherType เป็น 0x0800 นั่นแสดงว่ามีส่วนของข้อมูล IPv4 และดังนั้น NIC ที่ได้รับจะต้องตรวจสอบ 32 บิตแรกของส่วนของข้อมูลเพื่อค้นหาความยาวของแพ็กเก็ต IP และเพื่อหาความยาวทั้งหมดของ เฟรม Ethernet และรู้ว่าเมื่อใดควรมองหาการตรวจสอบจุดสิ้นสุดของเฟรมและช่องว่างระหว่างเฟรม

เสียงนี้ถูกต้องไหม ฉันยังดูข้อมูลจำเพาะ IEEE 802.3สำหรับอีเธอร์เน็ต (ตอนที่ 1 ต่อไป) ซึ่งดูเหมือนจะยืนยันเรื่องนี้ แต่มันค่อนข้างทึบ


คำตอบ:


21

Sublayer การเข้ารหัสทางกายภาพมีหน้าที่ในการกำหนดเฟรมและส่งไปยังเลเยอร์ MAC

ใน Gigabit Ethernet ตัวอย่างเช่นรูปแบบการเข้ารหัส 8B / 10B ใช้ codegroup 10 บิตเพื่อเข้ารหัสไบต์ 8 บิต สองบิตพิเศษบอกว่าไบต์เป็นข้อมูลควบคุมหรือข้อมูล ข้อมูลการควบคุมสามารถกำหนดค่าได้ Start_of_packet, End_of_packet, IDLE, Carrier_extend, Error_propagation

นั่นคือวิธีที่ NIC รู้ว่าเฟรมเริ่มต้นและสิ้นสุดอย่างไร นี่ก็หมายความว่าไม่ทราบความยาวของเฟรมก่อนที่มันจะถูกถอดรหัสอย่างเต็มที่ซึ่งคล้ายกับสตริงที่มีค่า NULL ใน C


1
มีการระบุไว้ใน IEEE Std 802.3-2015 (ส่วนที่สาม), 36.2.4.2 และ 36.2.4.15 (ในสถานที่อื่น ๆ ในสิ่งที่อ่านไม่ได้นี้พวกเขาเรียกมาตรฐาน;)
stefanct

1

บทความที่คุณอยากจะตอบคำถามของคุณเป็นhttp://en.wikipedia.org/wiki/Ethernet_II_framing ; ซึ่งพูดว่า:

เนื่องจากมาตรฐานอุตสาหกรรมที่พัฒนาขึ้นนี้ได้ผ่านกระบวนการกำหนดมาตรฐาน IEEE อย่างเป็นทางการฟิลด์ EtherType จึงเปลี่ยนเป็นฟิลด์ความยาว (ข้อมูล) ในมาตรฐาน 802.3 ใหม่ (แพ็กเก็ต Ethernet ดั้งเดิมกำหนดความยาวด้วยกรอบที่ล้อมรอบแทนที่จะนับความยาวอย่างชัดเจน) เนื่องจากผู้รับแพ็กเก็ตยังต้องการทราบวิธีการตีความแพ็กเก็ตมาตรฐานจึงจำเป็นต้องใช้ส่วนหัว IEEE 802.2 เพื่อติดตามความยาวและระบุ ประเภทแพ็คเก็ต


ฉันเดาว่าฉันไม่ชัดเจนในสิ่งที่ "แพ็กเก็ต Ethernet ดั้งเดิมกำหนดความยาวด้วยกรอบที่ล้อมรอบ" หมายถึง บิต preamble / start-frame ค่อนข้างชัดเจน แต่ลูกค้ารู้ได้อย่างไรว่าถึงจุดสิ้นสุดของเฟรมแล้ว? มันแยกความแตกต่างระหว่าง CRC และช่องว่างระหว่างเฟรมอย่างไร สัญญาณรบกวนทางไฟฟ้าแบบสุ่มของ IFG สามารถแยกแยะได้ง่ายจากสัญญาณจริงหรือไม่?
dirtside

จุดสิ้นสุดของเฟรมใน "classic Ethernet" จะถูกส่งสัญญาณโดยการเข้ารหัสที่ผิดกฎหมาย
Vatine

@ womble บทความที่คุณเชื่อมโยงนั้นดี แต่สิ่งที่คุณยกมานั้นเป็นสิ่งที่ทำให้เข้าใจผิดมาก เฟรมส่วนใหญ่ในเครือข่าย Ethernet ในปัจจุบันไม่ได้ใช้ฟิลด์ความยาวที่ชัดเจน
ปีเตอร์กรีน

-3

เหตุผลมีเพียงสามตัวเลือก:

  1. การใช้ขนาดเฟรมแบบคงที่เหมือนมา
  2. การระบุขนาดเฟรมในส่วนหัวของมันหรือที่อื่น ๆ หรือแม้กระทั่งการ จำกัด ขอบเขตด้วยธงบางส่วน
  3. ไม่มีการส่งเฟรมเลย

หนึ่งในผลงานเหล่านี้ในอีเธอร์เน็ตเนื่องจากไม่มีตัวเลือกอื่นสำหรับเครือข่ายที่ทันสมัยในปัจจุบัน) อันดับที่ 1 และ 3 ผิดสำหรับอีเธอร์เน็ตดังนั้นคุณจึงถูกต้อง!


-3

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

http://www3.rad.com/networks/infrastructure/lans/etherform.htm#_ieee

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