이더넷 프레임의 "와이어"크기는 무엇입니까? 1518 또는 1542?


22

여기 표 에 따르면 MTU = 1500 바이트이고 페이로드 부분은 1500-42 바이트 또는 1458 바이트입니다 (<-실제로 잘못되었습니다!). 이제 28 바이트 (20 IP + 8 UDP) 인 IPv4 및 UDP 헤더를 추가해야합니다. 가능한 최대 응용 프로그램 메시지는 1430 바이트로 남습니다! 그러나 인터넷 에서이 번호를 찾으면 대신 1472가 표시됩니다. 이 계산을 잘못하고 있습니까?

내가 알기 원하는 것은 조각화의 위험없이 유선을 통해 보낼 수있는 최대 응용 프로그램 메시지입니다. 프레임 헤더가 포함되어 있기 때문에 1500이 아닙니다. 누군가 도울 수 있습니까?


혼란은 PAYLOAD가 실제로 1500 바이트만큼 클 수 있으며 이것이 MTU입니다. 이제 페이로드 1500의 와이어 크기는 얼마입니까? 이 테이블에서 최대 1542 바이트 일 수 있습니다.

따라서 내가 보낼 수있는 최대 앱 메시지는 1542 (1500-20 (ip)-8 (udp))입니다. 그리고 나는 테이블이 1542라고 말하면 누군가가 숫자 1518을 생각해 낸 방법을 알지 못했습니다.


여기서 실제 질문은 "와이어 크기"란 무엇을 의미하며이 정보로 무엇을 할 것입니까? 초당 패킷을 계산하려고합니까?
Mike Pennington

@MikePennington 무선 전송 시간을 결정하려고합니다. 패킷 크기와 이더넷 속도 (10 기가비트)를 사용하면이를 계산할 수 있습니다.
chrisapotek

답변:


26

Wikipedia의 다이어그램은 끔찍합니다. 바라건대 내가 작성하려고하는 것이 더 명확합니다.


802.3 이더넷 의 최대 페이로드 는 1500 바이트입니다.
이것은 와이어를 통해 전송하려는 데이터 및 MTU가 참조하는 데이터입니다.
[payload]<-1500 바이트

페이로드는 이더넷 프레임 (소스 / 대상 MAC, VLAN 태그, 길이 및 CRC 체크섬을 추가 함 )에 캡슐화됩니다 . 총 22 바이트의 추가 "항목"
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<-1522 바이트

프레임은 와이어를 통해 전송됩니다. 이더넷 카드가 기본적으로 일어나서 다른 사람이 와이어 (CSMA / CD)를 사용하지 않도록 크게 소리를 지르기 전에- 프리앰블프레임 시작 구분 기호입니다. (SFD)-추가 8 바이트이므로 이제
[Preamble+SFD+[Ethernet Frame]]<-1530 바이트

마지막으로 이더넷 트랜시버가 프레임 전송을 완료하면 다음 프레임을 전송하기 전에 802.3에서 12 바이트의 무음 ( "인터 프레임 갭")을 전송해야합니다.
[Preamble+SFD+[Ethernet Frame]+Silence]<-1542 바이트가 유선으로 전송되었습니다.


프리앰블, SFD 및 인터 프레임 갭은 프레임의 일부로 계산되지 않습니다. 이더넷 프로토콜 자체에 대한 지원 구조입니다.

MTU는 페이로드에 적용됩니다. 패킷에 넣을 수있는 가장 큰 데이터 단위입니다. 따라서 MTU가 1500 바이트 인 이더넷 패킷은 실제로는 1522 바이트 프레임이고 와이어에서 1542 바이트입니다 (vLAN 태그가 있다고 가정).

귀하의 질문에 대한 답변- 조각화없이 802.3 이더넷을 통해 보낼 수있는 가장 큰 패킷은 무엇입니까? - 인 페이로드 데이터의 1500 바이트 .

그러나 이더넷 계층이 제한 요인이 아닐 수 있습니다. 그 과정에서 MTU가 1500 바이트의 페이로드 데이터보다 작게 제한되는지 확인하려면 다음 중 하나를 사용하십시오.

  • Windows : ping hostname -f -l sizeofdata(John K가 언급 한 기술)
  • BSD : ping -D -s sizeofdata hostname
  • 리눅스 : ping -M do -s sizeofdata hostname

sizeofdata그 작품 의 가장 큰 가치 는 MTU입니다 (데이터가 취하는 특정 경로에서).


그러나이 1500에서 IP 및 UDP 헤더를 제외해야합니까? 따라서 최대 응용 프로그램 메시지 길이는 UDP의 경우 1472입니다.
chrisapotek

올바른 @chrisapotek - IP와 UDP (또는 TCP, GRE 등) 헤더는 이더넷 프레임에 넣어 도착 페이로드의 일부
voretaq7

2
Linux에서 traceroute --mtu {target}도 최대 mtu를 표시합니다.
Rqomey

좀 더 "물리적"이어야합니까? en.wikipedia.org/wiki/8b/10b_encoding
SaveTheRbtz

어떤하시기 바랍니다 오 @SaveTheRbtz - 이진 표현까지 점점 내 머리를 충분히 :-) 상처
voretaq7

2

프레임에 넣은 데이터의 양에 따라 다릅니다. 프레임에 1500 바이트의 데이터를 넣을 경우 총 프레임 크기는 1518 바이트입니다. 1472 바이트의 데이터를 사용하면 총 프레임 크기 1500이됩니다.

http://en.wikipedia.org/wiki/Ethernet_frame

즉, 조각화 테스트에 정말로 관심이 있다면 이것을 테스트하는 좋은 방법은 몇 가지 플래그가있는 오래된 핑을 사용하는 것입니다.

핑 호스트 이름 -f -l sizeofdata

-f 플래그는 패킷이 조각난 경우 핑에 실패합니다. 여기서 이해해야 할 핵심은 "sizeofdata"는 조각화없이 메시지에 넣을 수있는 데이터의 양입니다. 따라서 1500의 페이로드를 보내면 1500 바이트를 넘으면 조각화가 시작됩니다. 그래도 1472 (1500-18 바이트 오버 헤드)로 낮추면 핑이 진행됩니다.


죄송합니다. 1542 바이트는 IEEE 802.3에서 정의한 표준 이더넷 프레임보다 훨씬 높습니다. 태그가없는 1500 바이트 이더넷 페이로드는 1518 바이트입니다 (SFD / 프리 블러 제외). 802.1q 태그가 붙은 프레임은 1522 바이트 (동일한 경고)입니다
Mike Pennington

매우 혼란 스럽습니다. MTU = 1500이지만 프레임 크기는 1542 ??? 따라서 MTU는 페이로드 일뿐입니다. 즉, 1542에서 42 개의 추가 항목을 뺀 프레임 크기입니다. 그 맞습니까?
chrisapotek

죄송합니다, 잘못 입력했습니다. 방금 답변을 업데이트했지만, 여전히 틀리면 알려주세요. 이것은 내가 기억하는 수학입니다 : S
Univ426

죄송합니다. 틀렸어 야합니다. 이해가되었지만 분명히 내 번호가 꺼져 있습니다. 1518처럼 보입니다 : 죄송합니다.
Univ426

혼란스러운 것은 당신이 아니라 모두입니다. 그래서 내 질문은 계속됩니다. MTU와 이더넷 프레임 크기의 차이점은 무엇입니까? 페이로드가 1500 이하입니까?
chrisapotek

0

기본 Ethernet_II 프레임의 경우 프레임 크기는 1518 바이트 (와이어 또는 오프 와이어)입니다. 이것은 각 목적지 및 소스 주소에 대해 6 바이트, 페이로드에 대해 46-1500 바이트 사이의 유형 필드의 경우 2 바이트 (이 경우 IP 헤더 및 UDP 헤더가있는 전체 IP 패킷) 및 4 바이트로 구성됩니다. FCS. 이 외에도 프레임의 크기 (64 바이트)에 대한 제한이 있습니다. 이것이 범위가 46 바이트 인 이유입니다 (두 주소와 유형 및 FCS에 이것을 추가하면 64 바이트-46 + 6 + 6 + 2 + 4 = 64).

프레임이 여러 VLAN을 지원하는 네트워크에 있고 프레임 태그에 프레임을 태그해야하는 경우 유형 필드 앞에 하나의 추가 필드가 추가됩니다. 이것은 4 바이트입니다. 이것은 페이로드의 크기 범위가 맨 아래에서 4 바이트 감소 할 수 있으며 여전히 최소 64 바이트를 가질 수 있음을 의미합니다. 따라서 42. (블랜 태그의 경우 42 + 6 + 6 + 2 + 4 + 4 = 64)

따라서 범위가 1500-42로 쓰여질 때 1500에서 42를 뺀 것은 1500에서 42 바이트 사이의 값이 유효 함을 의미합니다. 와이어 중 하나 인이 태그 된 프레임은 최대 1522 바이트입니다 (하나의 태그 만 사용되는 경우 또는 2 개의 태그가 사용되는 경우 1526). 이 중 어느 것도 숫자 1542를 설명하지 않습니다.

이 숫자에 도달하려면 이더넷에서 프레임을 보내는 방법을 고려해야합니다. 이더넷 LAN에는 클럭이 없으므로 일련의 1과 0이 프레임 송신기에서 전송되어 클럭을 설정합니다. 이것을 프리앰블이라고합니다. 모든 청취자가 모든 프리앰블을 '듣는'것은 아니지만 대부분은 그 일부를 들어야합니다. 프리앰블의 끝을 알리기 위해 전송 된 마지막 8 비트 중 하나가 뒤집혀 10101010 대신 10101011이됩니다.이 바이트를 SDF (Start of Frame Delimiter)라고합니다. 이것은 와이어를 캡처하는 데 기술적으로 유용하지 않으므로 프리앰블의 7 바이트 및 1 바이트 SDF는 일반적으로 계산되지 않지만 원래 1518 인 경우 이제 1526이됩니다. 여전히 1542는 아닙니다.

프레임이 전송 된 후 와이어에 강제 침묵이 발생하여 프레임 간 간격이라고합니다. 이것은 12 바이트 전송에 해당합니다. 이것은 계산되거나 캡처되지 않지만 만약 그렇다면 1538 바이트가됩니다. 1538에서 1542에 도달하는 유일한 방법은 프레임에 태그가 지정되었다는 것입니다 (즉, 4 바이트 계획 태그가 포함되어 있음). 휴, 마침내 1542 년.

그것은 모두 용어에 있습니다. 표준 프레임은 와이어에서 1518 바이트입니다 (캡처 장치에 관한 한). 태그 된 프레임 (단일 태그)은 와이어에서 1522 바이트입니다. 이들은 와이어에서 1538 바이트 또는 1542 바이트의 전송 공간을 차지합니다.

그것이 명확하게하는 데 도움이되기를 바랍니다 ..


-1

아니 당신은 조각화가 발생하기를 원합니다. 이것은 패킷을 조각화 해야하는 이유입니다. 그러나 df 세트는이 방법을 취합니다. 동일한 목적지 준결승은 더 많은 탑재량을 운반하지만 더 느리고 더 정체 할 수 있습니다.


1
이 답변은 질문과 거의 관련이 없지만 완전히 관련이 없습니다.
kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.