网络层(IP协议)

文章目录

  • 网络层
    • `IP`协议
      • `IP`协议报头
        • 32位源`IP`地址和目的`IP`地址:
          • 为了解决`IP`地址不够用的情况
      • `IP`地址管理
        • 子网掩码
        • 特殊`IP`
      • 路由选择(简介)

网络层

网络层主要负责地址管理和路由选择.代表协议就是IP协议.

IP协议

IP协议报头

IP协议报头

  • 4位版本: 4: 表示IPv4 ; 6: 表示IPv6

  • 4位首部长度: 描述IP报头有多长,4字节为基本单位,剩下都是选项的长度…

  • 8位服务类型: 说是8位其实只有4位有效.这四位只有一位是1,其他都是0.

    4位表示IP协议的四种形态/四种工作类型,IP的四种形态之间互相切换达到最优效果.

    • 最小延时
    • 最大吞吐量
    • 最高可靠性
    • 最小成本
  • 16位总长度: 描述了IP数据包(报头+数据载荷)的长度.

    • 总长度减去前面的IP报头长度,得到的就是由传输层传下来的完整的tcp/udp数据报长度.

    • 16位总长度是否意味着一个IP数据报,最大只能支持64KB?

      确实有这个限制,但是IP自身就支持对包的拆分和组装,分成多次不就可以了嘛.分成多个数据包,然后分别添加报头组装,然后将两个数据都交给数据链路层,由以太网封装为两个数据帧.接收方在数据链路层针对两个数据帧进行分用,得到两个ip数据报,交给网络层,网络层在进行重新拼接.

  • 16位标识: 同一个数据拆分为多个包,标识是一样的.

  • 13位片偏移: 标识了多个包的先后顺序

  • 3位标志位: 结束标志.看是否是所有包的最后一位.

  • 8位生存时间(TTL): 一个数据报在网络上能够传输的最大时间限制.不是秒,而是次数,代表在物理上两个节点上传输,每经过一个路由器转发,TTL -1 .如果一直减少到0,就认为这个包可以丢弃了.

  • 8位协议: 描述了当前载荷部分内容是属于哪个协议的,是TCP的还是UDP的.

  • 16位首部校验和: 只需要针对首部进行校验,载荷部分自身已经有校验和.

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

使用三个点把32位,4字节的数字给分隔开,分成四部分,每个部分使用0-255十进制整数表示.就叫做点分十进制.

地址: 期望每个设备都互不相同,但是32位无符号整数表示是有范围的,42亿9千万.但是期望使用这个表示各种联网设备肯定是不够用的.

为了解决IP地址不够用的情况
  1. 动态分配IP的技术(DHCP)

    并没有从根本上增加IP地址,只是提高了IP地址的利用率但是并没有从根本上增加IP地址的数量.

    DHCP的分配方式

    自动分配: 分配一个IP地址后永久使用

    手动分配: 由DHCP服务器管理员专门指定IP地址

    动态分配: 使用完后释放该IP,供其他客户机使用

  2. NAT网络地址转换.

    本质上是使用一个IP代替一批设备,大大提高了IP地址的利用率.比如在学校中网上购物之后,商家发快递的时候无需精确到某一个学生的具体位置,只需要使用学校的位置代称,然后使用学生的某些信息进行区分即可,比如可以使用端口号的方式区分一批局域网设备中的具体哪个设备进行标识区分即可.

    NAT技术把IP地址分为两个大类

    1. 内网IP(私有IP): 10.*; 172.16.*-172.31.*; 192.168.*
    2. 外网IP(共有IP): 剩下的都是公网IP

    NAT设备要求,公网IP必须是唯一的,私网IP可以在不同的局域网中重复出现.

    • 局域网中的IP: win+cmd: 输入ipconfig查看自己主机IP,假设就是192.168.24.1

    • 运营商提供的运营商IP: 可以浏览器搜索IP,获取自己设备运营商安排的公网IP,比如202.43.23.11.

    ​ 如果某个私网中的设备想要访问公网中的设备,就需要对应的NAT设备(路由器)进行映射,比如都替换为局域网入口设备的公网IP,从而完成网络访问.

    ​ 反之,当数据从公网设备发送回来时,入口设备进行接收,然后根据记录的表中<key,val>形式的映射<x设备目标公网IP,port>,找到局域网中的设备然后将数据中的目标IP替换为局域网中x设备的私网IP,然后进行定向发送即可.

    ​ 所以,NAT技术下不知道具体x设备的私有IP,只知道路由器的IP公网的设备是无法直接访问私网的设备的.

    NAT技术图示

  3. IPv6从根本上解决了IP地址不够用的问题.使用16字节128位进行表示.那么得到的IP地址数字就达到了 42亿的4次方,是一个很大的数字.

    地球上的沙子每个安排一个IP地址都是足够的,计算机首先是由好多类似沙子的东西做的,所以现在来看肯定是足够的.

    IPv6太贵了,并且和IPv4并不兼容.

IP地址管理

IP地址分为两部分,划分的目的就是为了组网.

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

路由器: 都是有两个IP分别属于不通的网段,功能就是将两个局域网连接起来.都有WAN口和LAN口.

局域网场景如下:

image-20231125122546900

子网掩码

通过子网掩码可以区分出网络号和主机号.网络号不一定是前三个字节,是可以变化的,最常见的就是255.255.255.0

IP & 子网掩码 => 网络号

在有子网掩码之前,网段划分是写死的,如下图:

网段划分

特殊IP
  • IP地址中的主机地址全部设置为1,就成为了广播地址.比如192.168.1.255
  • 127.*IP地址用于本机环回,通常是127.0.0.1
  • 主机号为1的,比如192.168.0.1通常是网关IP,局域网入口出口的位置.
  • IP 地址的主机地址全部设置为0,就成为了网络号,代表这个局域网.

路由选择(简介)

​ 用处就是规划路径,相当于地图中的导航功能,应该怎么走.由于网络环境很复杂,任何一个节点都是无法感知到网络环境的全貌的,只认识邻居这一小部分网络的情况.如果要进行长路径转发,需要一边走,一边问路的方式规划.

​ 路由选择核心就是问路,每个路由器中都有一个记录周边信息的路由表,每次有一个IP数据经过路由器的时候就会看看表中是否有匹配信息,看看接下来怎么走,如果有就走,如果没有,就会有一个默认路径,大致方向是对的,沿着这个方向到达下一个路由器再问问…

​ 每次问一个路由器,TTL--,到0的时候这个IP数据包就会被丢弃.正常情况下TTL足以到达. 通过六个人就能找到世界上的任何人.

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

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

相关文章

格式化输入输出

跟着肯哥&#xff08;不是我&#xff09;学格式化输入输出 C语言格式化输入 在C语言中&#xff0c;格式化输入&#xff08;Formatted Input&#xff09;是一种从标准输入读取数据并按照指定格式进行解析的操作&#xff0c;它主要通过使用标准库函数scanf()来实现格式化输入。 …

YOLOv8改进 | 2023 | FocusedLinearAttention实现有效涨点

论文地址&#xff1a;官方论文地址 代码地址&#xff1a;官方代码地址 一、本文介绍 本文给大家带来的改进机制是Focused Linear Attention&#xff08;聚焦线性注意力&#xff09;是一种用于视觉Transformer模型的注意力机制(但是其也可以用在我们的YOLO系列当中从而提高检测…

小程序项目:springboot+vue基本微信小程序的学生健康管理系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于协作搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

“升级图片质量:批量提高或缩小像素,赋予图片全新生命力!“

如果你想让你的图片更加清晰、更加美观&#xff0c;或者符合特定的像素要求&#xff0c;那么现在有一个好消息要告诉你&#xff01;我们推出了一款全新的图片处理工具&#xff0c;可以帮助你批量提高或缩小图片像素&#xff0c;让你的图片焕发出新的生机&#xff01; 第一步&a…

基于人工蜂鸟算法优化概率神经网络PNN的分类预测 - 附代码

基于人工蜂鸟算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工蜂鸟算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工蜂鸟优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

我的崩溃。。想鼠??!

身为程序员哪一个瞬间让你最奔溃&#xff1f; 某天一个下午崩溃产生。。。 一个让我最奔溃的瞬间是关于一个看似无害的拼写错误。我当时正在为一个电子商务网站添加支付功能&#xff0c;使用了一个第三方支付库。所有的配置看起来都正确&#xff0c;代码也没有报错&#xff0c;…

zookeeper 单机伪集群搭建简单记录

1、官方下载加压后&#xff0c;根目录下新建data和log目录&#xff0c;然后分别拷贝两份&#xff0c;分别放到D盘&#xff0c;E盘&#xff0c;F盘 2、data目录下面新建myid文件&#xff0c;文件内容分别为1&#xff0c;2&#xff0c;3.注意文件没有后缀&#xff0c;不能是txt文…

数据结构—小堆的实现

前言&#xff1a;前面我们已经学习了二叉树&#xff0c;今天我们来学习堆&#xff0c;堆也是一个二叉树&#xff0c;堆有大堆有小堆&#xff0c;大堆父节点大于子节点&#xff0c;小堆父节点总小于子节点&#xff0c;我们在学习C语言的时候也有一个堆的概念&#xff0c;那个堆是…

栈和队列OJ题目——C语言

目录 LeetCode 20、有效的括号 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 225、用队列实现栈 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 232、用栈…

C/C++ 运用Npcap发送UDP数据包

Npcap 是一个功能强大的开源网络抓包库&#xff0c;它是 WinPcap 的一个分支&#xff0c;并提供了一些增强和改进。特别适用于在 Windows 环境下进行网络流量捕获和分析。除了支持通常的网络抓包功能外&#xff0c;Npcap 还提供了对数据包的拼合与构造&#xff0c;使其成为实现…

HarmonyOS简述及开发环境搭建

一、HarmonyOS简介 1、介绍 HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。有三大系统特性&#xff0c;分别是&#xff1a;硬件互助&#xff0c;资源共享&#xff1b;一次开发&#xff0c;多端部署&#xff1b;统一OS&#xff0c;弹性部署。 HarmonyOS通过硬件互…

洛谷P1049装箱问题 ————递归+剪枝+回溯

没没没没没没没没没错&#xff0c;又是一道简单的递归&#xff0c;只不过加了剪枝&#xff0c;我已经不想再多说&#xff0c;这道题写了一开始写了普通深搜&#xff0c;然后tle了一个点&#xff0c;后面改成剪枝&#xff0c;就ac了&#xff0c;虽然数据很水&#xff0c;但是不妨…

第96步 深度学习图像目标检测:FCOS建模

基于WIN10的64位系统演示 一、写在前面 本期开始&#xff0c;我们继续学习深度学习图像目标检测系列&#xff0c;FCOS&#xff08;Fully Convolutional One-Stage Object Detection&#xff09;模型。 二、FCOS简介 FCOS&#xff08;Fully Convolutional One-Stage Object D…

iOS强引用引起的内存泄漏

项目中遇到一个问题&#xff1a; 1.在A页面的ViewDidLoad 方法里写了一个接收通知的方法&#xff0c;如下图&#xff1a; 然后在B页面发送通知 &#xff08;注&#xff1a;下图的NOTI 是 [NSNotificationCenter defaultCenter] 的宏&#xff0c; 考虑一下可能有小白看这篇文章…

物联网中基于信任的安全性调查研究:挑战与问题

A survey study on trust-based security in Internet of Things: Challenges and issues 文章目录 a b s t r a c t1. Introduction2. Related work3. IoT security from the one-stop dimension3.1. Output data related security3.1.1. Confidentiality3.1.2. Authenticity …

【vue_2】创建一个弹出权限不足的提示框

定义了一个名为 getUserRole 的 JavaScript 函数&#xff0c;该函数接受一个参数 authorityId&#xff0c;根据这个参数的不同值返回相应的用户角色字符串。这段代码的目的是根据传入的 authorityId 值判断用户的角色&#xff0c;然后返回相应的角色名称。 如果 authorityId 的…

Visual Studio 中文注释乱码解决方案

在公司多人开发项目中经常遇到拉到最新代码&#xff0c;发现中文注释都是乱码&#xff0c;很是emjoy..... 这是由于编码格式不匹配造成的&#xff0c;如果你的注释是 UTF-8 编码&#xff0c;而文件编码是 GBK 或者其他编码&#xff0c;那么就会出现乱码现象。一般的解决办法是…

STM32-使用固件库新建工程

参考链接: 【入门篇】11-新建工程—固件库版本&#xff08;初学者必须认认真真看&#xff09;_哔哩哔哩_bilibili 使用的MCU是STM32F103ZET6 。 这篇参考的是野火的资料&#xff0c;可以在“野火大学堂”或者它的论坛上下载。&#xff08;我通常是野火和正点原子的资料混着看的…

【AI认证笔记】NO.2人工智能的发展

目录 一、人工智能的发展里程碑 二、当前人工智能的发展特点 1.人工智能进入高速发展阶段 2.人工智能元年 三、人工智能高速发展的三大引擎 1.算法突破 2.算力飞跃 3.数据井喷 四、AI的机遇 五、AI人才的缺口 六、行业AI 人工智能算法&#xff0c;万物互联&#xff…