⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
项目链接👉https://github.com/A-BigTree/college_assignment
⭐⭐⭐⭐⭐⭐
Overview of Network Layer
Forwarding and Routing: The Data and Control Planes
每台网络路由器中有一个关键元素是它的转发表(forwarding table)。路由器检查到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。
传统方法是由路由器器中的路由选择算法决定转发表中的值:
软件定义网络(Software-Defined Networking,SDN)方法是从路由器物理上分离的另一种方法,远程控制器计算和分发转发表以供每台路由器所使用:
Network Service Model
网络服务模型(network service model) 定义了分组在发送与接收端系统之间的端到端运输特性。可能提供发服务:
因特网的网络层提供了单一的服务,称为尽力尽为服务(best-effort service)。传送的分组既不能保证以它们发送顺序接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证最小的带宽。
某些分组交换机称为链路层交换机(link-layer switch),基于链路层帧中的字段值做出转发决定,这些交换机因此被称为链路层(第2层)设备;其他分组交换机称为路由器(router),基于网络层数据报中的首部字段值做出转发决定,路由器因此是网络层(第3层)设备。
How Router Works
一台路由器主要由四个组件构成如下图所示:
Input Port Processing and Destination-Based Forwarding
输入端口处理过程如下图:
在32比特IP地址的情况下,假设路由器有4条链路,分组以如下方式转发到链路接口:
路由器中使用分组目的地址的前缀(prefix) 与该表中的表项进行匹配,如下图所示:
前缀匹配 | 链路接口 |
---|---|
11001000 00010111 00010 | 0 |
11001000 00010111 00011000 | 1 |
11001000 00010111 00011 | 2 |
其他 | 3 |
当有多个匹配时,该路由器使用最长前缀匹配规则(longest prefix matching rule),即在该表中寻找最长的匹配项,并向与最长的前缀匹配先关联的链路接口转发分组。
实践中经常使用三态内容可寻址存储器(Tenary Content Address Memory,TCAM) 来查找。
Switching
交换可以用许多方式完成,如下图所示:
Output Port Processing
输出端口处理如下图:
Where Does Queuing Occur
在输入端口和输出端口都可以形成分组队列,随着这些队列的增长,路由器的缓存空间最终将会耗尽,并且当无内存可用于存储到达的分组时将会出现丢包(packet loss)。
线路前部(Head-Of-the-Line,HOL)阻塞:即在一个输入队列中排队的分组必须等待通过的交换结构发送(即使输出端口是空闲的),因为它被位于线路前部的另一个分组所阻塞。如下图所示:
当数据报从结构到达的速度快于链路传输速率时,需要缓冲。输出端口排队如下图所示:
Packet Scheduling
运行中的FIFO队列如下图所示:
假设分组1、3和4是高优先权,分组2和5是低优先权,在非抢占式优先权排队(non-preemptive priority queuing) 中,运行如下图所示:
假设分组1,2和4属于第一类,分组3和5属于第二类,运行如下图所示:
The Internet Protocol (IP): IPv4, Addressing, IPv6, and More
IPv4 Datagram Format
IPv4数据报格式如下图所示:
IP fragmentation
一个链路层帧能承载的最大数据量叫作最大传送单元(Maximum Transmission Unit,MTU)。
IPv4 Adressing
主机与物理链路之间的边界叫做接口(interface)。每个IP地址长度为32比特(4字节),因此总共有2322^{32}232个可能的IP地址。这些地址通常按所谓点分十进制记法(dotted-decimal notation)书写,及地址中的每个字节用它的十进制形式书写,各字节以句点隔开。
地址192.32.216.9
的二进制记法是:11000001 00100000 11011000 00001001
。
下图中,一台路由器(具有三个接口)用于互联7台主机。
图中左上侧的3个主机和它们连接的路由器接口,都有一个形如233.1.1.xxx
的IP地址。用IP的术语说,互联这3个主机接口与1个互联网接口的网络形成一个子网(subnet)。IP编址为这个子网分配一个地址233.1.1.0/24
,其中/24
记法,有时称为子网掩码(network mask),指示32比特中的最左侧24比特定义了子网地址。
下图是由3个路由器互联的6个子网:
因特网的地址分配策略被称为无类别域间路由选择(Classless Interdomain Routing,CIDR)。当使用子网寻址时,32比特的IP地址被划分为两部分,并且也具有点分十进制形式a.b.c.d/x
,其中x
指示了地址的第一部分中的比特数,并且该部分经常被称为该地址的前缀(prefix)(或网络前缀)。
255.255.255.255
:当主机发出以广播地址为目的地址的数据报时,该报文会交付给同一个网络中的所有主机。主机地址的配置更多的是使用动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)。
DHCP客户和服务器分布如下图:
DHCP协议是一个4个步骤过程,yiaddr
指示分配给该新到达用户的地址,如下图所示:
Network Address Translation (NAT)
网络地址转换(Network Address Translation,NAT):就外界而言,本地网络中的所有设备只共享一个IPv4地址。
NAT具体步骤如下图:
IPv6
建隧道(tunneling) 如下图:
⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
项目链接👉https://github.com/A-BigTree/college_assignment
⭐⭐⭐⭐⭐⭐