网络层
网络层提供四种服务:分组化处理、查找下一跳的逻辑地址、查找下一跳的物理地址、对数据报进行必要的分片处理。
一、概述
1、交换:电路交换、分组交换
电路交换:
分组交换:来自上层的报文被分割成便于管理的一个个分组,再通过网络发送这些分组。报文的源点逐个发送分组,而其终点也逐个接收这些分组,等到属于该报文的所有分组都到齐之后,终点才将报文交付给上层。
2、无连接服务、面向连接的服务
网络层的分组交换:网络层被设计为一个分组交换网,报文要在源点被分割成便于管理的分组,通常称为数据报,然后逐个地将这些数据报从源点传送到终点,终点接收到数据报经过组装后重新生成原始的报文,因特网的分组交换在最初设计时只提供无连接服务,不过最近的趋势是面向连接的服务。
无连接服务:每个分组都是一个独立的个体,属于一个报文的两个分组之间没有任何联系,此类网络中的交换机被称为路由器,一个分组后面跟着的可能是来自相同源点的分组,也可能是来自另外一个不同源点的分组。每个分组在选择路由时都要依据包含在其首部的信息:源地址和目的地址,目的地址指明了它要去哪里,源地址指明了他来自哪里。
面向连接
面向连接服务:属于同一个报文的所有分组之间是有关联的,一个报文的数据被发送之前,首先建立一条虚链接以指定这些报文通过的路径。分为三个阶段:建链、传送数据、拆链。
二、IP分组的交付和转发
1、交付:网络层监视底层物理网络对分组的处理过程,分为直接交付和间接交付。
直接交付:分组的终点是一台与交付者连接在同一个网络上的主机。直接交付发生在这两种情况下:分组的源点和终点都在同一个物理网络上,或者是最后一个路由器与目的主机之间的交付。发送方很容易判断交付是否为直接交付:提取终点的网络地址(用掩码),然后与自己的网络地址相比较,若匹配,交付是直接的。直接交付的时候,发送方通知目的IP地址找出目的的物理地址,然后IP软件把目的的IP地址和物理地址一起交付给数据链路层用于实际的交付,这个过程称为把IP地址映射到到物理地址。
间接交付:分组经过一个又一个路由器,最终到达与终点连接在用一个网络上的路由器。间接交付的时候,发送方通过分组的目的IP地址和路由表来查找该分组应当被交付的下一个路由器的地址,然后发送发再用ARP协议找出下一个路由器的物理地址。
2、转发
转发:转发意味着让分组踏上通往终点的路途,也就是意味着将分组交给下一跳。具体分为:基于目的地址的转发、基于标记的转发。
基于目的地址的转发:这是一种传统方式,并且仍然是主流的方式。这种情况要求主机和路由器具有一张路由表才能进行转发,当主机或者路由器收到分组要进行转发时,就要搜索路由表,以便找到最后终点的路由。因为路由表项数量过多,将导致路由表的查找效率非常低。转发技术如下:
(1) 下一跳方法:可以减少路由表中的内容,只保留下一跳的地址,而不是保留完整的路由信息。
(2) 特定网络方法:只用一个表项来定义目的网络本身的地址,把连接在同一个网络上的所有主机看成是一个表项。
(3) 特定主机方法:目的主机的地址在路由表中要给出。
(4) 使用分类编址时的转发:
A、无子网划分转发:提取出分组的网络地址;查找地址的类别;查找下一跳地址;找出下一跳的物理地址,请求数据链路层把数组交付到下一跳。
B、有子网划分的转发:
(5)使用无分类编址的转发:整个地址空间是完整的,没有划分类别,需要在路由表中包含类别。
基于标记的转发:
三、路由器的结构
一般路由器有四个构建:输入端口、输出端口、路由选择处理器、交换结构。
四、网际协议版本4(IPv4)
讨论IP编址机制和IP分组的交换与转发之后,下面讨论的是IP分组的格式,IP分组如何由一个基本首部和一些选项构成。
1、 概述:IP是一种不可靠的无连接数据报协议,一种尽最大努力交付的服务。
2、 数据报:网络层的分组称为数据报。数据报是一个可变长度的分组,它由两个部分组成,分别是:首部和数据。首部的长度可以是20-60字节,包含路由选择和交付重要信息,习惯上,在TCP/IP中都是以4个字节为一段表示首部。
HLEN:首部长度,单位是段(4个字节为一段);
服务类型(TOS,type of service):后两位未使用;最右边全为0时,定义优先级,发生问题(如堵塞)时的处理机制;最右三位并非全为0时,定义54种服务。
总长度:以字节为单位的数据报的长度。
标识、标志、分片偏移:用于分片。
生存时间:现在这个字段用来控制数据报所经过的最大跳数。每经过一个路由器,值减掉1,当为0时,丢掉这个数据报。
协议:这个8位字段定义了使用此IP层服务的高层协议,这个字段指明IP数据报必须交付给哪个最终目的协议。
检验和:
源地址:这个字段始终不变。
目的地址:始终不变。
四、分片
1、概述:数据报可以穿越不同的网络,每个路由器都会从收到的数据帧中拆解出IP数据报,并对他进行处理,然后再封装成另外一个帧。每个数据链路层协议都有自己的帧格式,这个格式中有一个字段是“数据字段最大长度”,当数据报被封装成帧时,数据报的总长度必须小于这个最大长度。
对于不同的物理网络协议,MTU的值是不同的,例如以太网的这个值是1500直接,FDDI局域网的是4352字节,而PPP的这个值是296字节。
为了使IP协议与物理网络无关,IP数据报的最大长度为65535字节,如果我们使用的协议的MTU刚好等于这个数值,那么传输效率很高;但是对于其他一些物理网络,我们不得不对数据报进行分片。
五、选项
IP数据报的首部由两个部分组成:固定部分和可变部分,固定部分是20个字节;选项最多可以达到40字节。
六、检验和
检验和能够分组在传输过程中出现的损坏,是附加在分组上的冗余信息。
六、地址解析协议(ARP)
一个分组交付到主机或者路由器,需要用到两级地址:逻辑地址和物理地址。我们要把逻辑地址映射为相应的物理地址,这样的映射可以通过静态映射或者动态映射。
1、 静态映射:静态映射就是说创建一张表,把逻辑地址与物理地址连续起来,则个表存储在网络中的每一台机器上。局限性是:物理地址可能会变化,所以静态映射表需要定期更新。
2、 动态映射:在任何时候,只要知道另外一台机器的逻辑地址,就可以使用协议找到相应的物理地址。已经设计出来的动态映射的协议有两个:地址解析协议(ARP)逆地址解析协议(RARP) .
3、 ARP协议:ARP接收来自IP协议的物理地址,将其映射为相应的物理地址,然后再把这个物理地址递交给数据链路层。任何时候,当主机或者路由器需要找出咋个网络上的另外一个主机或者路由器的物理地址的时候,他就可以发送一个ARP查询分组,这个分组包括发送方的物理地址和IP地址,接收方的IP地址,这个分组利用收到的查询分组中的物理地址以单播方式直接发送给查询者。
ARP分组格式:
ARP分组直接封装在数据链路帧中,
ARP工作过程:
I、发送方知道目标的IP地址;
II、IP请求ARP创建一个ARP请求报文,填入发送方的物理地址、发送方的逻辑地址,目标方的逻辑地址,目标的物理地址填入0;
iii、这个报文被递交给数据链路层,在这一层它被封装成帧,并且以发送方的物理地址作为源地址;物理广播地址作为目的地址。
IV、每一个主机或者路由器都会收到这个帧,因为这个帧包含的是广播目的地址,多有站点都会取走这个报文并把它交给ARP,除了目标机器之外,其他所有机器都会丢弃这个分组,目标机器认识这个IP地址。
v、目标机器用ARP回答报文进行回答。回答报文中包含了他的物理地址,这个报文使用的是单播方式。
vi、发送方收到这个回答报文,现在发送方就知道目标机器的物理地址了。
vii、携带由于给目标机器数据的IP数据报封装成帧,并用单播方式传送到目的地址。
七、网际控制报文协议
1、概述:Ipv4提供了不可靠的和无连接的数据报交付,这样设计是为了有效地利用网络资源。IP协议是尽最大努力的服务,它吧数据报从最初的源点交付到最后的终点。但是,它有两个缺点:缺少差错控制和缺少辅助机制。ICMP就是为了补偿这两个机制设计的,是IP协议的伴侣。
ICMP在网络层的位置如下:
ICMP本身是一个网络层协议,三十,他的报文并不是如期那样直接传递给数据链路层,实际上,ICMP报文首先要封装成IP数据报,然后才被传递到下一层。
在一个IP数据报中,如果协议字段值是1,就表示IP数据是ICMP报文。
2、 ICMP报文分类:差错报告报文和查询报文。
3、 差错报告报文:差错报告报文报告了路由器或主机在处理IP数据报时可能遇到的问题。ICMP报告并不能纠正差错,只能简单地报告差错,纠正差错留给高层协议去做。ICMP总是把差错报文报告给最初的源数据。
(1) 对于写到ICMP差错报文的数据报,不再产生ICMP数据报;
(2) 对于分片的数据报,如果不是第一个分片,则不产生ICMP数据报;
(3) 对于具有多播地址的数据报,不再产生ICMP数据报;
(4) 对于特殊地址的数据报,不再产生ICMP数据报;
ICMP生成一个差错分组,然后再封装成IP数据报。
4、 查询报文
除了差错报告外,ICMP还能对某些网络问题进行诊断,是通过查询报文来完成的。是成对出现的。
八、单播路由选择协议(RIP、OSPF、BGP)
路由信息协议(RIP)是对距离向量协议的实现;开放最短路径优先(OSPF)协议是对链路状态协议的实现;边界网关协议(BGP)是对路径向量协议的实现。RIP和OSPF是内部路路由选择协议;而BGP是外部路由选择协议。
1、 距离向量协议的实现(RIP,routing information protocol):
2、 开放最短路径优先(OSPF, open shortest path first),基于链路状态路由选择的域内路由选择协议
3、 边界网关协议(BGP,border getway protocol)是一个使用路径向量路由选择的域间路由协议。
九、多播和多播路由选择协议
IGMP(internet group management protocol):网际组管理协议,负责收集和解释一个网络组成员信息。