IP协议的相关特性

IP协议相关特性

报头结构

报文结构解释

4位版本号:指定IP协议的版本,对于IPV4来说,就是四位.
4位首部长度:IP头部的长度是多少个32bit,也就是Length4的字节数,4bit表示的最大的数是15,因此IP头部最大长度是60.
8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留 字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。
这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于 ftp这样的程序,最大吞吐量比较重要。
16位总长度:IP数据报整体占多少个字节.
16位标识:唯一的标识主机发送的报文.如果IP报文在数据链路层被切断了,那么每一个片里面的这个id是相同的.
3位标志字段:第一位保留(现在不用),第二位置为1表示禁止分片,这时如果报文长度大于MTU,这时IP模块会丢弃报文,第三位表示"更多分片",若被分片,最后一个分片置为1,其他为0.类似一个结束标记.
13位分片偏移:是分片相对于原始IP报文开始处的偏移就是当前分片在原报文中处在哪个位置.实际偏移的字节数是这个值
8得到的.因此除了最后一个报文之外,其他报文长度必须是8的整数倍(否则报文不连续了).
8位生存时间:数据报到达目的地的最大报文跳数.主要防止出现路由循环.
8位协议:表示上层协议的类型.
16位首部校验和:使用CRC进行校验,防止出现头部损坏.
32位源IP地址和32位目的IP地址:表示发送端和接受端.

IP地址相关问题

从报文结构得知,IP地址是一个4字节,32位的整数.我们通常会把这个整数转换为点分十进制的表示方法:这样一串东西就是我的IP地址,三个点把整数分为了4个部分,每部分都是一个字节,每个部分的取值范围0~255
这样一串东西就是我的IP地址,三个点把整数分为了4个部分,每部分都是一个字节,每个部分的取值范围0~255.

那么32位整数可以产生多少个不同的地址?42亿9千万个,在互联网的发展下,这个数目已经不够用了,那么如何解决地址不够用的问题呢?

  1. 动态分配IP地址只给正上网的设备分配地址
  2. **

NAT机制

**

NAT的工作机制可以以10.0.0.10的主机与163.221.120.9的主机进行通信为例讲解,具体如下:

当10.0.0.10的主机需要与163.221.120.9主机进行通信时,NAT路由器会将源地址从10.0.0.10转换为全局的IP地址(202.244.174.37)再发送数据。 当响应数据从163.221.120.9发送过来时,NAT路由器会将目标地址(202.244.174.37)先转换成私有IP地址10.0.0.10以后再被转发。

NAT机制将IP地址分为了两大类,一类我们称为内网,一类分为外网

  • 内网IP可以重复出现,内网IP地址是由路由器分配的本地IP地址,在同一个局域网内不会出现重复的情况。
  • 外网IP:剩下的所有IP 外网IP必须唯一
    NAT背景下如何通信

1、外网设备 >> 外网设备,可以直接通信
2、内网设备 >> 其他内网设备, 不允许
3、外网设备 >> 内网设备, 不允许
4、内网设备 >> 外网设备,对应的内网设备的路由器,触发NAT机制进行IP替换,此时就会给这个网络数据报的源IP替换成路由器自己的IP。

IP地址组成

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

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

子网掩码

在这里插入图片描述
从二进制角度来看,左侧都为1右侧都为0,为1的部分有几位,就有几位网络号,剩下的就是主机号了.

特殊的IP地址

  • 主机号全部为0的
    例如:192.169.0.0 这个就是一个网络号,局域网中不存在某个主机的主机号为0。
  • 主机号全部为1的
    192.168.0.255 这是一个广播地址。
  • ip为127.*开头的我们成为环回IP
  • 主机号为1的,一般作为网关IP,这个不是绝对的。

MTU

一般我们把数据链路层的数据帧的最大载荷为MTU,若承载的数据长度超过这个MTU,那么就会在IP层进行分包,
另外,我们需要关注3个内容:

  • 16位标识:一个大的IP数据报拆分为小的报后这个标识都是一样的
  • 3位标志位:有1位不用,一位表示是否分包,还有1位表示当前这个分包是否是最后一个(结束标志)
  • 13位片偏移:总得来说就是表示每个小的数据报的先后顺序,用来组包的.

MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包

将较大的IP包分成多个小包,并给每个小包打上标签;

每个小包IP协议头的 16位标识(id) 都是相同的;

每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记
(当前是否是最后一个小包,是的话置为1,否则置为0);

到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;

一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数 据;

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

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

相关文章

安全生产知识竞赛活动小程序界面分享

安全生产知识竞赛活动小程序界面分享

linux内核分析:进程通讯方式

信号 一旦有信号产生,我们就有下面这几种,用户进程对信号的处理方式。 1.执行默认操作。Linux 对每种信号都规定了默认操作,例如,上面列表中的 Term,就是终止进程的意思。Core 的意思是 Core Dump,也即终止进程后,通过 Core Dump 将当前进程的运行状态保存在文件里面…

Python画图系列——折线图

好看的折线图 import numpy as np import matplotlib.pyplot as plt# 生成随机数据 # np.random.seed(42) # 设置随机种子以确保可重复性 sample_numbers np.arange(1, 21) # 生成1到20的样本编号random_data np.random.rand(20) # 生成20个随机数,范围在0到1之…

淘宝商品详情数据采集

淘宝商品详情数据采集的方法如下: 确定采集目标:明确要采集的商品信息,如商品标题、价格、销量、评论、图片等。选择采集工具:可以选择Scrapy框架、Java的WebMagic框架等。编写爬虫程序:进入目标文件夹,输…

无涯教程-JavaScript - POWER函数

描述 POWER函数返回加到幂的数字的输出。 语法 POWER (number, power)争论 Argument描述Required/OptionalNumber 基数。 它可以是任何实数。 RequiredPowerThe exponent to which the base number is raised.Required Notes 可以使用" ^"运算符代替POWER来指示…

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

二、搭建Java环境

搭建Java环境 搭建Java环境1.1.下载JDK1.2.在Win10下配置JDK环境 —————————————————————————————————————————————————— ———————————————————————————————————————————————…

python 冒泡排序以及鸡尾酒排序

冒泡排序 就是一次循环,两两数据比较,将最大值放入末尾,此时找到了最大值,然后进行二次三次等循环,直到排序结束 冒泡排序代码 def bubble_sort_v1(array[]):for i in range(len(array)-1):for j in range(len(arra…

【CANoe/CANalyzer脚本】通过CAPL发送NM帧报文测试网络管理

优质博文推荐阅读(单击下方链接,即可跳转): Vector工具链 CAN Matrix DBC CAN Matrix Arxml 一、在CANoe/CANalyzer中创建Program Node 在Measurement Setup中,创建Program Node; 接着导入下面的Demo:N…

D数树,牛客小白月赛78,思维

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 “开导!” 众所周知&#…

echarts 轴文字内容太长导致显示不全解决方案

情况:Y轴内容是文字,内容太长可能会系那是不全。调整grid会导致短数据前的留白过于多。 解决方案: 方法一: 首先可以配置grid自适应 , containLabel 属性设置true (这常用于『防止标签溢出』的场景&…

树、二叉树、森林的相互转化

目录 一、树>二叉树 二、二叉树>树 三、二叉树>森林 四、森林>二叉树 一、树>二叉树 ①兄弟相连 ②断开每个节点除与左孩子之外的连线 ③调整树为二叉树 二、二叉树>树 ①如果一个节点有父节点,将其右孩子与父节点相连,右孩子…

3D模型格式转换工具HOOPS Exchange协助Epic Games实现CAD数据轻松导入虚幻引擎

一、面临的挑战 Epic Games最为人所知的身份可能是广受欢迎的在线视频游戏Fortnite的开发商,但它也是虚幻引擎背后的团队,虚幻引擎是一种实时3D创作工具,为世界领先的游戏提供动力,并且也被电影电视、建筑、汽车、制造、模拟等领…

Python计算机二级知识点整理

1.当一个进程在运行过程中释放了系统资源后要调用 唤醒进程原语 唤醒进程原语是把进程从等待队列里移出到就绪队列并设置进程为就绪状态,当一个进程在运行过程中释放了系统资源后进入就绪状态,调用唤醒进程原语。 2. 3. 4.在希尔排序法中&#x…

windows常见的命令行操作

1.查看网络 ipconfig 2.根据任务id关闭进程 1.模糊搜索服务 tasklist | findstr QQ 2.根据模糊搜索结果,获取对应的pid taskkill /F /PID 5128 其他常见命令 若不清楚参数,使用(命令 /?)即可查看help

Day 02 python学习笔记

python运算符 算术运算符 混合运算的优先级: () > ** * / // % 高于 - 赋值运算符 - * / ** a 1 > a 3 > a a 3 其余同理 注意: python没有自增自减 (a a a-- --a&#xff0…

Android EditText筛选+选择功能开发

在日常开发中经常会遇到这种需求,EditText既需要可以筛选,又可以点击选择。这里筛选功能用的是AutoCompleteTextView,选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…

go语言 最小堆 最大堆 堆排序

建堆 调整 删除 先根据数组构建完全二叉树 从第一个非叶结点开始 调整为大跟堆,这里就是图里面的1结点开始调整 代码如下: func findKthLargest(nums []int, k int) int {heapSize : len(nums)buildMaxHeap(nums,heapSize)for i : len(nums) - 1; i &…

PRT(Precomputed Radiance Transfer【2002】)原理实现

声明 本文源自对Games202课程,作业2的总结。 参考 手把手教你写GAMES202作业:GAMES202-作业2: Precomputed Radiance Transfer(球谐函数)GAMES 202 作业2Games202课程个人Blog 课程总结:Games202(P6、P7…

员工上网行为监控能监控到哪些内容?员工上网行为监控有哪些?

在当今信息化社会,网络已经成为企业运营的重要工具。然而,网络的便捷性和开放性也带来了一系列问题,如员工工作效率低下、信息泄露等。为了解决这些问题,许多企业选择使用监控员工上网的软件。本文将详细介绍这类软件的功能、优势…