用tcpdump分析tcp三次握手,四次挥手

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用tcpdump分析tcp三次握手,四次挥手相关的知识,希望对你有一定的参考价值。

1.tcpdump 简介

   tcpdump是一个对网络上的数据包进行截获的包分析工具,一般linux系统以命令的形式使用

2.tcp三次握手

  建立一个tcp连接会发生下面三个过程:

    1.服务器必须准备好接受外来的连接,一般是调用socket,bind,listen三个函数完成

    2.客户端通过connect主动连接。客户端tcp发送一个SYN,告诉服务器将在连接中发送数据的序列号

    3.服务器必须确认(ACK)客户端的SYN,同时发送自己的SYN

    4.客户端必须确认服务器的SYN

      总共会进行三次数据交互

  用tcpdump呈现这一过程:

    1.开启服务器程序

    2.使用 "sudo tcpdump -i lo" 命令抓取回环127.0.0.1地址

    3.开启客户端程序,建立连接,结果如下:

    技术分享

    客户端localhost.58032 -> localhost.9877  flags[S] (发送syn),服务端返回syn与ack ,客户端再返回ack

技术分享

3.tcp四次挥手

    tcp四次挥手

      1.应用调用close,执行主动关闭,该端的tcp发送一个FIN表示数据发送完毕

      2.接收到FIN的对端执行被动关闭,这个FIN由tcp确认,他的接收作为一个eof,放入缓存等待应用程序接收,

      3.应用程序收到FIN将调用close关闭,它的tcp也发送一个fin

      4.接收到这个最终FIN的原发送端确认这个FIN

        虽然每个方向都需要一个FIN和一个ACK 总共四个分节,实际情况中只需要三个,2,3可以合并为一个分节,

      tcpdump抓到一个断开连接的数据包

    技术分享

    技术分享

以上是关于用tcpdump分析tcp三次握手,四次挥手的主要内容,如果未能解决你的问题,请参考以下文章

一个抓包案例分析 TCP 的三次握手/四次挥手

三次握手四次挥手之抓包讲解

WireShark如何抓包,各种协议(HTTPARPICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手

动画详解TCP 三次握手和四次挥手图文详解

TCP协议详解(图解三次握手四次挥手)

TCP协议详解(图解三次握手四次挥手)