【网络】Wireshark分析Netty建链过程( tcp三次握手、osi模型)

本文深入探讨了使用Wireshark分析Netty建立连接的全过程,详细讲解了OSI模型各层的功能及数据包格式,通过实例演示了TCP三次握手的验证方法,包括如何监听码流、发送及接收数据包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章:
《Wireshark分析Netty建链过程( tcp三次握手、osi模型)》

《IPV4数据报头部格式》

1. osi模型简述

OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如下图左边部分。在每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如源ip地址和目的ip地址等。
在这里插入图片描述

osi模型中,在下一层的角度看,当收到上一层的包时,全部会被认为是本层的数据,然后在本层中加上自己本层的首部,继续往下传递。一个数据包格式如下:
在这里插入图片描述
举一个例子,比如客户端应用程序A向远端服务器应用程序B发送“早上好”的数据,那么大致流程是这样的:

  • 应用程序A把数据发送给下一层的TCP模块
  • TCP模块属于传输层。TCP在应用层数据的前端加上一个TCP首部。TCP首部中包含源端口号和目标端口号等信息。然后将包发送给IP模块
  • IP模块属于网络层。IP将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并且在TCP首部的前面加上自己的IP首部。IP首部包含了源ip地址和目的ip地址。然后,IP包将被发送给数据链路层,也就是以太网驱动程序
  • 从IP传过来的包,对于以太网驱动程序来说不过就是数据。给这些数据加上以太网首部,里面包含了源MAC地址和目的MAC地址。然后再通过物理层把数据发送给目的MAC地址
  • 服务器物理层接收到来自客户端的数据包时,首先从以太网的包首部找到MAC地址,判断是否为发给自己的包,如果不是就丢弃,如果是就向上转移给IP模块解析
  • IP模块收到IP包首部和后面的数据以后,判断包首部的目的ip地址与自己的ip地址是否匹配,如果匹配,就接收数据并传给TCP模块处理。
  • TCP模块会检查端口号确定接收数据的应用程序是哪一个。
  • 应用程序接收到数据包之后也会根据自己的规则判断做出一系列的处理。

通过上面例子大致的过程,可以体会到从上而下发包再到从下而上收包的过程。

2. tcp三次握手

在这里插入图片描述

3. 验证三次握手

我们通过netty的交互来验证三次握手。

步骤1. 使用RawCap.exe监听码流

使用该工具的原因是Wireshark无法捕获127.0.0.1的报文,详情请参考Wireshark无法捕获127.0.0.1的报文

执行命令:D:\test>RawCap-old.exe 127.0.0.1 dumpfile.pcap

D:\test>RawCap-old.exe 127.0.0.1 dumpfile.pcap
Sniffing IP : 127.0.0.1
File        : dumpfile.pcap
Packets     : 2^C

步骤2. 发送码流

windows本地开启一个netty服务,并在命令行执行telnet localhost 8088,netty服务端代码可以参考Netty入门官方例子解析(一)丢弃服务器

步骤3. 停止RawCap
按ctrl+c停止监听,并查看相应目录下的dumpfile.pcap文件

步骤4. 使用wireshark打开文件

设置过滤条件,排除无关的消息:
ip.src==127.0.0.1 and ip.dst==127.0.0.1
在这里插入图片描述
在这里插入图片描述
客户端通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。
服务器发送ACK包确认应答,发送SYN包请求连接。
客户端针对SYN包发送ACK包确认应答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值