网络层提供的服务
是否保证可靠传输:网络层不保证可靠传输,只提供尽最大努力交付。网络层发数据不用先建立连接。因此网络层设备比较简单,比如路由器,无需保证准确传输,网络层造价成本大大降低,准确传输由传输层保证
网际协议IP
配套协议:与IP协议配套使用的协议有地址解析协议ARP(Address Resolution Protocol),网际控制报文协议ICMP(Internet Control Message Protocol),网际组管理协议IGMP(Internet Group Management Protocol)
虚拟互联网络
转发器:物理层使用中间设备
网桥:链路层使用的中间设备
路由器:网络层使用的中间设备。路由器只实现了低三层协议,没有实现更高层协议
网关:网络层以上中间设备,可连接两个不兼容系统在高层的协议转换
网络是异构的,但实现的IP协议是相同的,如果异构网络都通过IP协议相连,可以看作相同的虚拟网络
分类的IP地址
概念:将IP地址划分为多个固定类,每类地址都由两个字段组成,第一个字段是网络号,标志着连接到的网络信息,第二个字段是主机号,标志着主机。大概可分为A-E类IP地址,ABC类地址都是单播地址,D类地址用于多播,E类地址为保留地址以后使用
IP地址和硬件地址
网络层及以上层收发数据时用的地址是ip地址,链路层及物理层传输数据用的是硬件地址,网络层报文在链路层封装成mac帧(ip地址保留在报文中,不是用物理地址取代ip地址,只是在头尾添加帧头帧尾),mac帧中源地址和目标地址都使用硬件地址,都封装在帧头中
路由器由于连在两个局域网之间,所以有两个物理地址
地址解析协议ARP
流程:ICMP/IGMP使用IP,IP使用ARP
概念:解析ip地址对应的硬件地址
原理:每个实现ARP协议的主机有一个ARP缓存,用来存局域网内其他主机ip地址和其硬件地址对应关系。对于一个ip地址,会现在ARP缓存寻找是否有匹配项,如果没匹配项则在局域网广播发送ARP请求,请求包含自己的ip地址,自己的硬件地址和消息目标ip地址,当目标ip地址收到广播ARP请求后,就给请求源回复一个ARP响应(一对一响应,因为请求包含了请求来源ip和硬件地址),响应包含自己的ip地址和硬件地址,当广播发送ARP请求方收到响应后,就将响应里的ip地址和硬件地址映射关系添加到主机ARP缓存。ARP缓存有个过期时间,目的可能是为了主机更换硬件地址后,ARP缓存不会刷新,还是往原来的目标地址发送,这样当过期了就会重新广播确定新的目标主机硬件地址。如果目标主机ip不在本局域网时,路由器收到ARP请求后会将其在相邻的局域网广播一直循环找到目标主机硬件地址
ip数据报格式
数据报即报头,数据和报尾,主要看下报头的固定部分
报头有固定部分和可变部分,固定部分长度为20字节
版本:4位,表示是ipv4还是ipv6
区分服务:只有在使用区分服务时,这个字段才有用
总长度:16位,最大大小为65535,表示报文总长度,但链路层帧最大长队MTU一般为1500,此时网络层报文比MTU大,会被分片再装成帧传输
ihl:即ip头总长度,单位是32位(4字节),所以最小为0101(5*4=20),最大为1111(15*4=60)
标识:ip软件发数据时会维护一个计数器,每发一个报文计数器就加一,标识字段存储这个计数器的数值。当报文超过MTU被分片时,每个分片的标识字段都是相同的,收到相同标识字段后会将这些分片组装起来
标志:有3位,用于分片。前两位有用。最低位叫MF,为1标识后面还有分片,为0标识这个分片是最后一个分片。中间一位叫DF,DF为0表示允许分片,DF为1表示不允许分片
片位移:13位,表示这个分片在整个报文中的字节偏移,单位是8字节
生存时间:即TTL,Time To Live,表示报文在网络传输中的寿命,早期单位为时间,目的是为了防止报文在网络中循环传输,一般远小于1秒,后来变成了传播跳数,当报文被路由器转发,ttl减1,当ttl减少到0时,丢弃报文。当设置ttl为1时,表示这个报文在局域网中传输
协议:8位,表示ip数据报的协议是哪种类型,以便将数据报上报给哪个处理过程,常用协议和其数字如下
首部校验和:占16位,用来检测数据报的首部,不包含报文数据部分。每个数据报被转发都会重新计算首部校验和。校验原理没采用链路层的CRC循环冗余校验,而采用了更简单的方法:将报文头部划分为若干个16位的长度片,其中首部校验和置为全0,然后将这些长度片的位相加,取反码,将取的反码置入首部校验和字段,接收端收到报文后也将报文首部划分为若干16位长度片,加和然后取反码,如果头部未发生变化则结果必然为0,如果不为0则表明传输出错,丢弃该报文
ip层转发分组的流程
路由器的路由表由若干条目组成,每个条目由两个字段:目的网络地址(目的ip的网络号部分,不是整个ip地址,如果是ip地址路由表会很大)和下一跳地址(路由器连两个局域网的接入点ip地址)。路由表还可以有特例,即对特定主机指明一个特定的路由规则
路由表还有默认规则,即如果其他都没匹配上,会执行这个默认规则
实际路由表中,上图的默认 和 直接会被表示为0.0.0.0
当路由器要转发报文并在路由表中找到下一跳地址时,怎么把报文发过去:会先把报文发到链路层接口,由ARP将吓一跳IP转化成硬件地址,然后将硬件地址放到链路层MAC帧首部,根据硬件地址找到下一跳路由器地址。这个寻址再转发mac帧有一些开销,但不能直接用ip地址,这样的开销是必要的
划分子网和构造超网
划分子网
现状与问题 1B类ip地址快分配完了 2ip地址增多,路由表内容也急剧增多(路由表存网络号) 3ip地址快用完了
CIDR:无分类域间路由选择,Classless Inter-domain Routing,他在ip地址的基础上将主机地址部分位转化为子网位,即CIDR由三部分组成,网络号,子网号,主机号。有了子网也就有了子网掩码,子网号可用过CIDR地址和子网号与运算获得。有了CIDR后,路由表中的路由就利用CIDR地址块实现地址聚合,减少了路由表体量
好处 1可更加有效分配ipv4地址
路由表二叉查找 路由查找需要较快的速度,路由查找算法是影响查找速度的关键之一,以前是从目标ip地址提取出n位前缀,在路由表中匹配,最长的匹配为下一跳地址,此法较耗时。改进的方法是二叉查找,最坏情况只需要找n次,n是ip地址网络号长度,此法逻辑是二叉查找路由表的结果即最短匹配,终止条件是路由表中没有目标地址的位时结束
网络控制报文协议ICMP
功能 在网络层,可以报告差错情况和提供异常情况报告
层次 在网络层中,和ip数据报相比,算高层次,即从高到底排列,ICMP/IGMP > IP > ARP
报文格式
ICMP报文种类
类型 有两种,ICMP差错报告报文和ICMP询问报文
ICMP报文类型字段(第一个字节的内容)
ICMP报文代码字段 目的是进一步区分相同类型字段中的不同情况
ICMP差错报文分类
终点不可达 路由器或主机不能交付数据报,就给发送地址发此报文
源点抑制 路由器或主机因为拥塞而丢弃数据包,就给发送方发源点抑制报文
时间超过 当收到的报文的ttl为0或在规定时间收到的数据包分片没组成一个完整的数据包,就给发送方法时间超过报文
参数问题 数据报首部中字段值不正确时,就发送参数问题报文
改变路由(重定向) 路由器把改变路由报文发给主机,让主机知道下次应将数据发往的路由器
不发ICMP的情况
多播地址不发icmp
仅对分片数据的第一个分片发报文,其他分片不发
对icmp差错报文不再发差错报文
ping
ping是应用层直接使用网络层,没经过运输层
ping使用了icmp回答和请求报文
traceroute
功能 跟踪一个分组从源点到终点的路径,在windows中命令是tracert
原理 发送的数据报为无法交付的udp数据报(端口非法),第一个数据报的ttl为1,报文发到下一跳路由,路由把ttl减少1变成0,然后丢弃该报文,给源返回一个时间超过ICMP报文 ,然后源发第二个数据报,也是无法交付的报文,ttl为2,这样发到第二个路由会被丢弃,然后返回一个时间超过ICMP报文 ,最后发到目标主机时,由于报文无法交付,目标主机会返回终点不可达ICMP报文
三个时间字段是因为每发一个报文会发3次,分别是3次发送的时间
路由选择协议
内部网关协议RIP
RIP Routing Information Protocol,是内部网关协议(IGP)中最先广泛使用的协议,RIP是一种基于距离向量的协议,最大优点是简单
工作原理 RIP要求每一个路由器维护从本路由器到其他每一个网络的距离(可理解为跳数)。RIP认为跳数越小越好,且RIP最大支持跳数只有16,所以RIP只适用于小型互联网。RIP不会在两个网络间选择多条路由,因为RIP只会选择距离最短的一条路径
特点 1只和相邻路由器交换信息 2交换的信息内容是本路由器的路由表 3按固定时间间隔交换具有信息,或拓扑发生变化是交换路由信息
过程 路由刚开始工作,只知道直连的网络距离,每一次交换信息路由也只和相邻的路由交换信息,但经过若干次更新后,路由信息会不断传播,路由会知道所有路由连接信息。路由表更新的原则是找出到目标地址的最短距离
距离向量算法
相邻路由器发送RIP报文处理方法 将报文发送源地址改为目标地址,将报文里所有项目的距离加1,每一个项目都有3个字段:目的网络地址,目的网络距离,下一跳路由器
怎样通过RIP更新路由表 收到RIP报文并处理后:1 如果RIP中项目网络地址不在路由表中,则将该项目的目标地址更新到路由表中 2 如果RIP中项目网络在路由表,且路由表的下一跳和RIP中下一跳路由相同,则将RIP对应的项目更新到路由表 3如果RIP中项目网络在路由表,但路由表的下一跳和RIP中下一跳路由不同,则比较哪个路径最短, 更新哪个 4 如果3分钟还没收到相邻路由,则把相邻路由标记为不可达(距离16)
RIP报文格式
简介 RIP使用UDP报文传输,使用端口520.
组成 RIP报文由首部和路由部分组成
缺陷 当网络出现故障,需要经过较多的周期数才能将故障全部更新到所有路由器,可理解为好消息传的快,坏消息传的慢
内部网关协议OSPF
OSPF:开放最短路径优先,Open Shortest Path First,是为了克服RIP的缺点开发的。原理简单,实现复杂。"最短路径"使用了Dijkstra的最短路径算法SPF。OSPF主要特征是使用分布式的链路状态协议
和RIP相比不同点 1OSPF是向本自治系统所有路由器和它相邻路由器发本路由器信息,这样会让本自治系统的所有路由器都获得本路由的信息副本(RIP仅向所有相邻路由发信息) 2发送的信息是本路由器和所有相邻的路由器的链路状态(即和哪些路由连接,还有连接的成本,距离,带宽,时延等信息,RIP是距离协议,只发送目标网络,距离,下一跳) 3只有链路状态发生变化时才发送,不像RIP定时发送
外部网关协议BGP
BGP,边界网关协议,border gateway protocol
和内部网关协议区别 BGP只追求寻找一条较好的到达目标网络的线路,而不是最优最短路径
特点 BGP基于TCP,当需要交换信息时,先创建tcp连接,再通过tcp发信息
路由器构成
作用 转发分组
组成 主要由路由选择和分组转发部分组成
分组转发组成 输入端口,交换结构,输出端口
几种常见交换结构
ip多播
概念 只发一个数据,由路由实现数据的副本复制与多播,支持多播的路由器叫多播路由器
好处 省带宽,不用给每个接收方发送很多数据
特点 多播不产生icmp报文,如果ping多播地址将收不到回复
网际组管理协议IGMP
多播是一批主机可以选择加入的,多播通过路由器实现多播,IGMP可让路由判断路由所连的局域网有没有目标多播的主机。仅有IGMP不够,还需要考虑怎样将多播报文在路由间较好的交付给目标主机,需要多播路由选择协议
多播待解决问题 1多播支持动态的主机加入或退出多播范围,而此时链路情况还没更新 2多播路由表判断多播方向,需要信息比路由表多的还有数据来源地址,因为多播不需要给发送方多播
工作原理 1当新增多播主机时,该主机向多播路由器发送igmp报文,声明自己要加入多播组,多播路由器通过多播路由选择协议将新增成员关系转到其他路由器上 2组员关系是动态的,多播路由器会定期探寻其多播组的组员,如果没响应则再探寻几次,如果一直没响应则路由器认为该主机已离开了对应的多播组,不会再多播给这个主机
多播路由选择协议
目标:针对每个主机,以主机为根节点,寻找以其他多播主机为叶节点的最有多播转发树
常用多播转发方法 洪泛与剪除、隧道技术,基于核心的发现技术
使用情况 还没有广泛使用,也有其他可替代的路由选择协议
洪泛与剪除
适用 适用于较小多播组
原理 通过洪泛多播报文,洪泛通过反向路径广播(RPB,Reverse Path Broadcasting)避免回环
反向路径广播 只接收从源点发过来的最短路径的数据报,丢弃其他非最短路径的数据报
隧道技术
原理 隧道技术即将多播封装为单播,传到目标区域后,再解封装,变成多播,进行多播
适用情况 适用于远距离,不支持多播的路由或网络间的多播传输
基于核心的发现技术
适用范围 规模比较广泛
原理 对于每个多播组会指定一个多播路由器为核心路由器,多播时先向这个核心路由器发单播请求,核心路由器收到请求后判断是单播还是多播,多播的话,将这个请求多播给对应的多播组的所有成员
虚拟专用网VPN
背景 早先互联网ip地址除去网络号,很多主机号是相同的,为避免主机号在互联网和其他主机号冲突,创建了私有地址(192.168.X, 172.16.0.0 - 172.31..255.255, 10.0.0.0 - 10.255.255.255)
VPN:虚拟专用网,Virtual Private Network
原理 机构由很多部门,部门间地理位置遥远,部门间经常需要网络通信,vpn软件或机构可提供隧道连接,即使你在家里,连了vpn,就好像实际连到公司里
网络地址转换NAT
NAT,网络地址转换,Network Address Translation
背景 当一个专用网内有自己的私有ip地址,但如果想上外网又必须有个全球ip地址,没有的话得申请,如果去申请很耗,解决方法是在专用网连到互联网的路由器上安装NAT软件,进行私有地址向全局地址转换。安装NAT的软件至少有一个全球通用的ip