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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP/IP技术回顾(3)—网际层 -> 正文阅读

[网络协议]TCP/IP技术回顾(3)—网际层

TCP/IP技术回顾(2)—网络接口层

主要根据课本《高级计算机网络》李向丽整理。

?1.4 网际层

? ? ? ? 网际层的主要任务有:为主机和路由器接口分配一个全网唯一的地址(IP地址),实现IP地址的识别和管理;建立有效的IP分组路由机制;使IP分组的长度与通信子网所允许的数据报长度相匹配,等等。

? ? ? ? IP协议是网际层的主要协议。在发送方,IP协议把传输层传输过来的TCP报文段组装成IP分组,并把IP分组传递给网络接口层。若一个结点从网络接口层接受到一个IP分组,将会检查其目的地址,如需转发,则选择一条最佳路由转发出去。若结点是目的结点,则将IP分组的数据部分上传给上层协议。IP协议制定了统一的IP分组格式,以消除各通信子网的差异,从而为信息的发送方和接收方提供透明的传输通道。

? ? ? ? 在一个IP分组的传输过程中需要经过很多路由器。当IP分组到达路由器时,每个路由器都首先从首部取出目的地址,根据目的地址决定IP分组应该发往的下一跳路由器。为了支持IP分组的路由机制,每个路由器都有一个保存路由信息的路由表。

1.4.1 IP协议

??IP协议提供了一种分层的、与硬件无关的寻址系统,具有在复杂的路由式网络中传递数据所需的服务。TCP/IP网络上的每个网络适配器都有一个唯一的IP地址。IP协议为上层协议提供无状态、无连接、不可靠的服务。

????????无状态是指IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输和接收都是相互独立、没有上下文关系的。这种服务最大的缺点就是无法处理乱序和重复的IP数据报。无状态服务的优点也很明显:简单、高效。我们无需为保持通信的状态而分配一些内核资源,也无需每次传输数据时都携带状态信息。

? ? ? ?无连接是指IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

? ? 不可靠是指IP协议不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力。很多情况都可以导致IP数据报发送失败。比如,某个中转路由器发现IP数据报在网络上存活地时间太长,那么它将丢弃该报文,并返回一个ICMP错误消息给发送端。因此,使用IP服务地上层协议需要自己实现数据确认、超时重传等机制以达到可靠传输的目的。
? ? ? ? ? IP分组由首部和数据两部分组成,首部包括20B的固定部分和可变长的选项(最长40字节)部分。? ? ?

????????版本号(Version)4位,表示所使用的IP协议的版本。目前是IPV4版本,该字段的值为4,相应的二进制是0100。

????????首部长度(Header Length)4位,以4B为单位说明IP分组的长度。IP首部长度最小值是5,最大值是15。

????????服务类型(Differentialted Services)8位,源IP能够指定特殊的路由信息。有些路由器会忽略这个字段的信息,但随着服务质量(QoS)技术的出现,这个字段得到了更多的重视。这个8位字段的主要用途是对等待通过路由器的数据报区分优先级,而目前大多数IP实现把是这个字段全填为0。?

????????总长度(Total Length)16位,表示IP分组的长度,单位是字节,这个长度包含了数据报首部和数据部分。

????????标识(Identification):16位,表示IP数据报的标识符,每个IP数据报有一个唯一的标识符。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给整个标识字段。但整个标识并不是序号,因为IP是无连接服务,数据报不存在按序接受的问题。当数据报由于长度超过下面数据链路层的MTU(最大传输单元)值而必须分段的时候,这个标识符的值就被复制到所有的数据报分段的标识字段中。相同的标识字段的值分段后的各数据报分段最后能正确地组装成原来的数据报。

????????标志(Flags):3位,标志字段用以指出该IP数据报后面是否还有分段,也就是这个字段是分段标志。目前只有前两位有意义:最低以为记为MF(More Fragment),如果MF=1,则表示后面还有分段,如果MF=0表示这已是某个数据报的最后一个分段;中间一位记为DF(Don’t Fragment),当DF=1时表示不允许分段,DF=0表示允许分段;最高1位没有使用。

????????分片偏移量(Fragment Offset):13位,用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该分段从何处开始。若有分段,段偏移以8字节为偏移单位,即每个分段的长度一定是8字节(64位)的整数倍。第一个分段偏移值就是0 0000 0000 0000,如果第一个分段一共是64字节,则0 0000 0000 1001,相当于10进制数的9,因为从第9个“8字节”数据块开始的。如果没有分段,则该字段值为0。

??生存时间(TTL):这个字段表示数据报在被抛弃之前能够保留的时间(以秒为单位)或路由器跳数。每个路由器都会检查这个字段,并且至少把它减去1,或数据报在路由器中延迟的秒数。当这个字段的值为0时,数据报会被抛弃。跳数代表数据报到达目的之前必须经过的路由器的数量。如果数据报在到达目的之前经过了5个路由器,我们就说距离目的有5跳。
??协议:这个8位的字段表示接收数据载荷的协议,比如协议标识为6(二进制为00000110)的数据报会被传递到TCP模块。
??首部校验和:这个字段包含16位的校验和,只用于检验报头本身的有效性。数据报经过的每个路由器都会对这个值进行重新计算,因为TTL字段的值是在不断变化的。
??源IP地址:这个32位的字段包含了数据报的源IP地址。
??目的IP地址:这个32位的字段包含了数据报的目的IP地址。目的IP根据这个值检验发送的正确性。
??IP选项:这个字段支持一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
??**填充:**IP选项字段的长度不是固定的。填充字段可以提供一些额外的0,从而保证整个报头的长度是32位的整倍数(报头长度必须是32位字的整倍数,因为“网际头长度(IHL)”字段以32位字为单位表示报头的长度)。
??IP数据载荷:这个字段一般用于保存传递给TCP或UDP(在传输层中)、ICMP或IGMP的数据。数据块的长度不定,可以包含数千字节。

1.4.2 IP地址

? ? ? ? 在IPV4协议版本中,IP地址是32位无符号二进制数,通常用“点分十进制”格式表示,即将32位划分为4B,每一个字节分别用一个十进制数表示,用小数点将这些字节隔开。例如,32位的IP地址:11001010.11000100.01001001.00000101,可用点分十进制数表示为202.196.73.5。

? ? ? ? 在技术上一个IP地址是与一个接口相关联的,而不是与包含该接口的主机或路由器相关联的。一般的路由器有多个接口,每一个接口都有一个IP地址。当一台主机有多个接口与多个网络连接时,它就有多个IP地址,称该主机为多穴主机。

? ? ? ? 1.IP分类编址

? ? ? ?IPv4 地址共有??2^{32}个,最初把一个地址分成两部分:“网络识别码”在地址的最高的字节当中,”主机识别码“在剩下的部分中。这样划分的话,就使得最多只能分配给 256 个网络,显然这样是远远不够的。为了克服这个限制,在随后出现的分类网络中,地址的最高位字节被重新定义为网路的类别(即网络 ID),共 5 个:A、B、C、D 和 E。A、B 和 C 类用于单播通信中设备 IP 地址分配;D 类属于组播地址,用于组播通信;E类是保留地址。他们均有不同的网络类别(也就是网络 ID) 长度,剩余部分用来识别网络内的主机(称为主机 ID)。网络 ID 用来确定每类网络中有的网络数,而主机 ID 用来确定每个网络中的 IP 地址数。下面分别介绍这五类地址的结构。

????????A 类 IPv4 地址

????????A 类 IPv4 地址结构如下图所示,其中网络 ID 占用最高一个字节,也就是第一个二进制 8 位组,而主机 ID 则占用剩余三个字节,也就是后面的三个二进制 8 位组(一共 24 位)。
A 类地址的结构
????????在分类中规定,A 类 IPv4 地址中网络 ID 的最高位固定为 0,后面 7 位可变。这样一来,A 类网络的总数从 256个减少到 128个。但实际可以使用的只有 126 个,即整个 IPv4 地址中可构建 126 个 A 类网络,因为网络 ID 为 0 和 127 的 A 类网络不可用的。网络 ID 全为 0 的地址为保留地址,不能被分配;而网络 ID 为 01111111(相当于十进制的 127)的地址专用本地环路测试(也就是通常所说的环路地址),也是不能分配的。也就是以 0 或者 127 开头的地址是不能分配给节点使用的。

????????又因为 A 类 IPv4 地址中主机 ID 又24 位,所有可以使用的主机 ID 数,也就是可以每个 A 类网络中拥有的 IPv4 地址数为 166 777 216(2^{^{24}})。但主机 ID 全为 0 的地址为网路地址,而主机全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可用的地址数为 166 777 214(2^{^{24}}?2)。A 类网络中可以构建的网络数最少,但每个网络中拥有的地址数是最多的,也就是可以构建的网络规模最大,适用于大型企业和运营商。

????????A 类 IPv4 地址的子网掩码固定为 255.0.0.0,因为子掩码就是网络 ID 部分全为 1,主机 ID 部分全为 0,而 A 类地址中网络 ID 部分就是最高的那个字节。

????????B 类 IPv4 地址

????????B 类 IPv4 地址结构如下图所示,其网络 ID 占用最高的前两个字节,也就是第一个和第二个二进制 8 位组,而主机 ID 则占用剩余的两个字节,也就是后面两个二进制 8 位组。
B 类地址结构
????????B 类 IPv4 地址的网络 ID 的最高两位固定分别为 1、0,后面 14 位可变。由此可知 B 类网络的总数从 65536(2^{16})减少到 16384(2^{14})个;B 类 IPv4 地址中主机 ID 为 16 位,所以可用的主机数,也就是每个 B 类网络拥有的 IPv4 地址数为 65536(2^{16})个。同样因为主机 ID 全为 0 的地址是网络地址,而主机 ID 全为 1 的地址为广播地址,不能分配给主机使用,所以实际上可以使用的地址数为 65534 个。

????????B 类 IPv4 地址的子网掩码为固定的255.255.0.0,因为 B 类地址中网络 ID 部分是最高的两字节,每个字节均为 8 个连续的 1,转换成十进制后每个字节就是 255 了。

????????C 类 IPv4 地址

????????C 类 IPv4 地址结构如下图所示,其网络 ID 占用最高的前三个字节,也就是第一个、第二个和第三个二进制 8 位组,而主机 ID 只占用最后的一个字节,也就是只有最后一个二进制 8 位组。
C 类地址的结构????????C 类 IPv4 地址的网络ID的最高三位固定分别为 1、1、0,后面的 21 位可变。由此得知 C 类网络总数从 166 777 216(2^{24})减少到 2 097 152(2^{^{22}})个。C 类地址中主机 ID 仅为 8 位,所以可用的主机 ID 数,也就是每个 C 类网络拥有的 IPv4 地址数为 256个。同样因为主机 ID 全为 0的地址为网络地址,而主机 ID 全为1的地址为广播地址,不能分配给主机使用,所以实际上可用的地址数为 254。

????????C 类单播地址的子网掩码为固定的255.255.255.0,因为 C 类地址中网络 ID 部分是最高的前 3 个字节,每个字节均为 8 个连续的 1,转换成十进制后每个字节就是 255 了。

????????下表总结了A、B 和 C三类 IPv4 地址的主要特征

类别w 的值网络 ID 部分主机 ID 部分网络 ID 数每个网络的主机 ID 数
A1-126wx.y.z12616 777 214
B128-191w.xy.z16 38465 534
C192-223w.x.yz2 097 152254

????????D 类 IPv4 地址

????????D 类 IPv4 地址是组播地址,用于 IPv4 组播通信中。通过组播 IPv4 地址,组播时源主机(组播源)只需发送一份数据,就可以使对应组播组(组播组使用 D IPv4 地址标识)中的一个主机或者多个主机收到这份数据的副本的通信方式,但只有组播组内的主机可以接收到该数据。

????????IP 组播技术有效地解决了单点发送多点接受的问题,实现了 IP 网络中点到多点的高效数据传输,能够大量节约网络带宽、降低网络负载。还可以利用网络的组播特性方便地提供一些新的增值服务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等互联网的信息服务领域。

????????D 类 IPv4 地址结构如下图所示,规定在最高字节中前四位分别固定为 1、1、1、0,组播地址范围为 224.0.0.0 ~ 239.255.255.255。
D 类 IPv4 地址结构

整个组播 IPv4 地址根据不同的应用环境和用途又可以分为预留组播地址、公用组播地址、临时组播地址、本地管理组播地址四大类。

????????E 类 IPv4 地址

????????E 类地址输入 IANA 保留地址,不分配给用户使用,地址段范围为 240.0.0.0 ~ 247.255.255.255,其特征是最高 5 位分别是 1、1、1、1、0,如下图所示,也就是有 27 位是可变的。
E 类 IPv4 地址结构

????????2.子网划分

? ? ? ? 如上述所示,IP地址被分为网络号和主机号形成的二级结构。但是存在以下情况,二级层次结构就显得不够用了,例如一个机构中增加了新的物理网络;因为主机数量的增长要求把本地网络分成两个或多个不同的网络;因为距离增大,而要求把网络划分成更小的网络。为了避免另外再申请IP,以及方便管理,引入了子网划分技术。子网划分在本地网络上进行,外人看来仍然是一个网络。

????????子网划分是在两个层次的IP地址上,将主机号部分分为附加的网络号和主机号,这个附加的网络号称为子网号。这时IP地址可以看做有网络号、主机号、子网号三个层次组成。子网号和主机号组合称为IP地址的本地部分,有子网的网络中的主机知道子网的结构,其它网络上的主机不知道子网的结构,远程主机仍然把IP地址的本地部分看作一个主机号。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? 3.子网掩码

? ? ? ? 为了从IP地址中找出网络地址,引入了子网掩码的概念。将子网掩码和IP地址逐位进行“逻辑与”运算,即可以得到网络地址。子网掩码是一个网络或一个子网的重要属性,路由器对到来的IP数据报进行路由转发时,需要利用子网掩码来确定目的网络地址。A类网络的默认子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0。

? ? ? ? 4.IP地址配置

????????为主机配置IP地址可以采用两种方式:

????????手工配置方式:网管员手工配置IP地址。

????????自动配置方式:需要DHCP支持。

????????自动专用IP编址(Automatic Private IP Addressing,APIPA):Windows环境下,当DHCP客户无法找到DHCP服务器或DHCP服务器不能做出响应时,则DHCP客户使用微软预留的B类网络地址169.254.0.0,以及子网掩码255.255.0.0,自动配置IP地址和子网掩码。

? ? ? ? 5.无类型IP编址与无类型域间路由

????????CIDR化的网络地址:指一个IP地址的网络部分在32位范围内可以是任意位长,而不受限于8、16、24位长。CIDR用斜线记法或前缀记法又称CIDR记法。例如200.23.16.0/20,表示前20为是网络号。

1.4.3 地址解析协议

????????地址解析协议(Address Resolution Protocol, ARP)把IP地址转换为物理地址。

1.4.4 逆向地址解析协议

????????无盘工作站可以读它的网卡,以得到它的物理地址。无盘工作站需要用物理地址来获取IP地址,为了完成这个工作需要使用逆向地址解析协议(RARP),并且局域网上至少有一个RARP服务器来支持无盘工作站的工作。

RARP服务器中有一个无盘工作站的物理地址与IP地址对应关系的映射表。

1.4.5 因特网控制报文协议

????????ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
????????ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。

????????ICMP消息类型

????????ICMP报告无法传送的数据报的错误,并帮助对这些错误进行疑难解答。例如,如果IPv4不能将数据报传送到目标主机,则路由器上的或目标主机上的ICMP会向主机发送一条“无法到达目标”消息。ICMP协议只是试图报告错误,并对特定的情况提供反馈,最终并没有使IPv4成为一个可靠的协议。ICMP消息是以未确认的IPv4数据报传送的,它们自己也不可靠。

????????ICMP报头格式

????????ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。

????????ICMP封装成IP数据报,然后再传送给数据链路层。

????????常见的ICMP报文:相应请求;目标不可达,源抑制和超时报文;时间戳请求;

1.4.6 因特网组管理协议

????????因特网组管理协议(IGMP)是与多播有关的协议。在因特网中进行多播,需要有转发多播数据报能力的路由器,这些路由器的路由表使用多播路由选择协议进行更新。

? ? ? ? IGMP不是多播路由选择协议,是组成员关系管理协议。IGMP协议把网络上所连接的主机的成员关系状态传送给多播路由器。

1.4.7 因特网的路由技术

????????路由选择就是指选择一条从源到目的的路径,计算这些路径的算法称为路由算法。在TCP/IP网络中,每个IP数据报都携带有源IP地址和目的IP地址。路由器通过检查IP数据报的目的IP地址,依据路由器中的路由表,决定该IP数据报的转发路由。因特网采用分层次的路由协议:内部网关协议和外部网关协议。

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

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