2023年7月31日发(作者:)
各种协议报头解析(以太⽹,IP,TCP,UDP报头)各种协议报头解析(以太⽹,IP,TCP,UDP报头)
本篇我们将介绍各种协议的报头解析。其中包括以太⽹数据报头,IP数据报头,TCP数据报头,UDP数据报头。⼯具/原料wireshark抓包⼯具⽅法/步骤1. 1⾸先我们介绍以太⽹数据报头的解析。其中以太⽹报头长度为14个字节。主要包括:⽬的地址占6个字节,源地址6个字节,类型2个字节。2. 2接下来我们通过wireshark进⾏抓包分析,进⾏验证以太⽹报头长度为14个字节。可以通过wireshark解析看到,为14个字节。3. 3下⾯我们介绍IP数据报头的解析。详细解析:版本(4位):⽤来标识IP协议的版本,最常见的就是4和6,分别代表IPv4和IPv6。⾸部长度(4位):长度4位。这个字段的作⽤是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(8*4),因此,⼀个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最⼩长度为20字节。服务类型(8位):长度8⽐特。8位 按位被如下定义 PPP DTRC0PPP:定义包的优先级,取值越⼤数据越重000 普通 (Routine)001 优先的 (Priority)010 ⽴即的发送 (Immediate)011 闪电式的 (Flash)100 ⽐闪电还闪电式的 (Flash Override)101 CRI/TIC/ECP(找不到这个词的翻译)110 ⽹间控制 (Internetwork Control111 ⽹络控制 (Network ControlD 时延: 0:普通 1:延迟尽量⼩T 吞吐量: 0:普通 1:流量尽量⼤R 可靠性: 0:普通 1:可靠性尽量⼤M 传输成本: 0:普通 1:成本尽量⼩0 最后⼀位被保留,恒定为0总长度(16位):此处的总长度是指⾸部长度和数据长度之和,单位仍然是字节。16bit可以表⽰的最⼤值为65535,所以IP数据报的最⼤长度可以到达65535字节。但由于以太⽹的MTU(Maximum Transmission Unit)最⼤为1500字节,所以如果IP协议是运⾏在以太⽹的话,就会遇到需要分⽚的情况。标志(3位):这3位中只有前2位有⽤,中间⼀位表⽰DF(don’t fragment),⽽最低位(最右侧的bit)表⽰MF(more fragment)。DF等于1的话,表⽰此IP数据报“不能分⽚”。只有在DF等于0时,才允许对其进⾏分⽚。MF等于1的话,表⽰此IP数据报后⾯还有分⽚的数据报,⽽MF等于0时,则表⽰当前的IP数据报是这⼀组中最后⼀个数据报。⽚偏移(13位):此域表⽰当IP数据报超过MTU⽽被分拆成多⽚后,每⼀⽚在原IP数据报中的位置。此偏移量的参照起点是原数据报的数据部分的起点。⽣存时间(8位):长度8⽐特。当IP包进⾏传送时,先会对该字段赋予某个特定的值。当IP包经过每⼀个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防⽌由于路由环路⽽导致IP包在⽹络中不停被转发。协议(8位):标识了上层所使⽤的协议,以下是⽐较常⽤的协议号: 1 ICMP 2 IGMP 6 TCP 17 UDP 88 IGRP 89 OSPF头部校验(16位):⽤来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。源IP地址(16位):⽬的IP地址(16位):总共20个字节,构成了IP数据报的头部。4. 4接下来我们通过wireshark抓包,进⾏解析,并可以看到IP数据报头的长度为20个字节。5. 5下⾯我们介绍TCP协议的数据报头的解析,其长度为20个字节。详细解析:源端⼝(16位),⽬的端⼝(16位)。顺序号(32位),表明了发送的数据报的顺序。确认号(32位),希望收到的下⼀个数据报的序列号。TCP协议数据报头头长(4位),表明TCP头中包含多少个32位字。下⾯6位⽬前未⽤,ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。PSH:表⽰是带有PUSH标志的数据。接收⽅因此请求数据报⼀到便可送往应⽤程序⽽不必等到缓冲区装满时才传送。RST:⽤于复位由于主机崩溃或其它原因⽽出现的错误的连接。还可以⽤于拒绝⾮法的数据报或拒绝连接请求。SYN:⽤于建⽴连接。FIN:⽤于释放连接。窗⼝⼤⼩(16位),表⽰在确认了字节之后还可以发送多少个字节。检验和(16位),是为了确保⾼可靠性⽽设置的。它校验头部、数据和伪TCP头部之和。紧急指针(16位),它是⼀个偏移量,和序号字段中的值相加表⽰紧急数据最后⼀个字节的序号。以上20个字节组成了TCP协议的基本报头。由此我们可以得出⼀个算法:普通TCP协议的总报头长度=以太⽹数据报头+IP数据报头+TCP协议数据报头。6. 6下⾯我们依然使⽤wireshark进⾏抓包分析并解析验证,可以看到TCP协议数据报头为20个字节。7. 7下⾯我们介绍UDP协议的数据报头。其共占8个字节。其中包括:源端⼝(2个字节),⽬的端⼝(2个字节)。长度(2个字节),UDP⽤户数据报的总长度,以字节为单位。检验和(2个字节)。由此我们可以得出结论,UDP协议的数据报总长度=以太⽹数据报长度+IP数据报头+UDP数据报头。8. 8下⾯我们再使⽤wireshark进⾏抓包验证,可以看到UDP数据报头的长度为8字节。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690783634a425355.html
评论列表(0条)