第四章:网络层计算机网络网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6虚拟专用网VPN4.
7网络地址转换NAT(NetworkAddressTranslation)4.
8下一代网际协议IPv6(IPng)4.
1网络层的设计问题在计算机网络领域,网络层应该向传输层提供怎样的服务("面向连接"还是"无连接")曾引起了长期的争论.
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责是网络还是端系统方案一:由网络负责"可靠交付"该方案主要由电话公司为代表的阵营提出,他们的理由是:100多年的全球电话系统的经验告诉我们,由网络层负责"可靠交付"是完全可行的.
服务质量是非常重要的因素,如果网络中没有连接,要实现服务质量控制是非常困难的,特别是诸如语音和视频这样的实时业务.
他们提出的方案是:面向连接的通信方式.
建立虚电路(VirtualCircuit),以保证双方通信所需的一切网络资源.
虚电路服务应用层运输层网络层数据链路层物理层应用层运输层网络层数据链路层物理层H1虚电路H1发送给H2的所有分组都沿着同一条虚电路传送虚电路是逻辑连接虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接.
请注意,电路交换的电话通信是先建立了一条真正的连接.
因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样.
方案二:网络只负责"包的路由"该方案主要由互联网的使用者和开发者为代表的阵营提出,他们的理由是:基于40多年的计算机网络的使用的经验来看,不管如何设计网络,从本质上讲,它总是不可靠的.
数据包的排序和流量控制应有主机完成,这部分工作由网络层再做一遍是没有必要的.
方案二:网络只负责"包的路由"他们提出的方案是:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据包服务.
网络在发送分组时不需要先建立连接.
每一个分组(即IP数据包)独立发送,与其前后的分组无关(不进行编号).
网络层不提供服务质量的承诺.
即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限.
尽最大努力交付的好处由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较).
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等).
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用.
因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性.
分组服务应用层运输层网络层数据链路层物理层应用层运输层网络层数据链路层物理层H1IP数据报丢失H1发送给H2的分组可能沿着不同路径传送.
对比的方面虚电路服务分组服务思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证连接的建立必须有不需要终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组,一些路由可能会发生变化分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责由用户主机负责虚电路服务与分组服务的对比分组服务较虚电路服务的优势路由器造价低,易于组网.
采用分布式路由方式,即各个路由器是独立的,这种方式易于扩展(即添加路由器,删除路由器容易).
网络传输的稳定性好.
如果一个路由器的崩溃,分组服务会将接下来的分组绕过这个路由器进行传输.
但对于虚电路服务来说,路由器的崩溃则是致命的.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6虚拟专用网VPN4.
7网络地址转换NAT(NetworkAddressTranslation)4.
2网际协议IP网际协议IP是TCP/IP体系中最主要的协议之一.
与IP协议配套使用的还有三个协议:地址解析协议ARP(AddressResolutionProtocol)网际控制报文协议ICMP(InternetControlMessageProtocol)网际组管理协议IGMP(InternetGroupManagementProtocol)网际层的IP协议及配套协议各种应用层协议网络接口层(HTTP,FTP,SMTP等)物理硬件运输层TCP,UDP应用层ICMPIPARP与各种网络接口网络层(网际层)IGMP4.
2.
1网际互联互连在一起的网络要进行通信,会遇到许多问题需要解决,如:不同的最大分组长度不同的网络帧格式不同不同的管理与控制方式不同的超时控制不同的差错恢复方法不同的状态报告方法不同的服务(面向连接服务和无连接服务)何以连接网络1974年,Cerf和Kahn提出了网际协议IP.
在不同的网络上加一个公共层用来隐藏现有网络的不同.
40年后,该方成为了成为了Internet的基础.
而Cerf和Kahn因此获得图灵奖,该奖相当于计算机领域的诺贝尔奖.
不同网络的互相连接是通过中间设备实现的中间设备又称为中间系统或中继(relay)系统.
物理层中继系统:集线器(repeater).
数据链路层中继系统:网桥或桥接器(bridge).
网络层中继系统:路由器(router).
网络层以上的中继系统:网关(gateway).
网络互连使用路由器和网关当中继系统是集线器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络.
互联网都是指用路由器和网关进行互连的网络.
路由器的功能是路由选择和路由转发.
网关除了实现路由的功能之外,还进行了网际协议转化,速率转化,错误隔离等功能.
互连网络的意义所谓互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络.
使用IP协议的互连网络可简称为IP网.
使用互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节.
主机H1主机H2R1R4R5R2R3R1R2R3H1R5H2R4间接交付间接交付间接交付间接交付间接交付直接交付分组在互联网中的传送54IP802.
3IP1802.
3802.
311IP1802.
3802.
311IP1802.
3802.
311IP1DVB802.
311IP1802.
11DVB1154IP802.
111从网络层看IP数据报的传送如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送.
网络层网络层网络层网络层网络层网络层网络层IP数据报H1R1R2R3R4R5H24.
3分类的IP地址我们把整个因特网看成为一个单一的、抽象的网络.
IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符.
IP地址现在由因特网名字与号码指派公司ICANN(InternetCorporationforAssignedNamesandNumbers)进行分配.
IP地址的编址方法分类的IP地址.
这是最基本的编址方法,在1981年就通过了相应的标准协议.
子网的划分.
这是对最基本的编址方法的改进,其标准[RFC950]在1985年通过.
构成超网.
这是比较新的无分类编址方法.
1993年提出后很快就得到推广应用.
分类IP地址每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号host-id,它标志该主机(或路由器).
两级的IP地址可以记为:IP地址::={,}(4-1)::=代表"定义为"IP地址中的网络号字段和主机号字段net-id24位host-id24位net-id16位net-id8位0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101net-id24位host-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101A类地址的网络号字段net-id为1字节net-id24位host-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101B类地址的网络号字段net-id为2字节net-id24位host-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101C类地址的网络号字段net-id为3字节net-id24bithost-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101A类地址的主机号字段host-id为3字节net-id24位host-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101B类地址的主机号字段host-id为2字节net-id24位host-id24位net-id16位net-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101C类地址的主机号字段host-id为1字节net-id24位host-id24位net-id16bitnet-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101D类地址是多播地址net-id24位host-id24位net-id16bitnet-id8位IP地址中的网络号字段和主机号字段0A类地址host-id16位B类地址C类地址011D类地址1110多播地址E类地址保留为今后使用111101E类地址保留为今后使用点分十进制记法采用点分十进制记法则更加便于使用128.
11.
3.
3112811331将每8位的二进制数转换为十进制数常用的三种类别的IP地址IP地址的使用范围网络最大第一个最后一个每个网络类别网络数可用的可用的中最大的网络号网络号主机数A126(27–2)112616,777,214B16,383(2141)128.
1191.
25565,534C2,097,151(2211)192.
0.
1223.
255.
255254IP地址的一些重要特点(1)IP地址是一种分等级的地址结构.
分两个等级的好处是:第一,IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配.
这样就方便了IP地址的管理.
第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间.
IP地址的一些重要特点(2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口.
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的.
这种主机称为多归属主机(multihomedhost).
由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址.
IP地址的一些重要特点(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id.
(4)所有分配到网络号net-id的网络,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的.
B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的.
图中的网络号就是IP地址中的net-id互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的.
图中的网络号就是IP地址中的net-id互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的.
图中的网络号就是IP地址中的net-id互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网由网桥连接的计算机仍属于一个局域网,所以它们的网络号相同.
互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网路由器总是具有两个或两个以上的IP地址.
路由器的每一个接口都有一个不同网络号的IP地址.
互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网路由器总是具有两个或两个以上的IP地址.
路由器的每一个接口都有一个不同网络号的IP地址.
互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网路由器总是具有两个或两个以上的IP地址.
路由器的每一个接口都有一个不同网络号的IP地址.
互联网中的IP地址B222.
1.
1.
222.
1.
1.
1222.
1.
1.
2222.
1.
1.
3222.
1.
1.
4R1222.
1.
2.
5222.
1.
2.
2222.
1.
2.
1222.
1.
2.
3222.
1.
2.
4222.
1.
2.
222.
1.
6.
1222.
1.
5.
1222.
1.
5.
2222.
1.
6.
2222.
1.
4.
1222.
1.
4.
2222.
1.
3.
3222.
1.
3.
2222.
1.
3.
1R3R2222.
1.
3.
LAN3N3N2222.
1.
4.
222.
1.
5.
222.
1.
6.
N1LAN2LAN1互联网两个路由器直接相连的接口处,可指明也可不指明IP地址.
如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊"网络".
现在常不指明IP地址.
4.
2.
3IP地址与硬件地址TCP报文IP数据报MAC帧应用层数据首部首部尾部首部HA1HA5HA4HA3HA6主机H1主机H2路由器R1硬件地址路由器R2HA2IP1IP2局域网局域网局域网通信的路径H1→经过R1转发→再经过R2转发→H2HA1HA5HA4HA3HA6主机H1主机H2路由器R1硬件地址路由器R2HA2IP1IP2局域网局域网局域网IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网MAC帧IP2IP4IP3IP5路由器R2MAC帧MAC帧IP数据报从虚拟的IP层上看IP数据报的流动IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网MAC帧IP2IP4IP3IP5路由器R2MAC帧MAC帧IP数据报在IP层抽象的互联网上只能看到IP数据报图中的IP1→IP2表示从源地址IP1到目的地址IP2两个路由器的IP地址并不出现在IP数据报的首部中IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网MAC帧IP2IP4IP3IP5路由器R2MAC帧MAC帧IP数据报路由器只根据目的站的IP地址的网络号进行路由选择HA1HA5HA4HA3HA6主机H1主机H2路由器R1硬件地址路由器R2HA2IP1IP2局域网局域网局域网IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网MAC帧IP2IP4IP3IP5路由器R2MAC帧MAC帧IP数据报在链路上看MAC帧的流动IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网IP2IP4IP3IP5路由器R2IP数据报在不同的子网中,所传输的MAC帧中的源物理地址和目的地址是不同的.
IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP层上的互联网IP2IP4IP3IP5路由器R2IP数据报那么整个的传输过程是怎样的呢下面我们来具体的看一下!
IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP2IP4IP3IP5路由器R2IP数据报主机H1根据目的地址IP2查找自己的路由表,找到下一跳的IP地址为IP3,然后在自己的ARP表中查找IP3所对应的物理地址HA3,然后将IP数据报和目的物理地址HA3传给下层.
路由表ARP表IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1MAC帧IP2IP4IP3IP5路由器R2主机H1将自己的HA1地址作为MAC帧的源物理地址,然后把网络层给它的HA3作为MAC帧的目的物理地址,然后将IP封装在MAC帧中传出去.
IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP2IP4IP3IP5路由器R2IP数据报路由器R1收到主机H1的IP数据报后,根据目的地址IP2查找它的路由表,找到下一跳的IP地址为IP5,然后在它的ARP表中查找IP5所对应的物理地址HA5,然后将IP数据报和目的物理地址HA5传给下层.
路由表ARP表IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1MAC帧IP2IP4IP3IP5路由器R2路由器R1将自己的物理地址HA4作为MAC帧的源物理地址,然后把网络层给它的HA5作为MAC帧的目的物理地址,然后将IP封装在MAC帧中传出去.
IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP2IP4IP3IP5路由器R2IP数据报路由器R2收到主机R1的IP数据报后,根据目的地址IP2查找它的路由表,找到下一跳的IP地址为IP2,然后在它的ARP表中查找IP2所对应的物理地址HA2,然后将IP数据报和目的物理地址HA2传给下层.
路由表ARP表IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1MAC帧IP2IP4IP3IP5路由器R2路由器R2将自己的物理地址HA6作为MAC帧的源物理地址,然后把网络层给它的HA2作为MAC帧的目的物理地址,然后将IP封装在MAC帧中传出去.
IP1HA1HA5HA4HA3HA6HA2IP6主机H1主机H2路由器R1IP2IP4IP3IP5路由器R2IP数据报最终主机H2收到IP数据报,然后将该数据报传给上层,完成整个传输过程.
在整个IP传输过程中有两个遗留问题主机和路由器的ARP表是什么它们的ARP表怎么来的主机和路由器的路由表是如何来的4.
2.
4地址解析协议ARPARP(AddressResolutionProtocol)网络层ARP下一跳IP地址下一跳硬件地址IPIGMPICMPARP地址解析协议ARP不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址.
每一个主机都设有一个ARP高速缓存(ARPcache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表.
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址.
如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址.
如果没有,就向整个局域网发送ARP请求包进行询问,目的主机收到该请求包后,将自己的硬件地址放在回应包中返回给主机A.
地址解析协议ARP的过程第一步AYXBZ主机A广播发送ARP请求分组ARP请求ARP请求ARP请求209.
0.
0.
5209.
0.
0.
6我是209.
0.
0.
5,硬件地址是00-00-C0-15-AD-18我想知道主机209.
0.
0.
6的硬件地址地址解析协议ARP的过程第二步主机B将主机A的这一地址映射写入自己的ARP高速缓存中AYXBZ209.
0.
0.
5209.
0.
0.
600-00-C0-15-AD-18主机X将主机A的这一地址映射写入自己的ARP高速缓存中主机Y将主机A的这一地址映射写入自己的ARP高速缓存中主机Z将主机A的这一地址映射写入自己的ARP高速缓存中地址解析协议ARP的过程第三步主机B向A发送ARP响应分组08-00-2B-00-EE-0A我是209.
0.
0.
6硬件地址是08-00-2B-00-EE-0AAYXBZ209.
0.
0.
5209.
0.
0.
600-00-C0-15-AD-18应当注意的问题ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题.
所以主机的IP层将会根据目的IP地址查找自己的路由表,然后找到同一个网络的下一跳主机(或路由器接口)的IP地址.
然后利用ARP协议找到下一跳的IP地址(而不是目的主机的IP地址)的MAC地址.
然后将MAC帧发给下一跳主机(或路由器接口).
应当注意的问题(续)从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的.
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址.
使用ARP的四种典型情况发送方是主机,下一跳IP地址与目的IP地址一致.
这时用ARP找到就是目的主机的MAC地址.
发送方是主机,下一跳IP地址与目的IP地址不一致.
这时用ARP找到的是本网络上的一个路由器的硬件地址.
发送方是路由器,下一跳IP地址与目的IP地址一致.
这时用ARP找到就是目的主机的硬件地址.
发送方是路由器,下一跳IP地址与目的IP地址不一致.
这时用ARP找到的是本网络上另一个路由器的硬件地址.
为什么我们不直接使用硬件地址进行通信由于全世界存在着各式各样的网络,它们使用不同的硬件地址.
要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事.
连接到因特网的主机都拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用ARP来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的.
4.
2.
5IP数据报的格式一个IP数据报由首部和数据两部分组成.
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的.
在首部的固定部分的后面是一些可选字段,其长度是可变的.
固定部分可变部分04816192431版本标志生存时间协议标识区分服务总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分数据部分首部IP数据报可变部分首部04816192431版本标志生存时间协议标识区分服务总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分数据部分首部IP数据报首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分数据部分首部IP数据报固定部分区分服务首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务1.
IP数据报首部的固定部分中的各字段首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务首部04816192431版本标志生存时间协议标识区分服务总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分标志(flag)占3位,目前只有前两位有意义.
标志字段的最低位是MF(MoreFragment).
MF1表示后面"还有分片".
MF0表示最后一个分片.
标志字段中间的一位是DF(Don'tFragment).
只有当DF0时才允许分片.
首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务偏移=0/8=0偏移=0/8=0偏移=1400/8=175偏移=2800/8=350140028003799279913993799需分片的数据报数据报片1首部数据部分共3800字节首部1首部2首部3字节0数据报片2数据报片314002800字节0【例4-1】IP数据报分片这三个分片的标示位都相同,表明为同一个IP包的分片.
首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分生存时间(8位)记为TTL(TimeToLive)数据报在网络中可通过的路由器数的最大值.
区分服务首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务运输层网络层首部TCPUDPICMPIGMPOSPF数据部分IP数据报首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务发送端接收端16位字116位字216位字n……数据报首部IP数据报16位字116位字216位字n……数据部分首部04816192431版本标志生存时间协议标识总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)位首部长度数据部分固定部分可变部分区分服务IP数据报首部的可变部分IP首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富.
选项字段的长度可变,从0个字节到40个字节不等,取决于所选择的项目.
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的.
这就增加了每一个路由器处理数据报的开销.
实际上这些选项很少被使用.
4.
2.
6IP层转发分组的流程有四个A类网络通过三个路由器连接在一起.
每一个网络上都可能有成千上万个主机.
可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大.
但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目.
这样就可使路由表大大简化.
网110.
0.
0.
0网440.
0.
0.
0网330.
0.
0.
0网220.
0.
0.
010.
0.
0.
440.
0.
0.
430.
0.
0.
220.
0.
0.
920.
0.
0.
730.
0.
0.
1R2R3R101网110.
0.
0.
0网440.
0.
0.
0网330.
0.
0.
0网220.
0.
0.
010.
0.
0.
440.
0.
0.
430.
0.
0.
220.
0.
0.
920.
0.
0.
7目的主机所在的网络下一跳地址20.
0.
0.
030.
0.
0.
010.
0.
0.
040.
0.
0.
020.
0.
0.
730.
0.
0.
1直接交付,接口1直接交付,接口0路由器R2的路由表30.
0.
0.
110.
0.
0.
440.
0.
0.
430.
0.
0.
220.
0.
0.
920.
0.
0.
730.
0.
0.
1链路4链路3链路2链路1R2R3R101R2R3R1在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)查找路由表根据目的网络地址就能确定下一跳路由器,这样做的结果是:IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付).
只有到达最后一个路由器时,才试图向目的主机进行直接交付.
特定主机路由这种路由是为特定的目的主机指明一个路由.
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由.
默认路由(defaultroute)路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间.
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的.
N1R1因特网目的网络下一跳N1直接N2R2默认R1路由表N2R2只要目的网络不是N1和N2,就一律选择默认路由,把数据报先间接交付路由器R1,让R1再转发给下一个路由器.
必须强调指出IP数据报的首部中没有地方可以用来指明"下一跳路由器的IP地址".
当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口.
网络接口使用ARP负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器.
分组转发算法(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N.
(2)若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行下一步.
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行下一步.
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行下一步.
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行下一步.
(6)报告转发分组出错.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6虚拟专用网VPN4.
7网络地址转换NAT(NetworkAddressTranslation)4.
3.
1三级网络地址在ARPANET的早期,IP地址的设计确实不够合理.
IP地址空间的利用率有时很低.
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏.
两级的IP地址不够灵活.
三级的IP地址从1985年起在IP地址中又增加了一个"子网号字段",使两级的IP地址变成为三级的IP地址.
这种做法叫作划分子网(subnetting).
划分子网已成为因特网的正式标准协议.
划分子网的基本思路划分子网纯属一个单位内部的事情.
单位对外仍然表现为没有划分子网的网络.
从主机号借用若干个位作为子网号subnet-id,而主机号host-id也就相应减少了若干个位.
IP地址::={,,}(4-2)划分子网的基本思路(续)凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器.
然后此路由器在收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网.
最后就将IP数据报直接交付目的主机.
………145.
13.
3.
10145.
13.
3.
11145.
13.
3.
101145.
13.
7.
34145.
13.
7.
35145.
13.
7.
56145.
13.
21.
23145.
13.
21.
9145.
13.
21.
8所有到该网络(网络号为145.
13.
0.
0)的分组均到达此路由器我的网络地址是145.
13.
0.
0R1R3R2一个B类网络(网络号为145.
13.
0.
0)对外来看,好像没有划分子网145.
13.
3.
10145.
13.
3.
11145.
13.
3.
101145.
13.
7.
34145.
13.
7.
35145.
13.
7.
56145.
13.
21.
23145.
13.
21.
9145.
13.
21.
8………子网145.
13.
21.
0子网145.
13.
3.
0子网145.
13.
7.
0所有到达网络145.
13.
0.
0的分组均到达此路由器网络145.
13.
0.
0R1R3R2在内部,该网络划分为三个子网划分子网后变成了三级结构当没有划分子网时,IP地址是两级结构.
划分子网后IP地址就变成了三级结构.
划分子网只是把IP地址的主机号host-id这部分进行再划分,而不改变IP地址原来的网络号net-id.
子网掩码从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分.
要确定子网号,我们还需要一个信息.
这个信息就是子网掩码(subnetmask).
网络地址=(IP地址)AND(子网掩码)145.
13.
3.
10两级IP地址子网号为3的网络的网络号三级IP地址主机号三级IP地址的子网掩码网络号主机号子网的网络地址0网络号子网号主机号145.
13.
145.
13.
33.
10111111111111111111111111000000000000000000000000111111111111111111111111000000000000000000000000网络号网络号主机号为全0网络号网络地址A类地址默认子网掩码255.
0.
0.
0网络地址B类地址默认子网掩码255.
255.
0.
0网络地址C类地址默认子网掩码255.
255.
255.
0主机号为全0主机号为全0默认子网掩码1--126128--191192--223子网掩码是一个重要属性子网掩码是一个网络或一个子网的重要属性.
路由器在和相邻路由器交换路由信息时,必须把自己所在网络号和所对应的子网掩码告诉相邻路由器.
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码.
因为只有网络号的值和所对应的子网掩码这两个信息合起来才能唯一的确定真正的网络号.
下面我们来看一个例子.
141.
14.
01000000111111111111111111000000【例4-1】已知IP地址是141.
14.
72.
24,子网掩码是255.
255.
192.
0.
试求网络地址.
(a)点分十进制表示的IP地址(c)子网掩码是255.
255.
192.
000000000141.
14.
72.
24141.
14.
64.
0.
001001000141.
14.
.
24(b)IP地址的第3字节是二进制(d)IP地址与子网掩码逐位相与(e)网络地址(点分十进制表示)141.
14.
01000000111111111111111111100000【例4-2】在上例中,若子网掩码改为255.
255.
224.
0.
试求网络地址,讨论所得结果.
(a)点分十进制表示的IP地址(c)子网掩码是255.
255.
224.
000000000141.
14.
72.
24141.
14.
64.
0.
001001000141.
14.
.
24(b)IP地址的第3字节是二进制(d)IP地址与子网掩码逐位相与(e)网络地址(点分十进制表示)虽然网络地址的值相同,但这两个网络地址是不同的,因为他们的子网掩码不同.
使用子网掩码的分组转发过程在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事.
但在划分子网的情况下,从IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息.
因此分组转发的算法也必须做相应的改动.
(1)从收到的分组的首部提取目的IP地址D.
(2)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(3).
(3)对路由表中的每一行的子网掩码和D逐位相"与",若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(4).
(4)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(5).
(5)报告转发分组出错.
在划分子网的情况下路由器转发分组的算法0目的网络地址子网掩码下一跳128.
30.
33.
0128.
30.
33.
128128.
30.
36.
0255.
255.
255.
128255.
255.
255.
128255.
255.
255.
0接口0接口1R2128.
30.
33.
13源主机H1128.
30.
33.
1301R2子网2:网络地址128.
30.
33.
128子网掩码255.
255.
255.
128目的主机H2128.
30.
33.
13801128.
30.
33.
129H3128.
30.
36.
2子网3:网络地址128.
30.
36.
0子网掩码255.
255.
255.
0128.
30.
36.
12【例4-3】已知互联网和路由器R1中的路由表.
主机H1向H2发送分组.
试讨论R1收到H1向H2发送的分组后查找路由表的过程.
子网1:网络地址128.
30.
33.
0子网掩码255.
255.
255.
128128.
30.
33.
1128.
30.
33.
10目的网络地址子网掩码下一跳128.
30.
33.
0128.
30.
33.
128128.
30.
36.
0255.
255.
255.
128255.
255.
255.
128255.
255.
255.
0接口0接口1R2R1的路由表(未给出默认路由器)128.
30.
33.
13H1子网1:网络地址128.
30.
33.
0子网掩码255.
255.
255.
128128.
30.
33.
130R11R2子网2:网络地址128.
30.
33.
128子网掩码255.
255.
255.
128H2128.
30.
33.
13801128.
30.
33.
129H3128.
30.
36.
2子网3:网络地址128.
30.
36.
0子网掩码255.
255.
255.
0128.
30.
36.
12主机H1首先检查目的主机128.
30.
33.
138是否连接在本网络上如果是,则直接交付;否则,就送交路由器R1.
主机H1首先将本子网的子网掩码与分组的IP地址逐比特相"与"(AND操作)128.
30.
33.
128H1所在的子网络地址(128.
30.
33.
0)因此H1把分组路由到路由器R1然后由路由器R1间接转发128.
30.
33.
10目的网络地址子网掩码下一跳128.
30.
33.
0128.
30.
33.
128128.
30.
36.
0255.
255.
255.
128255.
255.
255.
128255.
255.
255.
0接口0接口1R2R1的路由表(未给出默认路由器)128.
30.
33.
13H1子网1:网络地址128.
30.
33.
0子网掩码255.
255.
255.
128128.
30.
33.
130R11R2子网2:网络地址128.
30.
33.
128子网掩码255.
255.
255.
128H2128.
30.
33.
13801128.
30.
33.
129H3128.
30.
36.
2子网3:网络地址128.
30.
36.
0子网掩码255.
255.
255.
0128.
30.
36.
12路由器R1再用路由表中第2个项目的子网掩码和128.
30.
33.
138逐比特AND操作128.
30.
33.
10目的网络地址子网掩码下一跳128.
30.
33.
0128.
30.
33.
128128.
30.
36.
0255.
255.
255.
128255.
255.
255.
128255.
255.
255.
0接口0接口1R2R1的路由表(未给出默认路由器)128.
30.
33.
13H1子网1:网络地址128.
30.
33.
0子网掩码255.
255.
255.
128128.
30.
33.
130R11R2子网2:网络地址128.
30.
33.
128子网掩码255.
255.
255.
128H2128.
30.
33.
13801128.
30.
33.
129H3128.
30.
36.
2子网3:网络地址128.
30.
36.
0子网掩码255.
255.
255.
0128.
30.
36.
12255.
255.
255.
128AND128.
30.
33.
138=128.
30.
33.
128=128.
30.
33.
128这表明子网2就是收到的分组所要寻找的目的网络4.
3.
2无分类编址CIDR划分子网在一定程度上缓解了因特网在发展中遇到的困难.
然而在1992年因特网仍然面临三个必须尽早解决的问题,这就是:B类地址在1992年已分配了近一半,眼看就要在1994年3月全部分配完毕!
因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个).
整个IPv4的地址空间最终将全部耗尽.
IP编址问题的演进1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码.
使用变长子网掩码VLSM(VariableLengthSubnetMask)可进一步提高IP地址资源的利用率.
在VLSM的基础上又进一步提出无分类编址方法,它的正式名字是无分类域间路由选择CIDR(ClasslessInter-DomainRouting).
CIDR最主要的特点CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间.
CIDR使用各种长度的"网络前缀"(network-prefix)来代替分类地址中的网络号和子网号.
IP地址从三级编址(使用子网掩码)又回到了两级编址.
无分类的两级编址无分类的两级编址的记法是:IP地址::={,}(4-3)CIDR(ClasslessInterDomainRouting)的"网络号"使用"斜线记法"(slashnotation),它又称为CIDR记法,即在IP地址后面加上一个斜线"/",然后写上网络号所占的位数.
我们把无分类地址的网络地址又叫做"CIDR地址块".
CIDR地址块128.
14.
32.
0/20表示的地址块共有212个地址.
128.
14.
32.
0/20地址块的最小地址是128.
14.
32.
0128.
14.
32.
0/20地址块的最大地址是128.
14.
47.
255全0和全1的主机号地址一般不使用.
128.
14.
32.
0/20表示的地址(212个地址)1000000000001110001000000000000010000000000011100010000000000001100000000000111000100000000000101000000000001110001000000000001110000000000011100010000000000100100000000000111000100000000001011000000000001110001011111111101110000000000011100010111111111100100000000000111000101111111111011000000000001110001011111111111010000000000011100010111111111111所有地址的20位前缀都是一样的CIDR记法的其他形式网络前缀的后面加一个星号*的表示方法如0000101000*,在星号*之前是网络前缀,而星号*表示IP地址中的主机号,可以是任意值.
构成超网前缀长度不超过23位的CIDR地址块都包含了多个C类地址.
这些C类地址合起来就构成了超网.
一个CIDR地址块可以表示很多传统的网络地址,这种网络地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由.
CIDR地址块划分举例因特网206.
0.
68.
0/22206.
0.
64.
0/18ISP大学X一系二系三系四系206.
0.
71.
128/26206.
0.
71.
192/26206.
0.
68.
0/25206.
0.
68.
128/25206.
0.
69.
0/25206.
0.
69.
128/25206.
0.
70.
0/26206.
0.
70.
64/26206.
0.
70.
128/26206.
0.
70.
192/26206.
0.
70.
0/24206.
0.
71.
0/25206.
0.
71.
0/26206.
0.
71.
64/26206.
0.
71.
128/25206.
0.
68.
0/23单位地址块二进制表示地址数ISP206.
0.
64.
0/1811001110.
00000000.
01*16384大学206.
0.
68.
0/2211001110.
00000000.
010001*1024一系206.
0.
68.
0/2311001110.
00000000.
0100010*512二系206.
0.
70.
0/2411001110.
00000000.
01000110.
*256三系206.
0.
71.
0/2511001110.
00000000.
01000111.
0*128四系206.
0.
71.
128/2511001110.
00000000.
01000111.
1*128CIDR地址块划分举例因特网206.
0.
68.
0/22206.
0.
64.
0/18ISP大学X一系二系三系四系206.
0.
71.
128/26206.
0.
71.
192/26206.
0.
68.
0/25206.
0.
68.
128/25206.
0.
69.
0/25206.
0.
69.
128/25206.
0.
70.
0/26206.
0.
70.
64/26206.
0.
70.
128/26206.
0.
70.
192/26206.
0.
70.
0/24206.
0.
71.
0/25206.
0.
71.
0/26206.
0.
71.
64/26206.
0.
71.
128/25206.
0.
68.
0/23这个ISP共有64个C类网络.
如果不采用CIDR技术,则在与该ISP连接的每一个路由器的路由表就需要有64个项目.
但采用地址聚合后,只需用路由聚合后的1个项目206.
0.
64.
0/18就能找到该ISP.
最长前缀匹配使用CIDR时,路由表中的每个项目由"网络前缀"和"下一跳地址"组成.
在查找路由表时可能会得到不止一个匹配结果.
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefixmatching).
网络前缀越长,其地址块就越小,因而路由就越具体(morespecific).
最长前缀匹配又称为最长匹配或最佳匹配.
最长前缀匹配举例收到的分组的目的地址D=206.
0.
71.
128路由表中的项目:206.
0.
68.
0/22(ISP)206.
0.
71.
128/25(四系)查找路由表中的第1个项目ANDD=206.
0.
01000111.
0第1个项目206.
0.
68.
0/22的掩码M有22个连续的1.
M=11111111.
11111111.
11111100.
00000000206.
0.
01000100(68).
0与206.
0.
68.
0/22匹配最长前缀匹配举例收到的分组的目的地址D=206.
0.
71.
128路由表中的项目:206.
0.
68.
0/22(ISP)206.
0.
71.
128/25(四系)再查找路由表中的第2个项目ANDD=206.
0.
71.
10000000第2个项目206.
0.
71.
128/25的掩码M有25个连续的1.
M=11111111111111111111111110000000206.
0.
71.
10000000与206.
0.
71.
128/25匹配最长前缀匹配DAND(11111111111111111111110000000000)=206.
0.
68.
0/22匹配DAND(11111111111111111111111110000000)=206.
0.
71.
128/25匹配选择两个匹配的地址中更具体的一个,即选择最长前缀的地址.
使用二叉线索查找路由表当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题.
为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找.
这里最常用的就是二叉树检索(binarytree).
IP地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址.
CIDR地址网络地址64.
0.
0.
0/4010080.
0.
0.
0/4010196.
0.
0.
0/3011160.
0.
0.
0/510110184.
0.
0.
0/510111默认地址路由器的路由表有5个网络,其网络地址用CIDR地址块来表示.
5个网络地址由二叉树的根节点到叶子节点的路径来表示.
假如有一目的IP为10000110000000000000000000000000的包到达该路由器,路由器通过二叉树查找,速度会很快.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6虚拟专用网VPN4.
7网络地址转换NAT(NetworkAddressTranslation)4.
4网际控制报文协议ICMP为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议ICMP(InternetControlMessageProtocol).
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告.
ICMP不是高层协议,而是IP层的协议.
ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去.
ICMP报文的格式首部ICMP报文0数据部分检验和类型代码(这4个字节取决于ICMP报文的类型)81631IP数据报前4个字节都是一样的ICMP的数据部分(长度取决于类型)ICMP报文的种类ICMP报文的前4个字节是统一的格式,有三个字段:类型、代码和检验和.
后四个字节取决于报文的类型.
ICMP报文的有两大类:ICMP差错报告报文和ICMP询问报文.
报文种类类型值ICMP报文类型差错报告报文3终点不可达4抑制源点11超时12参数问题5改变路径询问报文8或0回送请求或应答13或14时间戳请求或回答ICMP差错报告报文共有5种终点不可达源点抑制(Sourcequench)时间超过参数问题改变路由(重定向)(Redirect)ICMP差错报告报文的数据字段的内容首部IP数据报ICMP的前8字节IP数据报首部路由器发送的装入有ICMP差错报文的IP数据报8字节IP数据报首部8字节ICMP差错报告报文IP数据报的数据字段路由器收到的IP数据报路由器发送的ICMP差错报告报文不应发送ICMP差错报告报文的几种情况对ICMP差错报告报文不再发送ICMP差错报告报文.
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文.
对具有多播地址的数据报都不发送ICMP差错报告报文.
对具有特殊地址(如127.
0.
0.
0或0.
0.
0.
0)的数据报不发送ICMP差错报告报文.
Traceroute的应用举例Traceroute使用了时间超过差错报告报文ICMP询问报文有两种回送请求和回答报文ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问.
收到此报文的机器必须给源主机发送ICMP回送应答报文.
这种询问报文用来测试目的站是否可达以及了解其有关状态.
ICMP询问报文有两种时间戳请求和回答报文ICMP时间戳请求允许系统向另一个系统查询当前的时间.
该ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间只能提供秒级的分辨率.
请求端填写发起时间,然后发送报文.
应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳.
PING的应用举例PING(PacketInterNetGroper)PING使用了ICMP回送请求与回送回答报文.
我们可以用tracert来验证一下网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6虚拟专用网VPN4.
7网络地址转换NAT(NetworkAddressTranslation)4.
5路由协议路由器的作用连接不同网络,根据IP数据包的目的地址将IP数据包路由到相应的网络.
具体的做法是根据查找建立的路由表,来路由IP数据包.
路由协议就是解决如何建立路由表的算法.
4.
5.
1有关路由协议的几个基本概念理想的路由算法算法必须是正确的和完整的.
算法在计算上应简单.
算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性.
算法应具有较好的收敛速度.
算法应是最佳的.
路由选择是个非常复杂的问题它是网络中的所有结点共同协调工作的结果.
路由选择的环境往往是不断变化的,而这种变化有时无法事先知道.
互联网的规模非常的大,而且还在快速增长.
因特网采用分层次的路由选择协议因特网的规模非常大.
如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间.
而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和.
许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上.
自治系统AS(AutonomousSystem)自治系统AS的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由.
现在对自治系统AS的定义是强调下面的事实:尽管各个AS使用了不同的内部路由选择协议和度量,但重要的是AS与AS之间表现出的是一个单一的和一致的路由选择策略.
因特网有两大类路由选择协议内部网关协议IGP(InteriorGatewayProtocol)即在一个自治系统内部使用的路由选择协议.
目前这类路由选择协议使用得最多,如RIP和OSPF协议.
外部网关协议EGP(ExternalGatewayProtocol)若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要知道将数据包应经过那些AS才能到达目的AS.
如何知道就是外部网关协议EGP叫解决的问题.
在外部网关协议中目前使用最多的是BGP-4.
自治系统、内部网关协议和外部网关协议之间的关系用内部网关协议(例如,RIP)自治系统B自治系统A用外部网关协议(例如,BGP-4)R1R2用内部网关协议(例如,OSPF)在自治系统内部的路由选择协议叫做内部网关协议IGP(InteriorGatewayProtocol),自治系统之间的路由选择协议叫做外部网关协议EGP(ExternalGatewayProtocol).
4.
5.
2内部网关协议RIP(RoutingInformationProtocol)基本概念路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议.
RIP是一种分布式的基于距离向量的路由选择协议.
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录.
"距离"的定义从一路由器到直接连接的网络的距离定义为1.
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1.
RIP协议中的"距离"也称为"跳数"(hopcount),因为每经过一个路由器,跳数就加1.
这里的"距离"实际上指的是"最短距离".
"距离"的定义RIP认为一个好的路由就是它通过的路由器的数目少,即"距离短".
RIP允许一条路径最多只能包含15个路由器.
"距离"的最大值为16时即相当于不可达.
可见RIP只适用于小型互联网.
RIP不能在两个网络之间同时使用多条路由.
RIP选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由.
RIP协议的三个要点仅和相邻路由器交换信息.
交换的信息是当前本路由器所知道的全部信息,即自己的路由表.
按固定的时间间隔交换路由信息,例如,每隔30秒.
路由表的建立路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1).
以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息.
经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址.
RIP协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程.
距离向量算法收到相邻路由器(其地址为X)的一个RIP报文:(1)先修改此RIP报文中的所有项目:把"下一跳"字段中的地址都改为X,并把所有的"距离"字段的值加1.
(2)对修改后的RIP报文中的每一个项目,重复以下步骤:若项目中的目的网络不在路由表中,则把该项目加到路由表中.
否则若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目.
否则若收到项目中的距离小于路由表中的距离,则进行更新,否则,什么也不做.
(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达).
(4)返回.
路由器之间交换信息RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少).
最终所有的路由器都拥有了到达自治系统的全部网络的路由信息,但它只知道下一跳路由器,而不知道整个路径.
RIP2协议的报文格式4字节RIP报文路由信息(20字节/路由)可重复出现最多25个IP数据报路由标记网络地址地址族标识符距离(1-16)IP首部UDP首部首部路由部分必为0版本命令4字节子网掩码下一跳路由器地址UDP用户数据报RIP2的报文由首部和路由部分组成RIP2报文中的路由部分由若干个路由信息组成.
每个路由信息需要用20个字节.
地址族标识符(又称为地址类别)字段用来标志所使用的地址协议.
路由标记填入自治系统的号码,这是考虑使RIP有可能收到本自治系统以外的路由选择信息.
再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离.
RIP协议的优缺点RIP协议最大的优点就是实现简单,开销较小.
RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器,对坏消息反应迟缓.
RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达).
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加.
RIP对坏消息反应迟缓正常情况ABCDE1234RIP对坏消息反应迟缓到A的链路断开ABCDE1234第一轮的广播ABCDE3234第二轮的广播ABCDE3434RIP对坏消息反应迟缓第三轮的广播ABCDE5454第四轮的广播ABCDE5656第五轮的广播ABCDE7676这样不断更新下去,直到它们到网A的距离都增大到16时,它们才知道A是不可达的.
RIP对坏消息反应迟缓原因:只向邻节点发送"它到目的网络的距离",而不发送(或发送了,但路由器忽略)它获得该信息的来源.
这些路由表项存在着"二手信息","三手信息",而对这些信息有些是过时的,或是错误.
这些过时的信息的传播造成了在网络出现故障时,路由表收敛慢的结果.
为了解决这个问题,另一个路由协议(开放最短路径优先)被提出来了.
4.
5.
3内部网关协议OSPF(OpenShortestPathFirst)OSPF协议的基本特点"开放"表明OSPF协议不是受某一家厂商控制,而是公开发表的.
"最短路径优先"是因为使用了Dijkstra提出的最短路径算法SPFOSPF只是一个协议的名字,它并不表示其他的路由选择协议不是"最短路径优先".
它是分布式的链路状态协议.
链路状态协议每个路由器负责收集"一手资料"(即到邻居节点的开销).
每个路由器寻找其邻居节点,并获取邻居节点的地址.
计算其到邻居节点的延时和开销.
每个路由器仅向全网发送自己的"一手资料"(即到邻居节点的开销).
每个路由器构造包涵邻居节点信息的路由分组包.
以广播的方式发送该分组包到网络中的所有路由器.
每个路由器使用自己"一手资料"和其他路由器的"一手资料"采用Djikstra算法计算整个网络的各个节点的最短路径.
每个路由器根据自己接收到的其他路由的分组包,计算出到整个网络各个节点的最短路径.
OSPF的区域(area)为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫作区域.
每一个区域都有一个32位的区域标识符(用点分十进制表示).
区域也不能太大,在一个区域内的路由器最好不超过200个.
OSPF划分为两种不同的区域区域0.
0.
0.
1区域0.
0.
0.
3主干区域0.
0.
0.
0至其他自治系统R9R7R6R5R4R3R2R1网8网6网3网2网1网7区域0.
0.
0.
2网4网5R8划分区域划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量.
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况.
OSPF使用层次结构的区域划分.
在上层的区域叫作主干区域(backbonearea).
主干区域的标识符规定为0.
0.
0.
0.
主干区域的作用是用来连通其他在下层的区域.
主干路由器区域0.
0.
0.
1区域0.
0.
0.
3主干区域0.
0.
0.
0至其他自治系统R9R7R6R5R4R3R2R1网8网6网3网2网1网7区域0.
0.
0.
2网4网5R8区域边界路由器区域0.
0.
0.
1区域0.
0.
0.
3主干区域0.
0.
0.
0至其他自治系统R9R7R6R5R4R3R2R1网8网6网3网2网1网7区域0.
0.
0.
2网4网5R8OSPF直接用IP数据报传送OSPF不用UDP而是直接用IP数据报传送.
OSPF构成的数据报很短.
这样做可减少路由信息的通信量.
数据报很短的另一好处是可以不必将长的数据报分片传送.
分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传.
OSPF的其他特点OSPF对不同的链路可根据IP分组的不同服务类型TOS而设置成不同的代价.
因此,OSPF对于不同类型的业务可计算出不同的路由.
如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径.
这叫作多路径间的负载平衡.
所有在OSPF路由器之间交换的分组都具有鉴别的功能.
支持可变长度的子网划分和无分类编址CIDR.
每一个链路状态都带上一个32位的序号,序号越大状态就越新.
OSPF分组IP数据报IP数据报首部OSPF分组OSPF分组首部类型1至类型5的OSPF分组24字节081631版本路由器标识符类型分组长度检验和鉴别位鉴别区域标识符鉴别类型OSPF的五种分组类型类型1,问候(Hello)分组.
类型2,数据库描述(DatabaseDescription)分组.
类型3,链路状态请求(LinkStateRequest)分组.
类型4,链路状态更新(LinkStateUpdate)分组,用洪泛法对全网更新链路状态.
类型5,链路状态确认(LinkStateAcknowledgment)分组.
OSPF的基本操作确定可达性OSPF使用的是可靠的洪泛法更新报文tACK报文RRRRt1t2t3t4OSPF的特点OSPF由于只传播可靠的"一手资料"(即只涉及到与相邻路由器的连通状态),因此没有"坏消息传播得慢"的问题,据统计,其响应网络变化的时间小于100ms.
OSPF还规定每隔一段时间,如30分钟,要刷新一次数据库中的链路状态.
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系.
因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多.
指定的路由器(designatedrouter)多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少.
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息.
4.
5.
4外部网关协议BGPBGP是不同自治系统的路由器之间交换路由信息的协议.
BGP较新版本是2006年1月发表的BGP-4(BGP第4个版本),即RFC4271~4278.
可以将BGP-4简写为BGP.
BGP的路由目标不同边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由.
当一条路径通过几个不同AS时,要想对这样的路径计算出有意义的代价是不太可能的.
比较合理的做法是在AS之间交换"可达性"信息.
BGP发言人(BGPspeaker)每一个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人".
一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器.
BGP交换路由信息一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息.
使用TCP连接能提供可靠的服务,也简化了路由选择协议.
使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站或对等站.
BGP发言人(BGPspeaker)BGP发言人BGP发言人BGP发言人BGP发言人BGP发言人AS1AS3AS2AS5AS4AS的连通图举例BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS.
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由.
BGP发言人交换路径向量主干网(AS1)地区ISP(AS2)地区ISP(AS3)本地ISP(AS6)N5本地ISP(AS7)N6,N7自治系统AS2的BGP发言人通知主干网的BGP发言人:"要到达网络N1,N2,N3和N4可经过AS2.
"BGP发言人交换路径向量主干网(AS1)地区ISP(AS2)地区ISP(AS3)本地ISP(AS4)N1,N2本地ISP(AS5)N3,N4主干网还可发出通知:"要到达网络N5,N6和N7可沿路径(AS1,AS3).
"BGP协议的特点BGP协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多.
每一个自治系统中BGP发言人(或边界路由器)的数目是很少的.
这样就使得自治系统之间的路由选择不致过分复杂.
BGP协议的特点BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列.
在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表.
但以后只需要在发生变化时更新有变化的部分.
这样做对节省网络带宽和减少路由器的处理开销方面都有好处.
BGP-4共使用四种报文(1)打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系.
(2)更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由.
(3)保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系.
(4)通知(NOTIFICATION)报文,用来发送检测到的差错.
在RFC2918中增加了ROUTE-REFRESH报文,用来请求对等端重新通告.
BGP报文具有通用的首部BGP报文通用首部字节1621BGP报文主体部分类型长度标记TCP首部IP首部BGP报文TCP报文4.
5.
5路由器在网际互连中的作用路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组.
也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器.
下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止.
典型的路由器的结构课件制作人:谢希仁路由选择路由选择处理机路由选择协议路由表3输入端口3交换结构输入端口输出端口分组转发转发表分组处理输出端口……11133122223——网络层2——数据链路层1——物理层"转发"和"路由选择"的区别"转发"(forwarding)就是路由器根据转发表将用户的IP数据报从合适的端口转发出去.
"路由选择"(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由.
路由表是根据路由选择算法得出的.
而转发表是从路由表得出的.
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别.
输入端口对线路上收到的分组的处理数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理.
这会产生一定的时延.
物理层处理数据链路层处理网络层处理分组排队交换结构输入端口的处理从线路接收分组查表和转发输出端口将交换结构传送来的分组发送到线路当交换结构传送过来的分组先进行缓存.
数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路.
物理层处理数据链路层处理网络层处理分组排队输出端口的处理向线路发送分组缓存管理交换结构分组丢弃若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃.
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6IP多播4.
7虚拟专用网VPN4.
8网络地址转换NAT(NetworkAddressTranslation)4.
9IPv64.
6.
1IP多播的基本概念共有90个主机接收视频节目R1R3R4R2视频服务器M………30个30个30个30个30个30个90个不使用多播时需要发送90次单播多播可明显地减少网络中资源的消耗多播1个1个多播多播多播组成员共有90个R1R3R4R2视频服务器M………1个1个1个1个1个发送1次多播复制IP多播的一些特点多播使用组地址——IP使用D类地址支持多播.
多播地址只能用于目的地址,而不能用于源地址.
它的范围是224.
0.
0.
0-239.
255.
255.
255.
动态的组成员.
永久组地址——由因特网号码指派管理局IANA负责指派.
224.
0.
0.
0基地址.
224.
0.
0.
1在本地子网上的所有参加多播的主机和路由器.
224.
0.
0.
2在本地子网上的所有参加多播的路由器.
4.
6.
2在局域网上进行硬件多播因特网号码指派管理局IANA分配以太网地址块的前3个字节.
因此TCP/IP协议使用的以太网多播地址块的范围是:从01-00-5E-00-00-00到01-00-5E-FF-FF-FFD类IP地址可供分配的有28位,在这28位中的前5位不能用来构成以太网硬件地址.
D类IP地址与以太网多播地址的映射关系0000000000000001010111100111008162431D类IP地址这5位不使用48位以太网地址01005E表示多播最低23位来自D类IP地址4.
6.
3网际组管理协议IGMP和多播路由选择协议1.
IP多播需要两种协议为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP(InternetGroupManagementProtocol).
连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员.
这就需要使用多播路由选择协议.
IGMP使多播路由器知道多播组成员信息128.
56.
24.
34135.
27.
74.
52130.
12.
14.
56130.
12.
14.
43多播组226.
15.
37.
123IGMPIGMPIGMPIGMPR1R4R3R2IGMP的本地使用范围IGMP并非在因特网范围内对所有多播组成员进行管理的协议.
IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上.
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组.
多播路由选择协议比单播路由选择协议复杂得多多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化).
请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由.
多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去.
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络.
2.
网际组管理协议IGMP1989年公布的RFC1112(IGMPv1)早已成为了因特网的标准协议.
1997年公布的RFC2236(IGMPv2,建议标准)对IGMPv1进行了更新.
2002年10月公布了RFC3376(IGMPv3,建议标准),宣布RFC2236(IGMPv2)是陈旧的.
IGMP是整个网际协议IP的一个组成部分和ICMP相似,IGMP使用IP数据报传递其报文(即IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务.
因此,我们不把IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分.
IGMP是整个网际协议IP的一个组成部分第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP报文,声明自己要成为该组的成员.
本地的多播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他多播路由器.
IGMP可分为两个阶段第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员.
只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的.
但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器.
IGMP采用的一些具体措施在主机和多播路由器之间的所有通信都是使用IP多播.
多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文.
默认的询问速率是每125秒发送一次.
当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系.
IGMP采用的一些具体措施(续)在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认值为10秒).
当收到询问时,主机在0到N之间随机选择发送响应所需经过的时延.
对应于最小时延的响应最先发送.
同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了.
3.
多播路由选择多播路由选择协议尚未标准化.
一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组.
多播路由选择实际上就是要找出以源主机为根结点的多播转发树.
在多播转发树上的路由器不会收到重复的多播数据报.
对不同的多播组对应于不同的多播转发树.
同一个多播组,对不同的源点也会有不同的多播转发树.
转发多播数据报使用的方法(1)洪泛与剪除这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的.
一开始,路由器转发多播数据报使用洪泛的方法(这就是广播).
为了避免兜圈子,采用了叫做反向路径广播RPB(ReversePathBroadcasting)的策略.
RPB的要点路由器收到多播数据报时,先检查是否从源点经最短路径传送来的.
若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发.
如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小.
源点R3R4R6R7R8R1R5R2转发多播数据报收到后即丢弃反向路径广播RPB和剪除(2)基于核心的发现技术这种方法对于多播组的大小在较大范围内变化时都适合.
这种方法是对每一个多播组G指定一个核心(core)路由器,给出它的IP单播地址.
核心路由器按照前面讲过的方法创建出对应于多播组G的转发树.
(2)基于核心的发现技术(续)如果有一个路由器R1由向组播组G的一个路由器R2发送数据包.
当数据包到达组播组G的路由器R2时,如果R1发送的是一个多播数据包,其目的地址是G的组地址,路由器R2就向多播组G转发该数据包.
如果R1发送的是一个请求加入多播组G的数据包,R2就把它加到它的路由中,并用隧道技术将R1转发每一个副本.
核心R2R1几种多播路由选择协议距离向量多播路由选择协议DVMRP(DistanceVectorMulticastRoutingProtocol)基于核心的转发树CBT(CoreBasedTree)开放最短通路优先的多播扩展MOSPF(MulticastExtensionstoOSPF)协议无关多播-稀疏方式PIM-SM(ProtocolIndependentMulticast-SparseMode)协议无关多播-密集方式PIM-DM(ProtocolIndependentMulticast-DenseMode)网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6IP多播4.
7虚拟专用网VPN4.
8网络地址转换NAT(NetworkAddressTranslation)4.
9IPv64.
7虚拟专用网VPN本地地址——仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向因特网的管理机构申请.
全球地址——全球唯一的IP地址,必须向因特网的管理机构申请.
RFC1918指明的专用地址(privateaddress)10.
0.
0.
0到10.
255.
255.
255172.
16.
0.
0到172.
31.
255.
255192.
168.
0.
0到192.
168.
255.
255这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信.
专用地址只能用作本地地址而不能用作全球地址.
在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发.
用隧道技术实现虚拟专用网部门A因特网部门BR1R2隧道使用隧道技术本地地址本地地址全球地址网络地址=10.
1.
0.
0(本地地址)网络地址=10.
2.
0.
0(本地地址)用隧道技术实现虚拟专用网部门A因特网部门BR1R2隧道使用隧道技术加密的从X到Y的内部数据报外部数据报的数据部分源地址:125.
1.
2.
3目的地址:194.
4.
5.
6数据报首部远程接入VPN(remoteaccessVPN)有的公司可能没有分布在不同场所的部门,但有很多流动员工在外地工作.
公司需要和他们保持联系,远程接入VPN可满足这种需求.
在外地工作的员工拨号接入因特网,而驻留在员工PC机中的VPN软件可在员工的PC机和公司的主机之间建立VPN隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6IP多播4.
7虚拟专用网VPN4.
8网络地址转换NAT(NetworkAddressTranslation)4.
9IPv64.
8网络地址转换NAT(NetworkAddressTranslation)网络地址转换NAT方法于1994年提出.
需要在专用网连接到因特网的路由器上安装NAT软件.
装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球地址IPG.
所有使用本地地址的主机在和外界通信时都要在NAT路由器上将其本地地址转换成IPG才能和因特网连接.
网络地址转换的过程内部主机X用本地地址IPX和因特网上主机Y通信所发送的数据报必须经过NAT路由器.
NAT路由器将数据报的源地址IPX转换成全球地址IPG,但目的地址IPY保持不变,然后发送到因特网.
NAT路由器收到主机Y发回的数据报时,知道数据报中的源地址是IPY而目的地址是IPG.
根据NAT转换表,NAT路由器将目的地址IPG转换为IPX,转发给最终的内部主机X.
网络地址转换的过程部门A因特网R1源IP=10.
0.
0.
1源portID=xx源IP=198.
60.
42.
12源portID=1源IP=10.
0.
0.
1源portID=xx源IP=198.
60.
42.
12源portID=1查表IndexContext1源IP=10.
0.
0.
1源portID=xx2198.
60.
42.
12网络地址转换的过程的特点显然,通过NAT路由的通信必须是由专用网络内部发起的.
因为NAT路由表是内部主机动态发起传送时动态建立的.
外部主机并不知道.
普通路由器在转发分组时,是工作在网络层.
但NAT路由器还要查看传输层的端口号,而这本来是传输层的范畴.
正因为这样,NAT收到了一些人的批评,认为NAT没有按照网络的体系结构来构建.
网络层4.
1网络层的设计问题4.
2网际协议IP4.
3三级网络划分与无类别域间路由(CIDR)4.
4网际控制报文协议4.
5路由协议4.
6IP多播4.
7虚拟专用网VPN4.
8网络地址转换NAT(NetworkAddressTranslation)4.
9IPv64.
9下一代的网际协议IPv6(IPng)4.
9.
1解决IP地址耗尽的根本措施因特网经过几十年的飞速发展,到2011年2月,IPv4的地址已经耗尽,ISP已经不能再申请到新的IP地址块了.
解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6.
IETF早在1992年6月就提出要制定下一代的IP,即IPng(IPNextGeneration).
IPng现正式称为IPv6.
1998年12月发表的RFC2460~2463已成为因特网草案标准协议.
4.
9.
2IPv6的基本首部IPv6仍支持无连接的传送,所引进的主要变化如下:更大的地址空间.
IPv6将地址从IPv4的32位增大到了128位.
扩展的地址层次结构.
灵活的首部格式.
改进的选项.
允许协议继续扩充.
支持即插即用(即自动配置)支持资源的预分配.
IPv6数据报的首部IPv6将首部长度变为固定的40字节,称为基本首部(baseheader).
将不必要的功能取消了,首部的字段数减少到只有8个.
取消了首部的检验和字段,加快了路由器处理数据报的速度.
在基本首部的后面允许有零个或多个扩展首部.
所有的扩展首部和数据合起来叫做数据报的有效载荷(payload)或净负荷.
IPv6数据报的一般形式基本首部扩展首部1扩展首部N…数据部分选项IPv6数据报有效载荷041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24有效载荷(扩展首部/数据)IPv6的基本首部(40B)IPv6的有效载荷(至64KB)041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位t)有效载荷长度跳数限制24扩展首部/数据IPv6的基本首部(40B)IPv6的有效载荷(至64KB)有效载荷(扩展首部/数据)041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B版本(version)——4位.
它指明了协议的版本,对IPv6该字段总是6.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B通信量类(trafficclass)——8位.
这是为了区分不同的IPv6数据报的类别或优先级.
目前正在进行不同的通信量类性能的实验.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B流标号(flowlabel)——20位.
"流"是互联网络上从特定源点到特定终点的一系列数据报,"流"所经过的路径上的路由器都保证指明的服务质量.
所有属于同一个流的数据报都具有同样的流标号.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B有效载荷长度(payloadlength)——16位.
它指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是64KB.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B下一个首部(nextheader)——8位.
它相当于IPv4的协议字段或可选字段.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B跳数限制(hoplimit)——8位.
源站在数据报发出时即设定跳数限制.
路由器在转发数据报时将跳数限制字段中的值减1.
当跳数限制的值为零时,就要将此数据报丢弃.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B源地址——128位.
是数据报的发送站的IP地址.
041631版本位目的地址源地址下一个首部流标号12通信量类(128位)(128位)有效载荷长度跳数限制24IPv6的基本首部40B目的地址——128位.
是数据报的接收站的IP地址.
4.
8.
3IPv6的扩展首部1.
扩展首部及下一个首部字段IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理.
数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部).
这样就大大提高了路由器的处理效率.
六种扩展首部在RFC2460中定义了六种扩展首部:逐跳选项路由选择分片鉴别封装安全有效载荷目的站选项IPv6的扩展首部有效载荷有效载荷基本首部下一个首部=TCP/UDP基本首部下一个首部=路由选择路由选择首部下一个首部=分片分片首部下一个首部=TCP/UDPTCP/UDP首部和数据(TCP/UDP报文段)TCP/UDP首部和数据(TCP/UDP报文段)无扩展首部有扩展首部2.
扩展首部举例IPv6把分片限制为由源站来完成.
源站可以采用保证的最小MTU(1280字节),或者在发送数据前完成路径最大传送单元发现(PathMTUDiscovery),以确定沿着该路径到目的站的最小MTU.
分片扩展首部的格式如下:0291631位下一个首部片偏移8标识符保留保留M扩展首部举例IPv6数据报的有效载荷长度为3000字节.
下层的以太网的最大传送单元MTU是1500字节.
分成三个数据报片,两个1400字节长,最后一个是200字节长.
IPv6基本首部分片首部1第一个分片1400字节IPv6基本首部分片首部2第二个分片1400字节IPv6基本首部分片首部3第三个分片200字节扩展首部用隧道技术来传送长数据报当路径途中的路由器需要对数据报进行分片时,就创建一个全新的数据报,然后将这个新的数据报分片,并在各个数据报片中插入扩展首部和新的基本首部.
路由器将每个数据报片发送给最终的目的站,而在目的站将收到的各个数据报片收集起来,组装成原来的数据报,再从中抽取出数据部分.
10.
1.
4IPv6的地址空间1.
地址的类型与地址空间IPv6数据报的目的地址可以是以下三种基本类型地址之一:(1)单播(unicast)单播就是传统的点对点通信.
(2)多播(multicast)多播是一点对多点的通信.
(3)任播(anycast)这是IPv6增加的一种类型.
任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个.
结点与接口IPv6将实现IPv6的主机和路由器均称为结点.
IPv6地址是分配给结点上面的接口.
一个接口可以有多个单播地址.
一个结点接口的单播地址可用来唯一地标志该结点.
冒号十六进制记法(colonhexadecimalnotation)每个16位的值用十六进制值表示,各值之间用冒号分隔.
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF零压缩(zerocompression),即一连串连续的零可以为一对冒号所取代.
FF05:0:0:0:0:0:0:B3可以写成:FF05::B3点分十进制记法的后缀0:0:0:0:0:0:128.
10.
2.
1再使用零压缩即可得出:::128.
10.
2.
1CIDR的斜线表示法仍然可用.
60位的前缀12AB00000000CD3可记为:12AB:0000:0000:CD30:0000:0000:0000:0000/60或12AB::CD30:0:0:0:0/60或12AB:0:0:CD30::/602.
地址空间的分配IPv6将128位地址空间分为两大部分.
第一部分是可变长度的类型前缀,它定义了地址的目的.
第二部分是地址的其余部分,其长度也是可变的.
类型前缀地址的其他部分长度可变长度可变128位3.
特殊地址未指明地址这是16字节的全0地址,可缩写为两个冒号"::".
这个地址只能为还没有配置到一个标准的IP地址的主机当作源地址使用.
环回地址即0:0:0:0:0:0:0:1(记为::1).
基于IPv4的地址前缀为00000000保留一小部分地址作为与IPv4兼容的.
本地链路单播地址前缀为00000000的地址前缀为00000000是保留一小部分地址与IPv4兼容的,这是因为必须要考虑到在比较长的时期IPv4和IPv6将会同时存在,而有的结点不支持IPv6.
因此数据报在这两类结点之间转发时,就必须进行地址的转换.
0000.
0000FFFFIPv4地址80位16位32位IPv4映射的IPv6地址4.
全球单播地址的等级结构IPv6扩展了地址的分级概念,使用以下三个等级:(1)全球路由选择前缀,占48位.
(2)子网标识符,占16位.
(3)接口标识符,占64位.
第一级第三级接口标识符(64位)子网标识符(16位)第二级全球路由选择前缀(48位)位048641274.
8.
5从IPv4向IPv6过渡向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容.
IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由.
双协议栈(dualstack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有两个协议栈,一个IPv4和一个IPv6.
IPv4网络IPv6IPv6ABCDEF…IPv4数据报IPv4数据报IPv4网络IPv6IPv6ABEF隧道源地址:B目的地址:EIPv6数据报双协议栈IPv6/IPv4双协议栈IPv6/IPv4双协议栈IPv6/IPv4双协议栈IPv6/IPv4IPv4网络流标号:X源地址:A目的地址:F……数据部分IPv6数据报流标号:X源地址:A目的地址:F……数据部分IPv6数据报源地址:B目的地址:EIPv6数据报使用隧道技术从IPv4到IPv6过渡本章作业1、设某路由器建立了如下路由表:目的网络子网掩码下一跳128.
96.
39.
0255.
255.
255.
128接口m0128.
96.
39.
128255.
255.
255.
128接口m1128.
96.
40.
0255.
255.
255.
128R2192.
4.
153.
0255.
255.
255.
192R3默认---R4本章作业现收到5个分组,其目的地址分别为:128.
96.
39.
10128.
96.
40.
12128.
96.
40.
151192.
4.
153.
17192.
4.
153.
90试分别计算其下一跳.
本章作业2.
如下图网络:本章作业图中各设备的名称和地址如下表:设备名标号MAC地址IP地址子网掩码主机1H1MAC_H1202.
117.
112.
2255.
255.
255.
128主机2H2MAC_H2202.
117.
112.
3255.
255.
255.
128主机3H3MAC_H3202.
117.
112.
130255.
255.
255.
128主机4H4MAC_H4202.
117.
112.
131255.
255.
255.
128路由器端口1P1MAC_P1202.
117.
112.
1255.
255.
255.
128路由器端口2P2MAC_P2202.
117.
112.
129255.
255.
255.
128本章作业路由器R1中的路由表如下当主机H1要向H3发送一个IP分组p时,p的转发过程如下(假设所有的端口已经完成了ARP地址映射):目的网络地址子网掩码下一跳202.
117.
112.
0255.
255.
255.
128P1202.
117.
112.
128255.
255.
255.
128P2本章作业H1生成分组p,其源IP地址为,目的IP地址为,H1将分组p的目的IP地址与255.
255.
255.
128逐位相"与",发现结果不等于H1的网络地址202.
117.
112.
0,因此H1将分组p封装到一个以太网帧F1中,以太网帧F1的源MAC地址为,目的MAC地址为,分组p的源IP地址为202.
117.
112.
2,目的IP地址为.
本章作业当路由器R1收到分组p后,将202.
117.
112.
130与255.
255.
255.
128逐位相"与",发现结果等于,因此将分组p封装到一个以太网帧F2中进行直接发送,以太网帧F2的源MAC地址为,目的MAC地址为,分组p的源IP地址为,目的IP地址为.
本章作业3、一个自治系统有5个局域网,其连接图如下图所示.
LAN2至LAN5网的主机数分别为:91、150、3和15.
该自治系统分配到的IP地址块为30.
138.
118.
0/23.
试给出每一个局域网的地址块.
DogYun是一家2019年成立的国人主机商,提供VPS和独立服务器租用等,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等,其中VPS包括常规VPS(经典云)和按小时计费VPS(动态云),使用自行开发的面板和管理系统,支持自定义配置,动态云各个硬件独立按小时计费,带宽按照用户使用量计费(不使用不计费)或者购买流量包,线路也可以自行切换。目前商家发布了6.18促销方案,新购动态云7折,经...
Pia云商家在前面有介绍过一次,根据市面上的信息是2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台。这个云服务商家主要销售云服务器VPS主机业务和服务,云服务器采用KVM虚拟架构 。目前涉及的机房有美国洛杉矶、中国香港和深圳地区。洛杉矶为crea机房,三网回程CN2 GIA,自带20G防御。中国香港机房的线路也是CN2直连大陆,比较适合建站或者有游戏业务需求的用户群。在这篇文章中,简...
博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...