호스트 A는 각각 시퀀스 번호 70과 100을 사용하여 두 개의 연속 TCP 세그먼트를 호스트 B로 보냈습니다.
(1) 첫 번째 세그먼트는 몇 바이트의 데이터를 전달합니까? 데이터는 70-99, 100-70=30입니다.
(2) 첫 번째 세그먼트를 받은 후 호스트 B가 다시 보낸 확인 번호는 무엇입니까? 반송된 확인번호는 100입니다.
(3) 두 번째 메시지 세그먼트를 수신한 후 B가 다시 보낸 확인 번호가 180이라면 A가 보낸 두 번째 메시지 세그먼트의 데이터에는 몇 바이트가 있습니까? 확인번호가 180이면 데이터는 180-100=80입니다.
(4) A가 보낸 첫 번째 세그먼트가 손실되었지만 두 번째 세그먼트가 B에 도달한 경우 B는 두 번째 세그먼트가 도착한 후 A에 승인을 보냅니다. 이 확인 번호는 무엇이어야 합니까? 첫 번째 세그먼트가 수신되지 않았으므로 승인 번호는 70입니다.
확장 정보:
mytcp_sync_mss 함수는 tcp 소켓의 mss 관련 구성원에 대한 데이터 동기화를 수행합니다.
1. 일반적으로 mtu-IP 헤더-TCP 헤더여야 합니다(옵션 제외).
2. struct tcp_sock-gt; mss_clamp에는 피어가 발표한 허용 가능한 MSS 값이 포함되어 있습니다. 값이 첫 번째 단계에서 계산된 MSS보다 작습니다.
3. IP 헤더에 IP 옵션이 포함된 경우 MSS에서 옵션 길이를 빼야 합니다.
4. MSS가 이미 48보다 작으면 48로 만듭니다.
5. TCP 헤더의 옵션 길이를 뺍니다.
6. 현재 MSS가 슬라이딩 창 크기의 1/2보다 큰 경우 슬라이딩 창 크기의 1/2을 MSS 값으로 사용합니다(단, 48 이상).
7. mss_cache 멤버는 방금 계산한 MSS를 캐시하는 데 사용됩니다.
그러므로 로컬 이더넷의 MSS가 1460이라고 말하는 것은 정확하지 않습니다. 또한 동적으로 변경됩니다. IP 헤더와 TCP 헤더에 옵션이 나타나면 일반적으로 MSS가 줄어듭니다. , TCP 헤더에는 12바이트 타임스탬프 옵션(+ 2바이트 패딩 옵션)이 있으며 이때 MSS는 1448과 같습니다.
바이두 백과사전—TCP 메시지 형식