Tcp 세그먼트의 길이가 MSS를 초과합니다.

Tcp 세그먼트의 길이가 MSS를 초과합니다.

내 Linux 시스템에서 웹 페이지를 컬링할 때 수신된 TCP 세그먼트가 MSS보다 훨씬 더 큰 이상한 동작을 발견했습니다.

다음은 tcpdump의 출력입니다.

00 : 00 : 00.000000 IP 10.15.71.190.44503> 115.239.210.27.80 : 깃발 [S], SEQ 248491621, WIN 29200, 옵션 [MSS 1460, SACKOK, TS VAL 294137 ECR 0, NOP, WSCALE 7], 길이 0
00:00:00.004210 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [S.], seq 1384820706, ack 248491622, win 29200, 옵션 [mss 1380,sackOK,nop,nop,nop,nop ,아니요, nop,nop,nop,nop,nop,nop,wscale 7], 길이 0
00:00:00.000063 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 1, win 229, 길이 0
00:00:00.000082 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [P.], seq 1:78, ack 1, win 229, 길이 77
00:00:00.004187 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], ack 78, win 193, 길이 0
00:00:00.002929 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [P.], seq 1:819, ack 78, win 193, 길이 818
00:00:00.000032 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 819, win 241, 길이 0
00:00:00.000075 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [P.], seq 819:16385, ack 78, win 193, 길이 15566
00:00:00.000016 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 16385, win 485, 길이 0
00:00:00.000016 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 16385:19105, ack 78, win 193, 길이 2720
00:00:00.000009 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 19105, win 527, 길이 0
00:00:00.000086 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 19105:20465, ack 78, win 193, 길이 1360
00:00:00.000009 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 20465, win 548, 길이 0
00:00:00.001338 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 20465:28625, ack 78, win 193, 길이 8160
00:00:00.000015 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 28625, win 676, 길이 0
00:00:00.132259 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 28625:42225, ack 78, win 193, 길이 13600
00:00:00.000027 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 42225, win 888, 길이 0
00:00:00.003511 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [P.], seq 42225:55825, ack 78, win 193, 길이 13600
00:00:00.000035 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 55825, win 1101, 길이 0
00:00:00.000041 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 55825:58545, ack 78, win 193, 길이 2720
00:00:00.000033 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 58545, win 1143, 길이 0
00:00:00.001683 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 58545:61265, ack 78, win 193, 길이 2720
00:00:00.000012 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 61265, win 1186, 길이 0
00:00:00.000027 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 61265:63985, ack 78, win 193, 길이 2720
00:00:00.000007 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 63985, win 1228, 길이 0
00:00:00.000034 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 63985:69425, ack 78, win 193, 길이 5440
00:00:00.000008 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 69425, win 1313, 길이 0
00:00:00.001476 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], seq 69425:83025, ack 78, win 193, 길이 13600
00:00:00.000033 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 83025, win 1300, 길이 0
00:00:00.004061 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [P.], seq 83025:89274, ack 78, win 193, 길이 6249
00:00:00.000026 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 89274, win 1380, 길이 0
00:00:00.000139 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [F.], seq 78, ack 89274, win 1411, 길이 0
00:00:00.004609 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [.], ack 79, win 193, 길이 0
00:00:00.000038 IP 115.239.210.27.80 > 10.15.71.190.44503: 플래그 [F.], seq 89274, ack 79, win 193, 길이 0
00:00:00.000018 IP 10.15.71.190.44503 > 115.239.210.27.80: 플래그 [.], ack 89275, win 1411, 길이 0

보시다시피 TCP 핸드셰이크에서 MSS는 1380입니다.

어떻게 이런 일이 일어날 수 있는지 전혀 모르겠습니다. 내 로컬 링크의 MTU는 1500입니다. 그리고 내 Windows에서 이것을 시도했는데 Windows에서는 괜찮습니다.

답변1

아마도 Linux 시스템의 NIC에는 일부 하드웨어 TCP 오프로딩 기능이 활성화되어 있으므로 NIC가 패킷을 처리하고 결과를 수정하기 전까지 커널은 패킷을 볼 수 없습니다.

관련 정보