计算机网络--网络层

网络5层模型:应用层,传输层,网络层链路层物理层

网络层有两个模型:

1.虚拟电路服务:采用的是x.25协议

2.数据报服务:采用的是IP协议

IP协议实现两个基本功能:寻址和分段。IP可以根据数据包包头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。如果有些网络内只能传送小数据报,IP可以将数据报重新组装并在报头域内注明。

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP(Address Resolution Protocol):从IP地址找到MAC地址
网际控制报文协议 ICMP(Internet Control Message Protocol)
网际组管理协议 IGMP(Internet Group Management Protocol):多播是用到


网络层的IP协议及其配套协议


如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送

IP地址分类:

IP 地址 ::= { <网络号>, <主机号>}  

::= 代表“定义为”


两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。

IP 地址与硬件地址 


地址解析协议 ARP:


不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。


ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

使用 ARP 的四种典型情况:

1.发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 
2.发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 
3.发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。 
4.发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

IP 数据报的格式:

一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。


1.  IP 数据报首部的固定部分中的各字段 


版本——占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)

首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。

区分服务——占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 

总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

标识(identification)  ——  占 16 位,它是一个计数器,用来产生数据报的标识

标志(flag)    ——占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF =1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF =0 时才允许分片

片偏移(13 位)指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。


IP 数据报分片:


生存时间——(8 位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值

协议——(8 位)字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程


首部检验和(16 位)字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。


IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。

IP 层转发分组的流程:

有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。


在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址) 


查找路由表:

根据目的网络地址就能确定下一跳路由器,这样做的结果是:IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付,只有到达最后一个路由器时,才试图向目的主机进行直接交付。

必须强调指出:IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

分组转发算法:

(1)  从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2)  若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
(3)  若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)  若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)  报告转发分组出错。 

划分子网和构造超网:

划分子网的基本思路 :

划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
IP地址 ::= {<网络号>, <子网号>, <主机号>} 

凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。 

当没有划分子网时,IP 地址是两级结构。
划分子网后 IP 地址就变成了三级结构。

划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。 


一个未划分子网的 B 类网络145.13.0.0

                                     


划分为三个子网后对外仍是一个网络



子网掩码:

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。


(IP 地址) AND (子网掩码) = 网络地址

默认子网掩码 :


子网掩码是一个重要属性:

子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。

例子:已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。


使用子网掩码的分组转发过程

在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。
但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
因此分组转发的算法也必须做相应的改动。

在划分子网的情况下路由器转发分组的算法:

(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和
     相应的网络地址匹配。若匹配,则将分组直接交付。
     否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将
     分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,
     若其结果与该行的目的网络地址匹配,则将分组传送
     给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表
     中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。


例子:已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。




主机 H1 首先将 本子网的子网掩码 255.255.255.128 与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作) 


因此 H1 必须把分组传送到路由器 R1 然后逐项查找路由表:




无分类的两级编址 :

无分类的两级编址的记法是:

IP地址 ::= {<网络前缀>,<主机号>} 

CIDR 还使用“ 斜线记法 (slash notation) ,它又称为 CIDR 记法 ,即在 IP 地址面加上一个斜线“ /” ,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。CIDR把网络前缀都相同的连续的IP地址组成“ CIDR 地址块”。  

例如:128.14.32.0/20 表示的地址块共有 2 12 个地址(因为 斜线后面的 20 是网络前缀的位数 ,所以这个地址的主机号是 12 位)。
这个地址块的起始地址是 128.14.32.0
在不需要指出地址块的起始地址时,也可将这样的地址块简称为“ /20 地址块 ”。
128.14.32.0/20 地址块的最小地址: 128.14.32.0
128.14.32.0/20 地址块的最大地址: 128.14.47.255
0 和全 1 的主机号地址一般不使用。

网际控制报文协议ICMP:

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP 不是高层协议,而是 IP 层的协议。
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。    
ICMP数据包结构

ICMP 报文的种类有两种,即 ICMP 差错报告报文 ICMP 询问报文
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即 类型 代码 检验和 。接着的 4 个字节的内容与 ICMP 的类型有关。 

ICMP 差错报告报文共有 5种 :

终点不可达
源点抑制 (Sourcequench)  
时间超过
参数问题
改变路由(重定向) (Redirect)  

ICMP 询问报文有两种 :

回送请求和回答报文
时间戳请求和回答报文

ICMP的应用举例
PING(Packet InterNetGroper) 

PING 用来测试两个主机之间的连通性。
PING 使用了 ICMP 回送请求与回送回答报文。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP UDP 。 

因特网有两大类路由选择协议 :

内部网关协议 IGP (Interior GatewayProtocol)    即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP OSPF 协议。
外部网关协议 EGP (External GatewayProtocol)    若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP 。在外部网关协议中目前使用最多的是 BGP-4 。  

内部网关协议 IGP :具体的协议有多种,如 RIP OSPF 等。
外部网关协议 EGP :目前使用的协议就是 BGP

内部网关协议RIP(Routing Information Protocol):

1.工作原理


路由信息协议 RIP 是内部网关协议 IGP 中最先得到广泛使用的协议。
RIP 是一种分布式的基于 距离向量 的路由选择协议。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
距离”的定义 : 从一路由器到 直接连接 的网络的距离定义为 1 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1 RIP 协议中的“距离”也称为“ 跳数 (hop count) ,因为每经过一个路由器,跳数就加 1 这里的“距离”实际上指的是“ 最短 距离”,  RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。 RIP 不能在两个网络之间同时使用多条路由。 RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速 ( 低时延 ) 但路由器较多的路由。   
RIP协议的三个要点 :

1. 仅和 相邻路由器 交换信息。
2. 交换的信息是当前本路由器所知道的 全部信息 ,即自己的路由表。
3. 按固定的时间间隔 交换路由信息 ,例如,每隔 30 秒。 
路由表的建立 : 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1 )。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。 RIP 协议的 收敛 (convergence) 过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。 
内部网关协议OSPF(Open Shortest Path First)



OSPF的五种分组类型:

类型 1 ,问候 (Hello) 分组。
类型 2 ,数据库描述 (DatabaseDescription) 分组。
类型 3 ,链路状态请求 (LinkState Request) 分组。
类型 4 ,链路状态更新 (LinkState Update) 分组,用洪泛法对全网更新链路状态。
类型 5 ,链路状态确认 (LinkState Acknowledgment)分组。 

外部网关协议BGP:

BGP 是不同自治系统的路由器之间交换路由信息的协议。 BGP 较新版本是 2006 1 月发表的 BGP-4 BGP 4 个版本),即 RFC4271 ~ 4278 可以将 BGP-4 简写为 BGP
BGP 交换路由信息
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话 (session) ,利用 BGP 会话交换路由信息。使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站或对等站。 
BGP-4 共使用四种报文:

(1) 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。

(2) 更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。

(3) 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。

(4) 通知(NOTIFICATION)报文,用来发送检测到的差错。

RFC 2918 中增加了 ROUTE-REFRESH 报文,用来请求对等端重新通告。

路由器在网际互连中的作用:
典型的路由器的结构 
转发 (forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
路由选择 (routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化         情况,动态地改变所选择的路由。
路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,    

IP 多播:

IP多播采用的是D类IP地址和网际组管理协议 IGMP 和多播路由选择协议

 1.  IP多播需要两种协议
为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。 


远程接入VPN (remote access VPN) 

有的公司可能没有分布在不同场所的部门,但有很多流动员工在外地工作。公司需要和他们保持联系,远程接入 VPN 可满足这种需求。
在外地工作的员工拨号接入因特网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。

网络地址转换 NAT (Network Address Translation)

在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。
IP地址类别              RPC 1918内部地址范围 
  A类                10.0.0.0到10.255.255.255   
  B类                172.16.0.0到172.31.255.255
  C类                192.168.0.0到192.168.255.255

使用私有地址将网络连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。

网络地址转换 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。 


本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
全球地址——全球唯一的IP地址,必须向因特网的管理机构申请。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值