- 网络层通过
路由选择算法
,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输
提供服务。 - IP协议的主要特点:
(1)IP协议是一种
无连接
、不可靠的分组传送服务
的协议;
(2)IP协议是点-点的网络层通信
协议;
(3)IP协议屏蔽了互联的网络在数据链路层、物理层协议与实现技术上的差异。
- IP协议是针对源主机—路由器、路由器—路由器、路由器—目的主机之间的数据传输的点—点的网络层通信协议。
- IP协议提供的是一种 “尽力而为(best-effort)”的服务。
- 早期的协议将
IP分组
称为IP数据报
。IPv4分组由两部分组成:分组头
和数据
。分组头(也称为“首部”)的长度是可变的
。人们习惯用4字节
为基本单元表示分组头字段
。IPv4分组头的基本长度为20字节。若加上最长的40字节的选项,则IP分组头最大长度为60字节。 -
版本字段的
长度为4位,表示所使用的网络层IP协议的版本号。版本字段值为4,表示IPv4;版本字段值为6,表示IPv6。 -
协议字段
的长度为8位,表示使用IP协议的高层协议类型。 -
分组头长度字段
的长度为4位,它定义了以4字节为一个单位的分组头的长度。 - 分组头中除了
IP选项字段
与填充字段
之外,其他各项都是定长的
。 - 因为报头的固定长度为20字节,所以分组头长度字段最小值为5(即)。
-
总长度
字段长度为16位,其定义以字节
为单位的分组头字段与数据字段长度之和,能表示的IP分组最大长度为65535()字节。IP分组的数据长度等于分组的总长度减去分组头长度
。 -
服务类型
(service type)字段的长度为8位,用于指示路由器如何处理该分组
。 -
生存时间TTL
用来设定分组在Internet中的“寿命”,它通常是用转发分组最多的路由器跳数(hop)来度量。生存时间TTL的初始值由源主机设置,经过一个路由器转发之后,TTL值减1。当TTL的值为0时,丢弃分组并发送ICMP报文通知源主机。 -
头校验和
字段的长度为8位。设置头校验和是为了保证分组头部的数据完整性
。IP分组只对分组头进行校验,不包括分组数据
。其主要原因有2点:
(1)IP分组头之外的部分属于高层数据,高层数据都会有相应的校验字段,IP分组不对高层数据进行校验。
(2)每经过一个路由器,IP分组头都要改变一次,数据部分并不改变。设置头校验和只对变化部分进行校验是合理的,可以减少路由器对每个接收分组的处理时间,提高路由器的运行效率。
- 分组头中最简单的部分是
地址字段
。地址字段包括源地址
与目的地址
。源地址与目的地址字段长度都是32位,分别表示发送分组的源主机
与接收分组的目的主机的IP地址
。在分组的整个传输过程中,无论采用什么样的传输路径或如何分片,源地址与目的地址始终保持不变
。
- IP报头中有3个字段与分片有关:
标识
、标志
与片偏移
。标识字段长度为16位,最多可以分配65535个ID值。“标识”用来表示属于同一个IP数据字段的分片。标志字段共3位,最高位为0,该值必须复制到所有分组中。不分片位的值必须被复制。 -
片偏移
字段值表示分片在整个分组中的相对位置。它的长度为13位。片偏移值是以8字节为单位来计数,因此选择的分片长度应为8字节的整数倍。
- 设置
IP分组头选项
主要用于控制
与测试
。所有实现IP协议的硬件或软件都应该能够处理分组头选项。选项的最大长度为40字节,如果用户使用的选项长度不是4字节的整数倍,需要添加填充位,补成4字节的整数倍。分组头选项
由选项码
、长度
与选项数据
等3部分组成。 -
源路由
是指由发送分组的源主机制定的传输路径,用来区别由路由器通过路由选择算法
确定的路径。源路由分为严格源路由(SRR)
与松散源路由(LRR)
。 -
记录路由
是将分组经过的每个路由器IP地址记录下来。记录路由选项常用于网络测试
。 - IP地址的
点分十进制
表示方法,通常用x.x.x.x的格式来表示,每个x为8位二进制(10进制表示每个x的值为)。
- 特殊的IP地址:
①
直接广播地址
:A类、B类与C类IP地址中主机号是全1
的IP地址,如191.1.255.255。
②受限广播地址
:网络号与主机号为全1
的IP地址(255.255.255.255)。
③“这个网络上的特定主机”地址
:网络号是全0
(如0.0.0.25)。
④回送地址
:127.0.0.0是回送地址。
- 每类的IP的主机号为全0和全1的两个地址保留。
- 研究子网划分的基本思想是:借用主机号的一部分作为子网的子网号,划分出更多的子网IP地址,而对于外部路由器的寻址没有影响。
子网掩码
又称为子网屏蔽码
。 -
子网掩码
:是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址
和主机地址
两部分。
- 无类别域间路由CIDR,其以任意的二进制倍数的大小来分配地址。采用
“斜线记法”
,即<网络前缀>/<主机号>
。例如:用CIDR方法给出一个地址块中的一个IP地址是200.16.23.1/20,那么它表示在这个IP地址的前20位是网络前缀,后12位是主机号。
- 网络地址转换:
NAT
。 -
默认路由器
称第一跳路由器
,也称源路由器
,早期的文献中通常将其称为默认网关
。 -
分组交付
:指在Internet中主机、路由器转发IP分组
的过程。路由器需要根据分组的目的地址与源地址是否属于同一个网络,判断是直接交付
还是间接交付
。
- 路由选择算法的主要参数:
(1)跳数(hop count):一个分组从源主机到达目的主机的路径上,转发分组的
路由器数量
。
(2)带宽(bandwidth):链路的传输速率。
(3)延时(delay):一个分组从源主机到达目的主机花费的时间。
(4)负载(load):通过路由器或线路的单位时间通信量。
(5)可靠性(reliability):传输过程中的分组丢失率。
(6)开销(overhead):传输过程中的耗费,通常与所使用的链路长度、数据速率、链路容量、安全、传播延时与费用等因素相关。
- 路由选择算法的分类:
静态路由表
和动态路由表
。在Internet中,路由器是采用表驱动的路由选择算法
。路由表
是根据路由选择算法
产生的。
- 每一跳转发过程中分组头的
源与目的地址
保持不变,而MAC地址
是需要改变的。 -
IP路由汇聚
;最长前缀匹配原则
;路由汇聚是减少路由表项数量
的重要手段。路由表项由“网络前缀”
和“下一跳地址”
组成。路由选择是选择具有最长网络前缀的路由
的过程,这就是“最长前缀匹配”
的路由选择原则。
- 设计
路由选择算法
的目标是生成路由表
,为路由器转发IP分组找出适当的下一跳路由器
。 - 设计
路由选择协议
的目标是实现路由表中路由信息的动态更新
。 -
自治系统
的核心是路由选择的“自治”
。对应于自治系统的结构,路由选择协议也分为两大类:内部网关协议(IGP)
、外部网关协议(EGP)
。 - 内部网关协议主要有
路由信息协议(RIP)
和开放最短路径优先(OSPF)协议
。 - 外部网关协议主要是
边界网关协议(BGP)
。
-
路由信息协议
(RIP
)是基于距离向量(V-D)路由选择算法的内部路由协议
。 -
距离向量路由选择算法
(也称为Bellman-Ford算法)要求路由器周期性地通知相邻路由器
:自己可以到达的网络,以及到达该网络的距离(跳数)。路由刷新报文
主要内容是由若干(V,D)组成的表。(V,D)表中V代表向量
( vector),标识该路由器可以到达的目的网络或目的主机;D代表距离( distance),指出该路由器到达目的网络或目的主机的距离。距离D对应该路由上的跳数(hop count)。协议规定:与路由器直接连接的网络或主机不需要经过中间路由器的转接,距离为0;分组每经过一个路由器转发则距离值加1
。相邻路由器在接收到某个路由器的(V,D)报文后,按照最短路径原则
对各自的路由表进行刷新。
- 最短路径优先OSPF协议使用的是
链路状态协议
(LSP
),RIP使用的是距离向量路由选择协议
。RIP只能根据相邻路由器的信息更新路由表
,路由器虽然可以知道到达目的网络的跳数以及下一跳是哪个路由器,但是并不知道整个区域内部的网络拓扑结构。 - 路由器的主要功能:①
建立并维护路由表
;②提供网络间的分组转发功能
。 - 路由器通过
定期与其他路由器交换路由信息
来自动更新路由表。 -
Internet控制报文协议
(ICMP
):ICMP本身是网络层的一个协议,但是它的报文要封装成IP分组,然后再传送给数据链路层
。从协议体系上看,ICMP只是要解决IP协议可能出现的不可靠问题,不能独立于IP协议,是IP协议的一个组成部分。ICMP设计的初衷是用于IP协议在执行过程中由路由器来向源主机报告传输出错的原因。
- 在IP分组头中,协议字段值为1表示
IP分组的数据部分
是ICMP报文
。 - ICMP报文类型:
差错报告报文
和询问报文
。 -
Ping
是测试目的主机是否能够到达的一种通用方法。用户通过调用Ping命令便是通过回应请求
(ICMP echo request)和应答报文
(ICMP echo reply)。报文中包括三个参数:报文长度(bytes)
、主机响应时间(time)
与生存时间(TTL)
。 -
Tracert命令
可以获得从测试命令发出的源主机到达目的主机完整的路径。 - IP多播的基本思想是:多个接收者可以接收到从同一个或一组源主机一次发送的相同内容的分组。
- IGMP的操作:① 加入一个组;② 继续组成员关系;③ 监视组成员的关系;④ 离开一个组。
-
MPLS VPN
的应用。 - 对于TCP/IP来说,主机和路由器在
网络层用IP地址
来标识,在数据链路层用物理地址
(如在Ethernet的MAC地址)来标识。 -
正向地址解析
:从已知的IP地址找出对应的MAC地址的映射过程;相应的协议称为地址解析协议
(Address Resolution Protocol,ARP
)。 -
反向地址解析
:从已知的MAC地址找出对应的IP地址的映射过程;相应的协议称为反向地址解析协议
(Reverse ARP,RARP
)。
-
移动主机
是指从一个链路移动到另一个链路或一个网络移动到另一个网络的主机或路由器。 - 涉及移动IP的4个功能实体:
移动主机
,家乡代理
,外地代理
与通信对端
。 - 移动IP的基本术语:
家乡地址
;转发地址
;家乡网络
;家乡链路
;外地链路
;移动绑定
;隧道
。
-
移动IPv4
的工作过程大致可分为4个阶段:代理发现
、注册
、分组路由
与注销
。 -
代理发现
是通过扩展ICMP路由发现机制
来实现。 -
移动IP的分组路由
可以分为单播
、广播
与多播
三种情况。
-
冒号十六进制表示法
:IPv6的128位地址按每16位划分为一个位段,每个位段被转换为一个4位的十六进制数,并用冒号隔开。
IPv6地址的例子:21DA:0000:0000:0000:02AA:000F:FE08:9C5A
根据零压缩法
可以进一步简化表示为:21DA:0:0:0:2AA:F:FE08:9C5A
若几个连续位段的值都为0,则这些0可以简写为::
,也称为双冒号表示法
。前面的结果可以简化为21DA::2AA:F:FE08:9C5A
- 注意:① 在使用零压缩法时,不能将一个位段内的有效0压缩掉。② 双冒号在一个地址中只能出现一次。
1.IP协议提供的是一种“尽力而为”的服务。
2.IP分组由分组头和数据两个部分组成。IPv4分组头基本长度为20B,选项最长为40B。
3.IP地址技术研究分为4个阶段:标准分类的IP地址、划分子网的三级地址结构、构成超网的无类别域间路由(CIDR)技术、网络地址转换(NAT)技术。
4.路由选择算法为生成路由表提供算法依据,路由选择协议用于路由表路由信息的动态更新。
5.自治系统的核心是路由选择的“自治”。Internet路由选择协议分为: 内部网关协议与外部网关协议。目前,内部网关协议主要有RIP与OSPF协议;外部网关协议主要是BGP。
6. 路由器是具有多个输入端口和多个输出端口、转发分组的专用计算机系统,其结构可以分为路由选择和分组转发部分。
7.针对IPv4 协议缺乏传输可靠性保证机制,IP协议增加ICMP协议;针对IPv4 协议不能支持多播服务,IP协议增加了IGMP协议。
8.移动IP要求移动主机在改变接入点时不改变IP地址,以便在移动过程中保持已有通信的连续性 。
9.IPv6的主要特征是:新的协议格式、巨大的地址空间、有效的分级寻址和路由结构、有状态和无状态的地址自动配置、内置的安全机制、更好地支持QoS服务。
-
传输层
的主要功能是在进程之间建立端-端通信
连接,实现分布式进程通信
。 - 传输层中实现传输层协议的软件称为
“传输实体”
。 - 传输层之间传输的报文称为
“传输协议数据单元(TPDU)”
。
-
进程号
也称为端口号
。在网络环境中,标识一个进程必须同时使用IP地址与端口号。RFC793定义的套接字
(Socket
)是由IP地址与对应的端口号(IP地址:端口号
)组成。 - 端口号的数值范围:0~65535之间的整数。端口号的类型:
熟知端口号
、注册端口号
和临时端口号
。
- UDP是一种
无连接的
、不可靠的
传输层协议。UDP协议在传输报文之前不需要在通信双方之间建立连接
,因此减少了协议开销与传输延迟。UDP对报文除了提供一种可选的校验和之外,几乎没有提供其他的保证数据传输可靠性
的措施。如果UDP检测出在收到的分组出错,它就丢弃这个分组,既不确认,也不通知发送端和要求重传。UDP协议提供的是“尽力而为”的传输服务。
- UDP协议适用的范围:① 视频播放应用;② 简短的交互式应用;③ 多播与广播应用;④ UDP协议是一种适用于
实时语音
与视频传输
的传输层协议。 - TCP协议的主要特点:① 支持面向连接的传输服务;② 支持字节流的传输;③ 支持全双工通信;④ 支持同时建立多个并发的TCP连接;⑤ 支持可靠的传输服务。
- 流(stream)相当于一个管道,从一端放入什么内容,从另一端可以照原样取出什么内容。它描述了一个不出现丢失、重复和乱序的数据传输过程。
① TCP是面向字节流的,它要为发送字节流中的每个字节都
按顺序编号
。
② 在TCP连接建立时,每方需要使用随机数产生器产生一个初始序号
( initialsequence number, ISN)。
③由于是连接双方各自随机产生初始序号,因此一个TCP连接的通信双方的序号是不同的。
-
确认号
字段长度为32位(4B)。确认号表示一个进程已经正确接收序号为N的字节
,要求发送端下一个应该发送序号为N+1字节的报文段
。例如,主机A发送给主机B的报文字节序号为10010-11009,主机B正确接收这个字节段,那么主机B在下一个发送到主机A的报头的确认号写为11010(11009+1),主机A在接收到该报文,读到确认号为11009时就理解为:主机B已经正确接收到最后一个字节的序号为11009及以前的所有字节
,希望下面传送字节序号为11010开始的报文段。这是在网络协议中典型的捎带确认
方法。 - 报头长度字段的长度为4位。TCP报头长度是以4B为一个单元来计算的,实际报头长度是在
20~60B
,因此这个字段的值是在5(5×4B=20B)~15(15×4B=60B)
之间。 - 保留字段长度为6位。
-
窗口长度
是TCP为保证字节流传输的可靠性。
三次握手(重点:☆☆☆)
(1)最初的客户端TCP进程是处于
CLOSE(关闭)状态
。当客户端准备发起一次TCP连接,进入SYN-SEND(准备发送)状态
时,它首先向处于LISTEN(收听)状态
的服务器端TCP进程发送第一个控制位SYN=1的“连接建立请求报文”
。“连接建立请求报文”不携带数据字段
,但是需要给报文一个序号,图中标为“SYN=1,seq=x”。注意:“连接建立请求报文”的序号seq值x是随机产生的
,但是不能为0
。随机数x不能为0的理由是:避免因TCP连接非正常断开而可能引起的混乱
。如果在连接突然中断时,可能有一个或两个进程同时等待对方的确认应答,而这个时候有一个新连接的序号也是从0开始,那么接收进程就有可能认为是对方重传的报文
,这样就有可能造成连接过程的错误。为了避免可能引起的问题,协议规定SYN报文序号seq值x必须随机产生
,并且不能为0
。
(2)服务器端在接收到“连接建立请求报文”之后,如果同意建立连接,则向客户端发送
第二个控制位SYN=1、ACK=1的“连接建立请求确认报文”
。确认号ack=x+1
,表示是对第一个“连接建立请求报文”(序号seq=x)的确认。同样,“连接建立请求确认报文”不带数据字段
,但是需要给报文一个序号(seq=y)
,图中标为“SYN=1,ACK=1,seq=y ack=x+1”,这时服务器进入SYN-RCVD(准备接收)状态
。
(3)在接收到“连接建立请求确认报文”之后,客户端发送第三个控制位ACK=1“连接 建立请求确认报文”
,由于该报文是对“连接建立请求确认报文”(序号seq=y)的确认,因此确认序号ack=y+1
。同样,“连接建立请求确认报文”不携带数据字段
,但是需要给报文一个序号,按照TCP协议规定,这个“连接建立请求确认报文”的序号仍然为x+1
。图中标为“ACK=1,seq=x+1,ack=y+1”,这时客户端进入ESTABLISHED(已建立连接)状态
。服务器端在接收到ACK之后也进入ESTABLISHED(已建立连接)状态
。
四次挥手(重点:☆☆☆)
(1)当客户准备结束一次数据传输,主动提出释放TCP连接时,进入
FIN-WA-1 (释放等待-1)状态
,它向服务器端发送第一个控制位FIN=1的“连接释放请求报文”
,提出连接释放请求,停止发送数据。“连接释放请求报文”不携带数据字段
,但是需要给报文1个序号,图中标为“FIN=1,seq=u”
,u等于客户端发送的最后一个字节的序号加1
。
(2)服务器在接收到“连接释放请求报文”之后,需要向客户发回“连接释放请求确认报文”
,表示对接收第一个连接释放请求报文的确认,因此ack=u+1
。这个“连接释放请求报文”的序号为v等于服务器发送的最后一个字节序号加1
。图中标为“ACK=1,seq=v,ack=u+1”
。TCP服务器进程向高层应用进程通知客户请求释放TCP连接,客户到服务器的TCP连接断开。但是,服务器到客户的TCP连接还没有断开,如果服务器还有数据报文需要发送时,它还可以继续发送直至完毕
。这种状态称为半关闭(helf-close)状态
。这个状态需要持续一段时间。客户在接收到服务器发送的ACK报文之后进入FIN-WAIT-2状态
;服务器进入CLOSE-WAIT状态
。
(3)服务器的高层应用程序已经没有数据需要发送
时,它会通知TCP可以释放连接
,这时服务器向客户发送“连接释放请求报文”
。这个“连接释放请求报文”的序号取决于在半关闭状态
时,服务器端是否发送过数据报文。因此序号假定为w。图中标为“FIN=1,ACK=1,seq=w,ack=u+1”
。服务器端经过LAST-ACK状态
之后转回到LISTEN(收听)状态
。
(4)客户在接收到FIN报文之后,向服务器发送“连接释放请求确认报文”报文
,表示对服务器“连接释放请求报文”的确认。图中ACK报文记为“ACK=1,seq=u+1,ack=w+1”
。
- TCP协议通过
滑动窗口机制
来跟踪和记录发送字节的状态
,实现差错控制
功能。
-
接收字节流序号不连续
的处理方法有两种:拉回
方式与选择重传
方式。 - TCP使用
重传计时器
来控制报文确认与等待重传的时间
。 - 在流量控制中,
接收窗口
又称为通知窗口
。 - 慢开始与拥塞避免算法
- 快重传与快恢复