网络基础------IP协议

news2024/11/15 17:00:59

文章目录

    • IP协议的主要功能
    • 网段划分
    • IP数量限制
    • WAN口的IP 和 LAN口的IP
    • 路由

IP协议的主要功能

网络层(IP协议)的主要功能: 地址转换和路由选择
传输层(TCP协议)的主要功能: 传输数据的控制。
有什么区别吗? tcp (决策)-------> 决定数据如何传输, 例如传送多少, 重传,,,,,
ip (执行)-------> 决定数据在路上如何传输。

在这里插入图片描述
节点: 路由器和主机的统称。
报文从节点跳转的过程,称为 数据包跳转到 下一跳

ip协议头格式
在这里插入图片描述
4位版本 : 区分 IPv4 和IPv6。
4位头部长度: 单位是4个字节。 1个bit位是4个字节
8位服务类型(TOS): 前3位已经弃用, 4位TOS字段, 分别表示: 最大吞吐量, 最小延时, 最高可靠性, 最小成本。
4位只能有1位置1(也就是说这4种相互排斥), 还有1位是保留字段。
16位总长度: 报文总长度,单位是字节。
8位生存时间 : 没经过一个节点, 生存时间减减, 减到0消散。 防止路由循环的问题。
8位协议 : 向上交付, 交付给tcp或者udp协议。
16位首部检验和 : 由发送方填充, 接收方检验。
32位源ip : 从哪哪个主机来。
32位目的ip : 要去哪个主机。

关于16位分片标识, 3位标识, 13位片偏移:
首先 : 为什么会ip分片???
对于数据链路层来说, 规定了一次性向网络中发送的数据大小是有限制的, MTU: 1500字节
意味着网络层的最大数据是1480字节, 因为ip报头是20个字节。
如果ip报文超过了 1500字节-------> 就要ip分片

那为什么在不在数据链路层分片呢?
因为分片后的报文也是需要ip报头的, 只有网络层才有资格添加报头信息, 并且每个16位总长度也是会变化的。

例如 : 网络层有一个3420个字节的报文, 就要ip分片
1, 20(原始的ip报头) + 1480
2, 20 (拷贝的ip报头) + 1480
3, 20(拷贝的ip报头) + 440。

那么问题来了, 对端的网络层如何组装呢? ----> 16位分片标识, 3位标识, 13位片偏移
16位标识(1,聚合在一起) :对于, 没有分片的独立报文, 16位标识是不同的。
对于, 分片后的报文, 16位标识是相同的。
13位片偏移(2, 将有效载荷组合在一起): 该报文的有效载荷在原始报文中的偏移量。

例如 : 对于 1600个字节的独立报文
分片后 : 1480 + 20 / 120 + 20
16位标识 1234 1234 (假设的)
片偏移 0 1480

但是问题来了, 如何判断是最后一个报文呢? ------->3位标识
3位标识(区分是最后一个报文):1位保留, 1位禁止分片, 1位 表示后面还有更多报文。
该位为1 ---- > 后面还有报文 该位为0--------> 后面无

大概就是 :

if(更多分片标志位 == 1 || 片偏移 > 0)
{
       //分片报文
}
else
{
        if(更多分片标志位 == 0 && 片偏移 == 0)
        {
               //独立报文
        }
}

在这里插入图片描述

网段划分

网段划分的本质 : 提高查找效率, 减少查找难度。

IP地址 = 网络号 + 主机号 (确定一台互联网中的一台主机的)
网络号: 保证相互连接的两个网段具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
不同的子网其实就是把网络号相同的主机放到一起.
如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致,
但是主机号必须不能和子网中的其他主机重复.

手动管理ip地址是非常不方便的。
有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.
在这里插入图片描述

曾经的5类地址划分:
其中的绿色部分是固定不变的
这样划分存在很多的缺陷, 例如大家都申请B类, 那会导致B类地址被大量申请,而其他类型的地址没人使用
在这里插入图片描述

新的划分方案 : CIDR
引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾, 0和1的分界线是主机位
将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

例如:
在这里插入图片描述

IP数量限制

IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右。
而现在的电脑数量已经远超过43亿了, 如何解决呢?

动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到
的IP地址不一定是相同的;
NAT技术 : 不断更换源IP地址。
IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表
示一个IP地址; 但是目前IPv6还没有普及

WAN口的IP 和 LAN口的IP

一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.
不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之
间的IP地址就可以重复了.
每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级,
最外层的运营商路由器, WAN口IP就是一个公网IP了.
子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级
替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地
址转换).

在这里插入图片描述

路由

当IP数据包, 到达路由器时, 路由器会先查看目的IP;
路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
依次反复, 一直到达目标IP地址
在这里插入图片描述
例如:
在这里插入图片描述
这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到192.168.56.0/24网络;

路由表的Destination是目的网络地址 ,Genmask是子网掩码, Gateway是下一跳地址
Flags中的U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的
地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发

转发过程例1: 如果要发送的数据包的目的地址是192.168.56.3
跟第一行的子网掩码做与运算得 到192.168.56.0,与第一行的目的网络地址不符
再跟第二行的子网掩码做与运算得 到192.168.56.0,正是第二行的目的网络地址,因此从eth1接口发送出去;
由于192.168.56.0/24正 是与eth1 接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发;

转发过程例2: 如果要发送的数据包的目的地址是202.10.1.2
依次和路由表前几项进行对比, 发现都不匹配;
按缺省路由条目, 从eth0接口发出去, 发往192.168.10.1路由器;
由192.168.10.1路由器根据它的路由表决定下一跳地址;

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

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

相关文章

小程序不在以下request合法域名,http协议添加不了

每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信 问题描述 出现http://xxx.不在以下request合法域名列表中,请参考文档 解决方法 在开发中可以勾上不校验合法域名 在发版中就需要把域名放在通讯域名中 [外链图片转存失败,…

ADI Blackfin DSP处理器-BF533的开发详解26:电子书的应用(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了读取 SD 卡中“/txt/test.txt”路径下的 TXT 文件,将 TXT 文件内容显示到液晶屏上,通过按键“Lift-&…

java计算机毕业设计ssm疫苗接种预约系统小程序24tfm(附源码、数据库)

java计算机毕业设计ssm疫苗接种预约系统小程序24tfm(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&…

【数据结构】TopK问题

TopK 在N个数中 找出最大或最小的前k个数,就是TopK算法。比如有一组数字,[1,2,3,4,5,6,7,8,9],这组数中最大的前 3(k)个数是 9,8,7。最小的 前3个数是 1,2,3。而TopK算法就是找出最大或者最小的前K个数。我们就用堆来实…

【mmdetection系列】mmdetection之backbone讲解

如果是自己来写这部分代码的话,真的是很容易,如果这个框架中有自带的backbone结构的话,那可以从其他地方找到对应的pytorch版本实现,或者自己写。 配置部分在configs/_base_/models目录下,具体实现在mmdet/models/bac…

微信小程序——云音乐界面

文章目录第一章 开发前的准备一、项目展示二、项目分析三、项目初始化第二章 标签页切换一、任务分析二、常用组件介绍三、编写页面结构和样式第三章 音乐推荐一、任务分析二、组件介绍三、编写音乐推荐页面结构和样式第一章 开发前的准备 一、项目展示 音乐小程序项目效果展…

.net开发安卓入门 - Notification(通知)

.net开发安卓入门 - Notification(通知)通知的布局创建通知通道创建和发布通知我的样例效果图代码资源文件常见问题一切代码都准备就绪了,为什么就是不提示消息内容呢?为什么我的通知不是弹出式的同系列文章推荐通知的布局 创建通…

yolov7运行自己的VOC格式数据集

yolov7运行VOC格式数据集测试开发环境使用自己的VOC格式数据集训练修改配置文件yolov7.yaml修改配置文件voc.yamlVOC格式数据集转换COCO格式开始训练重头开始fine-trainBUG常见报错1常见报错2成功训练网络评价指标可视化测试开发环境 去官网下载yolov7的权重文件,放…

async/await

理解async函数就要先理解generator (生成器)函数,因为async是generator函数的语法糖。 Generator函数 Generator 函数是 ES6 提供的一种异步编程解决方案,可以先理解为一个状态机,封装了多个内部状态,执行Generator函数返回一个遍历器对象&…

【ChatGPT 中文版插件】无需注册体验 ChatGPT 的攻略

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

假设检验介绍

数据科学是一个不断发展的领域,近年来越来越受欢迎。数据科学的一个重要组成部分是假设检验的使用,它可用于从数据中得出结论并做出明智的决策。 什么是假设检验? 假设检验是数据科学中常用的方法,用于评估关于总体参数的假设的有…

前端超级实用的Visual Studio Code插件

前端超级实用的Visual Studio Code插件1、Bracket Pair Colorizer:可以把不同嵌套层级的各种类型的括号,用不同的颜色标注出来2、Auto Close Tag:自动闭合HTML标签3、Auto Rename Tag:自动关闭标签,在开始标记的结束括号中键入后,…

2022年浙大城市学院新生程序设计竞赛(同步赛)D. Cutting with Lines Ⅰ(线段分割 离散化+并查集 补写法)

题目 二维平面&#xff0c;左下角(0,0)右上角(n,m)(1<n,m<1e6)的一块矩形&#xff0c; q(q<2e3)次线段切割操作&#xff0c;操作分四种&#xff1a; ai 1 x&#xff0c;表示切割(x,m)到(x,m-ai)这条竖直线段(0<x<n,1<ai<1e6) ai 2 x&#xff0c;表示切…

【车载开发系列】UDS诊断---诊断设备在线($0x3E)

【车载开发系列】UDS诊断—诊断设备在线&#xff08;$0x3E&#xff09; 一.概念定义 此服务用于向ECU指示诊断工具在线。当其他UDS服务不存在时&#xff0c;为防止ECU自动转入默认会话模式并停止通信&#xff0c;必须使用此服务。建议以功能寻址的方式发送该指令它唯一的功能…

解决编译 Visual Studio 工程时报 NuGet Package Restore Failed

背景 域渗透的过程中会用到很多 .Net 工具。但是官方仓库没有直接发布的二进制包&#xff0c;那么就需要我们自己手动编译。这些工具又有很多会选择做 NuGet 依赖。如果本地配置不对&#xff0c;就会导致编译失败。 接下来我们就讨论一下怎么解决这个问题。 现象 我们以 AD…

【Vue 快速入门系列】ref、props、mixin、插件使用、样式混合解决方案合集

文章目录前言一、ref属性的使用二、props配置三、mixin混合语法1.简介2.使用方法3.注意点4.结合实例使用①全局混入②局部混入四、插件的使用1.插件语法①定义插件②引入插件并使用2.上手插件五、样式混合问题前言 在前面介绍到了Vue的一些基本概念与如何使用Vue&#xff0c;并…

ARM64(M1版)Mac运行MAA以及AzurLaneAutoScript自动化打明日方舟和碧蓝航线

前言 首先感谢Github上面MAA以及AzurLaneAutoScript的开发组&#xff0c;让我们有工具可用。 再感谢吕明珠LmeSzinc 和binss 大佬&#xff0c;他们的教程让我受益良多。 能看到这篇教程的&#xff0c;想必都拥有M1或者M2芯片的Mac电脑&#xff0c;因为新芯片不能安装双系统所…

RabbitMQ:安装配置

一般来说&#xff0c;安装分为两种方式&#xff1a;1. 下载 RabbitMQ 源文件&#xff0c;解压源文件之后进行安装。2. 通过 brew 命令安装。在这里&#xff0c;推荐使用 brew 来安装&#xff0c;非常强大的 Mac 端包管理工具。 ~ 本篇内容包括&#xff1a;Mac 安装 RabbitMQ、M…

SSM网上在线水果店商城超市网站平台

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 管理员角…

【数电实验】组合逻辑电路

实验三 触发器及其应用 一 实验目的 1 了解触发器的触发方式&#xff08;上升沿触发、下降沿出发&#xff09;及其触发特点&#xff1b; 2 测试常用触发器的逻辑功能&#xff1b; 3 掌握用触发器设计同步时序逻辑电路的方法。 二 实验内容 1 测试双D触发器74HC74的逻辑功能…