2017-10-13 12 views
0

다음 패킷의 시퀀스 번호에 ack nr과 길이가 더해 집니까?wireshark의 패킷을 이해하는 데 문제가 있습니다.

또는

는 다음 패킷의 순서 번호가 서열 NR 플러스의 길이를 얻을 수 있습니까 이전

패킷이 임의의 순서로 될 수 있을까? 그렇다면 왜 패킷이 손실되었는지 어떻게 알 수 있습니까?

답변

0

먼저 두 세트의 시퀀스 및 확인 응답 번호 쌍이 있습니다. 하나는 대화의 각 측면에 대해 설정됩니다. 시퀀스 번호는 발신자의 현재 번호이고 수신 확인 번호는 발신자가 보낸 "다음 예상 순차 번호"에 대한 수신자의 아이디어입니다. 일반적으로 이들은 다음과 같이 작동합니다 ...

가정 : HostA의 초기 시퀀스 번호는 100이고 HostB의 초기 시퀀스 번호는 200입니다.이 번호는 임의이며 시작 값은 전혀 중요하지 않지만 는 TCP 3 방향 핸드 셰이크)

시나리오 :. 호스트 A는 호스트 B에 TCP 페이로드의 1000 바이트를 전송 :

Seq # Ack # TCP Payload (bytes) Next Seq # 
----- ----- ------------------- ---------- 
100 200     1000  1100 

을 여기에서 호스트 A의 초기 시퀀스 번호 (100)로 가정하고 우리가 그것을 가정하고 있기 때문에 1000 바이트의 TCP 페이로드를 전송하면 다음 예상 시퀀스 번호를 100 + 1000 = 1100. 우리가 HostB에서 찾고있는 ACK #입니다. HostA는 1000Bytes의 페이로드를 모두 받았고 HostA의 다음 TCP 세그먼트가 1100이라는 시퀀스 번호를 기대합니다.

HostB는 인정합니다 호스트 A로부터 위의 TCP 세그먼트 수신 :

Seq # Ack # TCP Payload (bytes) Next Seq # 
----- ----- ------------------- ---------- 
200 1100      0   200 

이것은 HostB의 일련 번호 및 확인 응답 번호입니다. 이 세트는 HostA의 세트와 완전히 별개입니다. 여기서 HostB는 HostA에 1100의 ACK (초기 시퀀스 번호 100 + 페이로드 1000 바이트 추가)를 전송하여 이전 패킷에서 보낸 모든 1000 바이트의 데이터 수신을 HostA에 확인했습니다. HostB 자신의 시퀀스 번호 200은 HostA가 역방향으로 HostB가 HostA로 보낸 데이터가 없다는 것을 제외하고는이 데이터 전송에서 아무런 역할을하지 않습니다.

이 세그먼트를 HostA에서 수신 한 경우 ACK 호스트 B는 결국 100A만의 ACK를 전송하므로 호스트 B는 1000Byte를 전송하는 세그먼트를 수신하지 못합니다. 따라서 페이로드를 재전송해야합니다.

도움이 되셨습니까?

자세한 내용 및 자세한 내용은 RFC 793을 참조하십시오.