(1) 网络层为不同主机(Host)之间提供了一种逻辑通信机制 (2)每个主机和路由器都运行网络层协议
发送方:将来自传输层的消息封装到数据报(datagram)中接收方:向传输层交付数据段(segment)路由选择(routing):确定数据从源主机到目的主机经过的路径数据转发(forwarding):将数据从输入端口转发到合适的输出端口
Question:路由器是如何确定数据的输出端口的?
Answer:在路由器内部通常会维护一张转发表,将数据的地址信息与转发表中的信息进行匹配,进而找到对应的输出端口
有连接服务(connection service)
无连接服务(connection-less service)
注意1:在计算机网络概述中提到,由路由器等设备组成的网络核心中依靠数据交换实现数据从源主机发送到目的主机,数据交换一共有电路交换、报文交换和分组交换三种方式。本文介绍的虚电路网络和数据报网络是两类经典的分组交换网络注意2:网络层的连接建立是两个主机之间的所有网络设备(如路由器)共同参与;传输层的连接建立对中间的网络设备透明定义:虚电路网络是一种面向连接的网络模式,在数据传输之前,需要在源节点和目标节点之间建立一条逻辑连接(称为虚电路VC)
特点:
一条虚电路(VC)包括:
在虚电路中的分组携带虚电路标识(VCID),而不是目的主机地址。在同一条VC上,每段链路上的VCID通常不同,路由器转发分组时依靠VC转发表改写/替换VCID

虚电路信令协议(Virtual Circuit Signaling Protocol)是用于建立、维护和拆除虚电路的协议
(1)呼叫建立(Call Setup):
(2)连接确认(Connection Confirmation):
(3)数据传输(Data Transfer):
(4)连接释放(Connection Release):
定义:数据报网络是一种无连接的网络模式,每个数据包(称为数据报)都独立传输,路径选择和转发决策在每个节点上独立进行
特点:


IPv4地址是由32位的二进制数字表示,一共有2^32(大概43亿+)个IP地址。在转发表中,无法做到一个IP地址对应一个输出链路,往往是一段IP地址对应一个输出链路

Question:如果IP地址的划分不是连续性的会怎么样呢?


与0号链路接口匹配,则转发到0号输出链路

与1号链路和2号链路同时匹配,此时采用最长前缀匹配优先(在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口)策略,则优先转发到1号输出链路
举例说明:此时需要把某封信件发送到四川民族学院智能科学与技术学院某班某同学手中,上图的2号输出链路相当于能把该信件送到四川民族学院门口,上图的1号链路相当于能把该信件送到智能科学与技术学院楼下。虽然两个输出链路都不能精准送到某个同学手中,但是1号链路比2号链路精确,所以优先输出到1号链路

(1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最大吞吐量,最高可靠性,最小成本 (4)总长度:报头+数据部分。IP数据报最大长度为2^16字节,也就是64KB (5)生存时间:单位是次数,防止数据在网络上无限转发,8个比特位表示IP数据报最多能在网络(路由器)上转发128次

由上图可知,从我这里到美国政府官网IP数据报也仅仅转发了18次,所以8位生存时间完全够用 (6)协议:表示在传输层使用什么协议,UDP还是TCP还是其他? (7)校验和:只针对IP报头进行校验,因为IP载荷部分有UDP/TCP进行校验 (8)源地址:发送方的IP地址 (9)目的地址:接收方的IP地址 (10)可选字段:主要是拓展功能,最大长度是40字节 (11)填充:保证IP报头的长度是4的整数倍
Question:16位标识,3位标志,13位片偏移分别有什么用?下面再说
IP数据报最终会传递给数据链路层再封装,但是由于物理条件的影响,数据链路层的载荷最大能携带MTU字节(MTU表示最大传输单元,具体数值是多少和物理条件有关)

虽然IP数据报载荷最大能携带64KB的数据,但由于下层的限制,可以在网络层进行拆分,数据到达接收方的时候再组装。而拆分和组装的过程就需要用到标识,标志,片偏移这三个字段 (1)16位标识:唯一标识一个IP数据报。同一个数据报的标识是一样的,便于区分哪些分区属于同一个数据报 (2)3位标志:
1.第一位(保留位):必须为0(暂时用不到这个保留位,所以先设为0,方便以后使用)2.第二位(DF):如果为1,表示该数据报禁止分片。当IP载荷超过MTU时就会丢弃该数据报,并且返回ICMP错误信息给源主机(发送方)3.第三位(MF):如果为1,表示该数据报不是最后一个分片;如果为0,表示是最后一个分片或者根本没有进行分片操作(3)13位片偏移: 指示当前分片在原数据报中的位置(以8字节为单位)
L,待转发链路的MTU为MM且是8的整数倍,用公式表示:




IPv4地址由4个8位二进制数组成,每个数的范围为0-255,通常以点分十进制的形式表示。用于标识接入网络中主机/路由器的接口 接口/interface:主机/路由器与物理链路的连接
IP地址 = 网络号 + 主机号


特殊IP地址NetID | HostID | 作为IP分组源地址 | 作为IP分组目的地址 | 用途 |
|---|---|---|---|---|
全0 | 全0 | 可以 | 不可以 | 在本网范围内表示本主机 |
全0 | 特定值 | 不可以 | 可以 | 表示本网内的某个特定主机 |
全1 | 全1 | 不可以 | 可以 | 本网广播地址 |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,表示一个网络 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上的所有主机进行广播 |
127 | 非全0或非全1的任何数 | 可以 | 可以 | 用于本地软件环回测试,称为环回地址 |
IP子网:

子网划分:IP地址 = 网络号 + 子网号 + 主机号

Question:如何确定是否划分了子网?子网号有多少位? Answer:子网掩码 子网掩码(Subnet Mask):用于划分IP地址中哪些是网络号,哪些是主机号的32位二进制数字
例如:A类地址的子网掩码是255.0.0.0;B类地址的子网掩码是255.255…0.0;C类地址的子网掩码是255.255.255.0

子网掩码的应用
例如: 目的IP地址:172.32.1.112,子网掩码:255.255.254.0

上面已经介绍到IP地址是由32位二进制比特位组成,通常以点分十进制的形式表示,即4个0 ~ 255的十进制数。但是对于人来说,要想准确记忆一串数字是很难的,尤其是要记忆多个IP地址的时候,所以人们将IP地址转换为域名(如:www.example.com)来方便人们记忆
域名系统(Domain Name System,DNS)是互联网的一项核心服务,它是一个将IP地址和域名相互映射的分布式层次式数据库,能够使人们更方便的访问互联网
Question:为什么不使用集中式的DNS? Answer:

1.根DNS服务器(Root DNS Servers):
2.顶级域DNS服务器(Top-Level Domain DNS Servers, TLD DNS Servers):
3.权威DNS服务器(Authoritative DNS Servers):
4.本地DNS服务器(Local DNS Servers):
场景假设:Cis.poly.edu的主机想获取gaia.cs.umass.edu的IP地址
迭代查询:被查询服务器返回域名解析服务器的IP地址

.edu的顶级域DNS服务器的IP地址.edu的顶级域DNS服务器发送请求
递归查询:将域名解析的任务交给所联系的服务器

.edu的顶级域DNS服务器发送请求DNS缓存是指本地存储DNS查询的结果,以便在后续请求中快速响应,而无需再次查询DNS服务器。缓存可以发生在多个层级,包括:
CIDR基本概念和表示法无类域间路由(CIDR,Classless InterDomain Routing)是一种用于IP地址分配和路由的机制,它取代了早期的基于类的IP地址分配,通过可变长子网掩码来分配IP地址
CIDR的优势
(路由聚合,route aggregation)
路由聚集:指将多个路由合并为一个路由的过程,以减少路由表中条目的数量,从而提高路由的性能和效率

路由聚集的具体算法:将几个子网前缀转换为二进制并比较,相同的部分不变,从不同的部分开始全部变成0,最后将二进制转换成十进制。例如:
00-0000000010-0000000011-0000000000-00000000(上面三个子网相同的部分是高22位比特,所以聚合后子网的网络前缀就是22,那么子网④的点分十进制形式:223.1.0.0/22)
Question:一台主机如何获取IP地址? Answer:
需要手动配置的信息如下


概念:动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是一种用于自动为网络中的设备分配IP地址和网络配置参数的协议
工作原理:DHCP采用客户端-服务器模型,使用UDP协议,客户端默认端口号68,服务器默认端口号67,工作过程分为四个步骤

概念:NAT(Network Address Translation,网络地址转换)是一种在计算机网络中广泛使用的技术,主要用于缓解IPv4地址短缺的问题,同时提供一定的网络安全性。NAT技术允许一个子网/私网中的多台设备共享一个或多个公共IP地址,从而实现内部网络(私有网络)与外部网络(互联网)之间的通信。具体来说,NAT将内部网络中的私有IP地址转换为公共IP地址。公共IP地址必须是唯一存在的,但是不同私网中可以存在相同的私有IP地址

NAT地址转换
NAT转换表中
互联网控制消息协议(Internet Control Message Protocol,ICMP)主要在IP网络中传递控制协议,帮助实现网路诊断、错误报告和状态查询等功能。
ICMP报文主要分为两类:
差错报告报文
网络探寻报文

几种不发送ICMP报文的特殊情况:

注意:校验和的计算包括整个ICMP报文

把需要进行差错报告的IP数据报的首部和前8个字节提取出来,作为ICMP报文的数据部分

在Windows系统的电脑上按住win + r,再输入CMD打开Windows的命令解释器,输入tracert + 目的IP地址使用Traceroute应用对目的IP地址进行跟踪

(1)源主机向目的主机发送一系列UDP数据报
(2)当TTL = n的数据报达到第n和路由器时:
(3)当ICMP报文达到源主机时,记录RTT
注意:如果UDP数据报最终到达目的主机,则返回(type = 3,code = 3,目的端口不可达)ICMP报文,并且源主机停止发送UDP数据报
IPv6是用于替代IPv4的下一代IP地址协议,核心目的是解决IPv4地址枯竭问题

(1)版本号:固定为6 (2)优先级:类似于IPv4的TOS字段,用于QoS(Quality of service,服务质量)优先级控制 (3)流标签:标记同一数据流,路由器无需分用即可识别并保障QoS (4)载荷长度:仅计算载荷长度(扩展首部 + 数据),不包含基本首部,最大值65535字节 (5)下一个首部:如果存在扩展首部,该字段指向扩展首部,扩展首部中的该字段同理;如果不存在扩展首部,则指向传输层(上层)协议首部 (6)跳步限制:类似于IPv4中的TTL,每经过一跳减1,归零时丢弃 (7)源地址/目的地址:发送方的IP地址和接收方的IP地址,最大能存在2 ^ 128个独立IP地址
注意:IPv6协议移除校验和,以减少每一跳的处理时间
IPv6的基本地址类型有以下三种:



IPv6地址的表示形式
隧道(tunneling):IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络
