4.2 网络层IP数据报与路由选择

IP数据报格式

1、版本号字段占4位:IP协议的版本号(E.g.4→IPv4,6→IPv6)
2、首部长度字段占4位:IP分组首部长度(以4B为单位)
3、服务类型(TOS)字段占8位:指示期望获得哪种类型的服务(区分服务)
4、总长度字段占16位:IP分组的总字节数(首部+数据)
        最大IP分组的总长度:65535B
        最小的IP分组首部:20B
        IP分组可以封装的最大数据:65535-20=65515B
5、生存时间(TTL)字段占8位:IP分组在网络中可以通过的路由器数(或跳步数)
6、协议字段占8位:指示IP分组封装的是哪个协议的数据包:
        实现复用/分解
        6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报
7、首部校验和字段占16位:实现对IP分组首部的差错检测
        计算校验和时,该字段置全0
        采用反码算数运算求和,和的反码作为首部校验和字段
        逐跳计算、逐跳校验
8、源IP地址、目的IP地址字段各占32位
        分别标识发送分组的源主机/路由器(网络接口)
        接收分组的目的主机/路由器(网络接口)的IP地址
9、选项字段占长度可变,范围在1~40B之间
        携带安全、源选路径、时间戳和路由记录等内容,实际上很少被使用
10、填充字段占长度可变,范围在0~3B之间
        目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数
11、标识字段占16位:标识一个IP分组
        IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
12、标志位字段3位:第一位保留,用第二位和第三位
        DF (Don't Fragment):1为禁止分片,0为允许分片
        MF (More Fragment):非最后一片,0最后一片
13、片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量(以8B为单位)

IP数据报分片

网络链路存在MTU(最大传输单元)——链路层数据帧可封装数据的上限

1、大IP分组向较小MTU链路转发时,可以被“分片”(fragmented)
        1个IP分组分为多片IP分组
        IP分片到达目的主机后进行“重组”
2、IP首部的相关字段用于标识分片以及确定分片的相对顺序

IP分片过程:
假设原IP分组总长度为L,待转发链路的MTU为M
若L>M,且DF=0,则可以/需要分片
分片时每个分片的标识复制原IP分组的标识
通常分片时,除最后一个分片,其他分片均分为 MTU允
许的最大分片

IP编址

IP分组:
        源地址(SA)-从哪儿来
        目的地址(DA)-到哪儿去
接口(interface):主机/路由器与物理链路的连接
        实现网络层功能
        路由器通常有多个接口
        主机通常只有一个或两个接口(e.g.,有线的以太网接口,无线的802.11接口)

IP地址:32比特(IPv4)编号标识主机、路由器的接口
IP地址与每个接口关联

IP地址:网络号(NetlD)-高位比特        主机号(HostID)-低位比特

IP子网:
1、IP地址具有相同网络号的设备接口
2、不跨越路由器(第三及以上层网络设备)可以彼此物理连通的接口

有类编址

几类不同IP地址

 特殊IP地址

私有地址

子网划分

IP地址:
        网络号(NetID)-高位比特
        子网号(SublD)-原网络主机号部分比特
        主机号(HostID)-低位比特

CIDR

无类域间路由(CIDR: Classless InterDomain Routing)
消除传统的 A类、B 类和 C 类地址界限
        NetlD+SublD-Network Prefix(Prefix)可以任意长度
融合子网地址与子网掩码,方便子网划分
        无类地址格式:a.b.c.d/x,其中x为前缀长度

无类域间路由(CIDR: Classless InterDomain Routing)
提高IPv4 地址空间分配效率
提高路由效率
        将多个子网聚合为一个较大的子网
        构造超网(super netting)

路由聚合:层级编址使得路由信息通告更高效

ARP

ARP高速缓存(IP地址与MAC地址的映射)

在同一个局域网内:

不在同一个局域网中:

由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。

ARP协议:完成主机或路由器IP地址到MAC地址的映射,解决下一跳走哪的问题

ARP协议使用过程:
        检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)

ARP协议4种典型情况:
1.主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
2.主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
3.路由器发给本网络的主机A:用ARP找到主机A的硬件地址
4.路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。 

DHCP

“硬编码”:静态配置

动态主机配置协议-DHCP: Dynamic Host ConfigurationProtocol
1、从服务器动态获取:
        IP地址
        子网掩码
        默认网关地址
        DNS服务器名称与IP地址
2、“即插即用’
3、允许地址重用
4、支持在用地址续租
5、支持移动用户加入网络

主机广播“DHCP discover”(发现报文)
DHCP服务器利用“DHCP offer”(提供报文)
进行响应主机请求IP地址:“DHCP request(请求报文)
DHCP服务器分配IP地址:“DHCP ack”(确认报文)

DHCP协议在应用层实现
        请求报文封装到UDP数据报中
        IP广播
        链路层广播(e.g.以太网广播)

DHCP服务器构造ACK报文
包括分配给客户的IP地址、子网掩码默认网关、DNS服务器地址

NAT

1、所有离开本地网络去往Internet的数据报的源IP地址需替换为相同的NATP地址:138.76.29.7以及不同的端口号
2、本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0124内

动机:
1、只需/能从ISP申请一个IP地址
        IPv4地址耗尽
2、本地网络设备IP地址的变更,无需通告外界网络
3、变更ISP时,无需修改内部网络设备IP地址
4、内部网络设备对外界网络不可见,即不可直接寻址(安全)

实现:
1、替换:
        利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
2、记录:
        将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中
3、替换:
        根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址,新端口号)

16-bit端口号字段:可以同时支持60,000多并行连接
NAT主要争议:
1、路由器应该只处理第3层功能
2、违背端到端通信原则
        应用开发者必须考虑到NAT的存在,e.g,P2P应用
3、地址短缺问题应该由IPv6来解决

NAT穿透问题
解决方案1:静态配置NAT将特定端口的连接请求转发给服务器
e.g.,(138.76.29.7,2500)总是转发给(10.0.0.1,25000)

解决方案2:利用UPnP(Universal Plug and Play)互联网网关设备协议(IGD-Internet Gateway Device)自动配置:
学习到NAT公共IP地址(138.76.29.7)
在NAT转换表中,增删端口映射

解决方案3: 中继(如Skype)
NAT内部的客户与中继服务器建立连接
外部客户也与中继服务器建立连接
中继服务器桥接两个连接的分组

ICMP

互联网控制报文协议ICMP(Internet Control MessageProtocol)支持主机或路由器:
        差错(或异常)报告
        网络探询
两类ICMP 报文:
        差错报告报文(5种)
                目的不可达
                源抑制(Source Quench)
                超时/超期
                参数问题
                重定向(Redirect)
        网络探询报文(2组)
                回声(Echo)请求与应答报文(Reply)
                时间戳请求与应答报文

几种不发送 ICMP差错报告报文的特殊情况:
        1、对ICMP差错报告报文不再发送ICMP差错报告报文
        2、除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
        3、对所有多播IP数据报均不发送ICMP差错报告报文
        4、对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文

几种 ICMP 报文已不再使用
        信息请求与应答报文
        子网掩码请求和应答报文
        路由器询问和通告报文

ICMP报文封装到IP数据报中传输

ICMP差错报告报文数据协议

ICMP的应用举例:Traceroute

源主机向目的主机发送一系列UDP数据报
        第1组IP数据报TTL =1
        第2组IP数据报TTL=2,etc.
        目的端口号为不可能使用的端口号
当第n组数据报(TTL=n)到达第n个路由器时:
        路由器丢弃数据报
        向源主机发送ICMP报文(type=11, code=0)
        ICMP报文携带路由器名称和IP地址信息
        当ICMP报文返回到源主机时,记录RTT
停止准则:
        UDP数据报最终到达目的主机
        目的主机返回“目的端口不可达”ICMP报文(type=3,code=3)
        源主机停止

IPv6 

最初动机:32位IPv4地址空间已分配殆尽
其他动机:改进首部格式
        快速处理/转发数据报
        支持QoS
IPv6数据报格式:
        固定长度的40字节基本首部
        不允许分片

优先级(priority):标识数据报的优先级
流标签(fow Label):标识同一“流”中的数据报
下一个首部(next header):标识下一个选项首部(扩章首部)或(最后一个)上层协议首部(如TCP首部)
跳步限制:就是IPv4的TTL
源地址与目的地址:128位

与IPv4的比较:
校验和(checksum):彻底移除,以减少每跳处理时间
选项(options):允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
ICMPv6:新版ICMP
        附加报文类型,e.g.“Packet Too Big”
        多播组管理功能

IPv6地址表示形式

IPv6基本地址类型

单播:一对一通信

多播:一对多通信

任意播:一对一组之一(最近一个)通信

Ipv4向IPv6过渡

不可能在某个时刻所有路由器同时被更新为IPv6。
        不会有 “标志性的日期’
        IPv4和IPv6路由器共存的网络如何运行?
隧道(tunneling):IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络

 路由选择

路由算法

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已

分类:

1、静态路由算法
管理员手工配置路由信息
简单可靠,在拓扑稳定的网络中运行效果好

2、动态路由算法
路由器彼此之间交换信息,按照路由算法优化出路由表项
路由更新快,适用于大型网络,及时响应链路费用或者网络拓扑变化

动态路由算法:

1、全局性:链路状态路由算法OSPF
所有路由器掌握完整的网络拓扑和链路费用

2、分散性:距离向量路由算法RIP
路由器只掌握物理相连的邻居以及链路费用

分层次的路由选择协议

1、因特网规模大

2、很多单位不想让外界知道自己的路由选择协议,但是还想连入因特网

自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。
一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。

路由选择协议因此可以分成

内部网关协议IGP:一个AS内使用的 RIP OSPF

外部网关协议EGP:AS之间使用的 BGP

距离向量路由算法RIP

RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。

RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)

距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。

RIP协议只适用于小互联网

工作过程
1.仅和相邻路由器交换信息
2.路由器交换的信息是自己的路由表。
3.每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。

路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”

距离向量算法
1.修改相邻路由器发来的RIP报文中所有表项对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。
2.对修改后的RIP报文中的每一个项目,进行以下步骤:
        (1)R1路由表中若没有Net3,则把该项目填入R1路由表
        (2)R1路由表中若有Net3,则查看下一跳路由器地址:
                若下一跳是X,则用收到的项目替换源路由表中的项目;
                若下一跳不是X,原来距离比从X走的距离远则更新,否则不作处理
3.若180s还没收到相邻路由器x的更新路由表,则把X记为不可达的路由器,即把距离设置为16。
4.返回

RIP协议的报文格式
 

RIP是应用层协议,使用UDP传送数据
一个RIP报文最多可包括25个路由,如果超过,必须再用一个RIP报文传送 

RIP协议好消息传的快,坏消息传的慢,俗称“慢收敛”

链路状态算法OSPF

开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF

OSPF最主要的特征就是使用分布式的链路状态协议

1、所有结点(路由器)掌握网络拓扑和链路费用
        通过“链路状态广播”
        所有结点拥有相同信息
2、计算从一个结点(“源”)到达所有其他结点的最短路径
        获得该结点的转发表
3、迭代: k次迭代后,得到到达k个目的结点的最短路径

OSPF特点
1.使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。广播
最终整个区域内所有路由器都得到了这个信息的一个副本
2.发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价--费用、距离、时延、带宽等)。
3.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。

最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图

算法(考试似乎很少考查)
1.每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。
2.设置到它的每个邻居的成本度量metric。
3.构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
4.如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
5.收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
只要一个路由器的链路状态发生变化:
5.泛洪发送【LSU链路状态更新分组】进行更新。
6.更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
7.使用Diikstra根据自己的链路状态数据库构造到其他节点间的最短路径。

Diikstra算法:(存在震荡可能)

OSPF的区域
为了使 OSPF 能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点分十进制表示)
区域也不能太大,在一个区域内的路由器最好不超过 200个。

OSPF分组
 

OSPF直接用IP数据报传输,是网络层协议

OSPF其他特点
1.每隔30min,要刷新一次数据库中的链路状态。
2.由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议 RIP好得多。
3.OSPF不存在坏消息传的慢的问题,它的收敛速度很快。

BGP协议

与其他AS的邻站BGP发言人交换信息。
交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
发生变化时更新有变化的部分,

BGP协议交换信息的过程
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。当 BGP 发言人互相交换了网络可达性的信息后,各 BGP发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。

BGP协议报文格式
一个BGP发言人与其他自治系统中的 BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。

BGP是应用层协议,用TCP传输 

BGP协议特点
BGP 支持 CIDR,因此 BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在 BGP刚刚运行时,BGP的邻站是交换整个的 BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

BGP-4的四种报文
1.OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。
2.UPDATE(更新)报文:通告新路径或撤销原路径。
3.KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性:也作为OPEN的确认,4.NOTIFICATION(通知)报文:报告先前报文的差错:也被用于关闭连接。

三种路由协议比较

RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息

OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP盛TCP),而是直接采用IP

BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值