网络层和传输层
一、网络层知识点总结:
1.1网络层提供的两种服务
A、让网络负责可靠交付:虚电路服务 B、网络尽最大努力交付:数据报服务
对比的方面 |
虚电路服务 |
数据报服务 |
思路 |
可靠通信应当由网络来保证 |
可靠通信应当由用户主机来保证 |
连接的建立 |
必须有 |
不需要 |
终点地址 |
仅在连接建立阶段使用,每个分组使用短的虚电路号 |
每个分组都有终点的完整地址 |
分组的转发 |
属于同一条虚电路的分组均按照同一路由进行转发 |
每个分组独立选择路由进行转发 |
当结点出故障时 |
所有通过出故障的结点的虚电路均不能工作 |
出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 |
总是按发送顺序到达终点 |
到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 |
可以由网络负责,也可以由用户主机负责 |
由用户主机负责 |
1.2网际协议IP
A、IP网的概念
B、IPv4的地址结构及分类
1)结构:
2)分类:
3)互联网中的IP地址(路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址)
C、ARP协议(IP地址和硬件地址的关联与区别)
1)通信同时使用IP地址和硬件地址(也称Mac地址)
IP 地址放在 IP 数据报的首部,方便路由器在不同局域网中转发分组;而硬件地址则放在 MAC 帧的首部,方便二层交换机在同一局域网找到目的主机
2)ARP协议要点
- l不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
- l每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其 对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。.如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
- ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
- 本地广播 ARP 请求(路由器不转发ARP请求)。
- ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
- ARP 分组封装在物理网络的帧中传输。
D、IP数据报格式
版本:指 IP 协议的版本
总长度:指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元MTU。
标志:目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。
标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF=0 时才允许分片。
片偏移:较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位
生存时间:记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值
协议:指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
首部校验和:只检验数据报的首部,不检验数据部分
E、路由器分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
1.3划分子网和构造超网
A、划分子网:在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网 subnetting
1)基本思路:IP地址 ::= {<网络号>, <子网号>, <主机号>}
- l划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- l从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
- 最后就将 IP 数据报直接交付目的主机。
2)子网掩码:(从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分)
掩码规则:
- l子网掩码长度 = 32 位
- l子网掩码左边部分的一连串 1,对应于网络号和子网号
- l子网掩码右边部分的一连串 0,对应于主机号
掩码相关计算: (IP 地址) AND (子网掩码) =网络地址
实例:
3)子网划分方法
- l有固定长度子网和变长子网两种子网划分方法。
- l在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- l划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
在划分子网情况下路由器转发分组的算法
(1)从收到的分组的首部提取目的 IP 地址 D。
(2)先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)
(3)若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
(4)对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由 器; 否则,执行 (5)。
(5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。、
(6)报告转发分组出错。
B构造超网:
1)无分类域间路由选择(无分类编址方法)CIDR:
- lCIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- lCIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- lIP 地址从三级编址(使用子网掩码)又回到了两级编址。
2)CIDR编址记法:IP地址 ::= {<网络前缀>, <主机号>}
使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
3)CIDR地址块
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。1.这个地址块的起始地址是 128.14.32.0。 2.在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。3.128.14.32.0/20 地址块的最小地址:128.14.32.0 4.128.14.32.0/20 地址块的最大地址:128.14.47.255 5.全 0 和全 1 的主机号地址一般不使用。
4)构成超网:
- 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
- 这些 C 类地址合起来就构成了超网。
- CIDR 地址块中的地址数一定是 2 的整数次幂。
- 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
- CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。
1.4网际控制报文协议ICMP(允许主机或路由器报告差错情况和提供有关异常情况的报告)
A、报文格式:
B、报文种类:
- 差错报告报文{包含4类差错报文
- 终点不可达
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
}
2.询问报文{
- 回送请求和回答报文
- 时间戳请求和回答报文
}
C、不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
1.5路由选择协议
A、内部网关协议RIP
1)原理:RIP 是一种分布式的、基于距离向量的路由选择协议。要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义:
- 从一个路由器到直接连接的网络的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
- RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
- 这里的“距离”实际上指的是“最短距离”。
- RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
- RIP 允许一条路径最多只能包含 15 个路由器。
- “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
- RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
2)特点:
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
- 好消息传播得快,坏消息传播得慢。
3)距离向量算法
路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
否则
若收到项目中的距离小于路由表中的距离,则进行更新,
否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
(4) 返回。
B、内部网关协议OSPF
1)基本特点:
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
- 采用分布式的链路状态协议 (link state protocol)。
- 注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
- 三个表:邻居表,链路状态数据库(摘要),路由表
- 五种分组:hello分组,数据库描述分组,链路状态请求分组,链路状态更新分组,链路状态确认分组
- 建立邻接关系过程的七种状态:down state; init state; two-way state; exstart state; exchange state; loading state; full state
- OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
- OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
2)OSPF划分区域:为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。区域也不能太大,在一个区域内的路由器最好不超过 200 个。
OSPF 划分为两种不同的区域
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域 (backbone area)。
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
C、外部网关协议BGP:不同自治系统的路由器之间交换路由信息的协议
1)特点:
- BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
- 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
2)使用四种报文:
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
3)路由器的典型构成:
转发和路由选择的区别:
- “转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- “路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
- 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
1.6IPv6
A、基本首部
- IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
- 所引进的主要变化如下:
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- 扩展的地址层次结构。
- 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
- 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。
- 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
- 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。
跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃
B、IPv6地址
单播 (unicast):传统的点对点通信。
多播 (multicast):一点对多点的通信。
任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个
冒号十六进制记法
- 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4 ´ 1038 。
- 为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex)。
- 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
- 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。
点分十进制记法:
- 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
- 例如:0:0:0:0:0:0:128.10.2.1再使用零压缩即可得出: ::128.10.2.1
- CIDR 的斜线表示法仍然可用。例如:60 位的前缀 12AB00000000CD3 可记为12AB:0000:0000:CD30:0000:0000:0000:0000/60或 12AB::CD30:0:0:0:0/60 (零压缩)或 12AB:0:0:CD30::/60 (零压缩)
C、地址分类:
地址类型 |
二进制前缀 |
未指明地址 |
00…0(128位),可记为 ::/128。 |
环回地址 |
00…1(128位),可记为 ::1/128。 |
多播地址 |
11111111(8位),可记为 FF00::/8。 |
本地链路单播地址 |
1111111010(10位), 可记为 FE80::/10。 |
全球单播地址 |
(除上述四种外,所有其他的二进制前缀) |
D、IPv4向IPv6过渡
- 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。
- 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。
- 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
- 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址
- 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
- 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
1.7IP多播
A、基本概念
- 目的:更好地支持一对多通信。(大大节约网络资源)
- 一对多通信:一个源点发送到许多个终点。
- 例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。
- 在互联网上进行多播就叫做 IP 多播。
- 互联网范围的多播要靠路由器来实现。
- 能够运行多播协议的路由器称为多播路由器(multicast router)。当然它也可以转发普通的单播IP数据报。
- 从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。 现在多播主干网已经有了相当大的规模。
- 多播数据报:l“尽最大努力交付”,不保证一定能够交付多播组内的所有成员,对多播数据报不产生 ICMP 差错报文。
B、局域网上进行硬件多播:
- 互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
- 因此 TCP/IP 协议使用的以太网地址块的范围是从 00-00-5E-00-00-00到 00-00-5E-FF-FF-FF
- 不难看出,在每一个地址中,只有23位可用作多播。
- D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。
- 由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
C、IP多播需要两种协议:
1)网际组管理协议 IGMP :使路由器知道多播组成员的信息
使用范围:
- IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。
- IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
- IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加 或退出了某个多播组。
工作阶段:
2)多播路由选择协议:连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员
多播路由选择协议在转发多播数据报时使用三种方法:
(1) 洪泛与剪除:这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting) 的策略
(2) 隧道技术 (tunneling):适用于多播组的位置在地理上很分散的情况
(3) 基于核心的发现技术:这种方法对于多播组的大小在较大范围内变化时都适合。对每一个多播组 G 指定一个核心(core) 路由器,给出它的 IP 单播地址。核心路由器按照前面讲过的方法创建出对应于多播组 G 的转发树。
1.8v*n和NAT
A、v*np
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网v*n (Virtual Private Network)。
- “专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- “虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而v*n只是在效果上和真正的专用网一样
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 一个机构要构建自己的 v*n 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 v*n 系统都知道其他场所的地址。
B、NAT
- 网络地址转换 NAT (Network Address Translation) 方法于1994年提出。
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。
- 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接
1.9多协议标记交换MPLS
A、工作原理:
1)基本工作过程:
(1) MPLS 域中的各 LSR 使用专门的标记分配协议 LDP 交换报文,并找出标记交换路径 LSP。各 LSR 根据这些路径构造出分组转发表。
(2) 分组进入到 MPLS 域时, MPLS 入口结点把分组打上标记,并按照转发表将分组转发给下一个 LSR。给 IP 数据报打标记的过程叫做分类 (classification)。
(3) 一个标记仅仅在两个标记交换路由器 LSR 之间才有意义。分组每经过一个 LSR,LSR 就要做两件事:一是转发,二是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换 (label swapping)。
(4) 当分组离开 MPLS 域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。
2)基本原理:
在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度“标记”,然后对打上标记的 IP 数据报用硬件进行转发。
采用硬件技术对打上标记的 IP 数据报进行转发就称为标记交换。
“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。
MPLS 域 (MPLS domain) 是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标记交换路由器 LSR (Label Switching Router)。
LSR 同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR 需要使用路由选择功能构造转发表
B、首部位置和格式
(1) 标记值(占 20 位)。可以同时容纳高达 220 个流(即 1048576 个流)。实际上几乎没有哪个 MPLS 实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
(2) 试验(占 3 位)。目前保留用作试验。
(3) 栈S(占 1 位)。在有“标记栈”时使用。
(4) 生存时间TTL(占 8 位)。用来防止 MPLS 分组在 MPLS 域中兜圈子。
二、传输层知识点总结:
2.1用户数据报协议UDP
1)UDP概述:UDP 只在 IP 的数据报服务之上增加了很少一点的功能:复用和分用的功能&&差错检测的功能
2)主要特点:
- UDP 是无连接的,发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。
- UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
- UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
- UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
- UDP 支持一对一、一对多、多对一和多对多的交互通信。
- UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
3)首部格式:
当运输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口,上交给最后的终点——应用进程。
在计算检验和时,临时把 12 字节的“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验
2.2传输控制协议TCP
1)最主要特点:
TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施
每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信。
面向字节流:TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流(TCP 不关心应用进程一次把多长的报文发送到 TCP 缓存。TCP 对连续的字节流进行分段,形成 TCP 报文段)
注意
- TCP 连接是一条虚连接而不是一条真正的物理连接。
- TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。
- TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
- TCP 可把太长的数据块划分短一些再传送。
- TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
2)TCP连接:TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个端点。TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。端口号拼接到 (contatenated with) IP 地址即构成了套接字。套接字 socket = (IP地址 : 端口号)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定
TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}
2.3可靠传输原理
1)停止等待协议:“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。全双工通信的双方既是发送方也是接收方。为了讨论问题的方便,我们仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。
A无差错情况:
B出现差错:在接收方 B 会出现两种情况:1.B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。 2.M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。在这两种情况下,B 都不会发送任何信息。但A都必须重发分组,直到B正确接收为止,这样才能实现可靠通信。
C停止等待协议要点:(停止等待协议的优点是简单,缺点是信道利用率太低)
- 停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。
- 编号。对发送的每个分组和确认都进行编号。
- 自动重传请求。发送方为每个发送的分组设置一个超时计时器。若超时计时器超时,发送方会自动重传分组。
- 简单,但信道利用率太低。
2)连续ARQ协议、
A基本思想:
- 发送方一次可以发出多个分组。
- 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。
- 每收到一个确认,发送方就把发送窗口向前滑动。
- 接收方一般采用累积确认的方式。
- 采用回退N(Go-Back-N)方法进行重传
B、累积确认:
- 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
- 优点:容易实现,即使确认丢失也不必重传。
- 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
C、回退N(Go-Back-N)方法
- 如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
- 这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
- 可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
|
连续ARQ协议 |
停止等待协议 |
发送的分组数量 |
一次发送多个分组 |
一次发送一个分组 |
传输控制 |
滑动窗口协议 |
停等-等待 |
确认 |
单独确认 + 累积确认 |
单独确认 |
超时定时器 |
每个发送的分组 |
每个发送的分组 |
编号 |
每个发送的分组 |
每个发送的分组 |
重传 |
回退N,多个分组 |
一个分组 |
2.4TCP报文段首部格式
源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现
序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
保留字段——占 6 位,保留为今后使用,但目前应置为 0
紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认 ACK —— 只有当 ACK =1 时确认号字段才有效。当 ACK =0 时,确认号无效
推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位 RST (ReSeT) —— 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
终止 FIN (FINish) —— 用来释放一个连接。FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部
紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
2.5可靠传输的实现
A、滑动窗口
- 发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口。
- 发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。
- 接收窗口表示:只允许接收落入窗口内的数据。
- A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送
- 发送方的应用进程把字节流写入 TCP 的发送缓存
- 接收方的应用进程从 TCP 的接收缓存中读取字节流。
- 发送缓存用来暂时存放:
- 1.发送应用程序传送给发送方 TCP 准备发送的数据;
- 2.TCP 已发送出但尚未收到确认的数据。
- 接收缓存用来暂时存放:
- 1.按序到达的、但尚未被接收应用程序读取的数据;
- 2.不按序到达的数据。
2.6流量控制
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制
2.7拥塞控制
- l拥塞控制的前提:网络能够承受现有的网络负荷。
- l实践证明,拥塞控制是很难设计的,因为它是一个动态问题。
- l分组的丢失是网络发生拥塞的征兆而不是原因。
- l在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化、甚至发生死锁的原因。