이더넷은 프레임 길이를 어떻게 알 수 있습니까?


17

Wikipedia 의 이더넷 항목을 보면 이더넷 프레임의 길이를 나타내는 방법을 알 수 없습니다. EtherType / Length 헤더 필드는 분명히 프레임 유형 또는 명시 적 길이를 나타낼 수 있으며 프레임 유형의 경우 패킷 길이를 파악하기 위해 다른 논리를 수행해야한다고 추측합니다. 예를 들어, EtherType 필드가 0x0800 인 경우 IPv4 페이로드를 나타내므로 수신 NIC는 페이로드의 첫 32 비트를 검사하여 IP 패킷의 길이를 찾아서 전체 길이를 계산해야합니다. 이더넷 프레임을 확인하고 프레임 끝 체크섬 및 프레임 간 격차를 찾을시기를 알고 있어야합니다.

이 소리가 정확합니까? 또한 이더넷을위한 IEEE 802.3 사양 (1 부)을 살펴 보았지만 이 방법은 매우 불투명합니다.


답변:


21

Physical Coding Sublayer는 프레임을 구분하여 MAC 계층으로 전송하는 역할을합니다.

예를 들어 기가비트 이더넷에서 8B / 10B 인코딩 체계는 10 비트 코드 그룹을 사용하여 8 비트 바이트를 인코딩합니다. 여분의 2 비트는 바이트가 제어 정보인지 데이터인지를 알려줍니다. 제어 정보는 구성, Start_of_packet, End_of_packet, IDLE, Carrier_extend, Error_propagation 일 수 있습니다.

이것이 NIC가 프레임 시작 및 종료 위치를 알고있는 방법입니다. 이것은 또한 프레임의 길이가 C에서 NULL로 끝나는 문자열과 유사하게 완전히 디코딩되기 전에 알 수 없음을 의미합니다.


1
이것은 IEEE Std 802.3-2015 (섹션 3), 36.2.4.2 및 36.2.4.15에 명시되어 있습니다 (이 읽을 수없는 것들 중에서 표준이라고 부릅니다).
stefanct

1

당신이 정말로 당신의 질문에 대답하고 싶은 기사는 http://en.wikipedia.org/wiki/Ethernet_II_framing ; 그것은 말합니다 :

업계에서 개발 된이 표준이 공식적인 IEEE 표준화 프로세스를 거치면서 EtherType 필드는 새로운 802.3 표준에서 (데이터) 길이 필드로 변경되었습니다. (원래 이더넷 패킷은 명시적인 길이 카운트가 아닌 프레임을 둘러싸는 프레이밍으로 길이를 정의합니다.) 패킷 수신자는 여전히 패킷을 해석하는 방법을 알아야하기 때문에 표준에 따라 길이를 따르고 지정하려면 IEEE 802.2 헤더가 필요했습니다. 패킷 타입


"원래 이더넷 패킷이 프레임을 둘러싸고있는 길이를 정의한다는"의 의미가 무엇인지 잘 모르겠습니다. 프리앰블 / 시작 프레임 비트는 매우 명확하지만 클라이언트는 프레임의 끝에 도달했음을 어떻게 알 수 있습니까? CRC와 프레임 간 간격을 어떻게 구분합니까? IFG 랜덤 전기 노이즈는 실제 신호와 쉽게 구별 할 수 있습니까?
dirtside

"클래식 이더넷"의 프레임 끝은 잘못된 인코딩으로 표시됩니다.
Vatine

@womble, 당신이 링크 한 기사는 좋지만 인용 한 비트는 문맥에서 매우 오도됩니다. 오늘날 이더넷 네트워크의 대부분의 프레임은 명시적인 길이 필드를 사용하지 않습니다.
피터 그린

-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.