Почему не удается выполнить одно из четырехсторонних рукопожатий с командой nc

Я использую команду nc для имитации TCP-соединения с клиент и сервер.

Я выполняю команду nc -l 1234 и tcpdump -i eth0 port 1234 на сервере и выполняю команду nc IP_OF_SERVER 1234 на клиенте.

Затем я набираю abcd и Ctrl + D на клиенте.

На терминале tcpdump я Получите вывод, как показано ниже:

13:35:11.800516 IP 172.19.48.20.51678 > 172.19.48.2.1234: Flags [S], seq 3620507131, win 29200, options [mss 1460,sackOK,TS val 2065731649 ecr 0,nop,wscale 7], length 0
13:35:11.800529 IP 172.19.48.2.1234 > 172.19.48.20.51678: Flags [S.], seq 451776773, ack 3620507132, win 28960, options [mss 1460,sackOK,TS val 1583409528 ecr 2065731649,nop,wscale 7], length 0
13:35:11.800586 IP 172.19.48.20.51678 > 172.19.48.2.1234: Flags [.], ack 1, win 229, options [nop,nop,TS val 2065731649 ecr 1583409528], length 0
13:35:13.793724 IP 172.19.48.20.51678 > 172.19.48.2.1234: Flags [P.], seq 1:6, ack 1, win 229, options [nop,nop,TS val 2065733642 ecr 1583409528], length 5
13:35:13.793733 IP 172.19.48.2.1234 > 172.19.48.20.51678: Flags [.], ack 6, win 227, options [nop,nop,TS val 1583410026 ecr 2065733642], length 0
13:35:18.442459 IP 172.19.48.20.51678 > 172.19.48.2.1234: Flags [F.], seq 6, ack 1, win 229, options [nop,nop,TS val 2065738291 ecr 1583410026], length 0
13:35:18.442479 IP 172.19.48.2.1234 > 172.19.48.20.51678: Flags [F.], seq 1, ack 7, win 227, options [nop,nop,TS val 1583411188 ecr 2065738291], length 0
13:35:18.442520 IP 172.19.48.20.51678 > 172.19.48.2.1234: Flags [.], ack 2, win 229, options [nop,nop,TS val 2065738291 ecr 1583411188], length 0

Итак, я вижу, что в начале есть трехстороннее рукопожатие, отправка сообщения длиной 5 на сервер и подтверждение для клиента, это именно то, что я ожидал.

Однако, похоже, что есть только три записи об отключении. Как мы все знаем, TCP требуется четырехстороннее рукопожатие для отключения. Почему всего три записи вместо четырех?

0
задан 16 December 2019 в 12:34
1 ответ

, Как все мы знаем, TCP нужно четырехстороннее квитирование для разъединения.

TCP не нужны четыре - путь квитирование для разъединения. Вместо этого требуется четыре - квитирование шага :

  1. А отправляет, FIN
  2. B отправляет, ACK к FIN
  3. B отправляет FIN
  4. , А отправляет ACK в FIN

B, шаги 2+3 могут быть объединены в одноэтапное, где пакет с FIN+ACK, отправляют, и это здесь имеет место:

[1]    13:35:18.442459 A > B: Flags [F.], seq 6, ack 1, ...
[2+3]  13:35:18.442479 B > A: Flags [F.], seq 1, ack 7, ... 
[4]    13:35:18.442520 A > B: Flags [.], ack 2, ...
1
ответ дан 30 December 2019 в 00:06

Теги

Похожие вопросы