IP协议分析

网络之间互连的协议(Internet Protocol,IP)就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。

IP报文由报头和数据两部分组成,如图1所示:

 

图1 IP报文格式

其中主要字段的意义和功能如下:

版本:指IP协议的版本;

头长:是指IP数据报的报头长度,它以4字节为单位。IP报头长度至少为20字节,如果选项部分不是4字节的整数倍时,由填充补齐;

总长度:为整个IP数据报的长度;

服务类型:规定对数据报的处理方式;

标识:是IP协议赋予数据报的标志,用于目的主机确定数据分片属于哪个报文;

标志:为三个比特,其中只有低两位有效,这两位分别表示该数据报文能否分段和是否该分段是否为源报文的最后一个分段;

生存周期:为数据报在网络中的生存时间,报文每经过一个路由器时,其值减1,当生存周期变为0时,丢弃该报文;从而防止网络中出现循环路由;

协议:指IP数据部分是由哪一种协议发送的;

校验和:只对IP报头的头部进行校验,保证头部的完整性;

源IP地址和目的IP地址:分别指发送和接收数据报的主机的IP地址。

  1. 抓取浏览器数据包
  1. 在过滤条件中分别输入“icomp”

点击开始抓包,为了抓取使用ICMP的包,我们要设置过滤条件,点击“选项”。

这是可以看到抓包过滤按钮后面的文本框出现了ICMP字样,说明过滤条件设置成功:点击开始,发现现在抓取不到任何包:

打开命令窗口,执行命令:ping www.baidu.com

 

这时可以看到数据包抓取页面抓取到了8包,与命令行显示的已发送和已接受的包的数量是一致的:

 

 

ICMP报文格式为:

 

2.IP数据包分析

 (1) Version 版本号,标识IP协议的版本,目前V4版本地址已经枯竭,V6慢慢成为主流
(2) Header length 头部长度,默认为20字节,最大为60字节
(3) Differentiated Services Field 服务区分符,用于为不同的IP数据包定义不同的服务质量,一般应用在QoS技术中
(4) Total Length 总长度,标识IP头部加上上层数据的数据包大小,IP包总长度最大为65535个字节
(5) Identification 标识符,用来实现IP分片的重组,标识分片属于哪个进程,不同进程通过不同ID区分
(6) Flags 标志符,用来确认是否还有IP分片或是否能执行分片
(7) Fragment offset 分片偏移量,用于标识IP分片的位置,实现IP分片的重组
(8) Time to live 生存时间,标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每经过一个三层设备如路由器的处理,则TTL减去1,当TTL=0时,则此数据包被丢弃
(9) Protocol 协议号,标识IP协议上层应用。当上层协议为ICMP时,协议号为1,TCP协议号为6,UDP的协议号为17
(10) Header checksum 头部校验,用于检验IP数据包是否完整或被修改
(11) Source 源IP地址,标识发送者IP地址,占用32bit
(12) Destination 目的IP地址,标识接收者IP地址,占用32bit

Internet Protocol Version 4, Src: 192.168.1.104 (192.168.1.104), Dst: 119.75.217.109 (119.75.217.109)
#IPv4,源IP地址:192.168.1.104,目标IP地址:119.75.217.109#
Version: 4 #IP协议版本:4#
Header Length: 20 bytes #头部长度:20字节#
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) #服务类型:0x00#
Total Length: 60 #总长度:60字节#
Identification: 0x6ae0 (27360) #标识符:0x6ae0#
Flags: 0x00 #标志:0x00#
Reserved bit: Not set #是否保留[0为是,1为否]#
Don't fragment: Not set #是否分片[0为是,1为否]#
More fragments: Not set #是否最后一个[0为是,1为否]#
Fragment offset: 0 #分段偏移:0#
Time to live: 64 #存活时间:64跳#
Protocol: ICMP (1) #协议类型:ICMP#
Header checksum: 0xfd17 [validation disabled] #首部校验和:0xfd17#
Source: 192.168.1.104 (192.168.1.104) #源IP地址#
Destination: 119.75.217.109 (119.75.217.109) #目标IP地址#
[Source GeoIP: Unknown] #源IP地理位置#
[Destination GeoIP: Beijing Baidu Netcom Science and Technology Co.] #目标IP地理位置#
[Destination GeoIP ISP: Beijing Baidu Netcom Science and Technology Co.] #目标IP运营商地理位置#

实验截图:

版本(4bit)。ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。

首部长度(4bit)。该字段表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。

 

 区分服务(8bit)。该字段用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。

 总长度(16bit)。该字段指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

标识(16bit)。标识(identification)占 16 位,它是一个计数器,用来产生数据报的标识。

标志(3bit)。标志(flag)占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF=0 时才允许分片。

 

片偏移(13 bit)。该字段指出较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

生存时间(8 bit)。记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。

 

 

协议(8 bit)。该字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程。

 

首部检验和(16 bit)。该字段只检验数据报的首部不检验数据部分。

 

 源地址/目的地址(32bit)。

 

 

可选字段,一般一些特殊的要求会加在这个部分。

数据。

 

3.抓取FTP数据包

FTP协议简介
FTP是仅基于TCP的服务,不支持UDP,相比其他协议(如 HTTP协议),FTP协议要复杂一些。与一般的C/S应用不同点在于一般的C/S应用程序一般只会建立一个Socket连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。FTP使用2个端口,一个数据端口和一个命令端口(也叫做控制端口)。控制Socket用来传送命令,数据Socket是用于传送数据。每一个 FTP命令发送之后,FTP服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。

Frame: 物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

File Transfer Protocol: 应用层的信息,此处是FTP协议

首先找到网上一个公用的ftp地址进行抓包测试,这里采用地址(瑞典Umeå universitet于默奥大学公共FTP服务器):ftp://ftp.acc.umu.se/

打开wireshark,条件过滤:ip.addr==194.71.11.173

包28,35,36 tcp三次握手建立连接,说明ftp是建立在tcp协议之上的。

首先客户端主机192.168.1.106 发送SYN包申请建立连接,其中初始序号seq为0(wireshark处理过的相对序列号,实际是个随机值),win=64240 客户端接受窗口大小,MSS=1460 tcp包中最多能携带的字节数量  MSS=MTU-IP首部-TCP首部-选项长度WS=256   SACK_PERM=1 说明客户端开启延迟确认。

包55:

包55通过ftp 命令USER 使用用户名 anonymous尝试登陆,服务器返回包56确认收到,服务器返回包57询问客户端密码,客户发送回包58,把密码发送给服务器。59服务器确认收到密码。60服务器返回登陆成功。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怡怡小可爱咩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值