本文简述一下内容:
- TCP三次握手和四次挥手
- 网络分析工具tcpdump抓包
No.1 tcp三次握手和四次挥手
---确认ACK, 仅当ACK=1时, 确认号字段才有效. TCP规定在连接建立后所有报文的传输都必须把ACK置1
---同步SYN, 在连接建立时用来同步序号. 当SYN=1 ACK=0 表明是连接请求报文, 若同意连接则响应报文中应该使SYN=1 ACK=1
---终止FIN, 用来释放连接. 当FIN=1表明此报文的发送方的数据已经发送完毕并且要求释放
三次握手_建立连接
- 第一次握手:Client将标志位SYN置为1, 随机产生一个值seq=x, 并将该数据包发送给Server, Client进入SYN_SENT状态, 等待Server确认
- 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接, Server将标志位SYN和ACK都置为1, ack=x+1, 随机产生一个值seq=y, 并将该数据包发送给Client以确认连接请求, Server进入SYN_RCVD状态
- 第三次握手: Client收到确认后, 检查ack是否为x+1, ACK是否为1, 如果正确则将标志位ACK置为1, ack=y+1并将该数据包发送给Server, Server检查ack是否为y+1, ACK是否为1, 如果正确则连接建立成功, Client和Server进入ESTABLISHED状态, 完成三次握手, 随后Client与Server之间可以开始传输数据了
四次挥手_断开连接
- 第一次挥手:Client发送一个FIN, 用来关闭Client到Server的数据传送, Client进入FIN_WAIT_1状态
- 第二次挥手:Server收到FIN后, 发送一个ACK给Client, 确认序号为收到序号+1, Server进入CLOSE_WAIT状
- 第三次挥手:Server发送一个FIN, 用来关闭Server到Client的数据传送, Server进入LAST_ACK状态
- 第四次挥手:Client收到FIN后, Client进入TIME_WAIT状态, 接着发送一个ACK给Server, 确认序号为收到序号+1, Server进入CLOSED状态, 完成四次挥手
No.2 网络分析工具tcpdump抓包
抓取tcp的三次握手
tcpdump -S host 192.168.0.108 and 151.101.100.133
抓取tcp的四次挥手
(算了,懒得写了)在上方的基础上断开连接即可