利用 Wireshark 进行 TCP 协议分析TCP 报文首部,如下图所示:1. 源端口号:数据发起者的端口号,16bit2. 目的端口号:数据接收者的端口号,16bit3. 序号:32bit 的序列号,由发送方使用4. 确认序号:32bit 的确认号,是接收数据方期望收到发送方的下一个报文段的序号,因此确认序号应当是上次已成功收到数据字节序号加 1。5. 首部长度:首部中 32bit 字的数目,可表示 15*32bit=60 字节的首部。一般首部长度为 20 字节。6. 保留:6bit, 均为 07. 紧急 URG:当 URG=1 时,表示报文段中有紧急数据,应尽快传送。8. 确认比特 ACK:ACK = 1 时代表这是一个确认的 TCP 包,取值 0 则不是确认包。9. 推送比特 PSH:当发送端 PSH=1 时,接收端尽快的交付给应用进程。10. 复位比特(RST):当 RST=1 时,表明 TCP 连接中出现严重差错,必须释放连接,再重新建立连接。11. 同步比特 SYN:在建立连接是用来同步序号。SYN=1, ACK=0 表示一个连接请求报文段。SYN=1,ACK=1 表示同意建立连接。12. 终止比特 FIN:FIN=1 时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。13. 窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。14. 检验和:该字段检验的围包括首部和数据这两部分。由发端计算和存储,并由收端进行验证。15. 紧急指针:紧急指针在 URG=1 时才有效,它指出本报文段中的紧急数据的字节数。16. 选项:长度可变,最长可达 40 字节TCP 的三次握手和四次挥手:第一次握手数据包客户端发送一个 TCP,标志位为 SYN,序列号为 0, 代表客户端请求建立连接。 如下图第二次握手的数据包服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的 I S N 加 1 以.即 0+1=1, 如下图第三次握手的数据包客户端再次发送确认包(ACK) SYN 标志位为 0,ACK 标志位为 1.并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方.并且在数据段放写 ISN 的+1, 如下图:四次挥手 Four-way Handshake四次挥手用来关闭已建立的 TCP 连接1. (Client) –> ACK/FIN –> (Server)2. (Client) <– ACK <– (Server)3. (Client) <– ACK/FIN <– (Server)4. (Client) –> ACK –> (Server)第一次挥手:客户端给服务器发送 TCP 包,用来关闭客户端到服务器的数据传送。将标志位 FIN 和 ACK ...