目录
[三.分类的 IP 地址](#三.分类的 IP 地址)
[1. IP 地址及其表示方法](#1. IP 地址及其表示方法)
[2.IP 地址的编址方法](#2.IP 地址的编址方法)
[3.分类 IP 地址](#3.分类 IP 地址)
[(1)IP 地址中的网络号字段和主机号字段](#(1)IP 地址中的网络号字段和主机号字段)
[(3)常用的三类IP 地址](#(3)常用的三类IP 地址)
[(4)IP 地址的一些重要特点](#(4)IP 地址的一些重要特点)
[4.IP 地址与硬件地址](#4.IP 地址与硬件地址)
[5.地址解析协议 ARP(Address Resolution Protocol)](#5.地址解析协议 ARP(Address Resolution Protocol))
[(1)ARP 高速缓存的作用](#(1)ARP 高速缓存的作用)
[(1)使用 ARP 的四种典型情况](#(1)使用 ARP 的四种典型情况)
[6.IP 数据报的格式](#6.IP 数据报的格式)
[反码算术运算求和 举例:](#反码算术运算求和 举例:)
[IP 头部及其校验举例:](#IP 头部及其校验举例:)
[7.IP 层转发分组的流程](#7.IP 层转发分组的流程)
[(3)默认路由(default route)](#(3)默认路由(default route))
[1.三级的 IP 地址](#1.三级的 IP 地址)
[(1)IP 地址的各字段和子网掩码](#(1)IP 地址的各字段和子网掩码)
[(5)无分类编址 CIDR](#(5)无分类编址 CIDR)
[五.网际控制报文协议 ICMP](#五.网际控制报文协议 ICMP)
[1.ICMP 报文的格式(不用背)](#1.ICMP 报文的格式(不用背))
[2.ICMP 报文的种类](#2.ICMP 报文的种类)
[(1)ICMP 差错报告报文共有 5 种:始 终超参路](#(1)ICMP 差错报告报文共有 5 种:始 终超参路)
[(2)ICMP 差错报告报文的数据字段的内容](#(2)ICMP 差错报告报文的数据字段的内容)
[(3)不应发送 ICMP 差错报告报文的几种情况](#(3)不应发送 ICMP 差错报告报文的几种情况)
[(4)ICMP 询问报文有两种](#(4)ICMP 询问报文有两种)
[(1) 理想的路由算法](#(1) 理想的路由算法)
[2. 分层次的路由选择协议](#2. 分层次的路由选择协议)
[(1)自治系统 AS (Autonomous System)](#(1)自治系统 AS (Autonomous System))
[3.内部网关协议------路由信息协议 RIP (Routing Information Protocol)](#3.内部网关协议——路由信息协议 RIP (Routing Information Protocol))
[(3)RIP 协议的三个要点](#(3)RIP 协议的三个要点)
[(5)RIP 协议的优缺点](#(5)RIP 协议的优缺点)
[4.内部网关协议------开放最短路径优先 OSPF(Open Shortest Path First)](#4.内部网关协议——开放最短路径优先 OSPF(Open Shortest Path First))
[(1)OSPF 协议的基本特点](#(1)OSPF 协议的基本特点)
[(3)OSPF 的区域(area)](#(3)OSPF 的区域(area))
[(4)OSPF 直接用 IP 数据报传送](#(4)OSPF 直接用 IP 数据报传送)
[(5)OSPF 的其他特点](#(5)OSPF 的其他特点)
[(6)OSPF 的五种分组类型](#(6)OSPF 的五种分组类型)
[(7)OSPF 使用的是可靠的洪泛法](#(7)OSPF 使用的是可靠的洪泛法)
[5.外部网关协议 BGP(Border Gateway Protocol)](#5.外部网关协议 BGP(Border Gateway Protocol))
[(1)BGP 使用的环境却不同](#(1)BGP 使用的环境却不同)
[(2)BGP 发言人 (BGP speaker)](#(2)BGP 发言人 (BGP speaker))
[(3)BGP 交换路由信息](#(3)BGP 交换路由信息)
[(4)AS 的连通图举例](#(4)AS 的连通图举例)
[(5)BGP 发言人交换路径向量](#(5)BGP 发言人交换路径向量)
[(6)BGP 协议的特点](#(6)BGP 协议的特点)
[(7)BGP-4 共使用4种报文](#(7)BGP-4 共使用4种报文)
[六.IP 多播](#六.IP 多播)
[2.IP 多播的一些特点](#2.IP 多播的一些特点)
[3.D 类 IP 地址与以太网多播地址的映射关系](#3.D 类 IP 地址与以太网多播地址的映射关系)
[七.网际组管理协议 IGMP和多播路由选择协议](#七.网际组管理协议 IGMP和多播路由选择协议)
[2.IGMP 的本地使用范围](#2.IGMP 的本地使用范围)
[4.IGMP 是整个网际协议 IP的一个组成部分](#4.IGMP 是整个网际协议 IP的一个组成部分)
[5.IGMP 可分为两个阶段](#5.IGMP 可分为两个阶段)
[RPB 的要点](#RPB 的要点)
[②背专用地址范围!!!!!!!!!!!!!!!------RFC 1918 指明的专用地址 (private address)](#②背专用地址范围!!!!!!!!!!!!!!!——RFC 1918 指明的专用地址 (private address))
[③内联网 intranet 和外联网 extranet(都是基于 TCP/IP 协议)](#③内联网 intranet 和外联网 extranet(都是基于 TCP/IP 协议))
[8.网络地址转换 NAT (Network Address Translation)](#8.网络地址转换 NAT (Network Address Translation))
数据链路层是一个路由器内用mac地址找目的主机,网络层是路由器间找下一跳用ip地址
电信网的成功经验
让网络负责可靠交付
- 面向连接的通信方式
- 建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
- 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。
分组交换:①数据报服务②虚电路服务
1.虚电路服务
①面向连接
②地址虚电路号
③按序:先发先到
④一个路由器故障,整条虚电路都不能用
虚电路是逻辑连接
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
2.数据报服务
①无连接
②目的地址
③不按序
④故障处理
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
3.虚电路服务与数据报服务的对比
二.虚拟互连网络-IP网
1.网络通信问题
互连在一起的网络要进行通信,会遇到许多问题需要解决,如:
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务(面向连接服务和无连接服务)
- 不同的管理与控制方式
2.中间设备
网络互相连接起来要使用一些中间设备
- 中间设备又称为中间系统 或中继(relay)系统。
- 物理层中继系统:转发器(repeater)。
- 数据链路层中继系统:网桥 或桥接器 (bridge),以及交换机。
- 网络层中继系统:路由器(router)。
- 网桥和路由器的混合物:桥路器(brouter)。
- 网络层以上的中继系统:网关(gateway)。
3.网络互连使用路由器
- ++当中继系统是转发器或网桥时,一般并不称之为网络互连++ ,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。++而路由器连接不同网络。++
- 网关由于比较复杂,目前使用得较少。
- 互联网都是指用路由器进行互连的网络。
- 由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关
从网络层看 IP 数据报的传送
如果我们只从网络层考虑问题,那么 IP数据报就可以想象是在网络层中传送。
三.分类的 IP 地址
1. IP 地址及其表示方法
- 我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。(MAC是48位)
- IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for AssignedNames and Numbers)进行分配
2.IP 地址的编址方法
- 分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
- 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过。
- 构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
3.分类 IP 地址
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id ,++它标志主机(或路由器)所连接到的网络++ ,而另一个字段则是主机号 host-id ,它++标志该主机(或路由器)++。
两级的 IP 地址可以记为:
(1)IP 地址中的网络号字段和主机号字段
不同类32位的IP地址有不同长度的 网络号 ,主机号
A类地址 :开头第1位为"0"就是A类地址。剩下第1位为1的网络地址让B,C,D,E分。有2^7-2=126个网络(A类网络号全0和全1不使用),主机号有2^24-2个(++所有主机号全0和全1不使用++ )。0111 1111=127,这个网络号用于本地回环;0000 0000表示"本网络"。
B类地址 :前2位为"10"。有2^14-1个网络(B,C类网络号全0不使用,全1用),主机号有2^16-2个主机号。
C类地址 :前3位为"110"。有2^21-1个网络,主机号有2^8-2个主机号。
D类地址 :前四位为"1110"
E类地址:前四位为"1111"
网络号短主机号长:网络大主机多。
(2)点分十进制记法
(3)常用的三类IP 地址
IP 地址的使用范围
通过第一个字节(前8bit)就可以得知是哪类IP地址,例如:220.182.200 因为220∈(192,223),所以属于C类IP地址
A类地址:第1位为"0"。网络号数目:2^7-2=126个,主机号数目:2^24-2=16777214 。
第一个~最后一个 可用的网络号: ++0++ 000 0001~ ++0++ 111 1110=1~126
B类地址:前2位为"10"。网络号数目:2^14-1=16383个,主机号数目:2^16-2=65534 。
第一个~最后一个可用的网络号: ++10++ 00 0000|0000 0001~ **++10++**11 1111|1111 1111=128.1~191.255
算数过程:2^7=128,2^7+[2^6-1]=128+63=191 (第8位的1和1~6位的1)
C类地址:前3位为"110"。网络号数目:2^21-1=2097151个,主机号数目:2^8-2=254 。
第一个~最后一个可用的网络号: **++110++**0 0000 | 0000 0000 | 0000 0001~
**++110++**1 1111 | 1111 1111 | 1111 1111 =128.1~191.255
第一个可用网络号 计算:2^7+2^6=128+64=192,所以是192.0.1
第二个可用网络号 计算:第一字节:2^8-1-2^5=256-1-32=223,其他两个字节都是2^8-1=255,所以,223.255.255
(4)IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构。分两个等级的好处是:
-
第一,++IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了IP地址的管理。++
-
第二,++路由器仅根据目的主机所连接的网络号来转发分组++(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。 -
++当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP++ ++地址++ ,其++网络号++net-id++必须是不同的++ 。这种主机称为多归属主机(multihomed host)。
-
++由于一个路由器至少应当连接到两个网络++(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此++一个路由器至少应当有两个不同的 IP++++地址++。
(3) 用转发 器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
6个网络,7个碰撞域(网桥,交换机,路由器分割碰撞域)
++当两个路由器直接相连时++ (例如通过一条租用线路),在 ++连线两端的接口处++ , ++可以
分配也可以不分配IP地址。如分配了IP地址++ ,则这一段连线就构成了一种只包含
一段线路的特殊"网络"(如图中的NI, N2和N;)。之所以叫作"网络",是因为
它有IP地址。 ++这种网络仅需两个IP地址++ ,因此这里就使用了 ++/31地址块++ 。 ++这种地
址块专门为点对点链路的两端使用++ [RFC 3021], 主机号(只有1位)可以是0或1。
但 ++为了节省IP地址资源++ , ++对于点对点链路构成的特殊"网络",现在也常常不分配
IP地址++ 。通常把这样的特殊网络叫作 无编号网络 (unnumbered network)或 匿名网络
(anonymous network)[COME06]。
4.IP 地址与硬件地址
谢希仁P131过程
5.地址解析协议 ARP(Address Resolution Protocol)
已经知道一个机器的IP地址,需要找其对应的MAC地址
(1)ARP 高速缓存的作用
ARP 是解决同一个局域网上的主机或路由器的 IP地址和硬件地址的映射问题。
为了减少网络上的通信量,++主机 A 在发送其ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组++。
++当主机 B 收到 A 的 ARP 请求分组时,就将主机A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。++这对主机 B 以后向 A 发送数据报时就更方便
(1)使用 ARP 的四种典型情况
- 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到++另一个网络++上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- ++不同网络主机的ARP例子 ,下图为例:主机H1发送给H2的IP数据报。首先需要通过与主机H1连接在同一个局域网上的路由器R1 来转发,因此主机H1通过转发表知道路由器R1的IP地址。于是H1使用ARP把路由器R1的IP地址IP3解析为MAC地址MAC3,然后把IP数据报传送到路由器R1。以后,R1从转发表知道应把IP数据报转发到路由器R2,再使用ARP解析出R2的MAC地址MACs,把IP数据报转发到路由器R2。路由器R2用同样方法解析出目的主机H2的MAC地址MAC2,使IP数据报最终交付主机H2。++
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
(2)什么我们不直接使用硬件地址进行通信?
- 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
- 连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
逆地址解析协议 RARP(几乎不考)
老计算机几乎不上网就把自己IP地址删了,然后可以通过逆地址解析协议 RARP 使只有自己MAC地址的主机能找到自己的 IP 地址。
这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。
6.IP 数据报的格式
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
每行32bit=4字节
- 第1行:4Byte,4Byte,8Byte,16Byte
- 第2行:16Byte,3Byte,13Byte
- 第3行:8Byte,8Byte,16Byte
- 第4行:32Byte
- 第5行:32Byte
版本:占 4 Byte,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:占 4 Byte,可表示的最大数值是 15 个单位(0000~1111 是2^4-1=15),一个单位为 4 字节。因此 IP 的首部长度的最大值是 60 字节。例如:首部长度为1101,为13个单位,13×4=52Byte,固定长度20字节,则可变部分=52-20=32Byte。
区分服务 :++记住 8 Byte就行++ 。(用来获得更好的服务在旧标准中叫做服务类型 ,但实际上一直未被使用过。1998 年这个字段改名为区分服务,只有在使用区分服务(DiffServ)时,这个字段才起作用在一般的情况下都不使用这个字段)
总长度 :占 16 Byte,指++首部和数据之和的长度++,单位为字节,因此数据报的最大长度为 2^16-1=65535 字节。总长度必须不超过最大传送单元 MTU(一般1500字节)。
标识(identification) :占 16 Byte,它是一个计数器,用来产生数据报的标识。
标志 (flag):占 3 Byte,目前只有前两位有意义。标志字段的最低位(最右一位)是 MF (More Fragment)。 MF=1 表示后面"还有分片" 。MF=0 表示最后一个分片。标志字段中间的一位是 DF(Don't Fragment) 。只有当 DF=0 时才允许分片,DF=1不允许分片。
片偏移 (13 位)指出:较长的分组在分片后 ++某片距离首部的长度++。片偏移以 8 个字节为偏移单位。
源地址 -占32位,4字节。发送IP数据报的主机的IP地址。
目的地 址-占32位,4字节。接收IP数据报的主机的IP地址。
(1)片偏移
例子:
分片后,原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。片偏移以 8 个字节为偏移单位。三个片距离首部的距离为:0字节,1400字节,2800字节。则片偏移分别填入0/8=0,1400/8=175,2800/8=350。
(2)生存时间,协议,首部检验和
生存时间(8 位)记为 TTL (Time To Live) :数据报在网络中可通过的路由器数的最大值。(每经过一个路由器就减一)
协议(8 位):协议字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
首部检验和 :首部检验和(16 位)字段只检验数据报的首部固定部分不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
反码算术运算求和 举例:
(若左边一列最高位进位了,假设为10,则要到右边最低位加上1。)
发送端把计算好的"和"取反码为"检验和",再把"检验和"填入红框位置,接收端如右图,接收端再进行 反码算术运算求和:即进行①部分相加,而①部分相加相当于②部分相加,②部分的"和"这一行值和"检验和"为反码,相加正好全1,再取反码,为全0。则:若结果为0,则保留;否则,丢弃该数据报。
上图二进制写为16进制:(A10 B11 C12 D13 ++E14++ F15)
例如第一列:C+1+1+C+5+6+9=24+22=46,46/16=2......14,14=E,进2余14,即写E进2
第二列:2+2=4,写4
第三列:5+4+A+E+C+7=9+10+14+12+7=52,52/16=3......4,进3余4,即写4进3
第四列:4+3=7,写7
(二进制求反码:全1减去该值即为反码,例如求0111 0100 0100 1110反码,
1111 1111 1111 1111-0111 0100 0100 1110=1000 1011 1011 0001)
16进制求反码------最大减去该值即为反码,
E的反码:F-E=15-14=1
4的反码:F-4=15-4=11=B
7的反码:F-7=15-7=8
IP 头部及其校验举例:
IP 数据报的字节分布格式如下,按字节划分依次填入数据即可。
7.IP 层转发分组的流程
- 有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
- 可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。
- 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4个项目。这样就可使路由表大大简化。
分组转发算法:谢希仁p144最上面四条。
(1)查找路由表
- 根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
(2)特定主机路由
- 路由:路由表中每一行"目的主机所在的网络"对应"下一跳地址"的体现转发方式的信息,称为路由
- 特定主机路由 是为特定的目的主机指明一个路由。(即:正常的一行都是网络到网络,特定主机路由这一行是主机到主机)
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
(3)默认路由(default route)
默认路由:表上找不到的目的网络一律选择默认路由传输数据,默认路由为0.0.0.0/0,任何ip地址和全0按位与都是全0,都会匹配。
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
- 这种转发方式在一个网络只有很少的对外连接时是很有用的。
- 默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
- ++如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的++。
只要目的网络不是 N1 和 N2,就一律选择++默认路由++,比如N3就没有在这个路由表上,则需要把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。
(4)分组转发算法
(1) 从数据报的首部提取目的主机的 IP 地址 D , 得出目的网络地址为N。
(2) 若网络N 与此路由器直接相连,则把数据报直接交付 目的主机D ;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
(6) 报告转发分组出错。
四.划分子网和构造超网
划分子网
- 从两级 IP 地址到三级 IP 地址
- 在 ARPANET 的早期,IP 地址的设计确实不够合理。
- IP 地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- 两级的 IP 地址不够灵活。
1.三级的 IP 地址
- ++从 1985 年起在 IP 地址中又增加了一个"子网号字段"++ ,++使两级的 IP 地址变成为三级的 IP 地址。++
- 这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
- 当没有划分子网时,IP 地址是两级结构。
- 划分子网后 IP 地址就变成了三级结构。
- 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
2.划分子网的基本思路
-
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
-
从主机号借用 若干个位作为子网号subnet-id,而主机号 host-id 也就相应减少了若干个位。
以A类地址为前提为例:IP地址仍然是32位,只不过从主机号24位中取前两位划分子网,00为子网1,01为子网2,10为子网3,11为子网4,剩下的还是主机号。
划分子网的基本思路: -
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
-
然后此路由器在收到 IP 数据报后,再按目的++网络号++ net-id 和++子网号++ subnet-id 找到++目的子网++。
-
最后就将 IP 数据报直接交付目的主机。
3.子网掩码
- 子网掩码类似于一个框,把框放在IP地址上框起来的就是网络号+子网号=网络地址,后面没框起来的就是主机号。IP地址和子网掩码进行"相与"可得子网网络地址,框内子网掩码全为1,&1不变得出网络地址;框外子网掩码为全0,&0=0即主机号部分全变0。则可以很直观看出子网网络地址。
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分,也不知道子网号几位。
- 使用子网掩码(subnet mask)可以找出IP 地址中的子网部分。
(1)IP 地址的各字段和子网掩码
按位与&:全为1才是1,有0则是0。1&1=1,1&0=0,0&1=0,0&0=0。
IP地址和子网掩码进行"相与"可得子网网络地址,&1就不变,&0=0。则主机号和子网号位置&后都不变,主机号部分全变0,则可以很直观看出子网网络地址。
(2)默认子网掩码
(3)子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性。
- ++路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。++
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
子网掩码例题1:
已知 IP 地址是 141.14.72.24 看上图可知属于B类,子网掩码是 255.255.192.0。试求网络地址。
直接从第三字节看就行,因为B类前两字节为网络号,主机号从第三字节开始。则网络地址为141.14.64.0
子网掩码例题2:
在上例中,已知 IP 地址是 141.14.72.24,若子网掩码改为 255.255.224.0。试求网络地址,讨论所得结果。
不同子网掩码下的相同网络号是不一样的:
在子网掩码1111 1111 | 1111 1111 | 1100 0000 | 0000 0000 下的网络地址141.14.64.0与
在子网掩码1111 1111 | 1111 1111 | 1110 0000 | 0000 0000 下的网络地址141.14.64.0 虽然长得一样,但是是不同的。
解释:网络地址规定了IP地址的起始点,长得一样则起始点一样。
子网掩码规定了子网大小,前者第三字节为11 00 0000的子网掩码后面14个0,表示主机号有2^14个;后者第三字节为1110 0000的子网掩码后面13个0,表示主机号有2^13个;前者的主机号包含了后者的所有主机号,后者的子网是前者子网的子集。
(4)使用子网掩码的分组转发过程
- 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。
- 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 因此分组转发的算法也必须做相应的改动。
- ++子网掩码放在路由器中而不在ip数据报中,路由器中每行一个网络地址匹配一个子网掩码。++
在划分子网的情况下路由器转发分组的算法
使用子网掩码的分组转发例题:
已知互联网和路由器 R1 中的路由表。主机H1 向 H2 发送分组。试讨论 R1 收到 H1向 H2 发送的分组后查找路由表的过程。
解: H2的IP地址:128.30.33.138,查路由表,和每行的子网掩码进行与操作后得出的网络地址看是否和目的网络地址相同,相同则找到目的主机所在子网。
计算过程即为上面子网掩码例题的格式:
(a)点分十进制表示的IP地址:128.30.33.138
(b) IP地址的第4字节是二进制: 128.30.33. 1000 1010
(c)先看第一行子网掩码255.255.255.128:255.255.255.1000 0000
(d) IP地址与子网掩码逐位相与:128.30.33. 1000 0000
(e)网络地址(点分十进制表示):128.30.33.128
可知与第一行目的网络地址128.30.33.0不同,则继续向下一行子网掩码"相与",与第二行目的网络地址128.30.33.128相同,即找到了H2所在目的网络地址。
(5)无分类编址 CIDR
①IP 编址问题的演进:
- 1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网 掩 码 。 使 用 变长子网掩码VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
- 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-DomainRouting)。读音"sider"
②CIDR 最主要的特点 - ++CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。++
- ++CIDR使用各种长度的"网络前缀"(network-prefix)来代替分类地址中的网络号和子网号。++
- ++IP 地址从三级编址(使用子网掩码)又回到了两级编址。++
③无分类的两级编址
无分类的两级编址的记法是:
( CIDR 还使用" 斜线记法 "(slash notation),它又称为 CIDR记法 ,即在 IP 地址面加上一个斜线"/" ,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。
++CIDR 把网络前缀都相同的连续的 IP 地址组成"CIDR 地址块"++ 。 )
CIDR 地址块 - ++128.14.32.0/20 表示的地址块共有 2^12个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是32-20=12 位)。++
- ☆☆☆☆☆128.14.32.0,比特位是 8位 .8位 .3位 5位.8位,第三字节:32→++001++0 0000,即网络地址为:128.14.32.0。
- (这个地址块的起始地址是 128.14.32.0。
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为"/20 地址块" 。
- ++128.14.32.0/20 可称为网络前缀或地址块,简称前缀,同时也是这个地址块中主机号为全0的地址。++
- 128.14.32.0/20 地址块的最小地址:128.14.32.0
- 128.14.32.0/20 地址块的最大地址:128.14.47.255
- 全 0 和全 1 的主机号地址一般不使用。
- 最后的0一般可以省略 )
计算一个子网分多少主机号的公式 :
n为LAN局域网有n台主机,一般n还要加1,这个1是连接路由器也算一个主机;全0全1不使用,所以算上这2个主机号;k表示主机号长度是k bit
n+2≤2^k
用 5 个前缀构成的二叉线索
五.网际控制报文协议 ICMP
- 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 不是高层协议,而是 IP 层的协议。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
1.ICMP 报文的格式**(不用背)**
2.ICMP 报文的种类
- ICMP 报文的种类有两种,即 ICMP差错报告报文 和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
(1)ICMP 差错报告报文共有 5 种:始 终超参路
终点不可达:接收端网卡缓存区接收信息满后,正在发来的数据会全丢弃
源点抑制(Source quench):发送端网卡缓存区信息满后,CPU处理完的正准备向网卡里存的数据会全丢弃已经不再使用
时间超过:生存时间减到0时被丢弃进而报告。
参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。 例如首部长度这个参数和实际长度不等会被丢弃
改变路由(重定向)(Redirect):中间某个路由器有问题会报告改变路由走向,找到更好路由。
(2)ICMP 差错报告报文的数据字段的内容
IP 数据报的数据字段前8个字节是运输层端口号 ,取出IP数据报首部和这8个字节作为ICMP的报文部分,封装上ICMP的首部8个字节,再整体加上IP数据报首部,封装成IP数据报后即为++ICMP 差错报告报文++。
(3)不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
例如:若 ICMP 差错报告报文丢失,则不用再发送 ++针对丢失的这个ICMP报文++ 的ICMP 差错报告报文。(因为当错误未解决时,会重复发送ICMP报文,直到错误被解决则停止发送) - 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。++一个报文分几片,其中出问题的分片发送ICMP报告后发送方会重新发,所以这个分片后面的几个再出错也不用管了。++
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
(4)ICMP 询问报文有两种
- 回送请求和回答报文(例如PING)
- 时间戳请求和回答报文(例如Traceroute)
下面的几种 ICMP 报文不再使用
信息请求与回答报文
掩码地址请求和回答报文
路由器询问和通告报文
ICMP的应用举例PING (Packet InterNet Groper)
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文。
- ++PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP++。
六.因特网的路由选择协议
路由选择协议:每个路由器和其他路由器交换路由信息,例如:路由器A给B发送路由信息,就是告诉B:我(A)可以到达的路由器,即告诉B路径信息。最后让每个路由器知道整个系统内的其他每个路由器怎么走到。
1.有关路由选择协议的几个基本概念
(1) 理想的路由算法
- 算法必须是++正确++ 的和++完整++的。
- 算法在计算上应++简单++。
- 算法应能适应通信量和网络拓扑的变化,这就是说,要有++自适应性++。
- 算法应具有++稳定++性。
- 算法应是++公平++的。
- 算法应是++最佳++的。
(2)关于"最佳路由"
不存在一种绝对的最佳路由算法,"最佳"是主观的,例如打车甲喜欢最短最便宜,乙需要多花钱但不堵车。
所谓"最佳"只能是相对于某一种特定要求下得出的较为合理的选择而已。
实际的路由选择算法,应尽可能接近于理想的算法。
路由选择是个非常复杂的问题
它是网络中的所有结点共同协调工作的结果。
路由选择的环境往往是不断变化的,而这种变化有时无法事先知道
(3)从路由算法的自适应性考虑
- 静态路由选择策略------即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
- 动态 路由选择策略------即自适应路由选择,其特点是++能较好地适应网络状态的变化++ ,但实现起来++较为复杂,开销也比较大++。
2. 分层次的路由选择协议
- 因特网采用分层次的路由选择协议。
- 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,许多单位不愿意外界了解自处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。
- 自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上
(1)自治系统 AS (Autonomous System)
• 自治系统 AS 的定义:在单一的技术管理下的一组路由器,++而这些路由器使用一种 AS 内部 的路由选择协议和共同的度量以确定分组在该AS 内的路由(学校里的一个班内),同时还使用一种 AS之间的路由选择协议用以确定分组在 AS之间的路由(学校里的班与班之间)++。
• 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是++一个 AS 对其他 AS 表现出的是一个单一的 和一致的路由选择策略++。
(2)因特网有两大类路由选择协议
内部网关协议 IGP (Interior Gateway Protocol)即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和OSPF 协议。
外部网关协议EGP (External Gateway Protocol)若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
自治系统之间的路由选择也叫做域间路由选择(interdomain routing),对应上面IGP
在自治系统内部的路由选择叫做域内路由选择(intradomain routing),对应EGP
++内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。++
++外部网关协议 EGP:目前使用的协议就是 BGP。++
3.内部网关协议------路由信息协议 RIP (Routing Information Protocol)
(1)工作原理
- 记忆:本路由器和相连路由器传递自己的路由表信息。
- 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
- ++RIP 是一种基于距离向量的分布式路由选择协议++ 。RIP协议和OSPF协议都是分布式路由选择协议 :++每一个路由器都要不断地和其他一些路由器交换路由信息++。
- ++RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。++
(2)"距离"的定义
- 从一路由器到直接连接 的++网络++的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1,++即边的数量++。
- RIP 协议中的"距离"也称为"跳数"(hop count),因为每经过一个路由器,跳数就加 1。
- ++这里的"距离"实际上指的是最短距离++
- ++RIP 认为一个好的路由就是它通过的路由器的数目少,即"距离短"++。
- RIP 允许一条路径最多只能包含 15 个路由器。++"距离"的最大值为16 时即相当于不可达。++ 可见 ++RIP 只适用于小型互联网++,因为路由表每个节点要记下到本网络所有节点的路径,路由表大小受网络大小影响。
- RIP 不能在两个网络之间同时使用多条路由。
- ++RIP 选择一个具有最少路由器的路由(即最短路由)(路由就是路由表中的一行信息),哪怕还存在另一条高速(低时延)但路由器较多的路由++
(3)++RIP 协议的三个要点++
- 相邻路由器: ++仅和相邻路由器交换信息++。
- 全部信息: 交换的信息是当前本路由器所知道的++全部信息++,即自己的路由表。
- 固定30秒 :按++固定++ 的++时间间隔++ ++交换++路由信息 ,例如,++每隔 30 秒++
RIP可以收敛,并且过程也较快。"收敛"就是在自治系统中所有的节点都得到正确的路由选择信息的过程。
**(4)路由表的更新:**距离向量算法
- ++①相同下一跳,传递的路由表新的路径信息不管大小就更新旧路径信息,没有路径信息就添加。++
- ++②不同下一跳时,接收到新路径信息相同或更大则不更新;新路径更小则更新++
例如:
N2:当C把自己的路由表给B时,B检查N2的新路径信息,新旧路径下一跳都是C,新路径距离是4+1=5,而旧路径距离是2,由于下一跳相同都是C,所以无论大小都更新新路径:N2 5 C。
N3:B检查N3的新路径信息,因为没有此网络路由信息,则直接加上:N3 9 C。
N6:B检查N6的新路径信息,新路径下一跳是C,旧路径下一跳是F,新路径距离是4+1=5,而旧路径距离是8,由于下一跳不同,比较大小,新距离小,则更新为新路径:N6 5 C。
N8:B检查N8的新路径信息,新路径下一跳是C,旧路径下一跳是E,新路径距离是3+1=4,而旧路径距离也是4,由于下一跳不同,比较大小,距离相同,则不更新路径。
N9:B检查N9的新路径信息,新路径下一跳是C,旧路径下一跳是F,新路径距离是5+1=6,而旧路径距离是4,由于下一跳不同,比较大小,旧距离短,则不更新路径。
距离向量算法书上话随便看看:
收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把"下一跳"字段中的地址都改为 X,并把所有的"距离"字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:若项目中的目的网络不在路由表中,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是同样的,则把收到的项目
替换原路由表中的项目。
否则
若收到项目中的距离小于路由表中的距离,则进行更新,
否则,什么也不做。
(3) ++若 3 分钟还没有++收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
(4) 返回。
(
路由器之间交换信息
RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的
)
(5)RIP 协议的优缺点
- 坏消息传的慢:RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此网络不可达的信息传送到所有的路由器。
- RIP 协议最大的优点就是实现简单,开销较小。
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
坏消息传的慢解释:
-
R1 说: "我到网 1 的距离是 16 (表示无法到达),是直接交付。 "
-
但 R2 ++在收到 R1 的更新报文之前,还发送原来的报文++,因为这时 R2 并不知道 R1 出了故障。
-
R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表,说: "我到网 1 的距离是 3,下一跳经过 R2 " 。然后将此更新信息发送给 R2。
-
R2 以后又更新自己的路由表为"1, 4, R1 " ,表明"我到网 1 距离是 4,下一跳经过 R1 " 。
-
这样不断更新下去,直到 R1 和 R2 到网 1 的距离都增大到 16 时,R1 和 R2 才知道网 1 是不可达的。
这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。
4.内部网关协议------开放最短路径优先 OSPF(Open Shortest Path First)
(1)OSPF 协议的基本特点
- "开放"表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- "最短路径优先"是因为使用了 Dijkstra 提出的最短路径算法SPF
- OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是"最短路径优先" 。
- 是分布式的链路状态协议。
(2)OSPF的三个要点
- 所有路由器 :向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送相邻关系信息 :发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。("链路状态"就是说明本路由器都和哪些路由器相邻,以及该链路的"度量"(metric))
- 更新 :只有当链路状态发生变化 时,路由器++才++ 用洪泛法++向所有路由器发送此信息++。
链路状态数据库(link-state database)
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
(3)OSPF 的区域(area)
- 为了使 OSPF 能够++用于规模很大的网络++ ,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域,要求区域内每个路由器知道组内任何成员如何到达。(因为路由表大小不受网络大小影响,每个节点都只记录自己所连节点,所以适用于大网络)
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
划分区域好处
- ++划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量++。
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
- OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
(4)OSPF 直接用 IP 数据报传送
(首部不用记)不同类型的OSPF分组数据部分加上OSPF分组首部,在封装上IP数据报首部成为IP数据报传送。即:OSPF→IP
对比比较:而RIP→UDP(运输层)→IP(网络层)
BGP→TCP(运输层)→IP(网络层)
(5)OSPF 的其他特点
-
++OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价++。因此,OSPF 对于不同类型的业务可计算出不同的路由。
-
如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。
-
所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
-
支持++可变长度的子网划分++ 和++无分类编址 CIDR++。
-
每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
-
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
-
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
-
OSPF 没有"坏消息传播得慢"的问题,据统计,其响应网络变化的时间小于 100 ms。
(6)OSPF 的五种分组类型
- 类型1,问候分组(Hello)。
- 类型2,数据库描述(Database Description)分组。
- 类型3,链路状态请求(Link State Request)分组。
- 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认(Link State Acknowledgment)分组。
OSPF的基本操作:
(7)OSPF 使用的是可靠的洪泛法
R发送方发信息,洪水般蔓延发送路由信息(为了更新规则),最后收到后再给发送方回复ACK报文
指定的路由器(designated router)
多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
5.外部网关协议 BGP(Border Gateway Protocol)
BGP 是不同自治系统的路由器之间交换路由信息的协议。
(1)BGP 使用的环境却不同
++因特网的规模太大++ ,使得++自治系统之间路由选择非常困难++ 。++对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。++
当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。
比较合理的做法 是++在 AS 之间交换"可达性"信息++。
自治系统之间的路由选择必须考虑有关策略。
因此,++边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由 (不兜圈子就算比较好),而并非要寻找一条最佳路由++。
(2)BGP 发言人 (BGP speaker)
- ++每一个自治系统的管理员要选择至少一个路由器作为该自治系统的" BGP 发言人" 。++
- ++一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。++
相当于每个班(AS)的班长(BGP发言人)
BGP 发言人和自治系统 AS 关系的图:
(3)BGP 交换路由信息
- ++一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息++ ,就要先++建立 TCP 连接++ ,++然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。(两个AS自治系统之间沟通还是需要可靠服务的,好比班长代表一个班的形象,和其他班长发言不能老是出错)++
- 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
- 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。
对比比较**:OSPF→IP**
而RIP→UDP(运输层)→IP(网络层)
BGP→TCP(运输层)→IP(网络层)
(4)AS 的连通图举例
- BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS(即路径向量)。
- 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
例如:N1是AS5中的一个网络,AS1中存的到达N1的BGP协议信息是[N1:(AS1,AS3,AS5)]
(5)BGP 发言人交换路径向量
自治系统 AS2 的 BGP 发言人通知主干网和其他网络的 BGP 发言人: "要到达网络 N1 , N2 , N3 和 N4 可经过 AS2。 "
主干网还可发出通知: "要到达网络 N5 , N6 和 N7可沿路径(AS1 , AS3)。 "
(6)BGP 协议的特点
- ++BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。++
- ++每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。++
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- ++在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。++
(7)BGP-4 共使用4种报文
- (1) 打开(OPEN)报文 ,用来与相邻的另一个BGP发言人++建立关系++。
- (2) 更新(UPDATE)报文 ,用来发送某一路由的信息,以及列出要撤消的多条路由,++即:更新或撤销路由信息++。
- (3) 保活(KEEPALIVE)报文 ,用来确认打开报文和周期性地证实邻站关系,++即:检查邻居还是不是你的邻居++。
- (4) 通知(NOTIFICATION)报文 ,++用来发送检测到的差错++。
在 RFC 2918 中增加了 ROUTE-REFRESH 报文,用来请求对等端重新通告。
末梢AS
6.对比RIP,OSPF,BGP
(1)定义区分
RIP:内部网关协议------路由信息协议 RIP (Routing Information Protocol),自治系统AS内路由器交换路由信息的协议1,(自治系统AS内告诉每个路由器其他路由器怎么走的协议)
OSPF:内部网关协议------开放最短路径优先 OSPF(Open Shortest Path First),也是自治系统AS内告诉每个路由器其他路由器怎么走的协议2
BGP:外部网关协议 BGP(Border Gateway Protocol),不同自治系统的路由器之间交换路由信息的协议,BGP发言人来交换路由信息。
(2)封装关系
OSPF→IP
而RIP→UDP(运输层)→IP(网络层)
BGP→TCP(运输层)→IP(网络层)
(3)连接关系信息
RIP:基于距离向量
OSPF:基于连接关系信息
BGP:路径向量
7.典型的路由器的结构
(1)"转发"和"路由选择"的区别
++路由选择:领导制定的规则。转发:工人根据路由选择进行转发。即分组转发遵循路由选择协议制定的规则。++
- "转发"(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- "路由选择"(routing)则是按照分布式算法(RIP,OSPF,BGP),根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
- 在讨论路由选择的原理时,往往++不区分转发表和路由表的区别。++
(2)输入端口对线路上收到的分组的处理
封装过程 :物理层进行比特的接受。数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。++分组转发功能:队列管理,任务调度++
当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。
(3)分组丢弃
- 若路由器++处理分组的速率赶不上分组进入队列的速率,则会溢出++,即队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- ++路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因++。
(4)交换结构
线速
- 通过存储器
- 通过总线
- 通过互连网络
六.IP 多播
1.概念
多播可明显地减少网络中资源的消耗(下面每个多播路由器内的局域网为总线型)
2.IP 多播的一些特点
(1) ++多播使用组地址++ ------ IP 使用 ++D 类地址++支持多播。多播地址只能用于目的地址,而不能用于源地址。
(2) ++永久组地址++------由因特网号码指派管理局 IANA 负责指派。(保留的地址见下页)
(3) ++动态的组成员++
(4) ++使用硬件进行多播++
保留的组播地址:
224.0.0.0:基地址
224.0.0.1:在本子网上的所有参加多播的主机和路由器
224.0.0.2:本子网上的所有参加多播的路由器
224.0.0.3:未指派
224.0.0.4:DVMRP路由器
224.0.1.0-238.255.255.255:可使用的多播地址
239.0.0.0-239.255.255.255:限制在一个组织内范围
多播分为两种一种在Internet网内的多播,一种是在本地局域网上的硬件地址多播
3.D 类 IP 地址与以太网多播地址的映射关系
01005E
七.网际组管理协议 IGMP和多播路由选择协议
1.IP多播需要两种协议
为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP(Internet Group Management Protocol)。
连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
IGMP 使多播路由器知道多播组成员信息
类比为:网球社成员分在每个班,IGMP协议是会长,班长可以找到每个班的网球社成员
2.IGMP 的本地使用范围
- IGMP 并非在因特网范围内对所有多播组成员进行管理的协议。
- IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。即++:会长不用亲自知道成员是谁,每个班班长知道就行++
- IGMP 协议是让连接在本地局域网上的多播路由器 知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组,++即班长对人数增减做记录++
3.多播路由选择协议比单播路由选择协议复杂得多
- ++多播转发必须动态地适应多播组成员的变化++ (这时网络拓扑并未发生变化),即:++只管自己社成员,不管其他人++ 。请注意,++单播路由选择通常是在网络拓扑发生变化时才需要更新路由++。
- (不用看)多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
- 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
4.IGMP 是整个网际协议 IP的一个组成部分
- 和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成IP 数据报------封装),但它也向 IP 提供服务。
- 因此,我们不把++IGMP++ 看成是一个单独的协议,而是++属于整个网际协议 IP 的一个组成部分++。
5.IGMP 可分为两个阶段
- 第一阶段:当++某个主机加入新的多播组时++ ,++该主机应向多播组的多播地址发送IGMP 报文++ ,++声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器++
- 第二阶段:因为组成员关系是动态 的,因此++本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员++。(因为加入多播)
- ++只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的++。
- ++但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器++。
6.多播路由选择协议
- 多播路由选择协议尚未标准化。
- 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。
- ++多播路由选择实际上就是要找出以源主机为根结点的多播转发树++。
- ++在多播转发树上的路由器不会收到重复的多播数据报++。
- ++对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树++(意思是不同根节点的树不一样,子树单拆出来也不一样)。
7.转发多播数据报使用的方法
(1)洪泛与剪除
这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。
一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB(Reverse Path Broadcasting)的策略。
RPB 的要点
- ++路由器收到多播数据报时,先检查是否从源点经最短路径传送来的++。
- ++若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发++。
- ++如果存在几条同样长度的最短路径 ,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP 地址最小++。
(2)隧道技术(tunneling)
多播数据报通过不支持多播的网络时加上单播首部变成单播IP数据报穿过,后再去掉头部变成多播数据报。
①用隧道技术实现虚拟专用网
本地地址------仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
全球地址------全球唯一的IP地址,必须向因特网的管理机构申请。
部门A是内网,内网中也用IP地址,
②背专用地址范围!!!!!!!!!!!!!!!------RFC 1918 指明的专用地址 (private address)
- 10.0.0.0/8,10.0.0.0 到 10.255.255.255
- 172.16.0.0/12 ,172.16.0.0 到 172.31.255.255
- 192.168.0.0/16,192.168.0.0 到 192.168.255.255
- 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
- 专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
用隧道技术实现虚拟专用网:过程 谢希仁 p187
③内联网 intranet 和外联网 extranet(都是基于 TCP/IP 协议)
++由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网(intranet),表示部门 A和 B 都是在同一个机构的内部。++
++一个机构和某些外部机构 共同建立的虚拟专用网 VPN 又称为外联网++(extranet)。
④远程接入VPN (remote access VPN)
- 有的公司可能没有分布在不同场所的部门,但有很多流动员工在外地工作。公司需要和他们保持联系,远程接入 VPN 可满足这种需求。
- 在外地工作的员工拨号接入因特网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
8.网络地址转换 NAT (Network Address Translation)
- 网络地址转换 NAT 方法于1994年提出。
- ++需要在专用网连接到因特网的路由器上安装NAT 软件++ 。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址IPG。
- 所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG才能和因特网连接。
网络地址转换的过程
++内部主机++ X 用本地地址 IPX 和++因特网上主机++ Y++通信所发送的数据报必须经过 NAT 路由器++。
举例:
- 下图X向Y传输数据,NAT 路由器R1将数据报的源地址 IPx 转换成全球地址 IPg ,但目的地址 IPy保持不变,然后发送到因特网。
- NAT 路由器R1收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG。
- 根据 NAT 转换表,NAT 路由器R1将目的地址 IPg 转换为 IPx,转发给最终的内部主机 X。