网络层(IP协议)

news2024/10/5 21:15:52

文章目录

  • 网络层
    • `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足以到达. 通过六个人就能找到世界上的任何人.

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

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

相关文章

vscode导入STM32CubeIDE工程文件夹未定义警告清除方法

0 前言 在我们使用vscode去编辑STM32CubeIDE的工程文件时&#xff0c;经常会出现一些类型未定义、头文件路径无效的问题&#xff0c;无法正常使用且非常影响观感。本文介绍如何设置vscode导入的STM32CubeIDE配置文件&#xff0c;解决这一问题。 1 vscode导入STM32CubeIDE工程…

如何设置图像的尺寸大小?用它提高效率100%

调整图片像素和大小是一种常见的图像处理操作&#xff0c;可以根据需要改变图片的宽度和高度&#xff0c;在许多场景中都很有用&#xff0c;如网页设计、图像制作、打印和展示等&#xff0c;想要准确的对图片尺寸修改就需要用到专业的修改图片大小工具&#xff0c;下面就详细介…

今年的校招薪资真的让人咋舌!

秋招接近尾声&#xff0c;各大公司基本也陆续开奖了。这里整理了部分公司的薪资情况&#xff0c;数据来源于 OfferShow 和牛客网。 ps&#xff1a;爆料薪资的几乎都是 211 和 985 的&#xff0c;并不是刻意只选取学校好的。另外&#xff0c;无法保证数据的严格准确性。 淘天 …

MYSQL基础知识之【数据类型】

文章目录 前言标题一数值类型日期和时间类型字符串类型后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错…

基于IDEA+MySQL+SSM开发的证券交易结算系统

基于SSM的证券交易结算系统 项目介绍&#x1f481;&#x1f3fb; 网上交易克服了传统现场交易的弊端&#xff0c;用户通过网上交易可以随时、随地进行交易&#xff1b;同时&#xff0c;网上交易具有速度快、透明度高、成本低、安全性高等优点&#xff0c;与传统的基于营业部的证…

tinyViT论文笔记

论文&#xff1a;https://arxiv.org/abs/2207.10666 GitHub&#xff1a;https://github.com/microsoft/Cream/tree/main/TinyViT 摘要 在计算机视觉任务中&#xff0c;视觉ViT由于其优秀的模型能力已经引起了极大关注。但是&#xff0c;由于大多数ViT模型的参数量巨大&#x…

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

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

力软vue前端开发:使用params跳转传参404问题解决

问题描述 this.$router.push({ name: page, query: { id: 001 } }) // 根据路由名称 query 的方式跳转传参 使用query传参时&#xff0c;参数会拼接在链接后&#xff0c;点击搜索条件链接参数也还在。用户需要重新进入搜索页面。 所以&#xff0c;使用nameparams进行传参。参…

快速压缩:迅速减小PDF文件大小的步骤与技巧

虽然png图片格式是一种无损压缩格式&#xff0c;但是png图片的内存大小也是比较大的&#xff0c;而且兼容性上也没有jpg图片好&#xff0c;许多平台推荐的也都是jpg格式&#xff0c;所以当我们需要把png转jpg格式的时候&#xff0c;就需要用到图片格式转换器&#xff0c;今天推…

sql查询优化实际案例

1、第一步&#xff1a;sql优化 正对于海量数据的查询优化&#xff0c;且外键关联比较多的情况&#xff0c;通常情况是下sql层面的优化&#xff0c;有些时候是由于sql不合理的编写导致&#xff0c;如尽量少使用sql内查询等 如&#xff1a;避免使用 left join (select * form …

代码随想录算法训练营第五十八天|739. 每日温度、496. 下一个更大元素 I

第十章 单调栈part01 739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用…

数据结构与算法编程题21

判别两棵树是否相等。 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1typedef struct BiNode {ElemType data;BiNode* lchild, * rchild; }BiNode, * BiTree;bool Create_tree(BiTree&a…

斐讯K2结合Padavan实现锐捷认证破解方法

前言 众所周知&#xff0c;校园网在传统模式下是不能直接插路由使用的&#xff0c;但苦于校园网只能连接一台设备的烦恼&#xff0c;不得不“另辟蹊径”来寻求新的解决路径&#xff0c;这不&#xff0c;它来了&#xff0c;它来了&#xff0c;它带着希望走来了。 本文基于斐讯…

gobuster扫描工具使用教程(简单上手)

gobuster扫描工具使用教程 gobuster是干嘛用的? Gobuster是一个用于网络渗透测试的工具。它主要用于在Web应用程序中发现隐藏的内容或目录枚举&#xff0c;可以扫描子域名以及Web目录&#xff0c;寻找可能存在的漏洞。这个工具使用Go语言编写&#xff0c;具备优异的执行效率…

排序算法-----基数排序

目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件 3.主函数&#xff08;radix_sort实现&#xff09; 算法分析 前言 今天我想把前面未更新完的排序算法补充一下&#xff0c;也就是基数排序的一种&#xff0c;这是跟…

每日一题 1457. 二叉树中的伪回文路径(中等,DFS)

一句话&#xff0c;深度搜索所有路径&#xff0c;判断路径是否伪回文 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right clas…

leetCode 226.翻转二叉树

给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 示例 1: 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root…

C语言—一维数组

一、一维数组的创建 int arr1[10];char arr2[10];flout arr3[1];double arr4[20]; 数组创建,“[ ]”中要给一个常量&#xff0c;不能使用变量 二、一维数组初始化 int arr1[10]{1,2,3}; //不完全初始化int arr2[4]{3,4,5,6}; //完全初始化char arr3[4]{a,b,99,d};cha…

力扣日记11.25-【二叉树篇】对称二叉树

力扣日记&#xff1a;【二叉树篇】对称二叉树 日期&#xff1a;2023.11.25 参考&#xff1a;代码随想录、力扣 101. 对称二叉树 题目描述 难度&#xff1a;简单 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,…

【Docker】从零开始:11.Harbor搭建企业镜像仓库

【Docker】从零开始&#xff1a;11.Harbor搭建企业镜像仓库 1. Harbor介绍2. 软硬件要求(1). 硬件要求(2). 软件要求 3.Harbor优势4.Harbor的误区5.Harbor的几种安装方式6.在线安装(1).安装composer(2).配置内核参数,开启路由转发(3).下载安装包并解压(4).创建并修改配置文件(5…