원래 주소 :
https://yq.aliyun.com/articles/222535
저자 덕분에!
MTU 란?
최대 전송 단위 (약칭 MTU), 중국어 이름은 최대 전송 단위입니다.
이것은 어떤 종류의 네트워크 개념입니까?
다음 표에서 볼 수 있듯이 7 계층 네트워크 프로토콜에서 MTU는 데이터 링크 계층 의 개념 입니다 . MTU는 IP, ICMP 등과 같은 상위 계층 프로토콜 의 크기 인 데이터 링크 계층의 페이로드를 제한합니다 .
OSI의 레이어 | 풍모 | TCP / IP 프로토콜 제품군 |
---|---|---|
응용 계층 | 파일 전송, 이메일, 파일 서비스, 가상 터미널 | TFTP, HTTP, SNMP, FTP, SMTP, DNS, 텔넷 |
프레젠테이션 레이어 | 데이터 형식화, 코드 변환, 데이터 암호화 | 동의하지 않음 |
세션 계층 | 다른 연락처와의 연결 해제 또는 연결 설정 | 동의하지 않음 |
전송 계층 | 종단 간 인터페이스 제공 | TCP, UDP |
네트워크 계층 | 데이터 패킷에 대한 라우팅 선택 | IP , ICMP , RIP , OSPF , BGP , IGMP |
데이터 링크 계층 | 주소 지정 프레임 전송 및 오류 감지 기능 | 슬립, CSLIP, PPP, ARP, RARP, MTU |
물리적 계층 | 이진 데이터 형태로 물리적 미디어의 데이터 전송 | ISO2110, IEEE802, IEEE802.2 |
MTU의 용도는 무엇입니까?
가장 간단한 시나리오를 제공하기 위해 가정의 랩톱에서 인터넷을 검색하고 라우터를 사용하여 통신 네트워크에 연결 한 다음을 방문 www.baidu.com
합니다. 랩톱의 이더넷 데이터 프레임은 총 다음 경로를 통과합니다.
笔记本 -> 路由器 -> 电信机房 -> 服务器
그중 각 노드에는 다음과 같은 MTU 값이 있습니다.
-
1500 1500 1500
-
笔记本 -> 路由器 -> 电信机房 -> 服务器
이제 노트북의 최대 MTU를 1700으로 설정 한 다음 특 대형 IP 데이터 패킷 (2000)을 전송한다고 가정 해 보겠습니다. 이때 외부 네트워크에서 전송할 때 1700, 300, 2 개의 패킷으로 분할됩니다. 그런 다음 전송할 헤더 정보를 추가하십시오.
-
1700 1500 1500
-
笔记本 -> 路由器 -> 电信机房 -> 服务器
라우터는 1700 프레임을 수신하고 자체적으로 설정된 최대 값 인 1500보다 큰 것을 발견했습니다. IP 패킷의 DF 플래그 비트가 1 (서브 패키징이 허용되지 않음을 의미 함)이면 라우터가 직접 폐기합니다. 패킷이 통신에 전혀 도달하지 않을 것입니다 컴퓨터 실에서 서버에 도달 할 수 없으므로 여기서 MTU가 실제로 각 노드의 제어 값임을 알 수 있습니다. 데이터 프레임이이 값보다 크면 조각화하거나 직접 버릴 수 있습니다.
왜 1500입니까?
실제로 표준 이더넷 데이터 프레임의 크기는 다음과 같습니다. 1518
헤더 정보는 14 바이트이고 테일 체크섬 FCS는 4 바이트를 차지하므로 상위 계층 프로토콜에 예약 된 실제 데이터 크기는 1518-14-4 = 1500입니다. 그렇다면 1518의 가치는 어디에서 왔습니까?
더 큰 가치를 가정
MTU 값이 IP 패킷 크기와 같다고 가정하면 IP 패킷의 크기는 65535이고 이더넷 프레임 헤더를 더한 다음 이더넷 프레임의 크기는 65535 + 14 + 4 = 65553
다음과 같습니다. 완벽 해 보이지만 발신자는 그렇지 않습니다. 포장을 풀고 수신기를 재구성 할 필요가 없습니다.
그런 다음 현재 대역폭이 다음과 같다고 가정 100Mbps
합니다. 이더넷 프레임은 전송에서 인식 할 수있는 가장 작은 단위이고 더 아래쪽은 0101에 해당하는 광 신호이므로 대역폭은 동시에 하나의 이더넷 프레임 만 전송할 수 있습니다. 동시에 둘 이상을 보내면 반대쪽 끝이 이더넷 프레임을 재 조립할 수 없습니다. 100Mbps
대역폭에서 (중간에 손실이 없다고 가정)이 프레임을 보내는 데 필요한 시간을 계산해 보겠습니다.
( 65553 * 8 ) / ( 100 * 1024 * 1024 ) ≈ 0.005(s)
100M 네트워크에서 프레임을 전송하는 데 5ms가 걸립니다. 이는 다른 프로세스가이 5ms 동안 데이터를 보낼 수 없음을 의미합니다. 이전 전화 걸기이고 네트워크 속도가 2M에 불과한 경우 :
( 65553 * 8 ) / ( 2 * 1024 * 1024 ) ≈ 0.100(s)
100ms, 이것은 단순히 악몽입니다. 사실 이것은 마치 신호등과 같아서 시간을 합리적으로 설정하고 교대로지나 가야합니다. 그렇지 않으면 신호등이 항상 같은 방향으로 녹색이면 반대 방향은 차단됩니다.
너무 커서 설정을 더 작게 할 수 있습니까?
MTU 값이 100으로 설정되어 있다고 가정하면 단일 프레임의 전송 시간은 2Mbps 대역폭이어야합니다.
( 100 * 8 ) / ( 2 * 1024 * 1024 ) * 1000 ≈ 5(ms)
문제는 MTU가 아무리 설정되어 있어도 이더넷 헤더와 프레임 테일의 크기는 14 + 4로 고정되어 있다는 것입니다. 따라서 MTU가 100 일 때 이더넷 프레임의 전송 효율은 다음과 같습니다.
( 100 - 14 - 4 ) / 100 = 82%
공식은 다음과 같습니다. ( T - 14 - 4 ) / T
T가 무한대에 가까울 때 효율성은 가깝습니다 100%
. 즉, MTU 값이 클수록 전송 효율이 가장 높지만 전송 시간의 이전 시점을 기준으로 처음부터 절충안을 선택합시다. 그리고 끝은 18입니다. 그런 다음 총 1500을 합치면 총 크기는 1518, 전송 효율 :
1500 / 1518 = 98.8%
100Mbps 전송 시간 :
( 1518 * 8 ) / ( 100 * 1024 * 1024 ) * 1000 = 0.11(ms)
2Mbps 전송 시간 :
( 1518 * 8 ) / ( 2 * 1024 * 1024 ) * 1000 = 5.79(ms)
전체 시간이 허용됩니다
최소값은 64로 제한됩니다.
왜 64입니까?
이것은 실제로 반이중 이더넷 프레임 충돌과 관련이 있으며 관심있는 학생들은 스스로 검색 할 수 있습니다.
게임을 할 때 MTU를 1480으로 변경할 때 왜 멈추지 않나요?
라우터의 기본값은 대부분 1500이고 이론상 문제가 없는데 게임을 원활하게 할 때 왜 1480으로 변경할 수 있습니까? 그 이유는 당시 인터넷 서핑에 ADSL을 사용하고 있었고 ADSL에서 사용하는 PPPoE 프로토콜을 사용했기 때문입니다.
PPPoE
PPPoE 프로토콜은 이더넷과 IP 사이에 있습니다. 프로토콜은 PPP (Point to Point Protocol)와 oE (이더넷을 통한), 즉 이더넷의 PPP 프로토콜로 나뉘며 PPPoE 프로토콜 헤더 정보는 다음과 같습니다.
| VER(4bit) | TYPE(4bit) | CODE(8bit) | SESSION-ID(16bit) | LENGTH(16bit) |
여기에는 총 48 비트가 있는데, 이는 6 바이트입니다. 그러면 다른 2 바이트는 무엇입니까? 대답은 2 바이트를 차지하는 PPP 프로토콜의 ID 번호이므로 PPPoE 환경에서 최상의 MTU 값은 1500-6-2 = 1492입니다.
내 서핑 방식
내 인터넷 경로는 다음과 같습니다.
PC -> 路由器 -> 电信
라우터에서 전화를 걸면 PC가 라우터에 연결되어 인터넷에 액세스합니다.
근본 원인
문제는 라우터 전화 접속에 있습니다. PC 전화 접속 인 경우 PC는 PPPoE를 캡슐화하고 MTU : 1492에 따라 이더넷 프레임을 캡슐화합니다. 라우터를 통해서도 라우터는 현재 만 전달합니다. 그리고 그것을 풀지 않을 것입니다.
라우터로 전화를 걸 때 PC는 라우터의 통신 모드를 알지 못하며 네트워크 카드 설정 및 기본 MTU 1500으로 이더넷 프레임을 캡슐화합니다. 라우터에 도달하면 라우터는 라우터에 의해 캡슐화되어야합니다. PPPoE 프로토콜과 8이 경우 바이트의 헤더 정보를 압축 해제해야합니다. 라우터는이 프레임의 내용을 두 개의 프레임으로 분할하여 전송할 프레임 1 개는 1492 개, 다른 프레임은 8 개, 그리고 PPPoE 헤더를 전송합니다. 보내기에 추가됩니다.
일반적으로 라우터가 데이터 양을 처리 할 수 있기 때문에 게임이 멈춰 있지 않지만 그룹 몬스터 AOE의 경우 단시간에 데이터 양이 너무 많아 라우터가 처리 할 수 없어 패킷 손실이 발생합니다. . 연결이 끊어졌습니다.
게시물에 언급 된 1480은 두 번째 다이얼링으로 인한 또 다른 PPPoE 캡슐화를 피하기 위해 가능한 한 작게 설정 될 수 있으며, 시간이 오래 걸리기 때문에 그 시간에 패킷을 캡처하기 위해 현장으로 돌아갈 방법이 없습니다.
결론적으로
1518의 값은 전송 효율과 전송 시간을 고려하여 선택한 값으로 현재 네트워크 링크에 노드가 너무 많기 때문에 한 노드의 MTU 값이 다른 노드와 다를 경우 가져 오기가 쉽다. 포장을 풀고 재구성하면 발송 실패로 이어질 수도 있습니다.