TCP三次握手+数据传输+挥手 抓包分析

TCP三次握手+数据传输+挥手 抓包分析

工具

  • Wireshark
  • 一台linux服务器

TCP三次握手+数据传输+挥手

8Ji939.jpg

抓包过程:

  1. 在远程服务器(linux)中输入nc -l 8113启动一个8113端口的socket服务器。

  2. 打开Wireshark,在过滤器命令行输入tcp.port == 8113 过滤查看指定端口的TCP数据。8JP8fJ.png

  3. 在本地客户端(windows子系统的linux)输入nc 120.77.204.248 8113连接远程服务器8113端口,Wireshark中会出现TCP三次握手的数据。

8JP1kF.png

  1. 客户端中输入hello2020 按下回车键,会抓到两个数据包。

8JPMwT.png

8JPt61.png

  1. 重复4步骤输入world,数据包如下。

8JPam6.png

  1. 在客户端按下Ctrl+c正常结束连接退出程序,获取到三个数据包。

8JPBkD.png

抓包分析

注意:

  • ACK和ack(也有写出Ack的)其实是两个东西。Ack是:tcp.nxtseq,而ACK是tcp.flags.ack(在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据,这个是一个bool值,在确认收到数据的回复中设置为1) ,网上很多配图ACK、ack、Ack混淆一起,误导他人。
  • 在Wireshark中抓包列表中的Seq和Ack其实是一个简写,不是实际值,比如说步骤3中第一条Seq=0,第二条Ack=1(Seq+1),都是为了显示和阅读方便而已,真正的值见下图所示,本文Seq在简化后的值后面注释实际值:8JPDte.png

分析

把获取的10条数据按次序编码1-10,三次握手1-3,两次传输数据4-7,挥手8-10,逐条分析。

  1. SYN=1 Seq=0(4216076034),方向:客户端->服务器,SYN代表请求建立连接,Seq为序列号,客户端请求服务器建立连接,并且发送一个序列号。

  2. SYN=1 Seq=0(1768531804) ack=1(4216076035) ACK=1,方向:服务器->客户端ack为发送过来的Seq+1,SYN=1代表服务器请求向客户端建立连接,ACK=1代表成功接收数据

  3. Seq=1(4216076035) ack=1(1768531805 ACK=1),方向:客户端->服务器,Seq=发送过来的ack ,ack=发送过来的Seq+1


  1. Seq=1(4216076035) ack=1(1768531805) PUSH=1 len=10 ACK=1,方向:客户端->服务器 Seq和ack与上一次发送的一样,PUSH表示这个数据应该被立即发送,而不要等待额外的数据,len="hello2022\n"的长度。

  2. Seq =1(1768531805) ack=11(4216076045) ACK=1 ,方向:服务器->客户端,Ack = Seq + 传递的字节数(len) + 1, 确定数据已经到底,并且告诉接收的数据大小


  1. Seq=11(4216076045) ack=1(1768531805) PUSH=1 len=6 ACK=1 ,方向:客户端->服务器 同上

  2. Seq=1(1768531805) ack=17(4216076051) ACK=1,方向:服务器->客户端


  1. Seq=17(4216076051) ack=1(1768531805) FIN=1 ACK=1,方向:客户端->服务器

  2. Seq=1(1768531805) ack=18(4216076052) FIN=1 ACK=1 ,方向:服务器->客户端

  3. Seq=18(4216076052) ack=2(1768531806) ,方向:客户端->服务器

最后

结合其他文章和本文中数据慢慢理解,文中的抓包数据下载链接:https://www.lanzous.com/iabcbba,用Wireshark软件可以打开,然后过滤器命令行输入tcp.port == 8113就可以了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值