【计算机网络】网络层
计算机网络:自顶向下方法(第五版&第七版)学习笔记,第四章网络层,本章以第五版为主。
概述
- forwarding转发:move packets from router’s input(输入链路口) to appropriate router output
- routing路由选择:determine route taken by packets from source to destination,是网络范围的过程
- 转发表(forwarding table):索引查询链路,路由选择算法(routing algorithm)决定转发表里的值
- 分组交换机(packet switch):分组交换设备,输入链路进输出链路出
- 链路层交换机(link-layer switches):基于链路层字段的某些值转发
- 路由器(router):基于网络层字段的某些值转发
- 连接建立(connection setup):网络层数据流动前的状态建立
- 网络层提供的服务
- 对于数据报来说:确保交付(guaranteed delivery)、具有时延上界的确保交付
- 对于数据流来说:有序分组交付(in-order datagram delivery)、确保最小带宽(guaranteed minimum bandwidth to flow)、确保最大时延抖动、安全性服务
- 因特网:尽力而为(best-effort)
- 三个主要组件:IP协议、路由选择协议(RIP, OSPF, BGP)、控制报文协议(ICMP)
虚电路和数据报网络
- 虚电路网络(Virtual Circuit,VC):在网络层提供连接服务
- 数据报网络(Datagram Network):在网络层提供无连接服务
- 主流计算机网络体系结构连接和无连接二选一,不同时提供,因特网提供无连接服务
虚电路网络
- 主机间的一条路径,每段链路一个VC号(每个路径上的同一链路VC号可以不同,以减少分组首部VC号长度,和简化虚电路建立),分组携带走的VC号,路由器转发表指示
- 创建/终止虚电路,转发表增加/删除相应项
- 为建立连接,路由器维护连接状态信息(connection state information)
- 虚电路建立(VC setup):从运输层获得地址,决定路径及路上的VC号,沿路上为路由器添加转发表项,这些报文叫信令报文(signaling message),交换报文的协议叫信令协议(signaling protocol)
- 数据传送(data transfer):数据流动
- 虚电路拆除(VC teardown):通知结束,删除路上路由器转发表项
数据报网络
- 路由器用分组的目的地址转发分组,有将目的地址映射到链路接口的转发表(比如前缀匹配)
- 转发表由路由选择算法修改,几分钟更新一次
路由器
- 路由器功能:运行路由选择算法和路由选择协议、转发数据报
输入端口(input port)
- 查找输出端口,利用输入端口的存储器中的转发表,利用硬件达到线性查找
- 若forwarding速率小于数据包到达速率会排队:Head-Of-the-Line (HOL) blocking(线头阻塞),多个不同入口的包要进一个输出端口,后走的包如果输出链路不排队得被迫排队(queued datagram at front of queue prevents others in queue from moving forward)
- 依次是线路端接(物理层)、数据链路处理(链路层,协议、拆封)、查找转发排队(网络层)
交换结构(Switching fabrics)
- 从输入缓存转移到合适的输出缓存
- 交换速率(switching rate):包转移的速率
- 三种类型:
输出结构(output port)
- 缓存,交换速度大于传输速度
- 分组调度(packet scheduler)程序
网际协议(IP,Internet Protocol)
数据报
IPv4:
- 首部长度:标记数据开始的位置,一般20bytes
- 服务类型(TOS):告诉子网需要的服务类型
- 数据报长度:首部+数据,理论最大65535字节
- 标识(identifier)、标志(flags)、位偏移(fragmentation offset):让目的主机判断新来的分段属于哪个分组
- MTU(Maximum Transmission Unit,最大传输单元):The maximum amount of data that a link layer packet can carry
- 分片:不同链路协议的链路层帧大小不同,将数据分片,在端系统组装
- 属于同一分组的分段包含同样的标识
- DF位表示不分段:命令路由器不要将数据分段,因为目的主机不能重组分段;MF位表示是否所有的分组都已到达;flag=0为最后一片,=1为其他片
- 位偏移说明分段在当前数据报的位置,
- 寿命TTL:用来限制分组的生命周期的计数器,每经过一个结点都有递减,当减到0,分组就丢弃,为了避免在整个网络中分组一直传递的问题
- 上层协议:到达目的地后这个字段指示上层协议的类型
IPv4编址(addressing)
- 接口(interface):主机/路由器和物理链路的边界,路由器通常有多个接口,主机一般只有一个
- IP地址:32位(8+8+8+8),接口地址
特殊IP地址
- broadcast address(广播地址):主机号全为1,向其它网络广播,必须有一个有效的网络号
- limited broadcast address (有限广播):255.255.255.255,向本网络的所有主机广播,不需要网络号
- “0” address(“0”地址):0.0.0.0,本网络本主机
- loopback address (回送地址):netid=127,将信息回送本机
子网
-
子网(subnet):device interfaces with same subnet part of IP address, can physically reach each other without intervening router
-
子网编址(subnetting):将hostid分为subnetid|hostid
-
子网掩码(subnet mask):如193.1.1.0/24,意味最左侧24位指示了子网地址
-
地址分配:CIDR无类别域间路由选择(Classless InterDomain Routing):
获得IP地址的方法
- 系统管理员硬编码在设置文件中,这个IP是手动配置的
- 动态主机配置协议DHCP(Dynamic Host Configuration Protocol):主机与网络连接时从服务器动态获取IP地址
- 网络管理员可配置选择每次给主机相同IP还是临时IP(temporary IP address)
- 主机也可以获得子网掩码、默认网关(第一跳路由器)、本地DNS服务器的IP和名称等信息,又被称即插即用协议(plug-and-play)
- 分为DHCP discover、DHCP offer、DHCP request、DHCP ack四步
- DHCP discover:向255.255.255.255广播,本机地址0.0.0.0,UDP 67或68端口
- DHCP offer:发送报文响应,提供推荐IP地址、网络掩码、IP租用期(address lease time)
- DHCP request:主机选择一个DHCP服务器响应
- DHCP ack:证实参数
- 客户DHCP每次启动都会自动广播请求原来的IP地址和配置,若没有应答但是并未过租用期就继续用
- 租用期过半时request+ack续租,失败则租期到达87.5%的时候再次利用广播方式发送一个DHCP请求信息续租,如果失败就重新获取(4个过程)
- 用户IP从ISP那来,ISP的由ICANN(Internet Corporation for Assigned Names and Numbers)管理(还管理DNS和域名),ISP也是子网,因此同前缀的网络信息可以发往一个方向
网络地址转换(Network Address Translation,NAT)
- 如果ISP连续空间不够、外界网络不需要关心本地网络内的IP分配因此更方便分配和修改、ISP若需要更换IP不需改子网内的IP、IP暴露在外不安全
- NAT将要发走的数据报中的源IP和端口修改为NAT的IP和端口,收到的数据报反过来修改
- NAT translation table包含了修改信息
因特网控制报文协议ICMP(Internet Control Message Protocol)
- 主机和路由器交流网络层信息,如差错报告(error reporting)、回显请求和回复(ping程序)
- Traceroute程序:通过发不可达UDP,TTL依次设为1,2,3,…根据路由返回的过期信息知道路由器信息,最后一个到达的
IPv6
- 原因:32位空间不够用,以及对IPv4进行一些优化
- 数据报
- 流量类型又称优先级(priority):区别数据包的类别和优先级,与IPv4的TOS类似
- 流标签:区别在同一个流中的数据报
- 下一个首部(next header):上一层协议类型
- 跳限制(hop limit)即TTL
- 其他去除的:checksum、options(可以在下一个首部里)、分片信息
- ICMPv6:新版本的ICMP,有更多信息和multicast group management functions
- IPv4转IPv6:旧路由器可能没法更新到能处理IPv6的,通过建隧道(Tunneling),即通过IPv4群前将IPv6信息打包成IPv4
路由选择算法
- 找到最小代价路线
分类
- 全局式&分散式:
- 全局式(global)路由选择算法:需要知道全局的路径费用,链路状态算法(Link State)LS
- 分散式(decentralized)路由选择算法:迭代交换信息,距离向量(Distance-Vector)DV
- 静态&动态:
- 静态:路由变化缓慢,人工调整转发表
- 动态:网络流量负载和拓扑变化时/周期性运行
LS算法
Dijkstra
DV
Bellman-Ford,收到相邻节点给的距离向量后更新
好消息(路径费用变小)传的快,坏消息传得慢,可能出现无穷计数,错误的消息不断传出去更新,解决方法是毒性逆转,如果A到B的最小费用通过C更新了(C告知的),告诉C,A到B费用为正无穷
层次路由选择(Hierarchical Routing)
- 自治系统AS(autonomous system)组织路由器(如一个ISP内),通过网关(gateway)路由器向外通信
- 内部要知道哪些网关路由器能到达外部指定地点
- 热土豆算法(hot potato routing)将包发给最近的网关路由器
因特网路由选择
内部:Intra-AS
又叫内部网关协议Interior Gateway Protocols (IGP)
RIP: Routing Information Protocol
- 路由信息协议
- DV算法,跳数(hops)作为费用测度,每条链路费用为1
- 最大费用15,RIP只能使用在直径不超15跳的AS中
- 路由间用RIP响应报文更新信息,又叫RIP通告(advertisement),包含多达25个子网的列表
- 180s没有收到邻居的通告则把邻居视为不可达
- 16跳即无穷大
- RIP报文通过UDP发送,RIP是当作应用层进程实现的
- 一般设在下层ISP
OSPF: Open Shortest Path First
-
OSPF路由协议
-
LS
-
在IP中传输
-
周期性/变化时广播链路状态,广播给整个AS,使用flooding
-
相比RIP的优点
- 安全:authenticated
- 多条相同费用的路径
- 多播单播路由都支持
- 链路多个成本指标
- hierarchical OSPF in large domains
- 主干区域(backbone)
- 边界(area border)路由器
外部:Inter-AS
BGP: Border Gateway Protocol
-
边界网关协议
-
BGP连接包括两种:
-
eBGP: obtain subnet reachability information from neighboring AS,即e是external
-
iBGP: propagate reachability information to all AS-internal routers,即i是internal
-
-
BGP peers产生TCP连接称BGP session
为什么区分内外部
- 外部要考虑policy,内部只需关注效果
- 分层次能够减少路由转发表的大小,减少更新所需流量