文章目录
后面再完整出理论、出实战、出总结
TCP连接过程
三次握手(Three-Way Handshake)过程。
TCP抓包结果分析:
- step1:Client1客户端
--->
Server1服务器发送SYN(同步序列编号)
源IP | 目的IP | 源端口 | 目的端口 | [SYN] | Seq | Win | Len | MSS |
---|---|---|---|---|---|---|---|---|
192.168.1.1 | 192.168.2.1 | 2057 | 21 | 同步 | 0 | 8192 | 0 | 1460 |
说明:Client1客户端向Server1服务器发送一个SYN报文段。这是连接建立的第一步,其中Seq=0表示初始序列号,Win=8192表示窗口大小,Len=0表示没有数据负载,MSS=1460表示最大报文段长度。
- setp2:Server1服务器
--->
Client1客户端发送SYN-ACK (同步-确认)
源IP | 目的IP | 源端口 | 目的端口 | [SYN,ACK] | Seq | ACK | Win | Len | MSS |
---|---|---|---|---|---|---|---|---|---|
192.168.2.1 | 192.168.1.1 | 2057 | 21 | 同步-确认 | 0 | 1 | 8192 | 0 | 1460 |
说明:Server1服务器收到Client1客户端的SYN报文后,发送一个SYN-ACK报文段作为响应。Seq=0是服务器的初始序列号,Ack=1是对客户端SYN报文中序列号加1的确认,Win=8192是窗口大小,Len=0表示没有数据负载,MSS=1460是最大报文段长
- Step3:Client1客户端
--->
Server1服务器发送ACK(确认)
源IP | 目的IP | 源端口 | 目的端口 | [ACK] | Seq | ACK | Win | Len |
---|---|---|---|---|---|---|---|---|
192.168.1.1 | 192.168.2.1 | 2057 | 21 | 确认 | 1 | 1 | 8192 | 0 |
说明:客户端收到服务器的SYN-ACK报文后,发送一个ACK报文段作为最终响应。Seq=1表示客户端的序列号从0增加到了1,Ack=1是对服务器SYN-ACK报文中序列号的确认,Win=8192是窗口大小,Len=0表示没有数据负载。
附录
TCP报文中关键术语字段
- SYN (Synchronize Sequence Numbers):
- 功能:SYN是一个TCP控制位标志,当设置为1时,表示这是一个同步序列编号报文段,用于建立连接时同步双方的初始序列号。
- Seq (Sequence Number):
- 功能:序列号用于标识TCP报文段中数据的第一个字节的编号。在连接建立时,SYN报文中的序列号是随机生成的,确保了TCP连接的每个字节流的唯一性。
- Win (Window Size):
- 功能:窗口大小是一个TCP选项,用于流量控制。它告诉对方可以发送多少字节的数据而不需要等待确认。窗口大小是动态调整的,以控制数据传输的速率。
- Len (Length):
- 功能:长度字段表示TCP报文段的长度,包括TCP头部和数据部分。如果报文中没有数据负载,长度可能为0。
- MSS (Maximum Segment Size):
- 功能:最大报文段长度是一个TCP选项,用于通知对方在当前连接上能够接收的最大TCP报文段大小(不包括IP头部)。MSS通常设置为MTU(最大传输单元)减去必要的IP和TCP头部大小,以避免IP层的分片。
- ACK (Acknowledgment Number):
- 功能:确认号是期望收到对方下一个TCP报文段的序列号。在SYN-ACK报文中,ACK标志被设置,并且确认号通常设置为接收到的SYN报文中序列号加1。
- FIN (Finish):
- 功能:FIN是一个TCP控制位标志,用于关闭一个方向的连接。当设置为1时,表示发送方已经完成发送数据,并请求关闭连接。