7.1 网络层协议
- IP协议
- ARP(地址解析协议)
- RARP(反向地址解析协议)
- ICMP(互联网控制消息协议)
7.2 IP协议详解
7.2.1 IP协议功能
- 寻址和路由
- 传递服务(不可靠,尽最大努力,可靠性由上层协议提供;无连接)
- 数据报分段与重组
7.2.2 IP数据报解析
(1)IP数据报由两部分组成1.首部;2.数据部分;首部(大小20bye到60bye之间)由两部分组成:1.固定部分(大小20字节);2.可变部分(最大为40字节)。
(2)版本——占4bit,指IP协议的版本,目前的IP协议版本号为4(0100)(即IPV4)。
(3)首部长度——占4bit,可表示的最大数是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60bye。
(4)服务类型——这个字段一直没有被使用过。
- D:delay 延时 T:throughput 吞吐量 R:reliablity 可靠性 cost 最小代价
- 区分服务,占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(5)总长度——占16bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535bye,总长度必须不超过最大传送单元MTU。
(6)理解标识、标志、片移量,分片——运苹果,选择火车,苹果太多分开来运,苹果有种类,列车须有标识,同样型号的一批苹果;标志:有三位,第一位保留不使用,第二位(D位):如果为1代表一批运,不分批;第三位(M位):如果为1代表分批运,货物后面还有,还没有完;片移量——每辆火车之间隔得距离。
- 标识(Identification)——占16bit,它是一个计数器,用来产生数据报的标识;标识与ip决定了IP数据报的唯一性。
- 标志(flag)——占3bit,目前只有后两个bit有意义,标志字段的最低位是MF(More Fragment),MF=1表示后面“还有分片”,MF=0表示最后一个分片;标志字段中间的中间一位是DF(Don’t Fragment),只有当DF=0是才允许分片。
- 片移量(Fragment offset)——13bit,较长的分组在分片后某片在原分组中的相对位置,片移量以8个字节为偏移单位。
(7)生存时间——8bit,记为TTL(Time to live),这是为了限制数据报在网络中的生存时间,其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位,数据报每经过一个路由器,其TTL值就减1。Windows的TTL为64。
(8)协议——8bit,使用上层协议,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程。
(9)首部校验和——16bit,字段只检验数据报的首部,不包括数据部分这里不采用CRC检验码而采用简单的计算方法。
(10)源地址,目的地址——占4个bye。
(11)可变部分
7.3 ARP协议详解
7.3.1 IP地址和MAC 地址特征分析
- 逻辑地址:网络级,也就是IP,工作在网络层,特征:1、全局唯一性;2、用软件实现;3、32位;
- 物理地址:物理级,mac地址,工作在网络接口层,特征:1.本地范围具有唯一性;2.用硬件实现;3.48位;
7.3.2 有了IP地址为什么还要使用MAC
有了IP地址为什么还要使用MAC,原因如下:
- IP地址一般情况下容易修改和变动,具有随意性,不能在网络上固定标识一台设备;
- MAC地址一般情况出厂时由厂家烧录到硬件中,不容易修改,在局域范围内容易定位唯一一台设备;
- 从拓扑结构和分层上分析,IP地址属于网络层部分,主要功能是在广域网范围内路由寻址,选择最佳路由,而MAC地址在网络接口层要形成适合于网络媒体上传输的数据帧。
标识设备的3种方法(访问):
1.域名;随意特性
2.IP地址;随意特性
3.MAC地址(理论上可以通过MAC访问);固定特性
7.3.3 ARP工作过程及工作原理解析
ARP:局域网内:
ARP:广域网内:
RouterA,RouterB为代理ARP,PCA知道的是网关的MAC地址也就是FA0/0的MAC,同理,PCB也是。
文字说明
(1)ARP ( Address Resolution Protocol )地址解析协议用于将计算机的网络IP地址转化为物理MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一—对应的。
(2)ARP缓存表:1.静态映射缓存表;2.动态映射缓存表。
(3)不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
(4)ARP高速缓存的作用
- 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。
- 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。
(5)应该注意的问题
- ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
- 如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
- 只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址。
- 默认情况下ARP缓存的超时时限是两分钟。
ARP相关命令
- arp -d清楚本机arp缓存表
- arp -a查看本机当前arp表
- arp -s绑定arp地址(注意:本次机器生效,下次重启后会全部失效)
7.3.4 ARP分组封装格式及RAPR解析
ARP分组封装格式
- 硬件类型(以太网)与协议类型(IPV4)都为16位;
- 硬件长度也就是MAC长度48位,协议长度也就是IP长度为32位;
- 操作为16位;
ARP分组封装
RARP(反地址解析协议)
- 逆地址解析协议RARP使只知道自己硬件地址的主机能够知道其IP地址
- 这种主机往往是无盘工作站。因此RARP协议目前已很少使用
7.4 ICMP协议详解
7.4.1 ICMP基础知识解析
7.4.2 ICMP报文分类和报文结构解析
- 参数问题也就是IP数据报头部里面的首部校验和;
- 地址码也就是子网掩码;
- 类型和代码8位,校验和16位;
- 标识符16位,序列号16位;
- 标识符:如果是Linux,Identifier(BE):1(0X0001);Windows,Identifier(LE):256(0x0100)
- 序列号:如果是Linux,Sequence(BE); Windows,Sequence(LE);
- 校验和:到目的端进行校验,判断ICMP是否遭到破坏
7.4.3 ICMP终点不可达差错报告解析
- R代表路由器,PC代表主机,例如:网络不可达的ICMP报文,通常由路由器产生
- 服务类型例如有视频,音频,图片,文本,但有的路由器规定:视频网络请求不能通过也就是造成了由于服务类型,网络不可达,主机不可达同理;
- 主机越权:由于优先级太低,数据报不能通过;
- 优先权中止生效:由于数据报内没有规定优先级;
7.4.4 ICMP源点抑制和超时差错报告解析
如上图:
1. 路由器丢弃一个报文,会向源主机发送一个源点抑制报文,是一对一;
2. 由于A主机高速发送报文,导致路由器堵塞,当A主机不在收到源点抑制报文,会恢复原来的速率发送报文;
3. A、B、C同时发送报文,但由于A发送的报文过大,速度过高,导致路由器堵塞。路由器不会分辨由于哪个主机导致堵塞,丢的数据包是随机的,若丢的是C主机的,会向C主机发送源点抑制报文,同理,B、A。只有一些高端的设备会分辨。
7.4.5 ICMP参数问题和改变路由差错报告
IP数据报分为固定部分、可变部分、数据部分。当固定部分被篡改时,向源主机发送类型为12,代码为0,ICMP报文。指针(了解):指向被改的部分。当IP数据报没有可变的部分时,向源主机发送类型为12,代码为1,ICMP报文。
改变路由:
类型:5
代码:
- 0:对特定网络路由的改变
- 1:对特定主机路由的改变
- 2:基于指明的服务类型对特定网络路由的改变
- 3:基于指明的服务类型对特定主机路由的改变
服务类型例如有视频、音频、图片、文本,有的路由器支持图片、文本,但是规定视频、音频不能通过。
7.4.6 ICMP查询报告解析
- 通过ping命令就可以产生回送请求和回送应答类型的报文
- 类型为8表示是request
- 类型为0表示是reply
- 原始时间戳:发送方向接收方发送数据,发送方发送的那个时间点就是原始时间戳
- 接受时间戳:发送方向接收方发送数据,接收方接受的那个时间点就是接受时间戳
- 发送时间戳:发送方向接收方发送数据,接收方接受了以后需要做出回应,回应的那个时间点就是发送时间戳
- 类型13是请求
- 类型14是回答
- 当某个主机不知道自己的地址掩码时,可以发出查询报文
- 类型17是请求
- 类型18是回答
- 地址掩码请求和回答现在基本上很少使用,过时了
- 当主机A与主机B通信时,不知道路由,主机A就可以发出路由器询问与通过类型的ICMP查询报文
7.4.7 ping命令使用详解
ping的ICMP数据报
- 时间越大不能说网络不稳定(时间越大说明路径越长),若时间不再一定范围内,网络不稳定;
- 判断网络稳定,可以改变字节数(曾大字节数),判断设备是否可以处理
- ping –l 1024(字节数可以改变)
- 使用ping –t 可以一直ping,不停止,也可判断网络是否稳定。若回复时间不稳定,或者回复频繁丢失,说明网络不稳定
7.4.8 ping命令使用详解
使用tracert 命令,首先TTL的值为1,发送类型为8的ICMP查询报告报文,第一个三层设备返回ICMP差错报告报文,总共三回;然后TTL的值为2,同理;TTL的值为3,同理;一直到目的地址;