Ethernet、Tcp、Udp等协议的数据包格式 .
来源:互联网 发布:淘宝宝贝上下架周期 编辑:程序博客网 时间:2024/06/09 23:04
TCP/IP
(Application)HTTP、Telnet、FTP、SMTP、SNMP传 输 层
(Transport)TCP、UDP网 间 网层
(Internet)IP【ARP、RARP、ICMP】网络接口层
(Network)Ethernet、X.25、SLIP、PPP
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。由于TCP/IP协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下TCP/IP各层报文格式。
8字节的前导用于帧同步,CRC域用于帧校验。这些用户不必关心其由网卡芯片自动添加。目的地址和源地址是指网卡的物理地址,即MAC地址,具有唯一性。帧类型或协议类型是指数据包的高级协议,如 0x0806表示ARP协议,0x0800表示IP协议等。
ARP/RARP(地址解析/反向地址解析)报文格式如下图:
“硬件类型”域指发送者本机网络接口类型(值“1”代表以太网)。“协议类型”域指发送者所提供/请求的高级协议地址类型(“0x0800”代表 IP协议)。“操作”域指出本报文的类型(“1”为ARP请求,“2”为ARP响应,“3”为RARP请求,“4”为RARP响应)。
IP数据报头格式如下图:
我们用单片机实现TCP/IP协议要作一些简化,不考虑数据分片和优先权。因此,在此我们不讨论服务类型和标志偏移域,只需填“0” 即可。协议“版本”为4,“头长度”单位为32Bit,“总长度”以字节为单位,表示整个IP数据报长度。“标识”是数据包的ID号,用于识别不同的IP 数据包。“生存时间” TTL是个数量及的概念,防止无用数据包一直存在网络中。一般每经过路由器时减一,因此通过TTL 可以算出数据包到达目的地所经过的路由器个数。“协议”域表示创建该数据包的高级协议类型。如 1表示ICMP协议,6表示TCP协议,17表示 UDP协议等。IP数据包为简化数据转发时间,仅采用头校验的方法,数据正确性由高层协议保证。
ICMP(网间网控制报文协议)协议 应用广泛。在此仅给出最常见的回应请求与应答报文格式,用户命令ping便是利用此报文来测试信宿机的可到达性。报文格式如下图所示:
类型0 为回应应答报文,8 为回应请求报文。整个数据包均参与检验。注意ICMP封装在IP数据包里传送。
UDP报文格式如下图:
TCP报文格式如下图:
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中的位置。“确认号”指出本机希望下一个接收的字节的序号。与IP校验不同的是TCP,UDP校验采用伪头标加整个报文一同校验的方法。TCP协议工作原理另行介绍。
- Ethernet、Tcp、Udp等协议的数据包格式
- Ethernet、Tcp、Udp等协议的数据包格式
- Ethernet、Tcp、Udp等协议的数据包格式
- Ethernet、Tcp、Udp等协议的数据包格式 .
- Tcp/Udp等协议的数据包格式
- Ethernet IP TCP UDP 协议头部格式
- Ethernet IP TCP UDP 协议头部格式
- Ethernet IP TCP UDP 协议头部格式及大小
- ETHERNET数据包格式( IP & UDP & ICMP & ARP )
- UDP协议的数据包
- TCP 和 UDP 协议发送数据包的大小(浅析)
- TCP和UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- TCP 和 UDP 协议发送数据包的大小(浅析)
- TCP和UDP 协议发送数据包的大小
- TCP 和 UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- Android NDK 日志
- 不借助第三个变量实现两个变量之间的值传递和交换
- powershell-无法加载文件,因为在此系统中禁止执行脚本。
- hadoop伪分布式配置及遇到的问题
- @mysql查看最大打开进程数@
- Ethernet、Tcp、Udp等协议的数据包格式 .
- error LNK2001: unresolved external symbol ___wargvuafxcwd.lib
- 用SqlCommandBuilder 更新数据库
- 背完这444句,你的英语口语没问题!
- String和StringBuilder(C#)
- cpp文件中引用C文件导出的Lib库
- HBase之数据模型(DataModel)
- C++类的继承与多重继承的访问控制
- C# word类库