个性化阅读
专注于IT技术分析

TCP、UDP、IP、以太网Ethernet协议报文详解以及使用Wildpackets Omnipeek网络抓包分析

一、TCP报文分析

TCP报头信息详解

TCP协议在网络五层模型中的传输层,TCP提供端到端的传输,保证传输的可靠性,面向连接,需要预先检测连接状态和条件,另一个重要的功能就是提供多路复用,主要通过应用程序提供不同的端口实现。

具体对TCP协议的理解就是它的报文格式了,对任一种协议都是这样,报文格式是协议的主要内容。TCP报文包含的字段和作用如下:

1、16位源端口(Source Port):源主机即本机的端口,由应用程序提供,端口范围为1-65535,1-1023为系统端口,1024-65535为用户自定义端口。平时我们编写服务器都会提供端口,而客户端一般不用,但是客户端同样还是有端口的,只不过没有指定的话会由系统指定。

2、16位目标端口(Destination Port):需要主动连接的主机端口。

3、32位序列号(Sequence Number):受SYN控制位影响,表示初始序列号或数据分段的标识。

4、32确认号(Acknowledgement Number):是否确认收到对应序列号的数据包,确认收到的话序列号+1表示确认。

5、4位首部长度(Headr Length):TCP头的长度。

6、6位保留位(Reserved bits):全部位都是0,留在将来定义新功能。

7、控制位

(1)URG(Urgent):紧急位,指定紧急指针是否有效,配合紧急指针使用,为1则指明紧急数据包。

(2)ACK(Acknowledgement):确认位,指定该数据包是否是确认数据包,指定确认号是否有效。

(3)PSH(Push):推送位,表示有数据需要处理。

(4)RST(Reset):重置位,为1则需要重新连接,一般重连次数是3次。

(5)SYN(Synchronize):同步序列或初始化,表明是否需要新建链接,是否为首次连接的初始序列,指定序列号是否有效。

(6)FIN(Finish):结束位,为1表示请求断开连接。

8、16位窗口大小:类似于缓冲区的大小,这是主机双方协议好的大小,可以在这里做流量控制。

9、16位校验和(Checksum):对这个TCP报文的校验和。

10、紧急指针(Urgent Pointer):URG控制位设置为1时才有效。

11、选项(Options):长度不确定,长度为32位。

12、数据内容(Data)。

一个实际的TCP报头信息例子如下:

TCP报头信息实际例子

二、TCP三次握手四次分手

我们可以从TCP的报文信息中了解到,其6位的的操作位是比较重要的,控制着TCP整个传输和连接。从TCP建立连接到断开连接,基本起码需要经过三次握手,传输数据,然后到四次分手,过程中都少不了对控制位的使用。

TCP三次握手四次分手过程

1、TCP三次握手过程

  1. 主机client主动发送SYN数据包到服务器server,即Seq=x,SYN=1,序列号随机生成为x,SYN位置1表示32位序列号为初始序列号,主机client需要和server建立连接。
  2. 服务器server收到请求并响应主机client,向client发送SYN+ACK数据包,即Seq=y,Ack=x+1,SYN=1,ACK=1。ACK为1表示这是一个确认包,Ack为32位确认位,将x序列号+1表示已经收到x+1之前的所有数据包。Seq=1,SYN=y,表示服务器也需要和client建立连接。
  3. 主机client收到服务器server的数据包,向服务器发送ACK报文数据,即Seq=x+1,Ack=y+1,ACK=1,ACK为1表示一个确认包,确认内容为y+1,现在可以开始建立TCP连接了。

2、TCP四次分手过程

  1. 首先主机client需要和服务器server断开连接,于是向server发送FIN/ACK数据包,即FIN=1,ACK=1,FIN置1表示请求断开连接。
  2. 服务器server回应请求并发送ACK报文,即ACK=1,这时主机已和服务器断开连接。
  3. 服务器server也向主机client请求断开连接,同样向client发送FIN/ACK报文,即FIN=1,ACK=1.
  4. 主机client同样回应断开请求,发送ACK报文,ACK=1,此时服务器已和主机端口连接,整个TCP连接完整结束。

三、UDP报文

UDP报头信息详解

UDP(User Datagram Protocol)用户数据报协议是一种面向非连接的传输协议,同样也属于传输层,它仅仅提供有限的错误检查,不保证传输的可靠性,但是传输速度比较快,在进程应用于语音流和视频流的传输,UDP的报文结构如下:

1、16位源端口号:应用服务提供的端口号;

2、16位目标端口号:目标主机应用程序开放的端口号;

3、16位UDP长度:报文的长度,包括报头和数据的长度;

4、16位UDP检验和:将前面的报头信息做一个检验和。

UDP报头的实际例子如下:

UDP报头信息实际例子

四、IP协议报文详解

IP数据包报头信息

IP协议在网络层,IP协议主要提供了IP编址,让主机可以在不同网段之间通信,报头信息解析如下:

1、4位版本号(Version):一般是IPv4或IPv6;

2、4位头部长度(Header Length):IP报头长度;

3、8位服务类型(Type of Service)

4、16位总长度(Total Length):IP报文的总长度,包括报头和数据;

5、16位标识符(Identification),标识每个已切分的数据包;

6、3位标记(Flags):第一位保留,第二位为DF(为1不将数据分包),第三位为MF(为1表示后面还有数据包);

7、13位包偏移(Fragmenet Offset):表示IP包在原数据包中的位置;

8、8位TTL,数据包的存活时长;

9、协议(Protocol):IP报头后面的报文协议;

10、头部检查和(Header Checksum)

11、源IP地址(Source Address):本机IP地址;

12、目的IP地址(Destination):目的IP地址。

下面是一个IP报头的实际例子:

IP报头实际例子

五、数据链路层Ethernet以太网协议报文

数据链路层Ethernet协议报头信息

Ethernet以太网协议在数据链路层中,提供MAC编址,提供了主机之间同一网段之间的通信,MAC地址是计算机的物理地址,48位,生产中就烧入,不可更改,它的头部信息如下:

  1. 目标MAC地址(MAC destination address):目标主机的MAC物理地址;
  2. 源MAC地址(MAC source address):本机MAC地址;
  3. 802.1q(可选)
  4. 类型(Type):常见的类型有IPv4,ARP等
  5. 数据(Payload)
  6. FCS(Frame check sequence)

实际报文信息如下:

Ethernet协议实际例子

六、Wildpackets Omnipeek网络抓包分析工具简单使用

以上的网络模型中的协议对我们的开发都是非常重要的,就编程来说,也有很多人并不了解网络以及网络中重要的协议,使用这个抓包分析工具可以让你对网络的理解更加立体。

1、下载安装

立即吃瓜:Wildpackets Omnipeek抓包分析工具下载

2、创建抓包任务

创建新的抓包任务

3、点击软件右上角绿色的按钮,开始抓包:

开始抓包

4、点击右边菜单栏Packets,然后你会看到很多连接,点击一个连接在下面可以看到连接的全部协议报文信息:

查看网络数据包详细报文信息
赞(0)
未经允许不得转载:srcmini » TCP、UDP、IP、以太网Ethernet协议报文详解以及使用Wildpackets Omnipeek网络抓包分析

评论 抢沙发

评论前必须登录!