目录

TCP报文格式:

IP报文格式

以太帧的结构:

ICMP报文格式:


TCP报文格式:

URG:表示本报文段中发送的数据是否包含紧急数据:URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效
ACK:表示前面的确认号字段是否有效:ACK=1 时表示有效;只有当 ACK=1 时,前面的确认号字段才有效;TCP 规定,连接建立后,ACK 必须为 1
PSH:告诉对方收到该报文段后是否立即把数据推送给上层。如果值为1,表示应当立即把数据提交给上层,而不是缓存起来
RST:表示是否重置连接:若 RST=1,说明TCP连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接
SYN:在建立连接时使用,用来同步序号:当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当 SYN=1,ACK=1时,表示对方同意建立连接;SYN=1时,说明这是一个请求建立连接或同意建立连接的报文;只有在前两次握手中SYN才为1
FIN:标记数据是否发送完毕:若FIN=1,表示数据已经发送完成,可以释放连接

IP报文格式

版本(version):占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。版本号为6(即IPv6)
首部长度(网际报文头长度IHL):占4位,可表示的最大十进制数值是15。首部长度字段所表示的单位是32位(4字节,与TCP首部中长度字段单位一致)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值为5(0101)。当首部长度为15(1111)时,表示的长度为60字节当IP分组的首部长度不是4的整数倍时,必须利用最后的填充字段加以填充达到4的整数倍。
区分服务(tos):占1字节,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。只有在区分服务时,这个字段才起作用。在一般情况下都不使用这个字段。
总长度(totlen):占2字节,指首部和数据之和的长度,单位为字节。能表示的最大长度为65535字节。在IP层下面的链路层协议规定了一个数据帧的数据字段的最大长度,这称为最大传输单元MTU(maximum transfer unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的链路层所规定的的MTU值。
以太网规定MTU为1500字节。若所传送的数据报长度超过链路层的MTU值,就必须把过长的数据进行分片处理。
标识(identification):占2字节。网络层软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不同于TCP首部中的序号,因为IP是无连接的服务,数据报不存在按序接收的问题。当数据报长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有被分片报文片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装层原来的数据。
标志(flag):占3位,目前只有两位有意义。
标志字段中间的一位记为DF(dongt fragment),意思是“不能分片”。当DF=0时才允许分片。标志字段最低位MF(more fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
片偏移(offsetfrag):占13位。片偏移指出:较长的IP报文在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。没片的长度一定是8字节的整数倍。
生存时间(TTL):占8位,英文缩写TTL(Time To Live),表明数据报在网络中的寿命。由发出数据报的源点设置这个字段。目的是防止无法交付的数据无限制地在互联网中兜圈子。路由器在每次转发数据报之前就把TTL值减1。若TTL值减小到零,就丢弃此报文,不在转发。
协议:占8位,协议字段指出此数据报携带的数据是使用何种协议(上面数据包中协议字段为6表示使用TCP协议),以便使用的目的主机的IP层知道应将数据部分上交给哪个协议进行处理。

常见的协议号

协议名 ICMP IGMP IP TCP IPv6 UDP
协议字段值 1 2 4 6 41 17

首部检验和(checksum):占16位,也常成为校验和。这个字段只检验数据报的首部,但不包括数据部分(与UDP、TCP中的检验和不同)。IP数据报每经过一个路由器,路由器都需要重新计算一下首部检验和(IP首部中的TTL、标志、片偏移等都可能发生变化)

例如:一数据报的总长度为3820字节,数据部分为3800字节(IP首部为固定20字节),需要分片传输。假设每片IP报文长度不超过1420字节。去掉固定首部长度20字节,每片报文数据部分长度不超过1400。于是分成3个数据报片,其数据部分长度分别为1400、1400、1000字节。原始数据报首部被复制为各数据报片的首部,只需要改变有关字段的值。

数据分片举例

报文首部中与分片有关的字段中数值,标识部分是任意给定的值

以太帧的结构:

以太帧起始部分由前同步码和帧开始定界符组成,后面紧跟着一个以太网报头,以 MAC 地址说明目的地址和源地址。以太帧的中部是该帧负载的包含其他协议报头的数据包,如 IP 协议。
以太帧由一个 32 位冗余校验码结尾,用于检验数据传输是否出现损坏。以太帧结构如图所示。

上图中每个字段的含义如下表所示:

前同步码:用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替。
帧开始定界符:帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
目的MAC地址:接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
源MAC地址:发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
类型:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
数据:也称为有效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。
帧检验序列 FCS 检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

ICMP报文格式:

ICMP消息名助记符:

消息类型  消息代码  消息含义  消息助记符
type:0  code:0 :表示回显应答(ping应答)  Echo
type:8  code:0 :表示回显请求(ping请求)  Echo-reply
type:3  code:0 :网络不可达                      Net-unreachable
type:3  code:1 :主机不可达                      Host-unreachable
type:3  code:2 :协议不可达                      Protocol-unreachable
type:5  code:0 :网络重定向                      Net-redirect
type:5  code:1 :主机重定向                      Host-redirect
type:5  code:2 :服务类型和网络重定向    Net-tos-redirect
type:5  code:3 :服务类型和主机重定向    Host-tos-redirect
type:11 code:0 :超时
type:12 code:0 :参数存在问题                 Parameter-problem
type:13 code:0 :时间戳请求                    Timestamp-request
type:14 code:0 :时间戳响应                    Timestamp-reply
type:15 code:0 :信息请求                        Information-request
type:16 code:0 :信息应答                        Information-reply    

ICMP实验:

(1)PC0发ICMP包,出站PDU详细数据(outbound PDU Details)

(2)数据包到达交换机Switch0,进站和出站详细数据

进站:

出站详细数据:

(3)ICMP数据包到达PC1时进站出站详细数据:

进站详细数据

出站响应详细数据:

(4)PC0收到PC1的ICMP响应数据

TCP IP ICMP 以太网帧格式相关推荐

  1. W5500全硬件 TCP/IP 嵌入式以太网控制器WIZNET

    概述 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案. W5500 集成了 TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物 ...

  2. Wiznet W5100硬件TCP/IP嵌入式以太网控制器

    WIZnet 的W5100硬件TCP/IP嵌入式以太网控制器是一个功能齐全的.单芯片的.因特网驱动的10/100以太网控制器.嵌入式应用需要易于集成.稳定.性能.空间.系统成本控制而W5100就是为嵌 ...

  3. TCP/IP/ICMP 学习实践

    前言 在学习TCP分段与IP分片时.心有所感想把之前学习过的知识串联起来. 数据分段发生在传输层.分片发生在网络层. 相关术语: MTU(Maximum Transmission Unit,MTU), ...

  4. Wireshark配置安装以及抓包教程详解(win10版)(包含TCP IP ICMP 三次握手 半扫描等相关知识 )

    了解过网络安全技术的人都知道一个名词"抓包".那对于局外人,一定会问什么是抓包?考虑到,大家的技术水平不一,我尽可能用非专业的口吻简单的说一下. 抓包就是将网络传输发送与接收的数据 ...

  5. TCP/IP——ICMP

    1. 简介 ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议. 2. 功能 ICMP 主要的功能包括: 1)确认 IP 包是否成功送达目标 ...

  6. Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型

    目录 TCP/IP参考模型 以太网数据封装以及解封装过程: 各层次的传输数据单元 ​编辑 物理层: 发送端: 接收端: 作用: 链路层: 作用: 网络层: 作用: 传输层: 8个比特(bit)=1个字 ...

  7. RT-Thread 之 WIZnet 软件包(全硬件TCP/IP协议栈W5500以太网芯片) 以太网 Socket 通信

    目录 1.介绍 1.1 WIZnet 1.2 W5500 2.RT-Thread Studio 配置及相关代码 2.1 添加WIZnet软件包 2.2 配置 WIZnet 软件包 2.3 配置 spi ...

  8. 硬件 TCP/IP 协议栈(SPI 发送命令字)

    目录 全硬件的TCP/IP 协议栈简介 以太网接入单片机方案 以太网接口芯片CH395Q 简介 以太网接口芯片 CH395Q 命令简介 以太网接口芯片CH395Q 寄存器配置与使用 移植CH395Q ...

  9. TCP/IP协议栈 路由器 交换机

    TCP/IP协议栈---以太网 ethernet Application --应用层 Presentation-表示层 Session--会话层 Trassport--传输层 Network--网络层 ...

最新文章

  1. 7. Query Expressions(查询表达式)
  2. 金融业加速智能化,解析360金融AI基础架构和应用
  3. Use PowerShell to Replace netdom Commands to Join the Domain
  4. Index of school
  5. php detect unicode,php-functions/unicode.php at master · xiilei/php-functions · GitHub
  6. ps4看b站 f怎么调html5,b站html5,b站怎么切换到HTML5版播放器?
  7. 华为轮值董事长郭平:5“机”协同是基础电力,ICT行业应用将像家用电器和工业电气化
  8. 读书笔记-简单叙述对象关系
  9. 通过SharpShell快速实现Windows Shell扩展
  10. 正在工作的程序员,生活状态都很苦逼?
  11. 2023浙江师范大学计算机考研信息汇总
  12. 从乐清女孩发出救命信息后殒命想到,微信滴滴应增加SOS求救功能
  13. 捷联惯导系统学习3.2(地球的正常重力场)
  14. linux读书摘要--正规表示法与文件格式化处理
  15. 疫情信息填表-----auto.js 2.0版
  16. 作为程序员你脱发吗?
  17. 我的世界java无限水_教程/无限水水井 _ 《我的世界》中文Minecraft Wiki:最详细的官方我的世界百科...
  18. 非全日制大专怎么考全日制本科
  19. Aria2 Linux 完整安装及使用教程
  20. 雅加达poi_社区环境评估雅加达火车站

热门文章

  1. 利用P2P技术做自有视频点播系统的加速,还需要和CDN一样部署很多服务器吗?
  2. 荣耀畅玩5a android5.0,荣耀畅玩6A和5A有什么区别 荣耀畅玩6A对比畅玩5A (全文)
  3. postman报Error: write EPROTO 140600974724440:error:100000f7:SSL routines:OPENSSL_internal:怎么解决
  4. Python[统计案例分析/课程内容+补充]
  5. AAC文件格式与解码流程(未完待续)
  6. JSP在线书城购买系统用myeclipse定制开发mysql数据库mvc模式java编程servlet
  7. C语言函数替代strlen,C语言实现strlen函数的几种方法【转】
  8. 企业如何搞好网络舆情公关?盘点网络舆情优化的方法
  9. 小米盒子的远程安装实现
  10. RocketMQ消费者端消息列队六种负载均衡算法分析