IP协议(网络层重点协议)

目录

一、IP协议报头格式

二、地址选择

1、IP地址

(1)格式

(2)组成

(3)分类

(4)子网掩码

三、路由选择


IP协议是网络层的协议,它主要完成两个方面的任务:

  • 1.地址选择
  • 2.路由选择 

一、IP协议报头格式

(1)4位版本号:IP协议的版本号,当前主要有两个取值:4和6,即IPv4和IPv6。

(2)4位首部长度:IP报头和TCP报头类似,都是可变的,带有选项。

     4 位的取值范围0~15,这里的单位也是 4字节。

     即如果取值是1111 -> 15,实际表示的首部长度就是 60(15 * 4)字节。

(3)TOS(8位服务类型):其实只有四位是有效的。相当于切换形态。(同一时刻,只能取一种状态)。

     4 位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本。

(4)16 位总长度(字节数):IP数据报整体占多少个字节。类似UDP,单个IP数据报最大的长度不能超过64K。

     如果要构造一个更长的数据报(比如搭载的载荷部分已经超过64K了):IP协议自身就实现了分包和组包这样的操作。(标识和片偏移)

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

 (6)3 位标志字段

  • 第一位保留:保留的意思是现在不用,但是不代表以后不用。
  • 第二位为 1:表示禁止分片。 此时如果报文长度超过64K,就会直接丢弃报文。
  • 第三位“更多分片”:用于分片场景。如果分片了话,最后一片的这里置为0,其他片置为1 。类似结束标记。

(7)13 位片偏移:是分片相对于原始IP报文开始处的偏移。就是表示当前的这个分片是在原来报文中的哪个位置。用来描述这些分片谁先谁后。

    实际偏移的数不是单纯的1、2、3....,而是可以基于片偏移来算出中间差多少空间的。

(8)8  位生存时间(TTL):数据报到达目的地的最大 报文跳数。

   表示一个IP数据报,在网络上还能存在多久。一般是 64。每次经过一个路由,TTL -=1,一直减到 0 还没到达,就丢弃了。用来防止出现路由循环。(有些包里面的IP地址,可能是永远也到不了的,像这样的包,不能让其在网络上无休止的转发,这样会占用太多硬件资源)

(9)8 位协议:表示上层的协议类型。即传输层用的是哪种协议(TCP和UDP 都有不同的取值)。

(10)16 位首部校验和:使用 CRC 进行校验,来鉴别头部是否损坏。

(11)32 为源地址 和 32 位目的地址:表示发送端(的IP地址)和接收端(的IP地址)。

(12)选项字段:不定长,最多40个字节。

二、地址选择

1、IP地址

   IP地址是指互联网协议地址(网际协议地址)。

   IP地址是 IP协议 提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机都分配了一个逻辑地址。

(1)格式

   IP地址是一个 32 为的二进制数,通常被分割为4个字节。用“点分十进制”的方式来表示。

例如:100.4.5.6

(2)组成

   IP地址分为两个部分:网络号(标识网段) + 主机号(标识主机)。

  • 网络号:描述当前的网段信息(局域网的标识)。
  • 主机号:区分了局域网内的主机。

(3)分类

   过去曾经提出过一种划分的方案,把所有IP地址分为5类,如下图所示。

   其中有几个特殊的IP地址:

  • 主机号全 0 :该 IP就表示网络号,代表这个局域网。(局域网里一个正常的设备,主机号不能设为 0 )
  • 主机号全 1 (255):该 IP就表示“广播地址”,往这个广播地址上发消息,整个局域网中都能收到。
  • 127.0.0.1 :环回地址,用于本机环回测试。

   使用上述的分类,会出现一些资源浪费的问题。例如一般单位会申请 B 类网络,但是 B 类网络的最大连接主机数量是 65534,实际上连接的主机远远小于这个数字,就造成了资源浪费。

   因此就有了子网掩码。

(4)子网掩码

   IP地址有 32 bit位,那么哪些是网络号,哪些是主机号呢。其实是不固定的。子网掩码就是用来表示多少个bit位是网络号的。

   子网掩码,也是一个 32 位的点分十进制的整数。子网掩码的左侧都是1,右侧都是0 。而左边的这些 1 就表示哪些位是网络号,剩下的 0 就是表示哪些位是主机号。

例如:255.255.255.0  -> 1111 1111 1111 1111 1111 1111 0000 0000 (前 24 个bit位是网络号,后 8 个bit位是主机号)

计算方式:

   网络通信时,子网掩码结合IP地址,可以计算获得网络号及主机号。一般用于判断目的IP与本IP是否为同一个网段。

   将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号。

(5)外网IP和内网IP:

   IP地址是10开头、192.168开头、172.16~172.31开头,表示该 IP 是一个局域网内部的IP(内网IP)。除此之外,剩下的IP称为 外网IP(直接在广域网上使用的 IP)。

   要求外网IP一定是唯一的,每个外网IP都会对应到唯一的一个设备。内网IP 只是在当前局域网中时唯一的,在不同的局域网里,可以有相同的 内网IP 的设备。

其作用:

   咱们现在生活中时 IPv4协议,使用的IP地址是 32 位整数。但是随着时间推移,世界上的设备越来越多,让每一个设备都有唯一的一个IP地址就不现实了。就有如下方法了。

① 动态分配IP地址:让每个设备上网的时候才分配IP地址,不联网的时候这个IP就给别人。(不能从根本上解决问题,所以我们现实中不采用)

② NAT机制:让多个设备共用一个 IP (外网IP)。

   这个机制就是把网络分成了 内网(局域网)和 外网(广域网)。要求 外网IP 必须表示唯一的设备,同时内网中的若干设备,可以共用同一个外网IP。这个时候每个外网IP就都可能表示着几百个甚至上万个设备了,此时IP地址的压力就缓解了很多。

两个外网之间的连接,如果外网A里有多台 PC 都向 外网B 发送连接,那么外网B如何区分这两个连接谁是谁呢?靠端口号

 NAT机制也说明了:

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

   对于一个内网IP,只能在当前局域网内部访问。局域网1 的设备,不能使用 内网IP 访问局域网2的设备。(内网IP可以重复出现,只有在当前局域网内才是唯一的)。

   现实生活中,运营商的路由器就会在这里修改IP数据报,从内网发出带有这样功能的路由器设备,也叫做 NAT设备。

NAT 设备:

   NAT 不光会将 IP 调整为外网IP。还会对端口进行调整,如果端口不一样,就罢了;如果端口一样,NAT 就会调整成不同的端口号,再转发出去。 同时 NAT 会记录这个映射关系,以此保证服务器返回的数据,可以再按照这个映射关系给还原回去。

③ IPv6:IPv6 是在报头中使用了一个更长的字段来表示 IP 地址,16 个字节,128 bit位(IPv4是 4个字节)。

   但是现在依然用的是IPv4+NAT。因为这里最大的问题就是 IPv4和IPv6是不兼容的,对于一个设备来说,支持IPv4和IPv6需要两个截然不同的机制,而现有的大量的网络设备(路由器...)很可能都是只支持IPv4,不支持IPv6的。

三、路由选择

   路由选择就是规划路径。两个设备之间,要找出一条通路能够完成传输的过程。而要想找出通道,就得先认识路。

   IP协议的路由选择也是类似的,IP数据报中的目的地址,就表示了这个包要发到哪里去。这个目的地址,如果当前的路由器直接认识,就直接告诉你路了;如果当前路由器不认识,就会告诉你大概的方向,让你走到下一个路由器的时候再来问问。就这样一次往后走,就会离目的地址越来越近,这个时候总是会遇到一个认识这个地址的路由器,于是就可以具体转发过去了。如果认识了多个路,就可以进行选择,选择一个合适的路径进行传输。

   在路由器的内部,维护了一个数据结构——路由表。路由表里面就记录了一些网段信息(网络号...)以及每个网络号对应的网络接口(对应到路由器里面的具体的端口),目的IP就在这些网络号中进行匹配。而路由表中有一个默认表项,就是当 IP地址 在路由表的所有表项中都匹配不上的时候,此时就会走这个下一跳。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis基础(6.0)数据结构、事务、常用组件等

1 概述 1.1 redis介绍 Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、 简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。…

车载网络 - Autosar网络管理 - 常用缩写

为了方便大家日常工作中的使用和交流,每块专业规范或者文章中,都会有或多或少的缩写使用,然而如果一段时间没使用,经常会忘记这些缩写到底代表的是什么意思,为了方便后续内容的介绍,也为了我自己后面忘记后…

做自动化测试时所谓的“难点”

这篇关于自动化测试的文章,可能和你看到的大多数自动化的文章有所不同。我不是一位专职的自动化测试工程师,没有开发过自动化的工具或者框架,用的自动化的工具也不多,也没有做过开发,所以我讲不出那些现在很多人很看重…

JavaScript【一】JavaScript变量与数据类型

文章目录🌟前言🌟变量🌟 变量是什么?🌟 变量提升🌟 声明变量🌟 JavaScript有三种声明方式🌟 命名规范🌟 注意🌟数据类型以及运算🌟 检测变量数据类…

数据智能服务商奇点云完成近亿元C2轮融资

奇点云集团宣布已于2022年底完成近亿元C2轮融资,余杭国投领投,中银渤海基金跟投。 截至目前,奇点云共获近3亿元C轮融资。C轮领投方包括泰康人寿(旗下泰康资产执行)、余杭国投,跟投方包括字节跳动、德同资本…

app抓包实战

文章目录一、抓包原理二、常用应用场景三、过滤四、重发五、修改请求六、断点(BreakPoint)一、抓包原理 二、常用应用场景 解决移动端接口测试 解决接口测试过程中检查传参错误问题 mock测试(虚拟的对象代替正常的数据、后端接口没有开发完成…

QML控件--DialogButtonBox

文章目录一、控件基本信息二、控件使用三、属性成员四、附加属性成员五、成员函数六、信号一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.8 Inherits:Container 二、控件使用 DialogButtonBox:是…

攻防世界-web-easyupload

题目描述:一名合格的黑客眼中,所有的上传点都是开发者留下的后门 很简单的一个上传图片的界面。 我们先正常上传一个图片,从提示信息中可以看出我们是上传到了uploads目录下 然后通过bupsuite抓包修改请求,将文件名修改为1.php&a…

Java垃圾回收机制GC完全指南,让你彻底理解JVM运行原理

1、GC过程 1)先判断对象是否存活(是否是垃圾) 可以通过引用计数算法和可达性分析算法来判断,由于引用计数算法无法解决循环引用的问题,所以目前使用的都是可达性分析算法 2)再遍历并回收对象(回收垃圾) 可以通过垃圾收集器&…

三、Locust任务(task)详解

当一个负载测试开始时,将为每个模拟用户创建一个用户类的实例,他们将在自己的绿色线程中开始运行。当这些用户运行时,他们会选择执行的任务,睡眠一段时间,然后选择一个新的任务,如此循环。 这些任务是正常…

什么是自动化测试?自动化测试现状怎么样?

什么是自动化测试:其实自动化测试,就是让我们写一段程序去测试另一段程序是否正常的过程,自动化测试可以更加省力的替代一部分的手动操作。 现在自动化测试的现状,也是所有学习者关心的,但现在国内公司主要是以功能测…

Flash Linux to eMMC

实验目的:从eMMC启动Linux系统 Step1:确定eMMC被挂在哪个设备 哪个设备含有boot0分区和boot1分区,就是eMMC。实验中是位于mmcblk1上。 rootam64xx-evm:~# ls -l /dev/mmcblk* brw-rw---- 1 root disk 179, 0 Feb 27 13:25 /dev/mmcblk0 brw-rw---- …

10 kafka生产者发送消息的原理

1.发送原理: 在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程 中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator, Sender 线程不断从 RecordAccumulator 中拉取消息发送到…

【机器学习】P10 从头到尾实现一个线性回归案例

这里写自定义目录标题(1)导入数据(2)画出城市人口与利润图(3)计算损失值(4)计算梯度下降(5)开始训练(6)画出训练好的模型(…

离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)

集合与函数2.1 集合 2.1.1 集合的基本概念 2.1.2 集合的表示方法 2.1.3 文氏图 2.1.4 证明集合相等 2.1.5 集合的大小 ——基 2.1.6 幂集 2.1.7 集族、指标集 2.1.8 笛卡尔积 2.1.9 容斥原理2.1 集合 2.1.1 集合的基本概念 定义1:集合 是不同对象的一个无序的聚…

【SpringCloud系列】开发环境下重写Loadbalancer实现自定义负载均衡

前言 spring-cloud-starter-netflix-ribbon已经不再更新了,最新版本是2.2.10.RELEASE,最后更新时间是2021年11月18日,详细信息可以看maven官方仓库:https://search.maven.org/artifact/org.springframework.cloud/spring-cloud-st…

Windows环境下实现设计模式——职责链模式(JAVA版)

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现职责链模式(设计模式)。 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式&#xff…

Maven的进阶操作

系列文章目录 Maven进阶操作的学习 文章目录系列文章目录前言一、分模块开发与设计二、依赖管理1.依赖传递2.可选依赖3.排除依赖三、继承与聚合1.聚合2.继承四、属性1.属性2.版本管理五、多环境配置与应用1.多环境开发2.跳过测试六、私服1.私服简介2.私服仓库分类3.资源上传与…

比GPT-4 Office还炸裂,阿里版GPT全家桶来袭

目录 【新智元导读】 文案、策划、邮件,一键搞定 不用写代码,草稿秒变小程序 聊天记录不用翻,摘要自动生成 会上开小差?不怕,AI替你记了 AI版十万个为什么,有问必答 剁手买买买,连手都不…

Excel技能之数据验证,总有一款适合你

用户填写的内容,是未知的,不可靠的。但是,我们要对数据的规范、格式、条件做出限制,既能保证数据的质量,也能统一每个人的行为。最大限度去避免垃圾数据的录入,眼不见心不烦,让心情美美的。 数…