当前位置: 首页 > news >正文

Linux网络层:IP

文章目录

  • 1. 网络层简介
  • 2. IP协议
  • 3. IP地址
    • 3.1 网段划分
    • 3.2 NAT技术
      • 3.2.1 IPV4局限与解决方案
      • 3.2.2 NAT技术介绍
    • 3.3 路由
    • 3.4 子网转换
  • 4. IP总结

1. 网络层简介

网络层位于传输层之下,数据链路层之上,是TCP/IP协议中非常重要的一层,涉及到整个网络世界的网络拓扑结构和路由选择等等。

IP协议是网络层使用最为广泛的协议。

2. IP协议

下图是IP协议内容。
在这里插入图片描述
上图中的字段,我们一个个进行讲解。

4位版本:用来标识IP版本,主要是IpV4IpV6的区别。

4位首部长度:由于IP协议报头存在选项,即可扩展部分,因此引入4位首部长度——IP报文的大小为20-60字节。

8位服务类型TOS:3位优先权(已经弃用),4位TOS字段,1位保留字段(置为0)。最重要的是TOS字段,分别标识最小延时,最大吞吐量,最高可靠性,最小成本。实际上,就是通过这些字段,进行网络传输行为的建议,即整个网络传输中,优先看重什么——这是必要的,因为不同类型的网络通信,侧重点是不同的。

16位总长度:表示整个IP报文,报头+有效载荷的数据长度。

8位协议:表示上层传输层所对应的协议,用于解包后,正确分用给上层。

16位首部检验和:用于CRC校验的。

8位生存时间TTL:实际数据在网络传输中要经历路由过程,但由于网络拓扑结构非常复杂,有可能会出现路由循环。因此,TTL表示数据从发出到达目的地所支持的最大报文跳数(由一个结点,到另一个结点为一跳),一般是64,减到0时,如果还未到达目的地,则丢弃相关报文。

16位标识:唯一标识发送的IP报文。如果IP报文被分片了,则所有分片的IP16位标识都是相同的,方便分片之后合并。

3位标志位:1位为保留位,1位为DF标志位,置为1表示禁止分片,此时如果报文长度超过MTU(最大传输单元,后文会讲),IP模块会弃用该报文。最后一位表示的是更多分片,实际是分片行为后的结束标志位,如果分片了,最后一个分片置为0,表示后面没有分片了,其余置为1,表示还有分片。

13位片偏移:IP分片相关。因为IP分片后,有效载荷分成多分,之后拼接时,一定要按顺序拼接,13位片偏移就是用来确定顺序的。实际上,13位片偏移左移3位,即乘以8,才是最终偏移的字节数。在这个限制下,分片报文有效载荷长度,除了最后一个报文的有效载荷外,其余报文有效载荷长度一定是8的整数倍,否则就无法完成拼接了。

3. IP地址

3.1 网段划分

在了解IP地址前,需要了解网络世界中的三个概念。

路由器:具备路由功能和IP地址分配能力。
主机:通常意义上的入网设备,如个人计算机。
节点: 路由器和主机都是节点,即在整个网络拓扑结构中,它们是同等看待的。

那么,IP地址是如何设计呢?
IP地址本身与每一个节点相对应,在整个网络世界中,定位一台具体的入网设备。
IP地址划分为网络号和主机号,一个完整IP是由这两部分构成的。

IP地址一共32位,那么几位是网络号,几位是主机号呢?

最开始,提出了一种划分网段,即划分IP地址的方案,把所有IP地址分为五类。

在这里插入图片描述
但是,在网络发展过程中,申请的IP地址大部分都是B类,其他类的IP地址申请很少。而且,B类IP地址中,一个网络号下,一共可以有65535个主机号,实际一般一个子网中不会用到这么多。因此,这样的网段划分造成大量IP的浪费。

因此,上述网段划分方案被弃用了,引入一种新方案,叫做无类别域间路由

CIDR中,没有对网络号和主机号明确位数的规定,二者均是可变的。一个具体的IP地址,使用这个IP地址相对应的子网掩码来区分网络号和主机号。

举个例子,现在有一个IP地址,140.252.20.68,子网掩码是255.255.255.0,如何确定网络号?
IP地址按位与上255.255.255.0就得到140.252.20.0,这就是网络号。准确来说,是这个点分十进制的前3个字节是网络号,而最后的一个字节0~255,所有的序号均用来表示主机号。

实际中,有一些特殊规定:
主机号中,0号和网络号组合,用来标识这个网络号,此IP不对应任何设备,仅作标识。
而最大的一个主机号,通常是一个广播地址,表示这个这个网络号下的所有主机。
127.*这种类型的IP,通常表示本地环回,即用于主机自身的测试,一般是写成127.0.0.1

3.2 NAT技术

3.2.1 IPV4局限与解决方案

CIDR技术的引入,相比最开始是将IP地址分为五类的粗暴划分,已经对32位的IP地址进行了有效利用,但是本质并未增加IP地址上限。

32位的IP地址,一共也就42亿多,在网络高度普及的当代,是绝对不够用的。

因此,必须要有相应的解决方案。

动态分配IP地址。只给连入网络的设备分配IP地址,未接入网络的设备不分配,这种情况下,同一个设备,前后接入网络时,得到的IP地址往往是不同的。

IpV6:现在的IP地址,本质是采用IpV4技术,为什么不够用,因为只有32位,那么引入更多位数,不就可以解决了吗,因此IpV6应运而生。IpV6使用16字节,128位表示IP,目前还未普及。

NAT技术:网络地址转换。这是当下应用最普遍的技术。

3.2.2 NAT技术介绍

NAT全称是network address translation,真正意义上扩充了IP地址的上限。

NAT技术本质就是通过划分共有IP和私有IP,公有IP唯一使用,私有IP可以不断复用,进而扩充了上限。

在了解具体实现前,需要确定NAT技术的可行性。
私有IP可以重复吗?可以。在不同子网中的私有IP可以重复,在同一子网中的IP不能重复。因为,IP定位某个机器,本质是先定位到这台机器所处的子网,再在这个子网中,定位这台机器。因此,只要子网不同,私有ip的重复是并不冲突的。

这就好比有两个同名同姓的人,如果这两个人在同一个部门,那么在这个部门中,就无法区分,但要是在不同的部门,对于每个部门而言,这个名字是唯一的,因此可区分。

下面,介绍NAT的具体实现。

在这里插入图片描述
首先,在层层的子网划分之上,最终有一个广域网,即公网。公网上有很多带有公网IP的服务设备,包括各大互联网公司的服务器。

对于整个子网结构搭建,起关键作用的是运营商路由器。为了适配NAT技术,每隔路由器本质都配备了两个IP,一个是子网IP,一个是WANIP

子网IP本质就是在该路由器所构建的子网中,识别该路由器的IP;而WANIP则表示该路由器所处其所搭建子网的上一层网络中的标识,即上级路由器所构建的子网中IP,或者是广域网IP(广域网出入口处的运营商路由器)。

在上述结构中,只要确保广域网中的公有IP唯一,下面进行层层子网划分,不同子网中可以给设备分配相同私有IP,就可以大量复用IP地址。

NAT技术中,划分了私有IP和公有IP。二者分别固定一批IP地址,不能混用,否则一个子网中,访问一个IP的服务器,此时由于并不确定是私有还是公有,路由器就根本不知道该如何路由。因此,必须对二者严格划分。

标准规定了以下是可用于构建子网的私有IP:

  1. 10.* : 前8位为网络号,后续均为主机号。
  2. 172.16.到172.31.: 前16位是网络号。
  3. 192.168.*:前16位是网络号。

除了上述IP之外,其它IP均为公有IP。显然,私有IP数量相比公有IP,数量是较少的,因为毕竟私有IP支持在不同子网中进行大量复用。

3.3 路由

对于整个网络拓扑结构中的每一个节点,都有路由功能,那么路由功能到底是什么?

简单来说,路由就是问路,是网络世界中的问路,在网络世界中确定该如何走的一种方式。

我们的网络设备一般具备简单的路由功能,最主要的路由功能还是依靠路由器完成。

那么,路由器如何做这个路由呢?

路由器的路由,本质是借助路由表完成的,看懂路由表,本质就弄懂了路由。

简单来说,路由表是由标识网络号的IP地址,子网掩码和下一跳地址构成的。

路由器收到一个网络报文后,通过对网络报文的解包分用,能够拿到该报文的目的IP地址。通过将这个目的IP地址按位与子网掩码,拿到相应的代表相应网络号的IP地址,用这个地址在路由表中进行逐条比对,一旦命中,就把这个报文法网这个条目中所对应的下一跳地址——为什么发送到下一跳地址呢?因为网络号只是标识,并不对应具体机器,主机号为0,通常下一跳地址是主机号为1的地址,一般也都是路由器。

如果在路由表中,所有的路由条目都不匹配,怎么办?此时存在一个默认路由,即所有路由条目都不匹配时,即按照默认路由对应的下一跳地址进行转发。通常,这种情况会出现在一个子网机器,访问公网服务器时,子网路由器最终肯定走到默认路由进行转发。

3.4 子网转换

在明白路由后,我们再来谈NAT中残留的问题。

NAT技术中,IP地址是扩充了,可是一个私有IP如何对外通信呢?有那么多相同的私有IP,如何确定是哪一个呢?

这就涉及到NAT技术中的子网转换技术。

先来讲讲子网转换技术为什么必要。
一个私有IP去访问公网服务器,是完全没问题的,因为公网IP唯一;但公网服务器想要给这个私有IP机器回复,可就犯难了——不同子网私有IP可重复,那么到底该交给谁呢?

子网转换技术就是在解决这个问题。
一个私有IP访问一个公网上的服务器,在每次经过路由器时,都会将IP报文中的源IP地址进行替换,替换成该路由器的WANIP,最终层层替换,到达公网入口路由器时,进行最后一次源IP地址替换,此时就变成了一个公网IP,准确来说,是公网入口运营商路由器的WANIP

此时,服务器接收到网络报文时,看到的源IP,就是一个公网IP
那么,此时服务器回复报文时,确实可以发送到相应公网入口运营商路由器,但是之后如何转发呢?此时的目的IP不就是这个路由器吗,似乎转发不了了。

这说明,我们在之前的子网转换,即是用WANIP替换源IP时,没有进行记录,导致会送数据时,无法转换回去,因此为了支持子网转换技术,路由器引入了NAT表的结构

NAT表本质就是记录子网转换中的转换前ip和转换后ip的相互映射。记录了映射后,公网入口运营商路由器查NAT表,进行IP替换,然后根据路由表,再将这个报文发送给相应节点。就这样层层往下,不断通过NAT表进行IP替换,以及路由表,进行路由,最终就可以将报文正常返回到源主机中。

但是,在上述过程中,依然存在问题。一个子网中的两台主机都进行了子网转换,转换过去的时候没问题,可是转换回来,由于两台主机替换时,都是将源IP替换成了路由器的WAN口IP,此时映射关系就不再是一一对应,该怎么办?

因此,NAT表无法满足实际需求,引入NAPT表——即不再仅建立IP到IP的映射,而是建立IP+PORT到IP+PORT的映射。

这样,即便同一个子网中的多台主机均进行子网转换,转换的WAN口IP相同,但是PORT不同,这样就可以合理区分了。只不过此时进行子网转换中,就不再是单单替换IP,同时也要替换PORT,这就是NAPT技术。

4. IP总结

IP协议是整个网络世界中应用最广泛的网络层协议。
无论是IP号本身被分为网络号和主机号,还是CIDR无类别域间路由的引入,亦或是NAPT技术的引入,都可以看出,IP是被人为精心设计过的。

那么为什么要去这样精心设计呢?因为IP是用来路由的,即用来在整个网络拓扑结构中,定位一台特定主机的——既然要定位,肯定期望越快越好,而想要快速定位,自然要对IP的结构和网段划分做精心设计。

快速查找和快速定位的本质是什么?本质是能够快速排除大量非目标对象,进而快速找到目标对象。那么,IP在上述设计下,能够实现快速排除非目标对象吗?

答案是肯定的。IP网络号和主机号的划分,以及CIDR的引入,使得路由过程总是先看网络号,网络号符合,再到相应网络号所对应的一个子网中继续定位主机,而这个过程,实际就将网络号不符合的路由器所搭建的子网给排除了,即一次性排除大量非目标主机,进而实现快速定位。

为什么当下网络通信这么快,很重要的一个原因,就是这样的一个网络层精心设计,使得在全球整个非常复杂的网络拓扑结构中,进行IP路由定位,也能够高速完成。

·

http://www.dtcms.com/a/521582.html

相关文章:

  • 个人简历制作网站wordpress页眉描述
  • 【深度学习新浪潮】2025单目深度估计最新研究进展:从技术突破到落地探索
  • 《Git:从入门到精通(八)——企业级git开发相关内容》
  • 如何在360网站上做软文推广找相似图片 识别
  • 个人备案网站营业执照微信小程序怎么做教程
  • Appium+python+unittest搭建UI自动化框架
  • Java实现gRPC双向流通信
  • LLama 3分组查询注意力与KV缓存机制
  • DolphinScheduler依赖机制、Open-Falcon告警推送与监控的优化实践
  • 消息发送接收如何传递TraceId
  • GPU芯片内存泄漏测试方法
  • 深兰科技法务大模型亮相,推动律所文书处理智能化
  • wordpress文章数据包昆明网站优化
  • 建一个资源网站赚钱吗php网站制作实例教程
  • 百度上做优化一年多少钱网站优化 月付费
  • 成都网站建设 平易云网站建设模板哪里下载
  • Docker Swarm之Java 应用部署与平滑更新
  • 网站图片标签群晖 做网站服务器
  • 网站开发项目实训报告企业融资的主要方式
  • 对遗传学进行机器学习的现状与展望!
  • 做旅游海报的软件或是网站wordpress 4.7.2 提权
  • 电子商务网站设计分析怎么做宿州建设银行网站
  • 基于GMapping和蚁群算法的导航方案
  • 阳朔县建设规划局网站怒江州建设局网站企业备案网站
  • O2OA(v9.5)开发平台更新说明(三):聚焦安全与系统维护的全面升级
  • 工信部网站备案查询步骤iis做网站视
  • win7本机做网站自己创建公司网站
  • 【Day 81】虚拟化-虚拟磁盘管理
  • 使用python开发任天堂gameboy模拟器|pyboy开发实践
  • 平顶山网站建设公司视频软件制作app