Skip to content

Latest commit

 

History

History
69 lines (41 loc) · 2 KB

tcp_connection.md

File metadata and controls

69 lines (41 loc) · 2 KB

TCP连接过程解析

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

一、介绍

  • TCP连接过程的理解有助于以后的编程,尤其是需要扫描网络或传输数据的时候。

  • TCP连接过程总共分为三个阶段。分别为握手、传输和挥手。通过对比wireshark抓包和TCP连接示意图来掌握TCP连接过程。着重介绍序列号的的变化规则。

一、抓包

  • 此次演示使用Python程序来建立TCP连接进行通信。包括握手、数据传输和挥手三个阶段。

  • 设置wireshark抓包过滤器规则:

    host khdxs7.server and port 8600
  • 在服务器进行监听,启动server.py

    python3 server.py
  • 在本地计算机启动客户端,发起连接。

    python3 client.py

    传输内容为khdxs7,共6个字符。

二、分析

wireshark查看TCP连接过程:

wireshark-->Statistics-->Flow GraphFlow type设置为TCP Flows

1. 标志位(flags)

  • SYN(Synchronous):同步标志,发起连接请求,用于建立连接。

  • ACK(Acknowledgement):确认标志,用于表示已收到请求和确认身份。

  • PSH(Push):推送标志,用于发送数据。

  • FIN(Finish):结束标志,发起断开连接请求,用于断开连接。

  • RST(Reset):复位标志,用于出现异常时断开连接。

2. 序列号与确认号(Seq and Ack)

  • 序列号增加规则:

    Seq = 己方序列号(Seq) + 己方数据长度(Len) + (如果SYN=1或FIN=1,则加一)
  • 确认号增加规则:

    Ack = 对方序列号(Seq) + 对方数据长度(Len)+ (如果SYN=1或FIN=1,则加一)

3. TCP连接示意图

2.png