ARP协议(Address Resolution Protocol)
ARP本质上也是跟MAC存储表差不多的一种缓存,它是一种高速缓存,专门存储IP地址与MAC地址的映射表。
1、发送数据的过程
情况一:在局域网内查找IP对应的MA地址映射
依靠交换机等数据链路层设备对请求分组(一种含有源IP、源MAC、目的IP、目的MAC为默认全1广播值)进行局域网内广播,目标主机在收到该广播后会回复一个带有自身IP和MAC的分组以非广播(单播)的形式传回源主机。
情况二:跨路由器查找IP对应的MAC地址映射
首先根据子网掩码判断目标主机的IP地址在不在同一个网段(子网)内,如果不在,首先还没出局域网的时候同样是依靠广播的形式,目标IP替换为必经之路默认网关接口的IP地址发送请求分组,默认网关路由器会单播回复该请求,ARP协议体系中就获取到这个网关接口的MAC(此时还没有跑出广播域),后面就是路由器间点对点的以相同的方式进行MAC获取,直到到达目的主机所在的局域网,最终由广播该局域网的路由器获取到目的主机的MAC地址。
2、ARP协议
必要性:由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。有的主机在高速缓存中恰好没有对应MAC地址的就需要借助ARP协议来得到下一跳的MAC地址。
作用:完成主机或路由器IP地址到MAC地址的映射。(解决下一跳走哪的问题,个人理解是IP有点像全局坐标,MAC有点像局部坐标,IP给你一个大方向保证你不迷路,但真要完成点对点的传递任务还得依靠MAC)
使用过程:检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)
ARP协议4种典型情况(由于ARP协议已经非常成熟且相关网络设备上对协议的应用也很完备,所以用户几乎不需要考虑相关的内容,设备间以一种及其成熟的方式自动执行该协议):
1、主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
2、主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
3、路由器发给本网络的主机A:用ARP找到主机A硬件地址;
4、路由器发给另一网络上的主机A:用ARP找到本网络上的一个路由器的硬件地址。
3、ARP协议习题
DHCP协议(动态主机配置协议Dynamic Host Configuration Protocol)
1、主机如何获得IP地址
在网络体系中需要通讯肯定会用到IP,主机通过分配获得自身的IP的方式有两种,分别为静态配置方式、动态配置方式。
静态配置
电脑机房或网吧中的主机,管理员根据一定规律将IP人为分配好(大概率是私有IP再通过NAT与外网连接),需要配置的几个参数有:IP地址、子网掩码、默认网关(获取目标MAC地址等作用)
动态配置
主要用于通过无线局域网连接的移动设备,因为会随时移动位置,所以需要动态地分配IP,值得注意的是DHCP协议是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP(UDP传输层再详细讲解)。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用(地址池),支持移动用户加入网络,支持在用地址续租(分配的地址是时间性的,超出使用时间需要申请地址续租)。
过程原理(全为广播):
1、主机广播DHCP发现报文
“有没有DHCP服务器呀?” 试图找到网络中的服务器,服务器获得一个IP地址。
2、DHCP服务器广播DHCP提供报文
“有!有!有!” 服务器拟分配给主机一个IP地址及相关配置,先到先得。
3、主机广播DHCP请求报文
“给我分配一个IP地址!” 主机向服务器请求提供IP地址。
4、DHCP服务器广播DHCP确认报文
“好嘞!” 正式将IP地址分配给主机。
ICMP协议(因特网控制报文协议Internet Control Message Protocol)
1、TCP/IP协议栈
ICMP协议、IGMP协议都是为传输层直接提供服务,为了更有效地转发IP数据报和提高交付成功的机会。
2、网络控制报文协议ICMP
主要功能支持主机或路由器的:
1、差错(或异常)报告 → 发送特定的ICMP报文
报文类型分为:ICMP差错报文、ICMP询问报文
2、网络探询
3、ICMP差错报告报文(5种)
1、终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。(无法交付的情况)
2、源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(拥塞丢数据的情况)
3、时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。(TTL=0的情况)
4、参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题的情况)
5、改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(更换为更好的路由的情况)。
4、ICMP差错报告报文数据字段
ICMP的数据字段内容是根据出错的IP数据报做的编辑。
5、不应发送ICMP差错报文的情况
1、对ICMP差错报告报文不再发送ICMP差错报告报文。(禁止禁止禁止套娃!!)
2、对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。(意思意思得了)
3、对具有组播地址的数据报都不发送ICMP差错报告报文。(组播与广播的区别是,广播是一点对广播域内所有点,组播是一点对广播域内部分点)
4、对具有特殊地址(如127.0.0.1或0.0.0.0)的数据报不发送ICMP差错报告报文。
6、ICMP询问报文
1、回送请求和回答报文
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。(典型的例子是Ping,测试目的站是否可达以及了解其相关状态。)
2、时间戳请求和回答报文
请某个主机或路由器回答当前的日期和时间。(用来进行时钟同步和测量时间)
3、掩码地址请求和回答报文(不再使用)
4、路由器询问和通告报文(不再使用)
7、ICMP的应用
1、PING
PING(Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo请求报文,测试目的站是否可达及了解其有关状态 。(测试两个主机之间的连通性,使用了ICMP回送请求和回答报文)
2、Traceroute
跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。其具体原理是,发送一连串的分组,分组的生存时间TTL依次递增1,因此就可以逐个分组的向前探索路径,直到到达目的地。最终测算出源点到目的主机之间的距离。
IPv6
1、IPv6的产生背景
纵使绞尽脑汁发明了NAT、CIDR等网络细分与网络细分的细分,让IP地址使用率有所提高,但是32bit的长度终究有限,很快就要用完了。因此又发明了一种超长的地址IPv6。(除了扩充数量的原因,另一个目的是改进IP数据报中的首部格式,从而快速处理/转发数据报;还有一个目的是为了支持QoS)
(QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术)
2、IPv6数据报格式
固定40Byte基本首部,扩展首部负责各种功能的扩充。
版本:指明了协议版本,总是6。
优先级:区分数据报的类别和优先级。
流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。(类似于来自同一IP数据报的不同分片)
有效载荷长度:扩展首部+数据部分的长度
下一个首部:标识下一个扩展首部(例如基本首部中的下一个首部指向的是扩展首部1,扩展首部1的下一个首部指向的是扩展首部2,依此类推,最后一个扩展首部的下一个首部指向的是数据部分)或上层协议首部。
跳数限制:与IPv4中的生存时间TTL的概念相同。
源地址、目的地址:长度都是128位,对应IPv6的长度。
3、IPv6和IPv4区别
1、IPv6将地址从32位(4B)扩大到128位(16B),拥有更大的地址空间。
2、IPv6将校验和字段彻底移除,以减少每一跳的处理时间。
3、IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
4、IPv6支持即插即用(即自动配置),不需要DHCP协议。(因为地址数量足够多,有钱任性)
5、IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
6、IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。(所以有一个比较大的问题就是,IPv6的数据报如果传到了某个路由器但是接下来的链路MTU太小,那么这个IPv6数据报并不能在当前的路由器被分片,只能被残忍丢弃,然后通过ICMPv6返回给发送主机一个错误报告)
7、ICMPv6协议:附加报文类型“分组过大”。
8、IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
9、IPv6取消了协议字段,改成下一个首部字段。
10、IPv6取消了总长度字段,改用有效载荷长度字段。
11、IPv6取消了服务类型字段。
4、IPv6地址表示形式
对于机器肯定就是一长串二进制数了,对于人的话有以下两种表示方式。
一般形式:冒号十六进制记法:
用一个16进制数表示4位,所以是32个十六进制,四个十六进制数表示一组,用冒号隔开,一共是八组。
压缩形式:如果一组的高位有0直接省略掉:
还想再精简的话,还可以再进行零压缩
零压缩:一连串连续的0可以被一对冒号取代。
5、IPv6基本地址类型
单播:一对一通信 可做源地址、目的地址
多播:一对多通信 可做目的地址
任播:一对多中的一个通信 可做目的地址
6、IPv6向IPv4过渡的策略(如何兼容两种IP)
双栈协议(两种IP的协议栈都准备好,给机器既配置IPv4又配置IPv6)
隧道技术(在传递中使用处理设备对数据进行再封装,相当于披个马甲)