wireshark测试tcp三次握手与四次挥手

wireshark

选择Loopback来监听本地网络。
wireshark测试tcp三次握手与四次挥手_第1张图片

监听的内容是分三大模块的:
wireshark测试tcp三次握手与四次挥手_第2张图片

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。你也可以修改这些显示颜色的规则, View ->Coloring Rules.

而封包详情这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别为

  • Frame: 物理层的数据帧概况
  • Ethernet II: 数据链路层以太网帧头部信息
  • Internet Protocol Version 4: 互联网层IP包头部信息
  • Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
  • Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

因为是分析TCP,我们重点关注Transmission Control Protocol,下面是TCP的分组结构,其中面板也是显示出这些内容。
wireshark测试tcp三次握手与四次挥手_第3张图片

开始操作

在wireshark中监听8082的端口:

tcp.port == 8082

建立一个服务端监听:

nc -nl ip 8082

再启动一个客户端

nc ip 8082

客户端连完再断开就是四次挥手了。

然后就得到下面的分析图:
wireshark测试tcp三次握手与四次挥手_第4张图片

三次握手

第一次握手:建立链接。客户端发送链接的请求,发送SYN报文,将Seq设置为0。然后客户端就进入了SYN_SEND状态,等待服务器的确认。
wireshark测试tcp三次握手与四次挥手_第5张图片

第二次握手:服务器收到客户端的SYN报文段。需要对这个SYN报文段进行确认,发送ACK报文,并将Ack设置为1。同时,自己也要发送SYN请求信息,将Seq设置为0,。服务器将上述的所有信息一并发送给客户端,此时服务器进入SYN_RECV状态。
wireshark测试tcp三次握手与四次挥手_第6张图片

第三次握手:客户端收到服务器的ACK和SYN报文后,进行确认,然后将Ack设置为1,Seq设置为1,向服务器发送ACK报文段,这个报文段发送完毕之后,客户端和服务器都进入了ESTABLISHED状态。就此完成了TCP的三次握手。
wireshark测试tcp三次握手与四次挥手_第7张图片

四次挥手

第一次挥手:客户端想服务器发送一个FIN报文段,将设置Seq为1和Ack为1。此时客户端进入FIN_WAIT_1状态。这表示客户端没有数据要发送服务器了,请求关闭连接。
wireshark测试tcp三次握手与四次挥手_第8张图片

第二次挥手:服务器收到了客户端发送的FIN报文段,向客户端回一个ACK报文段,Ack设置为2,Seq设置为1;服务器进入了CLOSE_WAIT状态,客户端收到服务器返回的ACK报文之后随即进入FIN_WAIT_2状态。
wireshark测试tcp三次握手与四次挥手_第9张图片

第三次挥手:服务器会观察自己是否还有数据没有发送给客户端,如果有,先把数据发送给客户端,再发送FIN报文;如果没有,那么服务器直接发送FIN报文给客户端。请求关闭连接,同时服务器进入LAST_ACK状态。
wireshark测试tcp三次握手与四次挥手_第10张图片

第四次挥手:客户端收到服务器发送的FIN报文,向服务器发送ACK报文,将Seq设置为1,Ack设置为2,然后客户端进入TIME_WAIT状态;服务器收到客户端的ACK报文之后就关闭了连接;此时,客户端等待2msl后依然没有收到回复,则证明服务器已正常关闭,客户端也可以关闭连接了。
wireshark测试tcp三次握手与四次挥手_第11张图片

你可能感兴趣的:(网络,tcp/ip,wireshark,网络)