大家好,欢迎来到IT知识分享网。
二层报文
二层报文是指工作在数据链路层的传输单位,主要是以太网帧。
1.报文格式
目的地址: 该帧要发送到哪里,6个字节的MAC地址即物理地址,通常是不可更改的地址。
源地址: 该帧是从哪里发来的,同样是MAC地址。
类型:2字节,用来区分以太网帧类型比如,以太网帧、IP数据报、ARP请求和应答等。0x0800,代表IPv4;0x86DD,代表IPv6;0x0806,代表ARP;0x8100,代表IEEE 802.1q;等等。不同的类型字段值可以用来区别不同的帧类型。接收端知道是什么数据类型后,接下来可以做正确的操作。
数据: 传送的数据大小为46~1500字节,不够46字节的将进行填充,最大长度为1500字节。
CRC: 循环冗余校验,用于帧内后续字节差错。
Wireshark
抓到了目的地址,源地址,类型。
广播报文
广播报文是以广播的形式传输消息或信息。广播报文向网络中的所有报文发送信息,不需要特定的目的地址,被广播到网络当中。
2.Wireshark(ARP为例)
以ARP协议为例,广播报文的目的MAC地址为ff:ff:ff:ff:ff:ff。
ARP
ARP(Address Resolution Protocol)地址解析协议,根据IP地址获取物理地址的一个TCP/IP协议。
1.ARP功能:
1.将IP地址解析为MAC地址。 2.维护IP地址与MAC地址的映射缓存,即ARP表项。 3.实现网段内重复IP的检测。
2.报文格式
目的MAC地址: ARP请求的目的以太网地址,广播地址,即全为1。
源MAC地址: 发送ARP请求的以太网地址。
帧类型: 以太网帧类型表示后面的数据类型,ARP请求和ARP应答报文为:0x0806。
硬件类型: 硬件地址类型,硬件地址不止以太网一种,是以太网类型时,值为1。
协议类型: 表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。
硬件地址长度和协议地址长度: 报文中硬件地址的长度(ARP报文中,它的值为6),报文中协议地址的长度(ARP报文中,它的值为4)。
op操作类型: 是操作类型字段,1 是ARP请求,2是 ARP应答,3是 RARP请求和4是 RARP应答。
发送端以太网地址: 发送方设备的硬件地址。
发送端以太网地址: 发送方设备的IP地址。
目的以太网地址:接收方设备的硬件地址。
目的IP地址: 接收方设备的IP地址。
3.工作过程
4.Wireshark抓包
DHCP
1.DHCP功能
2.报文格式
op: 报文的操作类型。分为请求报文和响应报文。客户端发送给服务器的包为请求报文,值为 1;服务器发送给客户端的包为响应报文,值为 2。
htype: DHCP 客户端的 MAC 地址类型。htype 值为 1 时表示为最常见的以太网 MAC 地址类型。
hlen: 硬件地址长度。以太网 MAC 地址长度为 6 个字节,即 hlen 值为 6。
hops: 跳数,DHCP 报文经过的中继数量。每经过一个路由器,该字段就会增加 1。如果没有经过路由器,则值为 0(同一网内)。
xid: 事务 ID。客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。在一次请求中所有报文的 xid 都是一样的。
secs: DHCP 客户端从获取到 IP 地址或者续约过程开始到现在所过去的时间,以秒为单位。在没有获得 IP 地址前,该字段始终为 0。
flags: BOOTP 标志位。只使用第 0 比特位,是广播应答标识位,用来标识 DHCP 服务器应答报文是采用单播还是广播发送。其中,0 表示采用单播发送方式,1 表示采用广播发送方式。其余位尚未使用。
ciaddr: DHCP 客户端的 IP 地址。仅在 DHCP 服务器发送的 ACK 报文中显示,在其他报文中均显示为 0。这是因为在得到 DHCP 服务器确认前,DHCP 客户端还没有分配到 IP 地址。
yiaddr: DHCP 服务器分配给客户端的 IP 地址。仅在 DHCP 服务器发送的 Offer 和 ACK 报文中显示,其他报文中显示为 0。
siaddr: 为 DHCP 客户端分配 IP 地址等信息的其他 DHCP 服务器 IP 地址。仅在 DHCP Offer、DHCP ACK 报文中显示,其他报文中显示为 0。
giaddr: 转发代理(网关)IP 地址,DHCP 客户端发出请求报文后经过的第一个 DHCP 中继的 IP 地址。如果没有经过 DHCP 中继,则显示为 0。
chaddr: DHCP 客户端的 MAC 地址。在每个报文中都会显示对应 DHCP 客户端的 MAC 地址。
sname: 为客户端分配 IP 地址的服务器名称(DNS 域名格式)。只在 DHCP Offer 和 DHCP ACK 报文中显示发送报文的 DHCP 服务器名称,其他报文显示为 0。
file: DHCP 服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。仅在 DHCP Offer 报文中显示,其他报文中显示为空。
options: 可选选项,格式为“代码+长度+数据”。
3.工作流程
1、客户端发送一个广播discover报文
2、Server收到报文后,会向客户端发送offer报文(携带为客户端分配的地址)
3、客户端收到offer报文后,会服务器发送广播request报文
4、Server收到报文之后会回复一条ACK进行确认
5、客户端收到ack之后会执行DAD(重复地址检测),如果冲突了会给服务器发送decline报文,告知这个地址无法使用,然后重
如上述工作流程。
4.Wireshark抓包
引用博客,这篇博客讲解非常详细,同时介绍了DHCPv6点击访问
IP报文
IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议,提供不可靠的、无连接的、尽力而为的数据报传输服务。
1.IP协议功能
设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
2.IPv4报文格式
IP数据报文的长度实际上受到以太网的影响,以太网的MTU为1500字节,那么IP的数据报文长度要小于1500.
IPv6数据报文 略
3.Wireshark
引用博客IPv4 vs IPv6 点击访问
TCP报文
TCP——传输控制协议(Transmission Control Protocol)。是一种面向连接的,可靠的,基于字节流的传输层通信协议。
1. TCP功能
- 有连接:TCP类似于打电话,需要建立连接,才可以发送消息.
- 可靠传输:发送方发送的数据,并不是百分百发送给接收方,而是尽力而为,尽可能的把数据传输过去,同时,如果还是传输不过去,至少能知道.
- 面向字节流:数据传输与文件读写类似,是”流式”的(一次可以读一个字节或者十个字节或者一百个字节)
- 全双工:一个通信通道,可以双向传输.(既可以发送,也可以接收)
TCP可以实现可靠传输、流量控制和拥塞控制等。
2.TCP报文格式
TCP报文段前20个字节是固定的,后面4n字节是需要根据需要而增加的情况,因此TCP首部的最小长度是20字节。
- 源端口和目的端口: 各占两个字节,分别写入源端口号和目的端口号。
- 序号: 4字节,表示本报文段所发送数据的第一个字节的编号。
- 确认号: 接收方期望收到发送方下一个报文段的第一个字节数据的编号
- 数据偏移: 4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。实际上是TCP报文段的首部长度。
- 保留: 6位保留字段:为TCP将来的发展预留空间,目前必须全部为0 。
- URG:紧急字段,1时,紧急,请尽快传送。
- ACK:确认字段,ack=1,确认号有效,0无效,tcp规定,建立连接后的所有传送的报文段段都要把ack置为1.
- PUSH:推送,希望尽快收到响应,不用等到缓存满了再想上交付。
- RST: 复位,rst=1,连接出现严重差错,必须释放连接,重新建立连接。
- SYN:同步,在连接建立时同步序号用,syn=1&ack=0,这是请求连接报文,syn=1&ack=1,是同意建立连接。syn=1是一个连接请求或者连接接受报文。
- FIN: 终止,1时,发送完毕,要求释放运输连接。
- 窗口: 2字节,从确认号算起,可以接受对方发送的数据量,因为对方的数据缓存空间是有效的。
- SYN: 同步,在连接建立时同步序号用,syn=1&ack=0,这是请求连接报文,syn=1&ack=1,是同意建立连接。syn=1是一个连接请求或者连接接受报文。2字节,计算校验和时,要加上12字节的伪首部。
- 紧急指针:2字节,=1时才有意义。
- 选项:长度可变,最长可以40字节。
3.TCP三次握手建立连接&四次挥手断开连接
三次握手
- TCP连接发起方,发送syn=1,ack=0的请求连接报文,初始序列号a为随机数字,确认序号为0.
- 接收方收到合法的syn报文后,回复一个syn=1,ack=1 的确认连接报文后,初始序列号为b的随机数字,因为是回复报文,确认序号要在a上+1,即为a+1
- 发送收到后,回复接收方一个序列号好为a+1,确认序号为b+1的报文,接收方收到后,TCP双向连接建立.
四次挥手
- 1.发送方发送一个FIN=1的不带数据的TCP报文段。
- 2.接收方收到后,回复一个ACK置位的TCP报文。
- 3.接收方也没有要发送的数据后,发送FIN置位的TCP报文。
- 4.发送方收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。
3.wireshark
可以看到源端口,目的端口等信息。
UDP报文
用户数据报协议UDP(User Datagram Protocol)在传送数据之前不需要建立连接,接收方收到后,不需要做出任何确认,UDP提供不可靠交付,UDP简单高效。
1.UDP功能
- UDP是无连接的
- UDP使用尽最大努力交付
- UDP是面向报文的
- UDP没有拥塞控制
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP的首部开销小
2.UDP报文格式
源端口: 源端口号,2字节,需要对方回信时选用,不需要时可以全为0.
目的端口:目的端口号,2字节,这在终点交付报文时必须使用。
长度:UDP用户数据报的长度,其最小值为8(仅有首部)。
校验和:检测UDP用户数据报在传输中是否有差错,有错就丢弃。
wireshark
可以看到源端口,目的端口,长度校验和。
ICMP报文
ICMP协议作用
ICMP报文格式
类型: 占1字节,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文
代码: 占1字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型
校验和: 占2字节,这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。
内容: 占8字节
ICMP报文分为ICMP差错报告报文和ICMP询问报文。其报文类型如下
引用博客,较为详细:点击访问
ICMP的重要应用就是分组网间探测PING(Packet InterNet Groper),用来测试两台主机的连通性。
wireshark

ICMP请求报文。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110566.html




















