计算机网络之IP协议(详解

news2024/10/6 8:27:35

网络层主管地址管理路由选择。而IP协议就是网络层中一个非常重要的协议。

它的作用就是在复杂的网络环境中确定一个合适的路径。

IP协议头格式

4位版本号(version)

指定IP协议的版本,目前只有两个版本:IP v4和IP v6.对于IP v4来说,这个值就是4.

4位首部长度(header length)

IP头部的长度是多少个32bit,也就是说length*4个字节数,4bit表示的最大数值是15,所以IP头部的最大长度是15*4=60字节。

8位服务类型(Type Of Service)

3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须设置为0)。

4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能从中选取一个。相当于是根据需求切换形态,同一时刻只能取其中一种形态

对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。

16位总长度(total length)

IP数据报整体占了多少字节。(单个IP数据报最大长度不超过64k)

16位标识(id)

唯一标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。

如果整个IP数据报太长了,IP协议就会把这个大包拆分成多个小包,保证每个包都不超过64k。

拆分成多个包,但是只有一个TCP报头。对于IP数据报来说,根本不关心载荷中是什么东西,只是单纯的对数据进行了切分处理。

如何区分多个IP包是从同一个数据拆分出来的?

使用16位标识,多个被拆分出的IP数据报的16位标识的值是相同的。然后通过13位片偏移来描述这些小包谁先谁后。

3位标志字段

第一位保留(保留的意思是现在暂时不用,但是说不定之后会用到)

第二位为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为1,其他是0.类似于一个结束标志

13位分片偏移

是分片相对于原始IP报文开始处的偏移,其实就是表示当前分片在原报文中处在哪个位置。如果出现先发的包后到的情况, 也能确定目前包在原报文中的位置, 保证组包后数据的顺序不被打乱。

实际偏移的字节数是这个值*8得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。

8位生存空间

数据报到达目的地的最大报文跳数。一般是64。表示一个IP数据报还能在网络上存在多久,单位不是时间,而是转发次数。IP数据报被发送的时候,会有一个初识的TTL(常见的如128/64),IP数据报每经过了一个路由器,TTL就会-1.如果TTL减到了0还没到达,此时收到这个包的路由器就会把这个包抛弃。

这个字段主要用来防止出现路由循环(正常的IP数据报都会在既定的TTL内到达)。

8位协议

表示上层协议的类型(TCP/UDP)。

16位首部检验和

使用CRC进行校验,来鉴别头部是否损坏。只鉴别IP头部是否损坏,剩下的载荷有自己的检验和部分。

32位源IP地址和32位目的IP地址

表示发送端和接收端。

源IP表示发送人地址,目的IP表示收件人地址。

对于IP v4来说,一个IP地址本质上是32位的整数,通常会使用“点分十进制”,这样的方式来表示IP地址。点分十进制的三个点将32位整数分为4个部分,每个部分1个字节,每个部分的取值就是0~255。

给每一个设备都分配一个IP地址这个问题如何解决?

1.动态分配IP地址

让每个设备连上网的时候才有IP,不联网时就没有IP(这个IP可以给别人用啦!)

不能从根本上解决这个问题(设备未减少,IP地址未增加),治标不治本。

2.NAT机制

存在极限,端口号的极限个数为65535

让多个设备共有同一个外网IP。

NAT机制把网络分为了内网(局域网)和外网(广域网)

要求外网IP必须表示唯一的设备,同时内网中的若干设备可以共用同一个外网IP。

结论:

  • 对于一个外网IP,可以在互联网的任意位置都能访问到

  • 对于一个内网IP,只能在当前局域网内部访问到。局域网1的设备不能使用内网IP访问局域网2的设备。

  • 内网IP可以重复出现,只有在当前局域网内才是唯一的。

  • 若两个链接的IP地址来自于“同一个局域网”(源IP地址相同),此时要分别看他们的端口号。

  • NAT不光会对IP调整成外网IP,同时也会对端口进行调整,如果端口不一样就算了,如果一样,就会调整成不同的端口。同时NAT会记录这个映射关系,保证服务器返回的数据,再按照这个映射关系给还原回去。

3.IP v6

从根本解决了问题!!!

IP v6在报头中使用了一个更长的字段来表示IP地址。

IP v6:16个字节,128位。2^128.

IP v4:4个字节,32位。2^32.

真正从根本上解决了IP地址不够用的问题。

IP v6和IP v4是不兼容的。对于一个设备要支持IP v4和IP v6是两个截然不同的机制。

推荐视频:https://www.bilibili.com/video/BV1i14y157YV/?spm_id_from=333.880.my_history.page.click

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边缘云是什么?

涂鸦边缘云服务 旨在解决物联网边缘位置的连接需求和提高设备自主管理能力。并与涂鸦 IoT 云服务和 IoT 终端形成云边端三位一体的端到端产品架构。使用涂鸦边缘云,能极大降低设备响应延时、降低网络带宽压力、提高算力分发能力,并构建以下技术优势&…

IDEA 30 个好用天花板技巧,敲代码直接接爽到飞。

IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总…

LAMP架构与搭建论坛

目录 1、LAMP架构简述 2、各组件作用 3、构建LAMP平台 1.编译安装Apache httpd服务 2.编译安装mysql 3.编译安装php 4.搭建一个论坛 1、LAMP架构简述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动…

Spring Boot整合Thymeleaf和FreeMarker模板

虽然目前市场上多数的开发模式采用前后端分离的技术,视图层的技术在小一些的项目中还是非常有用的,所以一直也占有一席之地,如spring官方的spring.io等网站就是使用视图层技术实现的。 目前Spring Boot支持的较好的两个视图层模板引擎是Thyme…

【git】git版本控制

目录 1.在合适的位置打开bush,创建仓库 2.检查:跳转到当前文件夹,显示当前文件夹的相对路径 3.初始化 4.创建一个文本文件readme.txt 5.手动向readme文件中添加一些内容 6.把文件添加到暂存区 7.把文件提交到git仓库 8.手动修改readme.txt文件 9.查看当前…

前端监控之用户行为监控实践2(数据统计mongodb)

一、技术栈介绍 我们当前的项目,后端是node 搭建,数据库是非关系型数据库 mongodb。 二、数据情况介绍 日志存储存储格式如下: 主要包括: key意义type当前访问类型actionTime访问时间content访问内容erp、fullname、orgname、…

【Spring MVC】这一篇,带你从入门到进阶

目录 1、什么是MVC? 2、什么是 Spring MVC 3、如何学好 Spring MVC? 3.1、如何创建 Spring MVC 项目 3.1.1、使用Spring Initializr创建(推荐) 3.2、将 Spring 程序与用户(浏览器)联通 3.3、基础注解…

6.5 拓展:如何实现 Web API 版本控制,同时兼容无版本控制的原始接口?

第6章 构建 RESTful 服务 6.1 RESTful 简介 6.2 构建 RESTful 应用接口 6.3 使用 Swagger 生成 Web API 文档 6.4 实战:实现 Web API 版本控制 6.5 拓展:如何实现 Web API 版本控制,同时兼容无版本控制的原始接口? 6.5 拓展&#…

干旱预测方法总结及基于人工神经网络的干旱预测案例分析(MATLAB全代码)

本案例采用SPEI干旱指数,构建ANN和BP神经网络预测模型,并开展1~3个月预见期的干旱预测,对比分析干旱预测模型的适用性,为流域干旱预警和管理提供技术依据。 干旱预测 1 干旱预测方法 1.1 统计学干旱预测 根据历史降水或气温等…

【python】用plotly绘制正二十面体

文章目录顶点棱实现正二十面体plotly 的 Python 软件包是一个开源的代码库,它基于 plot.js,而后者基于 d3.js。我们实际使用的则是一个对 plotly 进行封装的库,名叫 cufflinks,能让你更方便地使用 plotly 和 Pandas 数据表协同工作…

设备树(配合LED驱动说明)

目录 一、起源 二、基本组成 三、基本语法 四、特殊节点 4.1 根节点 4.2 /memory 4.3 /chosen 4.4 /cpus 多核CPU支持 五、常用属性 5.1 phandle 5.2 地址 --------------- 重要 5.3 compatible --------------- 重要 5.4 中断 --------------- 重要 5.5 …

python攻陷米哈游《元神》数据?详情请看文章。。

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《原神》是由米哈游自研的一款全新开放世界冒险RPG。 里面拥有许多丰富得角色,让玩家为之着迷~ 今天,我们就来用python探索一下原神游戏角色信息! 标题大家看看就好了哈~&#xff08…

DNS,DNS污染劫持,DNS加密

1. DNS(Domain Name System)DNS(Domain Name System), 也叫网域名称系统,是互联网的一项服务。它实质上是一个 域名 和 IP 相互映射的分布式数据库.DNS(Domain Name Server,域名服务…

医疗保健和智慧城市服务将引领5G物联网采用

Juniper Research预测,到2026年,全球5G物联网连接将达到1.16亿,而2023年仅为1700万。该公司预测,医疗保健部门和智慧城市服务将在未来三年推动这1100%的增长,到2026年占5G物联网设备的60%以上。5G物联网技术的超低延迟…

配置Flutter开发环境

一、在Windows上搭建Flutter开发环境 1、去flutter官网下载其最新可用的安装包,下载地址:https://flutter.dev/docs/development/tools/sdk/releases 。 注意,Flutter的渠道版本一直在不断的更新,请以Flutter官网为准。 另外&…

自动化测试框架对比

Robot Framework(RF) 链接:http://robotframework.org/ Robot Framework(RF)是用于验收测试和验收测试驱动开发(ATDD)的自动化测试框架。 基于 Python 编写,但也可以在 Jython&…

Android 基础知识4-3.1 TextView(文本框)详解

一、前言 TextView就是一个显示文本标签的控件,就是用来显示文本。可以在代码或者 XML中设置字体,字体大小,字体颜色 ,字体样式 (加粗级斜体),文字截断(比如:只显示10个字…

【Python数据挖掘入门】一、数据挖掘概况

一、数据挖掘概况 数据挖掘是指从大量的数据中,通过统计学、人工智能、机器学习等方法,挖掘出未知的、具有价值的信息和知识的过程。 典型案例: 啤酒与尿布杜蕾斯与口香糖杜蕾斯与红酒 数据挖掘是一门交叉学科,覆盖了统计学、数…

正则表达式常见语法_findall方法、r原串的使用

正则表达式常见语法 re.findall()方法 findall()方法中flag参数的作用 运行结果为 运行结果是空列表, 以上说明,正则表到时中的“点号”不能和换行符匹配。 如果匹配模式设置为re.DOTALL或者re.S&#xff…

类与对象(this 关键字、构造器)

目录一、面向对象二、类与对象三、对象内存图四、成员变量和局部变量区别五、this关键字六、构造器/构造方法一、面向对象 一种编程思想:也就是说我们要以何种思路,解决问题,以何种形式组织代码 当解决一个问题的时候,面向对象会把事物抽象成…