网络层
§传输segments从发送主机到接收主机。
§在发送端,将segments封装为datagrams。
§在接收端,将segments传输到传输层。
§每台主机、路由器中的网络层协议。
§路由器检查通过它的所有IP数据报中的报头字段。
功能:
- 转发:
将数据包从路由器的输入移动到相应的路由器输出;
- 路由选择:
确定【分组】从源到目的地所采用的路由(路由选择算法)
数据报&虚电路网络
主机 to 主机
数据报网络: 无连接;
无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
在网络层无呼叫建立。
虚电路网络(VC): 有连接;
连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。
每条链路上的VC编号均可更改。新的VC编号来自转发表。
VC由以下部分组成: 1.从源到目标的路径。 2.VC编号,路径沿线的每条链路一个编号。 3.沿路径的路由器中转发表中的条目。
| 数据报服务 | 虚电路服务 | |
|---|---|---|
| 连接的建立 | 不要 | 必须有 |
| 目的地址 | 每个分组都有完整的目的地址 | 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号(VC标识符) |
| 路由选择 | 每个分组独立地进行路由选择和转发 | 属于同一条虚电路的分组按照同一路由转发 |
| 分组顺序 | 不保证分组的有序到达 | 保证分组的有序到达 |
| 可靠性 | 不保证可靠通信,可靠性由用户主机来保证 | 可靠性由网络保证 |
| 对网络故障的适应性 | 出故障的结点丢失分组,其他分组路径选择发生变化,可正常传输 | 所有经过故障结点的虚电路均不能正常工作 |
| 差错处理和流量控制 | 由用户主机进行流量控制,不保证数据报的可靠性 | 可由分组交换网负责,也可由用户主机负责 |
| 复杂性 | 网络内部简单,边缘复杂 | 网络中复杂 |
| 路由器 | 路由器没有关于端到端连接的状态 | 路由器保持连接状态信息 |
路由器之内
路由器的任务是【转发】;
路由器的输入输出端口构造:
使用报头字段值,在输入端口内存中的转发表查找输出端口(“Match Plus action”)。
Head-of-the-Line (HOL) blocking 队首阻塞:队列前面排队的数据报阻止队列中的其他人向前移动
输入/输出队列的溢出是分组丢失的重要原因;
路由器的交换结构:
路由器的路由表和转发表:
集线器,网桥,路由表几层设备比较
• IP协议数据报格式
| 名称 | 注释 | 大小 |
|---|---|---|
| 版本 Version | ipv4或者ipv6 | 4位 |
| 首部长度 IHL | 以【4字节】为单位;最小为5,即0101 | 4位 |
| 区分服务 DSCP + ECN | 希望获得哪种服务,不常用 | 8位 |
| 总长度 Total Length | 【首部+数据】的长度,最大为2^16-1=65535 | 16位 |
| 标识 Identification | 用来表示是哪一个数据报的分片,不同的分片标识各不相同 | 8位 |
| 标志 Flags | 用来表示是否分片和分片是否结束 | 3位,实际有用的只有后两位 |
| 片偏移 Fragment Offset | 用来标记分片之后,该分片在原来的数据报的位置,以【8字节】为单位 | 13位 |
| 生存时间 Time To Live | 即TTL,每经过一个路由器时,TTL减1,为0时自动丢弃 | 8位 |
| 协议 Protocol | 用使用的传输层协议 | 8位 |
| 首部检验和 Header Checksum | 检验首部的字段是否出错,出错就丢弃此数据报 | |
| 源地址 Source IP Address | 发送方ip地址 | 32位 |
| 目的地址 Destination IP Address | 接收方ip地址 | 32位 |
| 可选字段 Options | 用来排错等安全检测 | 未知,可在0-40位之间 |
| 填充 | 将数据报对齐成4字节的整数倍,数值全部为0 | 未知,根据可选字段来定 |
首部总长一般为20字节;
IP分片(fragmentation)&重组(reassembly):
计算偏移量时:以0开始,每一片最开始的除以8得到偏移量;
❉ IPv4
IP地址:全球唯一的表示某一个主机或者路由器接口的编码,32-bit;
主机位全1时为广播地址;
子网由ISP分配;
层次编址:
- 路由聚合,使用单个网络前缀通告多个网络;
• 无分类编制CIDR
Classless InterDomain Routing
一种IP地址分配和路由的方法。它使用可变长度子网掩码来取代传统的固定长度子网掩码。
格式:IP地址/网络前缀位数
• 动态主机配置协议 DHCP
Dynamic Host Configuration Protocol
用于自动分配IP地址和其他网络配置信息给连接到网络的设备;
特性:“即插即用”,客户/服务器模式,广播,UDP
允许主机在加入网络时从网络服务器动态获取其IP地址;
支持在用地址续租;允许地址重用(仅在连接/“on”时保留地址); 支持移动用户加入网络(很快);
DHCP概述:
- 主机广播 “DHCP discover” msg [可选](有服务器吗?)
- DHCP服务器响应 “DHCP offer” msg [可选](我是!IP给你!)
- 主机请求IP地址: “DHCP request“ msg(好!我用这个IP!)
- DHCP服务器发送地址: “DHCP ack” 消息(用吧!)
DHCP在子网上返回的不止分配的IP地址: •网络掩码(表示地址的网络与主机部分) •客户端的第一跳路由器地址 •DNS服务器的名称和IP地址
根据IP地址计算主机地址:
子网掩码: 主机号全0,其余全1;
子网掩码就是用来和ip地址一起计算子网的地址的;
方法就是讲子网掩码逐位写成二进制然后而原来ip地址进行【与】运算,就可以得到子网ip地址;
因为255是11111111,所以如果写着255的话,ip地址和子网ip地址对应的地方的数值就相同;
-
例题:
• 网络地址转换NAT
主要用于将私有IP地址转换为公共IP地址,使内部网络中的多个设备共享一个公共IP地址与外部网络通信;
连接内网和外网,就是找个代理的用它的ip地址与外面收发数据;
NAT需要构建NAT转换表,既要存广域网(WAN,外网)也要存局域网(LAN,内网)的ip地址和端口号
(路由器通过端口号进行分发)
动机:对于外界而言,本地网络只使用一个IP地址: §不需要来自互联网服务提供商的地址范围:所有设备只需一个IP地址。 §无需通知外界即可更改本地网络中设备的地址。 §无需更改本地网络中设备的地址即可更改互联网服务提供商。 §本地网络内的设备不可明确寻址,外部世界可见(安全优势)
NAT路由器必须:
传出数据报:将每个传出数据报替换(源IP地址,端口号)到(NAT IP地址,新端口号)。 远程客户端/服务器将使用(NAT IP地址,新端口号)作为目的地址进行响应。
**记住(在NAT转换表中)**每个(源IP地址、端口号)到(NAT IP地址、新端口号)转换对。
传入数据报:将每个传入数据报的DEST字段中的(NAT IP地址,新端口号)替换为NAT表中存储的相应(源IP地址,端口号)
• 网际控制报文协议 ICMP
internet control message protocol
用于在IP网络上传输控制消息和错误报告。它主要用于网络设备之间的通信,提供了网络连通性测试、错误报告、路由选择和网络故障排除等功能。
由主机和路由器用来传递网络级信息。 ·错误报告:无法访问的主机、网络、端口、协议。 ·回应请求/回复(由ping使用)。
IP之上的网络层: ·IP数据报中携带的ICMP消息。
ICMP报文:类型、代码加上导致错误的IP数据报的前8个字节
当第n个集合中的数据报到达第n个路由器时。 ·路由器丢弃数据报并发送源ICMP报文。 ·ICMP报文包括路由器名称和IP地址
停止条件: §UDP数据段最终到达目的主机。 §Destination返回ICMP“port unreacable”消息。 §源停止
❉ IPv6
• 为什么会有IPV6
就是IPV4地址用完了,从根本上增加ip地址数目;
(不同于NAT和CIDR在IPV4的基础上扩展了IPV4地址数目,治标不治本)
改进首部格式:固定40字节,不允许分片;
- 快速处理/转发数据报
- 支持QoS
• IPV6地址表示形式
冒号十六进制(八对四位十六进制数)
• IPV6数据报格式
| 名称 | 作用 | 位数 |
|---|---|---|
| 版本 Ver | 协议版本,此处因为是ipv6所以总是6 | 4位 |
| 优先级 pri | 区分数据报的类型和优先级 | 8位 |
| 流标签 Flow Label | 和ipv4标识某个数据报分片不同,这是对于一整个数据报流的标记 | 20位 |
| 有效载荷长度 Payload Len | 指的是扩展首部+数据部分的大小(不含头部),和ipv4的总长度和首部长度都不同,ipv6的首部长度是固定的40字节 | 16位 |
| 下一个首部 Next Header | 标识数据报中的内容需要交付给哪个协议(如TCP或UDP)。与IPv4首部中协议字段相同。 | 8位 |
| 跳数限制 Hop Limit | 基本相当于ipv4当中的TTL,每到一个路由器-1,减到0时丢弃 | 8位 |
| 源地址 Source Address | 发送方ipv6地址 | 128位(4*32) |
| 目标地址 Destination Address | 接收方ipv6地址 | 128位(4*32) |
- 移除了校验和;(运输层与链路层已有校验)
- 可选首部移到首部外,由Next Head指示;
- 不允许中间路由器分片与组装,只能在源/目的地执行;
• IPV4和IPV6之间的过渡
建隧道:如果是ipv6的数据报到了ipv4,就用ipv4重新封装,把ipv6数据报前面加上ipv4伪装成ipv4数据报继续传输,直至到了ipv6路由再解开ipv4伪装;
❉ 路由算法
复习要点:
- Why there are different routing algorithms?
- Link state
- principle of algorithm
- how to use Dijkstra’s algorithms to calculate the shortest path— examples table of ppt
- Distance Vector algorithm
- Principle of algorithm & how to calculating route by DV
确定通过路由器网络从发送主机到接收主机的“最佳”路径(即路由);
静态路由选择算法:
管理员手工配置路由信息。
简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
路由更新慢,不适用大型网络。
动态路由选择算法:
路由器间彼此交换信息,按照路由算法优化出路由表项。
路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
算法复杂,增加网络负担。
虽然动态算法易于对网络的变化做出反应,但也更容易受诸如路由选择循环、路由振荡之类问题的影响。
集中式路由选择算法:
- 具有关于连通性和链路开销方面的完整信息;
- 链路状态(Link State,LS)算法;
分散式路由选择算法:
- 路由器知道物理连接的邻居,以及到邻居的链路开销
- 迭代计算过程,与邻居交换信息
- 距离向量(Distance-Vector,DV)算法;
• Link state 链路状态算法(全局性)
即数据结构中的迪杰斯特拉算法
原理:
在链路状态算法中,所有路由器掌握完整的网络拓扑和链路开销信息。
通过某种方式,将整个网络拓扑的信息广播给所有路由器,并让每个路由器计算到其他路由器的最小生成树。
-
了解邻居
在每个点到点的线路上发送一个特殊的HELLO报文。 期望另一端的路由器发回一个答复,告诉它是谁。(路由器名称必须是唯一的)
-
测量线路开销
确定到每个路由器邻居的延迟。 只需通过每个接口发送一个ECHO包,并测量往返延迟。(假设延迟是对称的)
-
建立链路状态包
方法:
每台路由器必须做到以下几点:
发现它的邻居,并了解他们的网络地址。 测量每个相邻节点的延迟或成本。 构造一个链路状态包,告诉它刚刚学到的一切。 将该数据包发送到所有其他路由器。 计算到其他路由器的最短路径——做一个Dijkstra。
例题:
• Distance Vector 距离向量算法(分散性)
原理:
路由器只掌握物理相连的邻居及链路费用。(仅和相邻路由器交换信息)
方法:
例题:
• Hierarchical routing 分层路由
❉ 互联网中的路由
自治系统AS(Autono,ous System):一组通常处在相同管理控制下的路由器组成;
自治系统内部路由选择协议(Intra-AS routing)
• RIP(AS内)
适用于小网络
一种【距离向量】协议,
距离:跳数(最大15跳,16表示不可达)
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯最佳距离记录(即一组距离)。
特点:来回更新路由表,错误信息被覆盖,导致直至达到距离上限强制错误时才可以得知出错;
• OSPF 开放最短路优先(AS内)
适用于大网络(只涉及相邻路由器状态,收敛速度快)
一种【链路状态】协议,构建了一副关于整个自治系统的完整拓扑图;
路由器向AS内所有其他路由器广播,周期性或链路状态变化时广播;
OSPF报文由IP承载(而非TCP/UDP)
• BGP 边界网关协议(AS间)
基于【路径向量】
· eBGP(外部):从相邻AS获取子网可达性信息。
· iBGP(内部):将可达性信息传播到所有AS内部路由器。
·根据可达性信息和策略确定到其他网络的“好”路由。
- 允许子网向互联网的其他部分通告其存在
BGP会话:两个BGP路由器(“对等体”)通过半永久的TCP连接交换BGP消息;
·前缀+属性=“路由”
·AS-Path:通过其传递前缀通告的AS列表。
·NEXT-HOP:表示指向下一跳AS的特定内部AS路由器。
§路由器可能会获知多条到达目的地AS的路由,并根据以下条件选择路由:
1.本地偏好值属性:策略决策。 2.最短AS-Path。 3.最近的NEXT-HOP路由器:烫手山芋路由。 4.附加标准
为什么会有不同的AS内、AS间路由?
-
policy:
§intra-AS:单一管理员,因此不需要任何策略决策; §inter-AS:管理员希望控制其流量如何路由,以及谁通过其网络进行路由;
-
performance:
§intra-AS:策略可能主导于性能; §inter-AS:可以专注于性能;
-
scale:
§分层路由节省了表大小,减少了更新流量。
本章常用名词中英文对照
Forwarding table 转发表
Virtual-circuit networks 虚电路网络
Datagram networks 数据报网络
Signaling message 信令报文
Active queue management 主动队列管理
Head-of-the-line 队头
Classless interdomain routing (CIDR) 无类域间路由
Plug-and-play 即插即用
Anycast 任播
Interior gateway protocols 内部网关协议
Routing information Protocol 路由信息协议(RIP)
Open shortest Path First OSPF 开放最短路径优先
Area border routers 区域边界路由器
Circuit Switching 电路转换
Packet Switching 分组交换