IP协议报文

一.IP协议报头结构



二.IP协议报头拆解

1.4位版本

实际上只有两个取值,分别是4和6,4代表的是IPv4,6代表的是IPv6。

2.4位首部长度

IP协议报头的长度也是边长的,单位是*4,这里表示的大小为0~15,当数值为15时,报头长度位60,和TCP一样。

3.8位服务类型TOS

        8位服务类型TOS:3位优先权字段已经弃用,4位TOS字段和1位保留字段(必须置为0)。4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者互相冲突,只能选择一个,对于ssh/telnet这样的应用程序,最小延时比较重要,对于ftp这样的程序,最大吞吐量比较重要。

i.最小延时:数据从A到B消耗的时间最短。

ii.最大吞吐量:数据从A到B单位时间内,传输的数据量最多。

iii.最高可靠性:IP协议并不会像TCP那样有严格的可靠性机制,但是IP一些机制也会影响到丢包的概率。

iv.最小成本:设备上减少消耗。

4.16位总长度

        IP数据报的总长度:16位总长度相当于2个字节,一个数据包最大才64KB,但是并不是说IP数据报只能传64KB的数据,它也能传输大的数据,因为IP协议内置了拆包组包的机制,会自动把大的数据包拆成多个IP数据报来携带数据,在接收方拼接。

5.拆包组包的属性

  i.16位标识:IP协议会自动拆包,同一个载荷的数据会被分成多份,交给多个IP数据报来携带,并且多个IP数据报之间,16位标识是相同的。

 ii.3位标志:只有2个有效,还有一个保留位。其中一个表示这个包是否需要组包(是否是拆包的一部分),另一个表示当前包是否为组包中的最后一个单位。

iii.13位片偏移:决定组包时数据报的位置。(防止后发先至)

6.八位生存时间(TTL)

  

        8位生存空间这个指的是一个IP数据包最久存活的时间,但是这个不是按时间来进行计算的,而是通过路由器转发的次数来进行计算(经过交换机不会扣次数),而TTL是有转发次数的限制的,当发送一个IP数据报的时候会有一个TTL的初始值(32,64,128...),数据每经过一个路由器都会减少TTL的值,当TTL的值为0的时候,这个数据报就会被丢弃。

7.八位协议

        IP数据报中的载荷,载荷通过携带不同传输层协议的数据包,类似于TCP/UDP的端口号。

8.16位首部校验和

        验证传输过程中IP报头是否发生错误,不管IP的载荷,载荷部分TCP/UDP都有自己的校验和。

9.32位IP地址

        IP地址是32位的,但是不方便人为观察,便通过点分十进制来进行化简,一共有三个点,每个部分是一个字节,大小不超过255:类似于192.192.192.192这种(乱写的)

        IP地址是唯一的,IP是32位大小,可以表示的范围是0~42亿9千万,但是如今的互联网发展迅速,这个大小已经无法满足现在的需求了。

三.解决IP地址不够的方法

1.动态分配地址

        当一个设备上网的时候,才会对它进行地址的分配,当该设备上网的时候,就不再进行地址的分配,对于IP地址不够用的解决只能算是权宜之计。

2.NAT(网络地址转换)

i.公网和私网IP

IP地址被分为两大类,第一种是公网IP/外网IP,第二种就是私网IP/内网IP。公网IP是不能重复的只能有一个,而私网IP可以在不同的局域网内中重复。

私网IP / 内网IP 的IP一般都是这几个类型:10.*   /    172.16~172.31.*     / 192.168.*(学会区分)

其他的就是公网IP / 外网IP 

ii.NAT的工作原理

NAT的作用:一个设备在上网的时候,IP数据报的IP地址,就会被NAT(通常是路由器)自动进行修改。

1.同一个局域网中,主机A访问主机B,不会涉及到NAT机制。

2.公网上的设备A,访问公网上的设备B,不会涉及到NAT。

3.一个局域网中的主机A,访问另一个局域网中的主机B,NAT机制中,不允许有这样的访问。

4.局域网内部的设备A,访问公网上的设备B,NAT机制会生效,并且NAT就是为了解决这个问题。

iii.NAT的工作过程

1.当我使用我的电脑发送IP数据报给卫星这个应用程序的时候,其中NAT会将我的IP数据报的IP地址自动发生改变,并把IP数据报发送给卫星这个应用程序:

2.当卫星这个应用程序接收到了我的电脑发送的IP数据报时,再将它的IP数据报传回给我的电脑上,并且通过NAT机制来进行:

3.如果有多个设备访问运营商路由器,并且给同一个服务器发送IP数据报,此时NAT机制会有映射关系:

        需要注意的是,如果A主机和B主机的端口号在很小的概率下,两者的端口号相同了,那么在运营商IP地址记录映射关系的时候,生成的新端口号会不同。在网络通信中,不仅仅只有IP信息是关键信息,端口号也是关键信息,端口号本身的作用就是区分同一个主机上的不同的应用程序,但在NAT中可以就可以用于区分不同主机上的不同的应用程序。

iv:NAT的缺点

        NAT机制的缺点在于网络环境过于复杂,替换过程中,需要维护每一层路由器的映射关系,每次转发数据,都需要查询映射关系等等,开销比较大。

3.使用IPv6

        可以根本上解决地址不沟通的问题,因为IPv6是使用了128位16个字节表示IP地址,而IPv4使用的是32位4个字节来表示IP地址的,这个差距是非常大的,因为IPv6是2*128,而IPv4是2*32。

        但是IPv6之所以没被普及,是因为使用IPv6需要使用新的设备,这样需要花很多钱,可是替换之后并不会有什么显著的提升,所以很多设备还是继续使用IPv4。而NAT机制只需要给路由器更新升级软件就可以,硬件不需要更换,成本更低。

 IPv6的内网:

四.组网

1.组网概念

        IP地址中的组网指的是网络划分,也是组织网络。组网的时候,需要针对每个上网设备IP地址(包括路由器的IP地址)进行设置。(虽然在日常生活中,我们自己使用的时候只需要插上网线就可以直接使用,但是其实路由器在家庭网络这种比较简单的网络结构的时候,路由器会自动分配IP地址的功能(dhcp))

2.主机号、网络号和子网掩码

        IP地址32位,一分为二,左半部分为网络号,右半部分为主机号,需要通过子网掩码来区分出哪里是网络号,哪里是主机号,子网掩码也是32位整数,如果为255.255.255.0,则可以缩写为/24,如果是255.255.0.0则可以缩写为/16,并且左半部分都是1,右半部分都是0,不能出现0和1的穿插出现。

        如果子网掩码是255.255.255.0,则类似于192.168.110.145中192.168.110位网络号,145为主机号。

        网络中规定:同一个局域网中的设备,网络号必须相同,主机号必须不同,两个相邻的局域网,网络号必须不同。在一个局域网中,如果某个设备的网络号不相同,则不能上网,但是如果某个设备网络号相同,主机号和别的设备重复,也不能上网。(路由器中WAN口接上层路由器,LAN口接设备)

除了子网掩码,还有一个方案就是ADCDE五类网络:

        通过前面的不同的数据,来区分哪一类网络,这些都是上古时期的网络划分方式,现在已经看不到这个方式了。其中AB类主机号太多了,实际上一般没有这么大的局域网,这个方案就导致IP地址浪费的比较多了,但是这个方案不涉及到子网掩码。

 3.特殊的IP地址

1.主机号全为0的(二进制)

        此时这个IP就是表示当前网段(相当于网络号),因此,给局域网中的某个设备分配IP地址的时候,不能把主机号全设置为0。

2.主机号全为1(二进制)

        比如子网掩码是255.255.255.0,IP的地址是192.168.0.255,则主机号全部为1,这个IP地址就被成为广播IP。

        广播IP指的是往这个IP地址上发送数据包,就相当于给整个局域网中所有的设备都发了一次数据包,这个是特殊情况下的解决方案。看到的很多业务上的广播都是通过应用层代码进行编写实现的,而不是借助广播IP。

        只有在手机电视的投屏才会涉及到上述说到的广播IP。

3.环回IP(loopback):127.*

        这个IP是自发自收的,给这个IP发一个数据,设备就会从这个IP上再收到同一个数据。一般会使用环回IP来进行测试。

        写的网络程序太多了,大多数情况都是为了跨主机通信,往往在进行跨主机通信的时候,需要先进行自行测试,一台主机测试客户端和服务器之间是否能够正常交互。

        一般使用的环回IP就是127.0.0.1,虽然也有其他的127开头的IP,并且这些IP也是可以的,但是很少见。        

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

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

相关文章

从FastBEV来学习如何做PTQ以及量化

0. 简介 对于深度学习而言,通过模型加速来嵌入进C是非常有意义的,因为本身训练出来的pt文件其实效率比较低下,在讲完BEVDET后,这里我们将以CUDA-FastBEV作为例子,来向读者展示如何去跑CUDA版本的Fast-BEV,…

刷题 链表

面试经典150题 - 链表 141. 环形链表 class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head, *fast head;while (fast ! nullptr && fast->next ! nullptr) {slow slow->next;fast fast->next->next;if (slow fast) {return…

java9的juc包中的Flow接口(响应式编程/发布订阅模式)

前言 在java9的juc包中有一个Flow接口,里面有几个接口 分别为 Publisher 发布者Subscriber 订阅者 Subscription 订阅关系 Processor 中间操作用来完成发布订阅模式的响应式开发 我的环境为java17 响应式编程 底层:基于数据缓冲队列消息驱动模型异…

简单的网络爬虫爬取视频

示例代码爬取一个周杰伦相关视频 import requests# 自己想下载的视频链接 video_url https://vdept3.bdstatic.com/mda-qg8cnf4bw5x6bjs5/cae_h264/1720516251158906693/mda-qg8cnf4bw5x6bjs5.mp4?v_from_shkapp-haokan-hbf&auth_key1728497433-0-0-4a32e13f751e04754e4…

RandLA-Net PB C++

tensorflow pb 模型 实现 c++ 部署 Code: https://github.com/QingyongHu/RandLA-Net RandLA-Net PB C++ randlanet_tf.h #ifndef RANDLANET_TF_H_

gaussdb hccdp认证模拟题(判断)

1.在事务ACID特性中,原子性指的是事务必须始终保持系统处于一致的状态。(1 分) 错。 2.某IT公司在开发软件时,需要使用GaussDB数据库,因此需要实现软件和数据的链接,而DBeaver是一个通用的数据库管理工具和 SQL 客户端&#xff…

【windows Server 2012】把我的电脑放在桌面

WinR 打开命令输入框 输入 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

深入理解 CSS 浮动(Float):详尽指南

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩!目录1. 什么是 CSS 浮动?2. CSS 浮动的历史背景3. 基本用法float 属性值浮动元素的行为 4. 浮动对文档流的影响5. 清除浮动clear 属性清除浮动的技巧1. 使用…

推荐一个物联网平台,支持源代码交付

ThingsKit物联网平台概述: ThingsKit是一个开箱即用的物联网平台,它支持通过行业标准的物联网协议(如MQTT、TCP、UDP、CoAP和HTTP)实现设备连接。这个平台能够帮助用户快速实现物联网的数据收集、分析处理、可视化和设备管理&…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【297-313】

文章目录 297. super基本语法297.1 基本介绍297.2 基本语法 298. super使用细节1299. super使用细节2300. super使用细节3301. 方法重写介绍302. 方法重写细节303. 重写课堂练习1304. 重写课堂练习2输出结果: 姓名:田所浩二 年龄:24305. 养宠物引出多态3…

河道垃圾数据集 水污染数据集——无人机视角数据集 共3000张图片,可直接用于河道垃圾、水污染功能检测 已标注yolo格式、voc格式,可直接训练;

河道垃圾数据集 水污染数据集——无人机视角数据集 共3000张图片,可直接用于河道垃圾、水污染功能检测 已标注yolo格式、voc格式,可直接训练; 河道垃圾与水污染检测数据集(无人机视角) 项目概述 本数据集是一个专门用…

短剧小程序短剧APP在线追剧APP网剧推广分销微短剧小剧场小程序集师知识付费集师短剧小程序集师小剧场小程序集师在线追剧小程序源码

一、产品简介功能介绍 集师专属搭建您的独有短剧/追剧/小剧场小程序或APP平台 二、短剧软件私域运营解决方案 针对短剧类小程序的运营,以下提出10条具体的方案: 明确定位与目标用户: 对短剧类小程序进行明确定位,了解目标用户群体…

Chatgpt 原理解构

一、背景知识 1. 自然语言处理的发展历程 自然语言处理在不同时期呈现出不同的特点和发展态势。萌芽期,艾伦・图灵在 1936 年提出 “图灵机” 概念,为计算机诞生奠定基础,1950 年他提出著名的 “图灵测试”,预见了计算机处理自然…

Oracle 闪回版本(闪回表到指定SCN)

1.创建目录 mkdir /u01/app/oracle/flash 2.配置FRA alter system set db_recovery_file_dest_size15G; alter system set db_recovery_file_dest/u01/app/oracle/flash; 3.设置闪回参数--确保可以闪回48h内的数据库 alter system set db_flashback_retention_target2880; 4…

望繁信科技成功签约国显科技 流程挖掘助力制造业智造未来

近日,上海望繁信科技有限公司(简称“望繁信科技”)成功与深圳市国显科技有限公司(简称“国显科技”)达成合作。国显科技作为全球领先的TFT-LCD液晶显示及Mini/Micro LED显示产品供应商,致力于为笔记本、手机…

经典蓝牙BLE版本区别:【图文讲解】

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙(BLE)。 1:蓝牙4.0 BLE 4.0版本是3.0版本的升级版本&a…

uniapp学习(004-1 组件 Part.2生命周期)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第31p-第p35的内容 文章目录 组件生命周期我们主要使用的三种生命周期setup(创建组件时执行)不可以操作dom节点…

Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)

本合约非常适合新手学习,其包含了基本的增删改查功能以及各个方式的不同之处的总结,本套合约我也编写了truffle测试,学习truffle测试的小伙伴也有福了~ 该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性&#…

乐歌E5,E6系列升降桌质量如何?2024推荐必买的四款热销型号

在数字化时代,电脑桌成为了我们日常生活和工作中不可或缺的一部分。然而,长时间坐在固定高度的电脑桌前,不仅会影响我们的工作效率,还可能对身体健康造成不良影响。因此,一款能够电动升降的电脑桌显得尤为重要。 乐歌…

RabbbitMQ篇(环境搭建 - 下载 安装)(持续更新迭代)

目录 一、Windows 1. 下载安装程序 2. 安装配置erlang 3. 安装rabbitMQ 4. 验证 二、Linux 1. 下载rpm包 1.1. 下载Erlang的rpm包 1.2. 下载socat的rpm包 1.3. 下载RabbitMQ的rpm包 2. 安装 2.1. 安装Erlang 2.2. 安装socat 2.3. 安装RabbitMQ 3. 启动RabbitMQ服…