2017-05-04 4 views
1

wireshark에서 HTTP 웹 서버 (파일 업로드)로 4096 바이트의 데이터를 보낼 수 있다는 것을 알았지 만 서버는 한 번에 1460 바이트의 데이터를 수신하는 것처럼 보입니다 . 왜 이런 경우입니까?wireshark에서 TCP ACK 패킷

답변

1

TCP 세그먼트의 크기는 MSS (최대 세그먼트 크기)로 제한되며 기본적으로 MTU (최대 전송 단위)보다 작은 IP 및 TCP 오버 헤드를 포함하는 바이트입니다. 일반적인 이더넷 링크에서 MTU는 1500 바이트이며 기본 IP 및 TCP 헤더는 각각 20 바이트를 포함하므로 MSS는 1460 (1500 - 20 - 20)입니다.

4096 바이트의 길이 필드로 표시 패킷을보고있는 경우, 그것은 거의 확실하게 당신이 송신 호스트에서 캡처하고 있으며 와이어 샤크는 1460 개 바이트 청크로 분할 된 것 전에 큰 패킷 를 건네되고 있음을 의미 . 수신 측에서 캡쳐 할 경우 개별적인 1460 바이트 세그먼트가 도착하고 하나의 큰 4096 바이트 패킷이 표시되지 않습니다.

자세한 내용은 Jasper Bongertz의 블로그 "The drawbacks of local packet captures"을 읽어 보시기 바랍니다. 기본적으로

+0

의미가 있습니다. 그래서 본질적으로 수신기 쪽에서, 그 특정 세그먼트는 MTU로 인해 1460의 유효 데이터 길이를 가진 3 개의 더 작은 패킷으로 분할되었을 것입니다. –

+0

오른쪽. 보낸 사람은 실제로 프레임 당 1460 바이트의 유효 TCP 페이로드로 1500 바이트 (프레임 바이트 자체를 계산하면 1518 바이트) 크기의 이더넷 프레임을 보내고 있습니다. 그것이 서버가받는 것입니다. 참고 자료 : https://en.wikipedia.org/wiki/Ethernet_frame#Structure –

1

TCP 경로 MTU 검색을 사용

시스템은
  • IP 라우터 또는 로컬 컴퓨터가 볼 때 IP 헤더에 DF를 플래그 (DF)을 단편화하지 않는 설정 네트워크에 패킷을 전송
    • 새로운 MTU를 포함하는 피드백 (RTCP 단편화 필요)을 전송하는 다음 홉 링크의 MTU와 일치하도록 조각화되어야하는 패킷
    • 시스템에서 조각화가 필요한 ICMP를 수신하면 MSS를 조정하고 데이터를 다시 보냅니다.

    이 절차는 네트워크의 전반적인 부하를 줄이고 각 패킷 배달의 가능성을 높이기 위해 수행됩니다.

    이 때문에 1460 패킷이 표시됩니다.

    질문에 관해서 : 서버는 한 번에 1460 바이트의 데이터를 수신 확인하는 것처럼 보입니다. 왜 이런 경우입니까?

    "확인하지 않고 보낼 수있는 데이터의 바이트 수"를 정의하는 TCP 보관 추적 창. 그 목적은 흐름 제어 메커니즘 (송신자가 처리 할 수없는 너무 많은 데이터를 전송할 수 없음)과 혼잡 제어 메커니즘 (송신자가 과부하 네트워크에 너무 많은 데이터를 전송할 수 없음)을 제공하는 것입니다. 윈도우는 수신 측에 의해 정의되며 TCP가 실제 채널 대역폭을 추정 할 때 연결 중에 증가 할 수 있습니다. 따라서 여러 패킷을 수신 확인하는 하나의 ACK가 표시 될 수 있습니다.