Wireshark抓包分析TCP.IP.UDP.ICMP报⽂格式(移动互联⽹⽅向)
TCP 报⽂格式分析:
TCP 报⽂段的报头有 10 个必需的字段和 1 个可选字段。报头⾄少为 20 字节。
1)源端⼝(16位):标识发送报⽂的计算机端⼝或进程。⼀个 TCP 报⽂段必须包括源端⼝号,使⽬的主机知道应该向何处发送确认报⽂。
2)⽬的端⼝(16位):标识接收报⽂的⽬的主机的端⼝或进程。
由抓包数据可得源端⼝号为12762,⽬的端⼝号为80
3)序号(也叫序列号)(32位):⽤于标识每个报⽂段,使⽬的主机可确认已收到指定报⽂段中的数据。当源主机⽤于多个报⽂段发送⼀个报⽂时,即使这些报⽂到达⽬的主机的顺序不⼀样,序列号也可以使⽬的主机按顺序排列它们。在建⽴连接时发送的第⼀个报⽂段中,双⽅都提供⼀个初始序列号。TCP 标准推荐使⽤以 4ms 间隔递增 1 的计数器值作为这个初始序列号的值。使⽤计数器可以防⽌连接关闭再重新连接时出现相同的序列号。序列号表达达到2^32 - 1后⼜从0开始,当建⽴⼀个新的连接时,SYN标志为1,系列号将由主机随机选择⼀个顺序号
由图可得现序列号为25e4d8a8
tcp ip协议有哪几层
4)确认号(32位):⽬的主机返回确认号,使源主机知道某个或⼏个报⽂段已被接收。如果 ACK 控制位被设置为 1,则该字段有效。确认号等于顺序接收到的最后⼀个报⽂段的序号加 1,这也是⽬的主机希望下次接收的报⽂段的序号值。返回确认号后,计算机认为已接收到⼩于该确认号的所有数据。
由图可得现确认号为59eafa0c
5)数据偏移(⾸部长度)(4位)
TCP 报⽂段的数据起始处距离 TCP 报⽂段的起始处有多远,即⾸部长度。由于 TCP 报头的长度随 TCP 选项字段内容的不同⽽变化,因此报头中包含⼀个指定报头字段的字段。该字段以 32 ⽐特为单位,所以报头长度⼀定是 32 ⽐特的整数倍,有时需要在报头末尾补 0 。由抓包图有偏移量在0x50中,占4bit,0x50转化为⼆进制数0101 0000 所以偏移量是 0101=5,所以TCP报⽂⾸部长度为5* 4 = 20字节。
6)保留位(6位):由跟在数据偏移字段后的 6 位构成
7)窗⼝(16位)
此字段⽤来进⾏流量控制,这个值是本机期望⼀次接收的字节数,即发送数据的窗⼝⼤⼩。告诉对⽅在不等待确认的情况下,可以发来多⼤的数据。
8)校验和(16位):源主机和⽬的主机根据 TCP 报⽂段以及伪报头的内容计算校验和。在伪报头中存放着来⾃ IP 报头以及 TCP 报⽂段长度信息。与 UDP ⼀样,伪报头并不在⽹络中传输,并且在校验和中包含伪报头的⽬的是为了防⽌⽬的主机错误地接收存在路由的错误数据报
9)紧急指针(16位):仅在 URG = 1 时才有意义,它指出本报⽂段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出了紧急数据的末尾在报⽂中的位置,注意:即使窗⼝为零时也可发送紧急数据。
UDP报⽂格式分析:
由图可知源端⼝号为4242,⽬的端⼝号为4242,⽤户数据报长度为283⽐特,校验和为0xb4c6,数据⼤⼩为275bytes。
IP 报⽂格式分析:
版本:IP协议的版本,⽬前的IP协议版本号为4。
⾸部长度:IP报头的长度。固定部分的长度(20字节)和可变部分的长度之和。共占4位。最⼤为1111,即10进制的15,代表IP报头的最⼤长度可以为15个
32bits(4字节),也就是最长可为15*4=60字节,除去固定部分的长度20字节,可变部分的长度最⼤为40字节。
总长度:IP报⽂的总长度。报头的长度和数据部分的长度之和。
标识:唯⼀的标识主机发送的每⼀分数据报。通常每发送⼀个报⽂,它的值加⼀。当IP报⽂长度超过传输⽹络的MTU(最⼤传输单元)时必须分⽚,这个标识字段的值被复制到所有数据分⽚的标识字段中,使得这些分⽚在达到最终⽬的地时可以依照标识字段的内容重新组成原先的数据。由图得出这是第18958个分⽚。
标志:共3位。R、DF、MF三位。⽬前只有后两位有效,DF位:为1表⽰不分⽚,为0表⽰分⽚。MF:为1表⽰“更多的⽚”,为0表⽰这是最后⼀⽚。
⽚位移:
⽣存时间:IP报⽂所允许通过的路由器的最⼤数量。每经过⼀个路由器,TTL减1,当为0时,路由器将该数据报丢弃。TTL 字段是由发送端初始设置⼀个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64。发送 ICMP 回显应答时经常把 TTL 设为最⼤值 255。
协议:指出IP报⽂携带的数据使⽤的是那种协议,以便⽬的主机的IP层能知道要将数据报上交到哪个进程(不同的协议有专门不同的进程处理)。和端⼝号类似,此处采⽤协议号,TCP的协议号为6,UDP的协议号为17。ICMP的协议号为1,IGMP的协议号为2.
⾸部校验和:计算IP头部的校验和,检查IP报头的完整性。