单位:数据报、分组。分组是经过切分后的数据报
设计思想:向上提供简单灵活、无连接的、尽力交付的数据报服务,分组可能会出错、丢失、重复、失序或者超时,采用这种思路使得网络的造价大大降低,运行方式灵活,能够适应多种应用。主要任务是将分组从源传送到目的端,为分组交换网上的不同主机提供通信服务。
功能:
路由主要完成的两个功能是:路由选择(确定哪一条路径)和分组转发(当一个分组到达时所采取的动作)
而网络层中使用了一种创新网络架构,称为软件定义网络SDN,将网络层划分成了集中式的控制层面和分布式的数据层面
拥塞控制
因为过量分组而引起的网络性能下降的情况叫做拥塞。判断网络是否拥塞的办法是观察网络吞吐量和网络负载之间的关系,如果随着网络负载增加,网络的吞吐量明显小于正常,则是轻度拥塞;如果负载增加网络吞吐量迅速下降则可能已经进入拥塞状态。而网络吞吐量降至为零的时候,整个网络陷入死锁。
拥塞控制的办法主要分为两种:
开环控制:在设计网络的时候事先将相关发生拥塞的情况考虑周到,力求在运行时不发生拥塞,是一种静态的预防方法
闭环控制:采用监测网络系统去见识,及时检测哪里发生了拥塞,是基于反馈环路的一种方法,是动态的
TCP/IP协议栈主要协议有IP协议、ICMP\IGMP、ARP,其中ARP为IP提供服务,IP又为ICMP和IGMP提供服务

固定部分:20B
可变部分40B
在链路层中,会有最大传输单元限制MTU,以太网为1500Byte。一旦数据报超过MTU,则需要进行分片,将若干个数据报分割为若干个分组
其中IP数据报的首部有三个字段是用于数据报分片的:
TIPS:需要注意的是,首部长度的单位数据大小为4B,总长度的单位数据大小为1B,而片偏移的单位数据大小为8B
IP地址用于标识路由器主机的接口
IP地址=(<网络号><主机号>)
在同一个局域网内的主机的网络号都是一致的,但是主机号不一样。路由器可以划分广播域,因此路由器的接口都连接着不同的网络,有着不同的网络号
IP地址分类

特殊IP地址

私有IP地址:路由器对目的地址为自由IP地址的数据报一律不进行转发,只会在本局域网内使用


一定要注意最大主机数要减去全0和全1两种情况
IP地址有以下的重要特点:
注意:某些主机上可能会有多个网络接口,这些接口需要接入到不同的逻辑网络中。如果接入同一个逻辑网络,会导致IP地址冲突
上述的私有IP地址只会在所在局域网内使用。
在专用连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,这个路由器至少有一个有效的外部全球地址。在此局域网内的主机使用的都是私有IP地址,需要同公网通信则由NAT路由器代劳。持有私有IP地址的主机将访问外网的数据报传送给NAT路由器,NAT路由器收到私有IP的数据报后,用自身的公网IP创建一个数据部分一样的数据报向公网发送。
NAT转换表:
假设NAT路由的IP位172.38.1.5
| WAL端 | LAN端 |
|---|---|
| 172.38.1.5:8080 | 192.168.0.3:1000 |
| 172.38.1.5:8081 | 192.168.0.4:1001 |
分类IP地址的弱点
划分子网的思想:

对外仍表现为一个网络,也就是本单位外的网络看不到内部的子网划分。至少要留2个位用作主机号。
子网掩码:用于表示IP中的网络号是多少。主机位为0,网络号为1,通过子网掩码和IP地址相与就可以得到网络号。通过IP前8位可以知道从属哪个类型的网络,从而知道公网IP长度。那么剩下的位则是子网网络号。
子网掩码的使用:
每个路由器都会有一个路由表,路由表中内容有:
提取IP地址
if(可以直接交付){
直接交付
}else{
通过子网掩码提取网络号
if (有对应的子网路由){
交付
}else{
if(有特定的主机路由){
交付
}else{
if(路由表中有对应路径)
交付
else{
交付给默认路由
如果分组寿命结束,则丢弃,并报告分组出错
}
}
}
}
面临问题:IP地址很快分配完毕,路由表中项目急剧增长。
CIDR将网络号和子网号合二为一称为网络前缀,而且网络前缀变长
特点:

将多个子网聚合成一个较大的子网,称之为构成超网,又称为路由聚合
主要的方法是将两个子网的子网IP取网络交际作为合成的大子网的IP,此时IP的网络前缀会缩短。

上面的例子中,网络1和网络2构成一个超网后,该超网的IP位206.1.0.0/16
划分子网是将一个网络划分为多个网络
构成超网是将多个子网合称为一个子网
使用CIDR的时候,数据报查找路由表可能得到几个匹配的结果,将数据报中的目的地址IP和各个匹配结果相与得到匹配的网络前缀,应该选择具有最长网络前缀的路由,前缀越长,地址块越小,路由越具体。
正如邮件上的地址一样,地址越长越详细,有些地址只写到了市,而有些地址写到了街道,那么应该优先选用写到了街道的地址。
注意:最长前缀匹配要求匹配的目的网络的网络前缀一定要比其网络前缀长度要长,否则不是目的网络
ARP协议是最接近数据链路层的网络层协议。ARP高速缓存是主机和路由中对IP地址和MAC地址的映射。而ARP协议负责的是完成主机或者路由器IP地址到MAC地址的映射,也是解决下一跳该去哪的问题。
使用过程:
如果源主机要向目的主机P发送数据,则先检查ARP高速缓存,查询主机P对应的MAC地址,有则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装成ARP广播分组,并将其广播出去,同一局域网内所有主机都能收到请求。目的主机P收到请求分组后,会向源主机单播一个ARP相应分组,其中携带有主机P的IP和MAC地址,源主机收到后将此映射写入ARP缓存(10-20min更新一次),并且使用该MAC地址通信。
ARP使用的4种典型情况

|IP1(路由)|IP3(目的)|MAC1(路由)|目的物理地址(全为0)|
目的物理地址全0位
如果源主机想要访问的主机不在本局域网内:
获取IP地址有静态配置和动态配置两种方法,主要配置IP地址、子网掩码、默认网关。默认网关是一个默认的路由,是主机同外网通讯的中介。
DHCP协议是一种动态分配IP地址的协议,实际上是一种应用层协议,客户端和服务端通过广播的方式进行交互,基于UDP和CS架构。是一个提供即插即用联网机制,可以同服务期动态获得IP地址、子网掩码、默认网关、DNS服务器等,允许地址重用,支持移动用户加入网络,支持在用地址续租。
步骤:
1.主机广播DHCP发现报文,用于查询网络中是否有DHCP服务器
2.DHCP服务器广播DHCP提供报文:服务器准备分配给主机一个IP地址及其配置,先到先得
3.主机广播DHCP请求报文:请求使用目前服务器给出的IP地址
4.DHCP服务器广播确认报文:向所有主机确认该IP地址被分配给了谁
位于网络层和运输层的交界,用于支持主机和路由器进行差错报告和网络探寻。ICMP报文被装载于IP数据报的数据部分。


不应该发送ICMP差错报文的情况:
6. 对ICMP差错报告报文不再发送
7. 对具有组播地址的数据报
8. 对第一个分片的数据报片后的所有后续分片都不发送
类型:
应用:
ping:测试两个主机之间的联通性,使用回送请求回答报文
traceroute:跟踪一个分组从源点到终点的路径,使用ICMP时间超时报告报文
IPv4的地址已经分配殆尽,哪怕是CIDR和NAT也无法帮他续命
那么IPv6可以根本解决地址耗尽问题

IPv6基本首部结构:



单播:一对一通信,可作为源地址+目的地址
多播:一对多通信,可作为目的地址
任播:一对多中的一个通信,可作为目的地址,给一个组中的其中一个地址传输数据
双栈协议
在一台设备商同时启用IPv4和IPv6的协议栈,这样的话,这台设备既可以和IPv4网络通信,也可以和IPv6通信,会同时拥有IPv4和IPv6两种地址。
隧道技术
在IPv6数据报外面再包装一层IPv4的数据报首部使得其可以在IPv4的体系内传输
路由算法会将最佳路由路径加入到路由的路由表中,其中的最佳只是相对于某一种特定要求下得出的较为合理的结果的选择,比如说路由器跳数最少。
路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的,根据是否能自适应地根据网络通信量和拓扑结构进行调整变化来划分,可以讲路由算法分为静态路由和动态路由
静态路由算法指的是由网络管理员手工配置的路由信息,当网络拓扑结构或者链路状态发生改变的时候,需要管理员手工修改路由表中相关的静态路由信息。大型网络一般不宜采用静态路由,因为网络管理员难以全面了解整个网络的拓扑结构,并且当网络结构发生变化时,路由器中的静态路由信息需要大量更改。
动态路由算法又称为自适应路由算法,指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,这些信息会不断的更新,以适应不断变化的网络。
静态路由的有点在于简便可靠,在负荷稳拓扑结构变化不大的网络中效果挺好。而动态网络能够改善网络的性能并有助于流量控制,但是算法复杂,会增加网络的负担,并且可能因对动态变化的反应太快而引起震荡,或者反映太慢影响网络的一致性。动态算法主要分为距离-向量路由算法(分散性算法)和链路状态路由算法(全局性算法)
分层次的路由选择协议
当网络规模扩大的时候,路由器的路由表成比例扩大,这会需要越来越多的时间去扫描越来越庞大的路由表,也占用了更多的网络带宽。而且一些单位不希望外界知道自己的路由选择协议,需要对外界隐藏协议信息。
因此因特网将整个网络划分为许多小的自治系统AS,一个自治系统中包含很多局域网。自治系统内有权自主决定本系统内应该采用何种路由。因此路由选择协议分为了两大类:
适用于较为小规模的网络,优点是简单
在该算法中,每一个路由器都要维护一个从他自己到其他每一个网络的唯一最佳距离记录。这些路由选择表包括:

在该算法中,所有节点都需要参与距离向量的交换,以保证路由的有效性和一致性,就是所有节点都简介从其他节点传来的路由选择更新信息。并且会在下列情况下更新他们的路由表:
他要求每个节点更新时将它的全部路由表发送给所有的相邻节点。那么,更新报文的数量就和节点数量成正比,大的通信子网将导致需要发送非常多的更新报文,这是一个不利的因素。典型的距离-向量路由选择算法为RIP算法
RIP协议的报文用于在相邻路由之间传输路由表,由首部和路由部分组成,并且用UDP用户数据报封装,然后再交由IP数据报封装。其中一个RIP报文中最多包含25个路由项,如果路由表过长则需要发送多个RIP报文

其次,RIP协会会出现好消息传得快,坏消息传的慢的问题,又称为慢收敛。如果一个路由X不可达,这会导致另外两个路由不断地循环交换路由表,直到其中目的地址为X的表项到达了16之后,才能确认X不可达
该算法使用了Dijkstra提出的最短路径算法SPF最主要的特征是使用分布式的链路状态协议。首先,在自治系统内会采用链路状态路由算法来使得,每一个路由都能获得一个记录了全网网络结构的全网拓扑图,然后再使用SPF算法计算出最优路径
最后,所有的路由器都能获得一个链路状态数据库,也就是全网拓扑图

在第6步之后,整个网络的每个路由都有完整的网络拓扑,接下来就是根据这些信息结合SPF算法来求出最短路径,该算法主要在数据结构中有所叙述。
OSPF直接使用IP数据报传送,OSPF分组包括分组首部和后面的OSPF类型
OSPF有五种分组:
为了使得OSPF能够用于规模很大的网络,会将自治系统再划分为若干个小范围,每个区域都有一个32位的标识符,并且路由器最好不超过200个

这使得需要交换的信息的种类增多了,并且使得OSPF需要考虑更多情况,协议变得更复杂了,但是需要交换的信息量大大减少了
BGP用于自治系统之间交换信息
BGP发言人互相交换了网络可达性信息之后,各个BGP发言人会根据所采用的策略从收到的路由信息中找到到达各个AS的较好路由。因为想要找出最好路由付出的代价太大
其中交换的信息是一组完整的路径,是一组路径向量。其中BGP协议报文需要先被TCP报文封装,然后再被IP数据报封装。




组播提高了数据传输效率,减少了主干网出现拥塞的概率,组播组中的主机可以再同一个物理网络,或者来自不同的物理网络。

在组播中,分为了两个过程:因特网范围内组播和硬件组播。
将IP组播转化为组播MAC地址

两个第5到第10位不一样的组播IP会映射到同样的组播MAC地址,因此收到都播数据报的主机还需要再IP层面利用软件进行过滤,将不是本机接受的数据报丢弃
要使得路由器知道组播成员的信息,还需要利用因特网管理协议IGMP,IGMP协议让路由器知道本局域网上是否有主机参加或者推出了某个组播组。主机使用IGMP协议可以知道本局域网内是否有可以接收组播数据报的路由器。

组播路由协议可以找出以源主机为根节点的组播转发树,因此构造树可以避免在路由之间兜圈子
通常基于三种算法:
移动节点可以通过固定的网络IP地址,实现跨越不同网段的漫游功能,并且保证了基于网络IP的网络权限在漫游过程中不发生任何改变


具有多个输入和输出端口,负责转发分组的专用计算机


输入端口中查找和算法功能在路由器的交换功能中是最重要的

如果路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到0,这会使得后面在进入队列的分组由于没有存储空间而只能被丢弃
路由器中输入或者输出队列产生溢出是造成分组丢失的重要原因

路由表根据路由选择算法得出,主要用途是路由选择,使用软件实现。默认路由是在没有对应表项的时候,默认发送给该路由

转发表由路由表得出来,转发表必须包含某些完成转发的必要信息,比如说在每一行必须要包含从要到达的摸底网络到输出端口和某些MAC地址信息的映射