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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 第四章 IP 协议 -> 正文阅读

[网络协议]第四章 IP 协议

概述

IP 协议主要负责将数据包发送到最终目标终端。这一章我们就来聊一聊关于IP协议的相关内容? 它的两个版本v4? v6? ip 地址? ?路由控制? ?IP包格式? ?IP 的分片和重组等等 让我们一起来看吧

著名的IP 网际协议

什么是IP

IP (Internet Protocol) 网际协议? 或者也叫互联网协议。 工作在七层的第三层网络层。它的出现主要用来提高网络的可扩展性,为了解决网络互联问题,实现大规模 的 异构网络的互通互连。根据上层端到端的设计原则,IP只为主机提供一种无连接的 不太可靠的 尽力而为的数据包传输服务。

?

网络层的主要功能是什么

作为七层里的第三层 网络层,主要是定义了逻辑地址IP? 并负责IP 地址的寻址,实现不同链路之间,或者说不同局域网之间的互通。

网络层的主要实现设备时路由器,连接不同的局域网,还可以只能选择最佳路径 实现不同网络之际的互通互连。当然这其中关在还在于IP 地址和IP 数据包的作用

IP的基础知识

IP大致可以分为三大作用模块 分别时 IP寻址? ?路由? 以及IP 包的分片和重组

关于IP地址

在TCP/IP 通信中所有主机或路由器必须设定自己的IP 以便实现通信,这个就像一个城市或者一个地区每家每户都有的地址一样。正因为有了IP 在互联网上我们才能唯一确定一个目标并将数据传送给对方。那么这个地址就是 IP 地址。

?

并且不论一台主机与那种链路网络连接 其IP地址都不会改变关于IP 地址的详述我们在后面段落中聊。

何为路由控制

Routing 路由控制 指将分组数据包发送到最终目标地址的功能,也可以确定到达目标的通路。

HOP 译为 跳, 从远端主机到目标端可能需要经过很多个数据链路网(也就是局域网) 而局域网之间往往时通过路由器设备连接的,所以每经过一个路由器设备就是一跳 ,一个HOP .所以路由也时通过很多跳来完成的。 因此IP 路由 也叫多跳路由。

?

路由控制表,也叫路由表。?

那么路由器是如何实现不同网段之间转发数据的呢,因为路由器中有一个叫路由表的文件,里面记录了通往众多目标网段的网段地址和对应到这个网段的下一跳地址(也就是我们 说的下一个路由器的地址),这样当源端数据包交给路由器后路由器查看自己的路由表? 看看数据包的目标地址在路由表中如何走,按照路由表转发就好了,那么如果路由表中没有记录呢,那就毫不留情的丢弃。

?

数据包就是这样 每经过一个路由器 根据目标IP 查看自己的路由表决定转发给下一个路由器,下一个路由器在继续这个过程 逐渐到达目标的。

抽象化数据链路

我们之道二层数据链路层构成的局域网时有很多种类的,比方我们上一章提到的 以太网? 令牌环? ATM? FDDI? 等等各自有不同的协议规范,但在网络层要实现他们之间的互通必须抽象化这些差异性 也就是屏蔽到这些差异。这也是IP 的重要作用,抽象化数据链路,无论什么样的链路都一视同仁。统一规范。

但这里有个物理问题,就是每种链路它们 固定的最大传输单位(MTU?)是不同的,比方以太网最大传输 1500 字节? FDDI 是 4352 字节? ?而ATM 则可以是 9180字节。那么 IP 如何解决这个问题呢。 这就是我们后面要讲的IP 的分片和重组。?

?

面向无连接类型

IP包我们前面提到是面向无连接的,就是IP 包随时想发就发,不需要和目标端建立联系,无需通知对方说我要发包了啊。这样的结果是很可能 对方主机存不存在? 开机没有不知道,那么是不是收到数据,何时收到也不知道。只管发了,所以就容易造成冗余。

IP包之所以采取这种无连接类型 一是为了速度? 而是简化IP包。大家也不用担心,虽然IP 面向无连接 但上层传输层 的TCP 可是面向连接的正好给IP 救场。

IP地址的基础知识

IP地址的定义

这里是指IPv4,? ?32位二进制网络编码,唯一标识网络中的一台主机。所有参与互联网或者网络通信的主机或者其他只能设备都必须配置IP地址。计算机处理的是二进制32位 但是人们书写的时候不习惯,我们采取点分十进制的方式,就是将32位二进制每8位一分,分为四组,每组间用 . 分割,将每组的3位二进制换算成十进制 书写如下如

IP地址在主机上,并不是依据主机的台数来配置的,而是每一台主机的网卡上设置,所以一台电脑可以配置多个网课亦可以配置多个IP 地址,一块网卡也可以设置多个IP

IP地址的组成和分类

IP 地址一共32位二进制 那么一共可以有多少个地址呢 我们可以算出来

?一共43亿个地址,最多可以允许43亿台计算机连接到网络,但是实际上 让这么多台计算机全部连入是不可能的,因此我们需要给IP 作细致划分和分类

IP地址的组成

我们将IP 地址32位 分为网络部分和主机部分。 网络部分确定是属于哪个网络链路(局域网),主机部分确定一个局域网内是属于具体的哪一台主机。所以 不同的链路有不同的网络部分,同一个链路网络部分相同。同一个链路中的不同主机是不同的主机部分。同一个链路中 计算机的IP地址的主机部分不能重复,而网络部分相同。

?IP地址的分类

因为现实中有个公司很大需要很多IP 地址 而有些公司可能比较小 100多个就够了,于是为了适应不同的需要人们将IP 地址分类 为 A 类? B 类? C类? D类? E 类。具体是根据IP 地址中从第一位到第四位的不同值来确定的,并且还顺带规定了每类地址的网络部分和主机部分

A类地址? 首位以 0 开头 其他不限 网络部分为前8位 后面24位主机位 范围在?0.0.0.0-127.0.0.0 是A类的网络地址。主机位24位 可用的主机地址最多16,777,214 所以A 类地址适应于大型集团公司

B类地址? 是前两位为 10 的地址? 网络部分是前16位? 后面16位为主机部分 范围为 128.0.0.0—191.255.0.0? 是B类的网络地址? 主机位16位 可用主机地址最多 65,534个。 所以B类地址适应于中型公司

C类地址? 是前三位为 110? 的地址, 网络部分是前24位? 后面 8位为主机部分。 范围 192.0.0.0—223.255.255.0 是C 类的网络地址? 主机位 8为? 可用主机地址最多 254 个。 所以C 类地址适应于小规模的公司使用。

D类地址 是前四位为 1110的地址,E 类地址 是前四位是 1111 的地址, 这两类地址保留 不被客户和主机使用。 D类地址用于多播(也就是组播) E类用于科研。

网段地址,广播地址和IP多播

网段地址,是可以代表一个链路网络所有主机的,表示这个网络或者这个链路,这个地址是不可以给主机配的。具体就是网络部分保持不变? 主机部分全部为零的地址? 比方? ?C类地址? ?192.168.100.0? ? ?A 类地址 10.0.0.0

广播地址,主要作为目标地址 用在给同一个链路中所有主机发送信息。具体就是 网络部分不变,主机部分全部设置为1 , 这个地址也不会给主机配。比方 C 类地址? 192.168.100.255? ?A类地址 10.255.255.255? 都是属于广播地址

所以我们在算 C类地址 可用最大主机地址的时候是? 需要减 2? 去掉 本网络的广播地址和网络地址

广播地址还可以分为 本地广播(就是在本网络内的广播) 和 直接广播 (不同网络之间的广播)

IP多播, 多播用于将数据包发送给特定组内的所有主机,也就是我们通常讲的 组播。多播的好处在于可以穿透路由器,而且能实现给特定的组内成员发送数据包。除此之外 大家之道 广播是不能穿透路由器的(路由器设备默认阻隔广播),单播只能给单一对象发。

我们之道D类地址用于多播 所以 地址开头 为 1110 的地址被识别为 组播地址 而且人们还规定了很多特殊的主播地址 如下表:

子网掩码是个啥

我们说分配给主机的地址属于ABC 三类中的一类,也就是说一个地址必然由他的网络部分和主机本分。那么我们如何告诉电脑 一个地址的网络部分和主机本分呢。要知道电脑是不是到什么A类 B类 C类的。那就需要使用子网掩码。

那么我们如何表示一个地址的子网掩码呢,人们规定: 对应一个地址的网络部分我们用 1来表示,主机部分用 0 来表示 这样写出来的就是这个地址的子网掩码。 因此我们之道了A B C 类地址的子网掩码如图:

我们标识的时候表示成 A类 255.0.0.0? ? ?B类 255.255.0.0? ? ?C类 255.255.255.0? 或者我们可以简写位? /8? ?/16? ?/24? ? ?8,16,24 分别标识网络位多少位。? ?

另外,计算机之间的通信无非是同一个链路内的或者是不同链路之间的,而同一个链路内之间由交换机转发,不同链路之间的需要交给路由器。所以电脑也需要通过子网掩码来判断自己和目标主机在不再同一网段。

子网,有的时候我们会发现直接用A类 B类 C类 可能都会造成浪费,比方你们公司分配了 一个 C类网,可用254台电脑 但你们实际上只有00 台,那么剩下的100多个地址浪费了,

为了更好的利用ip 地址 我们可以在 这类地址的基础上再把一个网段划分成若干小网段。具体是利用借位的方法,将主机位借来当作网络位来用,于是子网掩码可能就是不是上述? 可能是 255.255.255.128? ? 255.255.255.192? 这样的。这叫划分子网后的子网掩码。把整个网段划分成若干小网段叫做子网划分。

CIDR 和 VLSM?

CIDR? 无类型域间选路,由于TPC/IP 创立之初是80年代末? 没有预料到 会有后来的互联网和只能移动通信,所以到后来更多的要求加入网络,IP 地址 就显得严重不足。于是人们开始放弃IP 地址的分类,采用任意长度分割IP 地址的网络标识和主机标识 这就叫 CIDR。

CIDR 的好处是可以将多个联系的C 类地址汇总到一个较大网络内,这样可以减少路由表内容,大大降低了路由器的负担。

VLSM? 可变长子网掩码,有时候在一个公司可能营销部 需要 500台电脑? ?而研发部可能只需要 50台,那么我们在分配网络的时候就不适合给同样主机数的网段而造成浪费,为了适应这种情况,有效节约地址人们提出了使用可变长的子网掩码,比方 500台? 使用掩码 /23, 50台? 使用 /16

公网地址 VS 私有网络地址

我们知道互联网上的地址是不能冲突的,就好像你们家的地址要和别家一样,那我这个快递到底是发给谁。但是后来发现需要连入互联网的终端越来越多,特别是智能手机出现以后。为了不至于IP v4地址枯竭。人们提出了 私有地址,就是在不同公司可以重复使用的地址段,它的特点是不能直接在互联网上使用,专门为公司内部保留使用的。相对于私有地址,能在互联网上直接使用的地址叫公网地址。

人们从A类 B类 C类地址中分别取出一部分来作为私网地址,其范围如下

? ? ? ? ? ? ? ? ? ?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

全局地址或者说公网地址是由一个叫 ICANN (互联网名称与数字地址分配机构)的组织管理的。严格意义上说 私有地址是独立于互联网外的 只能公司内部使用的,后来出现了 NAT 技术 网络地址转换技术 将私网也连入了互联网。

什么是路由控制

前面我们提到 数据包时通过路由器这个设备在不同链路之间转换 选择最佳路径,送达目标链路的,也提到了路由器实际上是凭借一张叫做路由表的文件来决定转发到哪里的,那么路由器转发数据的过程就是路由或者叫路由控制。那么具体IP 地址与路由控制如何实现的呢

IP地址与路由控制

其实 路由器对于目标地址只看地址的网络部分就可以了,通过网络部分来决定路由控制。如图

那么路由表是怎么形成的呢,路标表中的条目有两种,一种是直连的,就是路由器直接连接的链路网络网段,一种是非直连,就是和这个路由器没有直接相连的其他链路网段。

直连的直接配置路由接口地址 打开就有了? 而非直连就比较麻烦,需要我们手动配置,这个叫静态路由。如果非直连网段很多 我们还可以使用动态路由协议? 让路由器之间自动学习非直连。这个叫做动态路由。静态路面还有个特殊的叫默认路由,就是任何目标网络都通过这个下一跳。

所以默认路由优先级最低,没得走了才走默认。 其次 直连路由优先级最高 其次是静态? 其次是动态路由。

主机路由和回环地址

主机路由是? IP地址/32? ?也就是 子网掩码 全 1 的地址,这种地址路由是直接整个地址参与路由的,而一般情况下往往只是网段地址参与路由,这个我们前面说过了。只用主机路由 一般是用于不希望公国网络地址路由的情况。

回环地址 是在同一台计算机上的程序之间进行网络通信时使用的默认地址,一般计算机使用 127.0.0.1 作为本机回环地址。

路由控制表的聚合

路由表的聚合就是路由器对外将多个网段汇总成一个网段,路由表中本来可能的数条 集合成为一条路由。这样大大简化了路由表,降低了路由压力,实现了优化路由器工作的好处。 因为一旦路由表庞达 就增加了路由器的处理能力,路由器的CPU? 内存的工作压力也越大,路由器的整体处理能力就会变弱。

?

IP分片和重组处理

为什么要分片

我们前面提到路由器连接的是不同的链路或者局域网,实现异构网络之间的互通互连,既然是异构那么各个网络的协议 规范 实现方式甚至是物理硬件都不同,这其中最重要的就是每种链路要求的最大传输单元是不同的,就是最大一次性传多少数。下图是每种链路的最大MTU?

?

很有可能这个大数据发过来 对方那个链路因为太大接受不了。那么路由器是如何处理这个问题的呢,使用分片技术. 也就是说 太大你接受不了是吧 没关系 我把这个大数据切成若干你能接受的小片,一片片传,过去后再重组不就得了。

IP报文的分片和重组

起先路由器和主机都有分片的功能,每经过一个路由器数据包都会重组和分片,再传给下一个路由器,但这样一来无形中造成了路由器的负担,于是现在 分片可能发送在主机和路由器,但重组就只发生在最终结点 也就是目标主机上。至于说分片之后又如何正确的重组我们会在ip 首部里面详细聊到。我看下图来理解大概的过程

?

路径MTU 发现机制

又来人们发现分片交给 路由器 始终是不好,增加了路由器处理负担,还费时费力,如果我们要是再让路由器干点网络过滤 地址转换的事情,那他也吃不消,所以尽量让分片不要交给路由器,

于是人们就发明了路由MTU 发现机制。具体就是通过这种机制让源端主机直接用所有链路中最小的MTU 分片,这样直接传给终端,中间路由器就无需分片了。

现在很多操作系统都支持这种功能,具体就是 当源端按照一定分片发送后如果遇到链路更小的MTU 那么路由器直接丢弃,返回一个不可达并且附上这边链路MTU 值,源端收到后会按照对方发来的更小的MTU 分片再因此传送出。

?

IPv6 地址闪亮登场

为什么要有IPv6

为了根本解决IPv4地址不足的问题,研究人员发明了 IPv6 地址, IPv4 32位大家觉得够多了 却远远不够用了,于是IPv6 更恨一下子 给干到 128位。 当然IPv6 更弥补了IPv4 的很多不足,而且特别增加了安全方面的设置。

IP v6早就已经是成熟的技术了 很多设备包括操作系统 网络平台都支持,但我们现在主流的还是iIPv4 因为,如果我们要大面积统一v6 需要撤换大量的网络设备 不仅是公司 大型网络提供商 骨干网很多设备都要替换,所以在今天互联网高度普及的情况下 反而很难。

IPv6 的特点和标记方法

特点:

IP地址的扩大与路由控制表的聚合, v6地址更适应互联网分层? 更便于路由表聚合

性能提升? ? ?v6 简化了首部结构 去掉了首部校验 减轻了路由器负荷

支持即插即用功能? ? ?无需DHCP? 也能实现自动分配IP 地址 这个必须的128位的地址怎么配都显得艰巨

采用认证与加密功能? ? 这个是源v4 没有的? 特别增加关于 认证和加密的功能

多播、 Mobill IP 成为扩展功能? ? ? 属于v6 的扩展功能 以适应 移动网络时代的需要

IPv6地址的标记方法

IPv6 肯定是无需我们配的 但查看还是要有的吧 。那么v6地址怎么标记呢。 一般人们将128位以每16位为一组,每组用 : 号隔开。

如果中间是连续的 几组都是 0? 那就将这些0 省略 并用 :: 隔开 但一个IP 地址中只允许出现一次连续的两个冒号标记。

?

IPv6 地址的结构

v6 地址类似v4 通过ip地址前几位标识IP 的种类

分为全局单播地址? 链路本地地址? 限制型网络等等 具体我们看下两图

?

全局单薄和链路本地单薄地址

全局单播地址 是世界上唯一的地址 相当于v4 的公网地址

?

链路本地地址单播地址? 是指在同一个数据链路内唯一的地址,它不用经过路由器,只在同一链路中通信?

?

唯一本地地址和IPv6 的分段处理

唯一本地地址? 也是不进行互联网通信时使用的地址。 使用在一些设备控制的限制型网络 或者金融机构的核心网络等 需与互联网隔离。 为了提供安全性,企业内部访问互联网可以通过地址转换或网关实现

?IPv6的分段处理? IPv6 的分片只在起点的源端主机上进行。 中间路由器不参与分片,同样采取路径MTU 发现机制。

IPv4和IPv6 的首部知多少

IPv4的首部格式

我们知道网络层通信一般是通过发送IP数据包实现的,那么IP 数据包提供了那些功能的,要了解这些我们需要聊一聊IPv4 的首部格式。先来看一张图

?数据以上都是IPv4 的头部 也就是说这部分是由网络层封装的。

首部首先是版本号(version)? 这里v4 就是值就是 4?

首部长度(IHL? lnternet? header length),就是数据以上的部分。长度最少20个字节(每行32位二进制,每八位二进制为一共字节。32位,共4个字节,一共有六行,最后一行是可选项 可以没有 那就是 5*4=20?)如果第六行 加上内容 那么首部长度就是可变长。

区分服务(TOS? type of service) ,用来表示服务质量,就是数据包的优先级? 是否优先,优先可以先传。 其中的 DSCP 差分服务代码点 用来进行质量控制的,值越大优先级越高。 ECN 显式拥塞通告,用来报告网络拥堵情况的。

总长度 (Total Length) 指IP 头部加上数据一共的长度值

标识(ID identification )用于分片重组,同一分片标识相同的值,不同分片不同,最后相同标识的重组到一起

标志(Flages) 由三个二进制组成,用来判断是否分片和是不是最后一个分片

?

偏移量(FO fragement offset)用来标识被分片的每一个分段相对于原始数据的位置,便于最终数据能按照正常的顺序重组。

生存周期 (TTL? time to live) 虽然开始时 是以秒为单位计算的,后来在实际应用中变成了经过路由器的个数,没经过一个路由器 TTL值减 1? 减到 0 路由器会丢弃数据包

协议(Protocol )用来标记上层协议,也就是上层协议的编号 我们列几个常用的 比方?? TCP? 是 6? UDP? 是? 17? ?

首部校验和(Header Checksum)只用来校验IP 首部? 用来确保IP 数据不会被破坏

?源地址(Source Address)? ?发送段的ip 地址? 32位二进制

目标地址(Destination Address)目标段的IP 地址? 32位二进制

可选项(Options) 可变长 通常只在实验或者诊断时使用, 字段包含? 安全级别? 源路径? 路径记录? 时间戳。

填充(Padding)也叫填补物? 可选,首部长度不够时使用

数据(data) 上层传下来的数据。

IPv6 的首部格式

相对来说IPv6 的首部就简单很多了,因为IPv6 设计之初就考虑到了简化v4 首部,弥补它的不足 看下图

版本(Version)? 版本号就是 6??

通信量类(Traffic Class)? 相当于v4 的 TOS 区分服务部分,被IPv6 保留

流量号(Flow Label)? 准备用于服务质量控制 。v6 采用流的概念有效提高了路由处理能力 只要是同一个流就是同一个目标。方便路由器处理。

有效载荷长度(Payload Length)? ?在v6 中指标识 数据部分的长度

下一个首部(Next Header) 相当于v4 的协议字段。

跳数限制(Hop Limit)? ?相当于IPv4 的 TTL 值。

源地址(Source Address)? 128位的 发送端v6 地址

目标地址(Destination Address)? 128位的目标端 v6 地址。

IPv6? 扩展首部

因为IPv6 是固定首部长度, 可选项无法加入,怎么办呢,人们利用v6 的扩展首部功能具体如图

?好关于这一章呢我们就聊这么多? 主要聊到了IP地址? 协议? 包头格式等等 还有v6 地址??重点还在于IPv4 地址的分类组成? 子网掩码? IPv4 的首部格式。希望大家对于一些概念名词有所了解。下次我们聊一聊IP协议的相关内容。如果写的误谬地方 望大家不吝指正。感谢

(内容和图片参考和来源于《图解TCP/IP》 第五版 人民邮电出版社? 特表谢意)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:55:47  更:2022-11-05 00:56:12 
 
开发: 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 15:52:51-

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