网络层ip协议

一.概念

        ip协议主要是为了在复杂的网络环境中确定一个合适的路径来传输主机间的数据。简单来说就是用来确定主机的位置。

    ip协议中的一些设备如下:

  • 主机: 配有 IP 地址, 但是不进行路由控制的设备;
  • 路由器: 即配有 IP 地址, 又能进行路由控制;
  • 节点: 主机和路由器的统称;

 二.协议头格式

  • 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4.
  • 4 位头部长度(header length): IP 头部的长度是多少个 32bit, 也就是 length 4 的字节数. 4bit 表示最大的数字是 15, 因此 IP 头部最大长度是 60 字节.
  •  8 位服务类型(Type Of Service): 3 位优先权字段(已经弃用), 4 位 TOS 字段, 和 1 位保留字段(必须置为 0). 4 位 TOS 分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于 ssh/telnet 这样的应用程序, 最小延 时比较重要; 对于 ftp 这样的程序, 最大吞吐量比较重要
  • 16 位总长度(total length): IP 数据报整体占多少个字节.
  •  8 位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是 64. 每次经过一个路由, TTL -= 1, 一直减到 0 还没到达, 那么就丢弃了.要是用来防止出现路由循环。(就是数据在主机中传输转圈了)。
  • 8 位协议: 表示上层协议的类型(TCP或UDP)
  • 16 位头部校验和: 使用 CRC 进行校验, 来鉴别头部是否损坏.
  •  32 位源地址和 32 位目标地址: 表示发送端和接收端.
  • 选项字段(不定长, 最多 40 字节):

剩下的这几个和ip分片有关,后面讲。 

 

三.网段划分(重要) 

IP 地址分为两个部分, 网络号和主机号

  •  网络号: 保证相互连接的两个网段具有不同的标识;
  •  主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号  

        不同的子网其实就是把网络号相同的主机放到一起.如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复 。就是说子网的网络号相同,只是子网中不同主机的主机号不同。

        那么怎么划分网络号和主机号呢?

        划分网络号和主机号的方案有多种,最常见的是CIDR(Classless Interdomain R)

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是一个 32 位的正整数. 通常用一串 "0" 来结尾;
  • 将 IP 地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号,剩下的就是网络号

 如下面的子网

        子网范围就代表主机号范围。

        IP 地址和子网掩码还有一种更简洁的表示方法,例如 140.252.20.68/24,表示 IP 地址为 140.252.20.68, 子网掩码的高 24 位是 1,也就是 255.255.255.0。

        这种划分方法可以充分利用ip地址。根据子网主机的数目多少来设置子网掩码,从而不浪费ip地址。

特殊的ip

  • 将 IP 地址中的主机地址全部设为 0, 就成为了网络号, 代表这个局域网;
  • 将 IP 地址中的主机地址全部设为 1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包 
  • 127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1。就相当于自己主机发给这个ip的数据会发到主机主机上,

四.私有 IP 地址和公网 IP 地址 

IP 地址的数量限制:

        我们知道, IP 地址(IPv4)是一个 4 字节 32 位的正整数. 那么一共只有 2 的 32 次方 个 IP 地址, 大概是 43 亿左右. 而 TCP/IP 协议规定, 每个主机都需要有一个 IP 地址. 这意味着, 一共只有 43 亿台主机能接入网络么? 实际上, 由于一些特殊的 IP 地址的存在, 数量远不足 43 亿; 另外 IP 地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个 IP 地址. CIDR 在一定程度上缓解了 IP 地址不够用的问题(提高了利用率, 减少了浪费, 但是 IP 地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决

  • 动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的 设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;
  • NAT 技术(后面会重点介绍);
  • IPv6 并不是 IPv4 的简单升级版. 这是互不相干的两个协议, 彼此并不兼 容; IPv6 用 16 字节 128 位来表示一个 IP 地址; 但是目前 IPv6 还没有普及;

        如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet 上, 理论上使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有IP地址

  • 10.*,前 8 位是网络号,共 16,777,216 个地址
  • 172.16.*到 172.31.*,前 12 位是网络号,共 1,048,576 个地址
  • 192.168.*,前 16 位是网络号,共 65,536 个地址 包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP);         

     符合这些的都是私有ip,不参与公网的组建。

      在网络世界中,主机间的关系如下:

         

        我们的主机一般都在子网中,当我们访问公网的服务器时,由于私有ip不在公网中,不能直接访问,会将数据传输给自己子网中路由器,路由器至少有俩个ip(子网ip,WAN口ip),横跨俩个网络(相当于桥梁,沟通俩个网络),数据在路由器中层层传递, 最终传输给到横跨公网和私网的路由器最终传输给公网。

        这里有几个重点:

  •         一个路由器可以配置两个 IP 地址, 一个是 WAN 口 IP, 一个是 LAN 口 IP(子网 IP).
  •         路由器 LAN 口连接的主机, 都从属于当前这个路由器的子网中
  •         子网内的主机需要和外网进行通信时, 路由器将 IP 首部中的 IP 地址进行替换 (替换成 WAN口 IP), 这样逐级替换, 最终数据包中的 IP 地址成为一个公网 IP. 这种技术称为 NAT(Network Address Translation,网络地址转换).

        详细过程如下图:

         

        如果我们要从ip端口为192.168.1201:12345的主机访问ip和端口为127.77.241.3:80的抖音服务器,过程如下:首先用目的ip与主机IP跟ip掩码运算,计算出不在同一个网段,于是发送给路由器,路由器将收到数据的源IP端口替换成自己的WAN口ip端口,从新进行p掩码运算,计算出不在同一个网段,传给上级路由器,上级路由器重复操作,替换源ip端口,最终通过横跨公网和私网的服务器将数据传输到公网,最终访问到服务器。

        这样我们就实现了将数据传输给公网服务器。通过上述讲解,我们也能明白一个问题,为什么我们不能访问推特等外国服务器,因为我们在私网中,访问外国服务器,需要经路由器传递,路由器是国家做的,可以限制你对一些服务的访问,不将你的数据传输出去。

        这里我们有一个问题,数据是怎么回来的?其实在传输的过程中路由器会维护一张表,记录路由转换。

如客户端A和B同时向服务器发送请求,如果他们的端口号碰巧相同,都为1025,路由器会将源IP的替换为自己的,同时为A和B分配建立不同的端口,避免重复。如:

        当服务器返回消息时,对于A 的消息 源:163.221.12.9:80 目的:202.244.174.1025,对于B 源:163.221.12.9:80 目的:202.244.174.1026。这样由于端口号不同,通过分别就能找到A和B的ip和端口。从而实现消息的返回。

        在主机中为了方便进行转发,会维护一张路由表。记录下对应ip的发送ip。

        

  •  这台主机有两个网络接口,一个网络接口连到 192.168.10.0/24 网络,另一个网络 接口连到 192.168.56.0/24 网络;
  •  路由表的 Destination 是目的网络地址,Genmask 是子网掩码,Gateway 是下一 跳地址,Iface 是发送接口,Flags 中的 U 标志表示此条目有效(可以禁用某些 条目),G 标志表示此条目的下一跳地址是某个路由器的地址,没有 G 标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发; 

他会将将要发送的目的ip和路由表中的ip进行对比,从而确认下一跳(Gateway)的ip,如果没有找到对应的IP,则选择默认ip(一般是路由器)进行发送。 

五.ip的分片和组装 

        数据链路层会规定一次传输的数据最大字节数,但是ip接收到要传输的数据可能超过这个规定,因此需要进行ip的分片和组装。

        在Linux下使用ifconfig命令可以查看对应的MTU(最大传输单元(Maximum Transmission Unit,MTU))。

        那么如何进行ip 分片和组装呢?主要依赖于报头中的下列字段:

  • 16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片 了, 那么每一个片里面的这个 id 都是相同的.
  • 3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要 用到). 第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类 似于一个字符串的结束标记.
  • 13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 *8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是 8 的整数倍(否则报文就不连续了).

        分片就一定要确保顺利组装。 16 位标识(id)可以表示特定报文的分片,3位标志位可以确定报文是不是到结尾,13位分片偏移,可以将分片按顺序组装,同时通过读取每一段的报文中的16位总长度,可以确定有没有片段丢失。需要注意的是即使一个片段丢失,所有分片都要重发。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419759.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈OLTP 与 OLAP 数据建模的差异

OLTP 与 OLAP:常见工作流 联机分析处理 (OLAP) 和联机事务处理 (OLTP) 是两种主要的数据处理系统。两者之间存在多种差异。 OLTP 系统旨在处理来自多个用户的多个事务,它们通常用于许多应用程序的后端。例如,在线商务网站将使用 OLTP 系统来…

Spring6梳理7——依赖注入之特殊类型属性

目录 ①字面量赋值 ②null值 ③xml实体 ④CDATA节 ①字面量赋值 什么是字面量? int a10; 字面量是在源代码中用来表示固定值的表示法。几乎所有的计算机编程语言都支持基本值的字面量表示,例如整数、浮点数和字符串。许多语言还支持布尔类…

网络运维管理:确保企业网络系统稳定运行之道

在当今数字化时代,企业网络系统的稳定运行和高效管理是企业业务持续发展和创新的关键。网络运维管理的核心目标正是确保网络设备和服务的高可用性、优化网络性能、保护网络安全、快速解决网络故障以及有效管理网络配置。本文将深入探讨网络运维管理系统的关键组件、…

CSS - 搜索框小动效

点击搜索框动画变长&#xff0c;搜索框有内容不变&#xff0c;无内容失去焦点&#xff0c;变回原来模样。<div :class"type true ? s_r_z : s_r" click"onChange"><div class"input_s"><input blur"handleBlur" v-mo…

计算机毕业设计选题推荐-流浪动物领养管理系统-Java/Python项目实战(亮点:数据可视化分析、智能推荐)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

uniapp 各个端接入腾讯滑动行为验证码示例

验证调起页面&#xff1a; <template><view class"app"><text>{{ obj.ret }}</text><button click"varify">验证</button></view> </template><script>export default{data(){return{obj: {}}},on…

黑马大事件项目开发

项目介绍 演示网站&#xff1a; https://fe-bigevent-web.itheima.net/login 实现 1&#xff09;创建项目 npm init vuelatest2&#xff09;安装项目需要的依赖 npm install element-plus --save npm install axios npm install sass -D3&#xff09;在main.js中加入Elem…

金融行业项目管理软件分享!华福证券上线奥博思 PowerProject 项目管理系统

如何正确的评估一款项目管理软件是否适合金融行业&#xff1f;金融机构例如银行、券商等企业在选型项目管理软件时可以从以下几方面考虑&#xff1a; 1&#xff0c;管理驾驶舱 金融机构需要对项目的各项数据进行深入分析&#xff0c;以便做出科学的决策。软件应能够生成详细的…

Cesium 展示——静态水添加动态波纹,模拟真实水面效果

文章目录 需求分析材料准备根据几何实例创建贴地面图元将图元添加到集合补充需求 分析 材料准备 首先我们需要准备水波的图片,放在最后大家自行

AI prompt(提示词)

# 好用的用于学习的AI提示词 ## 费曼学习法 请使用费曼学习法&#xff0c;用简单的语言解释&#xff08;量子力学&#xff09;是什么&#xff0c;并提供一个简单的例子来说明它如何应用 ## 帕累托法则&#xff08;80/20原则&#xff09; 将&#xff08;量子力学&#xff09;最…

Android 12 SystemUI下拉状态栏禁止QuickQSPanel展开

1.概述 遇到需求&#xff0c;QuickQSPanel首次下拉后展示快捷功能模块以后就是显示QuickQSPanel&#xff0c;而不展开QSPanel&#xff0c;接下来要从下滑手势下拉出状态栏分析功能实现。也就是直接是展开状态。 2、涉及核心类 frameworks\base\packages\SystemUI\src\com\and…

数据资产:新时代的财富密码

嘿&#xff0c;朋友们&#xff01;今天要和大家聊聊一个在数字化时代重要的话题 —— 数据资产&#xff0c;它可是新时代的财富密码哦 数据资产的庐山真面目 数据资产呢&#xff0c;就是企业或者个人拥有或控制的&#xff0c;能带来经济效益的数据资源。它的特点可不少呢。首先…

网络设备安全

网络设备安全概况 交换机安全威胁&#xff1a;交换机是网络基础设备&#xff0c;负责网络通信数据包的交换传输 交换机面临的网络安全威胁&#xff1a; 路由器安全威胁 网络设备安全机制与实现技术 认证机制&#xff1a;为防止网络设备滥用&#xff0c;网络设备读用户身份进行…

服务器断电,Centos7启动报错

服务器上安装了VMWare&#xff0c;在之上安装了Centos7&#xff0c;突发断电&#xff0c;再次启动报错 mount /dev/mapper/centos-root /sysroot执行后提示&#xff1a;xfs(dm-0):internal error xfs_want_corrupted_goto at line 993 of file fs/xfs/xfs_trans.c. Caaler xfs_…

E31.【C语言】练习:指针运算习题集(上)

Exercise 1 求下列代码的运行结果 #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d",*(ptr - 1));return 0; } 答案速查: 分析&#xff1a; Exercise 2 求下列代码的运行结果 //在x86环境下 //假设结…

中秋之美——html5+css+js制作中秋网页

中秋之美——html5cssjs制作中秋网页 一、前言二、功能展示三、系统实现四、其它五、源码下载 一、前言 八月十五&#xff0c;秋已过半&#xff0c;是为中秋。 “但愿人长久&#xff0c;千里共婵娟”&#xff0c;中秋时节&#xff0c;气温已凉未寒&#xff0c;天高气爽&#x…

以太网--TCP/IP协议(一)

概述 以太网是局域网的一种&#xff0c;其他的比如还有令牌环、FDDI。和局域网对应的就是广域网&#xff0c;如Internet&#xff0c;城域网等。 从网络层次看&#xff0c;局域网协议主要偏重于低层&#xff08;业内一般把物理层、数据链路层归为低层&#xff09;。以太网协议…

2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]

目录 1.数据库与数据库管理系统 1.1 数据库的相关概念 1.2 数据库与数据库管理系统的关系 1.3 常见的数据库简介 Oracle 1. 核心功能 2. 架构和组件 3. 数据存储和管理 4. 高可用性和性能优化 5. 安全性 6. 版本和产品 7. 工具和接口 SQL Server 1. 核心功能 2. 架构和组…

Windows系统引入全新 Android 体验?快来尝鲜!

听说微软 Windows 11 操作系统引入全新体验 &#xff1a;实时访问 Android 设备图片。 意思就是在Android 设备上捕获了新照片或屏幕截图时&#xff0c;Windows 上立刻收到通知&#xff0c;且可以不用插数据线就能访问。 用Windows连接手机的功能其实早在Windows10就已经有的了…

GIS大事件!Bentley收购Cesium

9月6日&#xff0c;Cesium官方宣布加入Bentley。 Bentley我们并不陌生。最初Acute3D被Bentley公司收购&#xff0c;旗下软件由Smart3DCapture转型到ContextCapture&#xff0c;现又改名 iTwin Capture。 如今又收购了Cesium。 Cesium官方表示&#xff0c;Cesium开发平台与iTwi…