博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机网络学习3网络层
阅读量:4089 次
发布时间:2019-05-25

本文共 3424 字,大约阅读时间需要 11 分钟。

1、网络层提供的服务

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。如果主机中的进程之间的通信需要是可靠的,那么就由运输层负责。采用这种设计的好处是路由器可以做得比较简单,价格低廉,网络造价大大降低,运行方式灵活,能够适应多种应用。它会造成:

(1)网络在发送分组(IP数据报)时不需要先建立连接;

(2)每一个分组独立发送,与前后的分组无关;

(3)所传送的分组有可能出错、丢失、重复和失序,也不保证分组交付的时限。

但是,由于计算机有很强的差错处理能力,这些都可以通过一些手段来进行处理。

2、网络层的作用

网络层的作用是实现终端节点之间的通信。它负责在没有直连的两个网络之间进行通信,多个不同的网络通过路由器互连成一个互连网络。由于网络协议IP是用来使互连的很多计算机网络能够进行通信的,所以又常被称为网际层或IP层。

3、网络层协议IP

他们之间的关系如下:

在这里,ARP和RARP画在下面,因为IP经常要使用这两个协议。ICMP和IGMP画在上面,因为它们要使用IP协议。

(1)ARP和RARP

地址解析协议ARP作用:已经知道了一个机器(主机或路由器)的IP地址,找到其相应的物理地址

RARP:已经知道了物理地址,找到相应的IP地址

所以,在这里只介绍ARP。

(2)ICMP

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。注意,ICMP 不是高层协议,而是 IP 层的协议。ICMP报文就是IP数据报的数据部分。ICMP报文作为IP层数据报,加上IP层数据报的首部,组成IP数据报发送出去。ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。 它的一个应用例子就是PING。PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

(3)IGMP

多播所需要的协议,见后面多播的内容。

4、IP地址

IP地址就是给因特网上的每一个主机或路由器的每一个接口分配一个在世界上是唯一的32位标识符。IP地址共有五类,每一类都是由前几个比特位、网络号和主机号组成的,如下:

A,B,C都是单播地址,也就是一对一通信,是最常用的。D类地址用于多播,也就是一对多通信。

IP地址的几个特点:

5、IP数据报

IP数据报的格式如下:

6、IP层转发流程

IP数据报通过路由表来转发。在路由器的路由表中,每一条路由对应的是以下信息:(目的网络地址,下以跳地址)。只包含网络号,这样的好处是只需要网络个数的项就可以完成路由功能,节约空间和查找时间,而不是按照目的主机号来制作路由表。一个有四个网络的例子如下:

整个分组转发算法的过程总结如下:

(1)特定主机路由

(2)默认路由

当一个网络只有很少的对外连接时很有用。

这个默认路由的好处是可以把大量的外部的因特网都设为默认,可以省去大量的路由表上的项的空间。

7、IP的改进

(1)划分子网

原始IP地址的设计是不够合理的:

因此,在IP地址中,可以增加一段,称为“子网号字段”,使两级IP地址变成三级IP地址。这个方法称为划分子网、子网寻址或子网路由选择。划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。划分子网会减少能够连接在网络上的主机数目。

1)划分子网的优缺点

优点:

减少广播带来的负面影响,提高整体性能,因为广播数据包只能在同一网段传输;

节省IP地址资源;

分割成小的不同子网,提高安全性;

便于管理和维护。

缺点:

可连接的主机数减少;

各子网间不能直接通信,带来诸多不便。

2)划分子网的方法

3)路由器如何把数据报转发给子网

这要借助子网掩码。子网掩码是这样的一串码,它的位数为32位,前面属于子网的部分都是1,后面不是子网的部分都是0。路由器收到一个三级IP地址后,把它和子网掩码做与运算,即可得到子网的网络地址。如图所示:

4)使用子网时的分组转发

其实就是在判定IP地址的时候,多了一步与操作

(2)无分类地址编码CIDR(构造超网)

CIDR正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing,读作Side)。它是为了进一步提高IP地址的利用效率而提出来的。它主要有三个特点:

CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间;

CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号;

IP 地址从三级编址(使用子网掩码)又回到了两级编址。

如:

在这里,前20位是网络前缀,后12位是主机号。

CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。 

1)使用CIDR的好处

更加有效分配IPv4的地址空间,可以根据客户需要适当分配合适大小的CIDR地址块;

2)路由方法改进。使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 遇到这种情况时,有以下两种查找路由方法:

最长前缀匹配:此时应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。yinwei网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。最长前缀匹配又称为最长匹配或最佳匹配。 

唯一前缀匹配(二叉线索查找):当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 

为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。为了简化二叉线索查找,可以找到对应每一个IP地址的唯一前缀,用这些唯一前缀来构造二叉线索。

8、路由选择协议

也就是路由表中的路由是怎么得到的。它的核心是路由算法。路由选择协议有两大类:内部网关协议IGP(如RIP,OSPF)和外部网关协议EGP(如BGP-4)。

9、路由器到底是什么

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。

10、IP多播

前面说的都是使用A,B,C类地址进行一对一通信。现在探讨使用D类地址进行广播。与单播相比,一对多的多播可以节省网络资源。理论上,D类地址共可以标志28个多播组。多播不产生ICMP差错报文。这里注意,D类地址并不是全部都能使用。多播可以分为两种:在本局域网上进行硬件多播和在因特网范围进行多播(也称为IP多播)。

(1)在本局域网上进行硬件多播

D类IP地址和以太网多播地址之间的映射关系。

(2)在因特网范围内进行多播

1)多播组

2)IGMP

IGMP让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组,而非在因特网范围内对多播组成员进行管理。它并不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上。因此仅有IGMP是不能完成多播任务的,还需要多播路由选择协议。

全文参考了谢希仁《计算机网络》及相关课件

你可能感兴趣的文章
IE不支持option的display:none属性
查看>>
[分享]mysql内置用于字符串型ip地址和整数型ip地址转换函数
查看>>
Https加密及攻防
查看>>
Java生成随机不重复推广码邀请码
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
移植Vim配色方案到Eclipse
查看>>
谈谈加密和混淆吧[转]
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Qt 静态编译后的exe太大, 可以这样压缩.
查看>>