TCP IP ICMP 以太网帧格式

目录

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层知道应将数据部分上交给哪个协议进行处理。

常见的协议号

协议名ICMPIGMPIPTCPIPv6UDP
协议字段值12464117

首部检验和(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响应数据

 

  • 5
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA是一种可编程逻辑器件,可以用于实现各种数字电路。在实现TCP/IP协议时,FPGA可以用来实现络接口和数据包处理等功能。然而,由于TCP/IP协议是一个复杂的协议族,完全在FPGA上实现所有功能是不可能的。通常情况下,FPGA会与其他硬件设备(如络芯片)结合使用,以实现完整的TCP/IP功能。 在TCP/IP协议中,IP协议是核心协议之一,它规定了数据传输时的基本单元和格式IP协议位于以MAC帧格式的数据段,IP协议内容由IP首部和数据字段组成。所有的TCP、UDP和ICMP数据都以IP数据报格式传输。IP报文格式包括源IP地址、目标IP地址、协议类型等信息。 TCP协议是TCP/IP协议族中的另一个重要协议,它提供可靠的、面向连接的数据传输。TCP协议使用序列号、确认号、窗口大小等机制来保证数据的可靠传输。TCP协议还使用校验和来检测数据传输过程中的错误。 在FPGA上实现TCP/IP功能需要考虑到络接口的设计、数据包的解析和组装、TCP连接的建立和维护等方面。同时,还需要考虑到性能和资源的限制,以确保FPGA能够满足实际应用的需求。 总之,FPGA可以用于实现部分TCP/IP功能,但完全在FPGA上实现所有功能是不可能的。通常情况下,FPGA会与其他硬件设备结合使用,以实现完整的TCP/IP功能。 #### 引用[.reference_title] - *1* *3* [基于FPGA的以TCP协议的数据回环实验](https://blog.csdn.net/janfanzy/article/details/128145052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【FPGA的基础快速入门25------以】](https://blog.csdn.net/qq_38617667/article/details/124503262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值