(1): 什么是IP协议?
互联网协议IP是Internet Protocol的缩写,中文缩写问哦“网协”。IP协议位于OSI模型中的第三层也就是网络层,其主要目的是使得网络之间能够互相通信。
(2):什么是IP地址? IP地址是如何产生的?
互联网协议地址(Internet Protocol Address)中文为:网际协议地址,缩写为IP地址。
上一次说的ARP协议,通过分析发现它是依靠MAC地址发送数据的。但是当ARP以广播的方式发送ARP请求时,需要确保所有的主机都要收到该数据包的。这样不仅传输效率低,而且只能局限在同一个子网中。也就是说如果两台主机不在一个子网,广播报是发送不过去的。当然了这样的设计是合理的,不然会导致全网瘫痪。所以需要一种方法来区分那些MAC地址属于同一个子网,那些不是。同一个子网就采用广播的发送方式。否则就采用“路由”发送。所以就必须引入一套新的地址,使得用户能够区分不同的计算机是否属于同一个子网,通常人们称问“IP”地址。这时候一台主机就会有两种地址。MAC地址,IP地址。但是两者没有太大的关系。MAC地址是绑定在网卡上的,是唯一的。而IP地址是有网络管理员分配的。
(3)IP地址
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址分为IPv4和IPv6两大类,其中IPv4使用最广泛的。在IPv4中IP地址是由32个二进制组成。由于IP地址是32位的二进制,用户记住一串32位二进制是很难的,所以IP地址采用点分四组的表示法。
(4)IP地址的构成
IP地址之所以会被分成四个单独的部分,是因为每个IP地址都包含两部分,分别为网络地址和主机地址。网络地址用来标识设备所连接到的局域网,主机地址用来表示这个局域网中的设备本身。
但是通常一个IP地址是无法判断网络部分的。所以需要引入另一个参数“子网掩码”。子网掩码的形式等同于IP地址,也是一个32位的二进制数字。它的网络部分全为1,主机部分全文0.
例如: IP为10.10.1.22,它的子网掩码为11111111.11111111.00000000.00000000。这就意味着IP地址的前一半10.10是网络地址,1.22是主机地址。
(1)什么是IP数据报
TCP/IP协议定义了一个在局域网上传输的包,称为IP数据报(IP Datagram)。IP数据报由首部和数据两部分组成,首部部分包括版本,长度,IP地址等信息。数据部分一般用来传输其他的协议,如TCP,UDP和ICMP协议等。
(2)IP数据报首部格式
版本: 指IP协议所使用的的版本。目前广泛使用的IP协议版本号为4
首部长度: IP首部长度,可表示的最大十进制数值是15。注意,该字段所表示的单位是32位字长(4个字节)。因此首部长度最大为60字节
服务类型: 优先级标志位和服务类型标志位
总长度: 指IP首部和数据包中数据之后的长度,单位为字节。总长度为16位,因此最大长度为2^16- 1 = 65536字节
标识: 一个唯一的标识数字,用来标识一个数据报或者被分片数据报的次序
标志: 用来标识一个数据包是否是一组分片数据包的一部分。 最低位MF(More Fragment)。当MF=1表示后面“还有分片”的数据包,MF=0表示这已经是最后一个分片数据了,中间位DF(Dont Fragment)不能分片,只有当DF=0时,才允许分片
片偏移: 一个数据包其中的分片,用于重新组装数据用
生存时间: 用来定义数据包的生存周期
协议: 用来识别在数据包序列中上层协议数据包的类型
首部检验和: 一个错误的检测机制,确保IP头部没有被修改
源地址: 发送端的IP地址
目的地址:数据包目的的IP地址
可选字段:保留作额外的IP选项
数据部分:使用IP传递实际数据用。
(3)分析IP数据报
在本地主机上ping www.baidu.com,使用wireshark获取数据
(4)先分析29帧,也就是请求帧
选中29帧,查看包的详细信息
(5)分析30帧,也就是回应帧
其中明显的不同的是生存时间发了变化,也就是从我本地到百度之间总共经过了64-55=9个路由。当然每次可能经过的路径是不一样的。我们可以通过tracert命令查看。
可以看到经过了11个路由,显然每次路径是不一样的。
(1)存活时间/生存时间是什么?
存活时间Time-to-live(TTL)值定义了在该数据报丢失之前,所能经历的时间,或者能够经过的最大路由数目。TTL在数据报被创建时就会被定义,而且通常在每次被发往一个路由器的时间减1.
例如: 如果一个数据包的存活时间是2,那就是说当它经过第一个路由器的时候,其TTL会被减去1,并向第二个路由发送,如果到第2个路由这是TLL时间会减去1,变为0。如果这时候数据包还没有到达目的地,则会丢弃该数据包。
(2)存活时间的作用的是啥?
假设在发送目地的过程中,会经过数十个路由器,在这个过程中,可能会碰到被配置错误的路由器,而会导致其目的地错误。在这种情况下,可能这个数据包就会一直发送,在网络中出现一个死循环,这样就会导致整个网络瘫痪等。所以当每次经过一个路由器TTL的值都会减去1,所以可以防止这个问题的出现。
(3)分析IP数据包中TTL值的变化
前面说过,如果在同一个网段传输数据,TTL的值是补变化的。如果是不同的网段TTL的值是变化 的
1. 分析同网段中TTL的值
我搭建的环境是用192.168.0.1 ping 192.168.0.2 (上图是抓包的过程)
可以看到74帧是request帧
相应的75帧就是回应报文(reply)
可以看到如果是相同的网段,TTL的值是相同的。
2. 分析不同网段TTL的值
分析不同网段的TTL,其实在第二节中分析中可以明显看见TTL的值是不同的。 在这里我通过ping新浪的官网。很明显新浪官网地址和我本地的是属于不同的网段
其中19帧是请求报文(request)而20帧是响应报文(reply)
分析19帧报文的详细信息:
分析20帧的详细信息:
(1) IP分片数据包
由于以太网数据报的“数据”部分最长只有1500字节,因此如果IP数据报超过了1500字节,就需要分割成多个以太网数据包分开发送。
在使用ping命令时,默认是不会超过1500字节的,所以如果想要获取IP分片包,需要指定发送的ICMP包大大小。
比如: ping 192.168.0.1 -l 3000 指定获取包的大小为3000
(2) 分析IP分片数据包分析
在该获取文件中,123帧和678帧是一个完整的ping包,其中123是一个请求包,678是响应包。
1. 分析 第1帧数据包
2. 分析第2帧数据包
3. 分析第3帧数据包
分析就到这里