IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络4】网络层 -> 正文阅读

[网络协议]【计算机网络4】网络层

请添加图片描述

一、网络层提供的服务

1、网络层应向运输层提供怎样的服务,即面向连接(虚电路服务)还是面向无连接(数据报服务)?

传统电信网的虚电路服务,是面向连接的通信方式,是一种可靠传输的服务,互联网的先驱认为电信网这种端到端的虚电路服务对简单无差错处理能力的电话机是很合适的,但是对计算机来数并不合适。互联网设计了网络层向上层只提供简单灵活的、无连接、尽最大努力交付的数据报服务。

在这里插入图片描述

2、网络层向上层只提供简单灵活的、无连接、尽最大努力交付的、数据报服务。如何理解呢?
  • 网络在发送分组时不需要建立连接。

  • 每一个分组(也就是Ip数据报)独立发送, 与其前后分组无关 也即分组无序(不进行编号)

  • 网络层不提供质量的承诺,即分组可能出错、丢失、重复、无序、当然也不保证分组交付的时限。

二、IP协议

1、网络层简介

网络层又叫网际层、IP层。IP层主要是IP协议。IP协议是TCP/IP体系中主要的协议之一,也是最重要的因特网标准协议之一。与IP协议配套使用的还有三个协议:

  • 地址解析协议ARP (Address Resolution Protocol):根据IP地址解析出MAC地址
  • 网际控制报文协议ICMP (Internet Control Message Protocol):允许主机或者路由器报告差错情况,和提供有关异常情况的报告。这样能够有效的转发IP数据报和提高交付机会。
  • 网际组管理协议IGMP (Internet Group Management Protocol):IP多播相关的协议,可以让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格说是主机上某一进程)参加或退出某个多播组。

在这里插入图片描述

IP层主要有如图四种协议:
1、ARP协议被IP协议所使用。也即为IP协议提供服务。
2、IP协议为ICMP、IGMP协议提供服务。

2、啥是虚拟互联网络?

要把世界上数不尽的计算机网络都互联起来并能够通信是一件复杂的任务,其中会解决诸多问题, 如果让大家都使用相同的网络肯定是不可行的,因为用户的需求是多样的,没有一种单一的网络能够适应所有用户需求。如计算机之间可以直接进行通信,计算机间可以通过路由器进行间接通信。计算机网络间还可以通过无线局域网进行通信、计算机之间也可以通过卫星链路进行通信。因此一些中间设备就诞生了如,路由器,路由器也是目前进行网络互联时使用最多的中间设备。不同的计算机网络都遵循IP协议然后通过路由器连接起来就形成了虚拟互联网络。

3、IP地址

IP地址是一个32位的标识符,由ICANN(互联网名字和数字分配机构)进行分配。他表示互联网上一台主机或者路由器。

IP地址的编址大致经历了三阶段:分类ip地址、子网的划分、构成超网。

1、分类ip地址:最基本的编址,我们熟悉的A类、B类、C类IP地址就出自这里。
2、子网的划分:对基本的分类ip进行了改进
3、构成超网:比较新的无分类编址方法。1993年提出后很快就得到推广应用。

IP地址由网络号+主机号组成。

1、网络号:它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
2、主机号:它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。

所谓“分类的IP地址”就是将IP地址划分为若干个固定类:A类、B类、C类、D类、E类。
其中每类都是由由网络号+主机号组成。

在这里插入图片描述

1、可以看出A类B类C类IP地址的网络号分别占1,2,3个字节
2、可以看出A类B类C类IP地址的网络号字段的最前面有1~3位的类别位,其数值分别规定为0,10和110。
3、D类地址(前4位是1110)用于多播即一对多通信。
4、E类地址(前4位是1111)保留为以后用。

4、IP地址与硬件地址(MAC)区别

MAC地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址。

数据自上层往下层发送时经过IP层会封装成IP数据报,这时数据报的首部就会存放ip地址。

当IP数据传递到数据链路层时就会被封装成MAC帧,MAC帧在传输数据时使用的源地址,和目的地址都是硬件的MAC地址。硬件MAC地址写在MAC帧的首部中。

在这里插入图片描述

连接在通信链路上的设备(主机或路由器)在接收MAC帧时,其根据是MAC帧首部中的硬件地址。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

ps:

(1)IP层,IP数据报中的首部的源IP地址、目标ip地址是始终不变的。虽然经过多个路由器进行分组转发。

(2)数据链路层MAC帧的首部、尾部在不同的链路进行传输时是不断变化的。

(3)虽然在ip数据报有源站IP地址,但路由器只根据目的IP地址网络号进行路由选择。

5、主机或者路由器怎样知道应在MAC帧的首部填入什么样的MAC地址

当IP数据报流入计算机或者路由器的链路层时,链路层会重新对MAC帧进行整理,原地址改为本机的MAC地址,目标地址改为下一目标的MAC地址。那么需要传送数据的目标ip地址是已知的,如何获得目标MAC地址呢?这里需要ARP协议配合。

由于IP协议使用了ARP协议通常把ARP协议归到网络层。

APR协议的作用是从网络层使用的IP地址解析出链路层使用的MAC地址。

还有个协议叫RARP逆地址解析协议,它的作用是知道自己MAC地址的主机可以通过这个协议逆向得到自己使用的IP地址。不过现在的DHCP协议已经包含了这个协议的功能。

三、IP数据报格式

在TCP/IP的标准中,各种数据格式常常以32位(即4字节)为单位来描述。

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

在这里插入图片描述

1、首部固定部分:

(1)版本

占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 ,即IPv4。

(2)首部长度

占4位,可表示的最大十进制数值是15,最小的十进制数是5。

首部长度字段所表示数的单位是32位字(1个32位字长是4字节)

因此,首部长度字段的最小值是5可表示(5*4)20个字节,首部长度最大值15可表示60个字节。

首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便

首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

(3)区分服务

占8位,一般的情况下都不使用这个字段。

(4)总长度

总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216 - 1 = 65 535字节。

然而实际上传送这样长的数据报在现实中是极少遇到的,因为在数据链路层,数据超过MAC帧规定的最大传送单元MTU时,数据链路层会把过长的数据报进行分片处理。

进行分片时(见后面的“片偏移”字段),数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的的数据长度的总和。

(5)标识

占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。

当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6) 标志

占3位,但目前只有两位有意义:

  • 标志字段中的最低位记为MF (More Fragment)。MF = 1即表示后面“还有分片”的数据报。MF = 0表示这已是若干数据报片中的最后一个。
  • 标志字段中间的一位记为DF (Don’t Fragment),意思是“不能分片”。只有当DF = 0时才允许分片。

(7)片偏移

占13位,表示相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间

占8位,生存时间字段常用的英文缩写是TTL (Time To Live),表明是数据报在网络中的寿命。

其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因白白消耗网络资源。例如从路由器R1转发到R2,再转发到R3,然后又转发到R1。

(9)协议

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

常见协议协议字段值
ICMP1
IGMP2
IP4
TCP6
UDP17

这里的IP表示特殊的IP数据报——IP数据报再封装到IP数据报中

(10)首部校验和

占16位。这个字段只检验数据报的首部,不检验数据部分。

数据报每经过一个路由器,路由器都要重新计算一下首部一些字段。因为首部的生存时间、标志、片偏移等字段都可能发生变化。不检验数据部分可减少计算的工作量。

(11)源地址

占32位。

(12)目的地址

占32位。

2、首部可变部分

一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。

此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。

优点:

  • 为了增加IP数据报的功能
  • 使得IP数据报的首部长度成为可变的

缺点:

  • 增加了每一个路由器处理数据报的开销
  • 实际上这些选项很少被使用。很多路由器都不考虑IP首部的选项字段
  • IP版本IPv6就把IP数据报的首部长度做成固定的

四、VPN和NAT

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

IPv4 地址只有 32 位长,因而最多只能提供 42.9 亿个唯一 IP 地址。不可能所有主机都分配一个唯一的 IP 地址。1994 年, NAT作为解决 IPv4 地址即将耗尽的一个临时性方案。

这种方案需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

在这里插入图片描述

如图,是不是和生活中和类似,你直接win+R ->cmd->ipconfig 后查询的ip地址就是192.168.x.x,这其实是一个本地的IP地址,你真正在互联网上还有个ip,这个可通过有些网站查询到。

RFC 1918指明了一些专用地址(private address)。这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。换言之,专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。

采用这样的专用IP地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。显然,全世界可能有很多的专用互连网络具有相同的专用IP地址,但这并不会引起麻烦,因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址(reusable address)。

IP 地址范围地址数量
10.0.0.0 - 10.255.255.25516 777 216
172.16.0.0 - 172.31.255.2551 048 576
192.168.0.0 - 192.168.255.25565 536
2、虚拟专用网VPN

有时一个很大的机构有许多部门分布在相距很远的一些地点,而在每一个地点都有自己的专用网。假定这些分布在不同地点的专用网需要经常进行通信。这时,可以有两种方法:

(1)第一种方法是租用电信公司的通信线路为本机构专用。这种方法的好处是简单方便,但线路的租金太高。

(2)第二种方法是利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual PrivateNetwork)。

之所以称为“专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。

如果专用网不同网点之间的通信必须经过公用的因特网,但又有保密的要求,那么所有通过因特网传送的数据都必须加密。

“虚拟”表示“好像是”,但实际上并不是,因为现在并没有使用专线而是通过公用的因特网来连接分散在各场所(site)的本地网络。一个机构要构建自己的VPN就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址

一般使用IP隧道技术实现虚拟专用网。

The End

参考

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:54:17  更:2021-08-24 15:56:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:30:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码