计算机网络(6)-网络层(part1)
网络层服务
从源主机向接收主机发送数据段,发送主机需要将数据段封装到数据报(datagram),接收主机需要向传输层交付数据段。网络层协议不是端到端,在每一个主机、路由器设备都需要网络层协议,完成网络层功能。中间的路由器需要提取网络层数据报,决策如何转发。
网络层的核心功能——转发和路由。
转发(forwarding):将分组从路由器的输出端口转移到合适的输出端口。每个路由器需要维护转发表,决定如何转发。
路由(routing):确定分组从源到目的地经过的路径。由路由算法确定。
连接建立:某些网络需要。数据分组传输之前在两端主机建立虚拟/逻辑连接,路径上的每一个设备都参与连接的建立(与传输层协议不同)。
传输层连接与网络层连接的不同:网络层连接为两个主机之间(路径上的每个路由器等设备都需要参与),传输层连接为两个应用进程之间的连接,对中间网络设备透明。
网络层服务模型:best effort(Internet),CBR,VBR,ABR,UBR,对带宽、丢失、顺序、时序、拥塞控制等提供的保障不同
无连接服务:不事先为系列分组确定传输路径,每个分组独立确定传输路径,同一个源发出的分组可能有不同的传输路径,如数据报网络(datagram)
连接服务:事先为系列分组确定源到目的的路径,后续分组都按该路径传输,系列分组的传输路径相同,传输顺序可以得到保障,传输结束后拆除连接,如虚电路网络(virtual-circuit)
虚电路网络
虚电路:一条从源主机到目的主机类似于电路的路径(逻辑连接),使用分组交换,每个分组利用链路的全部带宽
通信过程:呼叫建立-数据传输-拆除呼叫
每个分组携带虚电路标识(VCID),而不是目的主机地址
虚电路经过的每个网络层设备都需要维护虚电路的连接状态
可以保障某些性能,如带宽分配
每条虚电路包括:
- 从源主机到目的主机的一条路径
- 虚电路号(VCID),链路带宽越大,允许的虚电路遇到,虚电路号可以越大,因此难以保障全局统一,所以使用局部管理。同一条虚电路,在每段链路上的VCID通常不同
- 沿路的每个网络层设备,需要利用转发表记录经过的每条虚电路,同时进行VCID的替换
虚电路信令协议(signaling protocol)
- 用于VC的建立、维护、拆除、路径选择
- 应用于虚电路网络
- Internet不采用
数据报网络
网络层无连接,每个分组需要携带目的地址,路由器根据目的地址转发分组(转发表),每个分组独立选择路径
转发表并不是针对某一个具体的目的地址,而是针对一系列的地址范围,将地址聚合
地址与路由表中多个范围匹配时,选择前缀更长(地址更具体)的
数据报网络一般用于弹性服务,对时间没有严格的要求,可能经过不同的链路,难以统一服务,端系统为计算机,可以自适应、性能控制、差错恢复,简化网络,复杂边缘
VC网络从电话网络演化而来,核心业务是实时对话,有严格的时间、可靠性要求,端系统非智能,简化边缘,复杂网络
IPv4协议
Internet网络层
路由协议:RIP、OSPF、BGP
路由表
IP协议:寻址规约、数据报格式、分组处理规约
ICMP协议:差错报告、路由器信令
IP数据报
IP数据报:首部+数据(TCP、UDP段)

版本号:IP协议的版本号,4bit
首部长度:4bit,以4字节为单位
服务类型(TOS):8bit,指示期望获得的服务,后来改名为区分服务,只有在网络提供区分服务时才有用,一般情况下不使用
总长度:16bit,以字节为单位,包括头部和数据
标识、标志位、片偏移:与分片有关
生存时间(TTL):8bit,标识IP分组在网络中可以通过的路由器数,路由器每转发一次分组,TTL减一,如果TTL等于0,路由器会丢弃分组
协议:8bit,指示IP分组封装的是哪个协议的数据包,实现复用/分解
首部校验和:16bit,差错检测,计算时该字段全置0
源IP地址:32bit
目的IP地址:32bit
选项字段,填充(符合32位对齐)
IP数据报分片
最大传输单元(MTU):链路层数据帧可封装数据的上限,不同链路的MTU不同
大IP分组向较小的MTU链路转发时,可以分片(如果允许),目的主机进行重组(只分不装)
标识字段:16bit,IP协议利用一个计数器,每产生IP分组计数器加1
标志位:3bit,未定义比特,DF(don’t fragment),MF(more fragment)
片偏移:13bit,相对偏移量,8字节为单位
假设原IP分组总长度为L,MTU为M,DF=0,L>M
分片时每个分片的标识取原IP分组的标识,除最后一个分片,一般其他分片均取MTU允许的最大分片
IP编址
源地址
目的地址
接口:主机/路由器与物理链路的连接,实现网络层功能,路由器通常有多个网络接口,主机通常有一个或两个接口(以太网、WiFi),IPv4协议使用32bit对接口编号
IP地址的高位比特称为网络号(NetID),低位比特称为主机号(HostID),具有相同网络号的一组接口称为IP子网,描述一个区域的网络,一般不跨越路由器设备,可以彼此物理联通
有类IP地址
- A类地址:最高位为0,前8位为网络号,0.0.0.0-127.255.255.255
- B类地址:最高位为1,次高位为0,前16位为网络号,128.0.0.0-191.255.255.255
- C类地址:第三位为0,前24位为网络号,192.0.0.0-223.255.255.255
- D类地址,第四位为0,不区分网络号和主机号
- E类地址,剩余,不区分

特殊地址:
0.0.0.0:在本网范围内表示本机,只能用于源地址
网络号全0,主机号特定值:表示本网范围内某个特定主机,只能用于目的地址
255.255.255.255:本网广播地址(路由器不转发),作为目的地址
网络号为特定值,主机号全0:网络地址,表示一个网络
网络号为特定值,主机号全1:直接广播地址,对特定网络的所有主机广播,只能作为目的地址
网络号为127,主机号不是全0也不是全1:用于本地软件的环回测试
私有地址:
- A类网络,网络号为10
- B类网络,172.16-172.31
- C类网络,192.168.0-192.168.255
在所有私有网络内都可以使用
IP子网划分
有类IP地址的划分存在不灵活的情况,需要对大的网络进行进一步的划分
将之前的IP地址中的主机号划分为子网号和主机号,不同子网通过路由器连接

子网掩码
IP地址与子网掩码按位与,得到子网地址
Original author: 马旭
Original link: https://bhmaxu.github.io/2020/02/09/计算机网络(6)-网络层(part1)/
Copyright Notice: Please indicate the source of the reprint (must retain the author's signature and link)