IP协议解析

news2025/1/10 23:56:23

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||
    ====> |||《计算机网络专栏》::记录我学习计算机网络,看完你一定会有收获。|||

IP协议解析

  • 网络层的作用
  • IP报文格式
  • 网段划分
    • 子网划分
  • 数据路由过程
  • NAT
  • 内网穿透
  • 内网打洞

网络层的作用

网络层的作用主要有两个,1.路由选择,2.主机定位,网络层提供了一种能力,让数据可以跨网络传输的能力。

IP报文格式

报文格式如下。
在这里插入图片描述
1).版本:版本用来表示IP版本,如IPV4,和IPV6。
2).首部长度:和TCP报文一样,4比特位范围为[0 - 15]当然,存在一个单位,为4B。
3).总长度:其代表的是整个IP数据报的总长度,包括报头 + 内容,单位是字节。
4).标示,标志,片偏移:都是IP分片需要用的字段。

IP分片,数据链路层存在一个MTU(最大传输单元),当IP数据报的长度大于MTU,则会导致分片
1).标识:用来标识唯一的IP数据报,如果没分片,则也会存在标识如果分片了则同一个IP报文的标识都相同
2).标志:IP的标志位有三个比特位,只有前两个标志位有意义,第一个标志位代表MF,第二个标志位代表DF,MF:MF = 1,则代表后续还有分片,MF = 0,则代表该分片已经是最后一个分片了,DF:代表是否允许分片,DF = 0,则代表允许分片,否则不允许分片。
3).片偏移:每一片的起始位置除以8,可以通过片偏移 * 8得到其原先的位置。
在这里插入图片描述

5).生存时间:TLL(生存时间)是一个整数,没经过一个路由器,TLL就减一,减到0后,该IP数据报直接删除。
6).协议:代表IP数据报的载荷部分使用的是什么协议。
7).其他字段与TCP之前介绍的相同。

网段划分

划分网段是比较重要的知识,我们将IP地址分为了两部分,一部分叫做网络号,一部分叫做主机号,我们按照网络号和主机号的位数,可以划分以下四类地址。
在这里插入图片描述
这种划分很粗鲁,在当今,IP地址已经不够用,所以我们将所以IPV4的网络划分成了公网IP和内网IP(私有IP),以下是两者的范围。
在这里插入图片描述
公网IP是不能重复使用的,而内网IP可以重复使用,在现实中,我们也是这样做的,如下图。
在这里插入图片描述
在不同的局域网内,可以重复使用已经使用过的IP,这样就极大的缓解了IP地址不够用的问题,同时需要NAT技术进行辅助,关于NAT后面在详谈。
同时每个路由器都可以动态分配IP地址,回收不在使用的IP地址,这样有效减少了IP地址的浪费。

子网划分

CIDR技术,将一个较大的网络,划分成更小的子网络,减少IP地址的浪费。该技术目前广泛被使用,它将IP地址表示为 [ 网络号 ]/网络号的比特位数 ,比如192.168.1.0/24,为了掩盖真实的IP地址,以及快速计算出某个IP地址的网络号和主机号,有人提出了子网掩码这个概念。
在这里插入图片描述
比如。

在这里插入图片描述
我们将IP地址和子网掩码做与运算,就能得到该IP地址的网络号。

数据路由过程

路由,就是从网络中的一个结点,到达另一个结点的过程。数据在网络中是如何路由的呢?这需要借助路由器。
我们知道,IP报头中存在这src ip和dest ip这两个字段,这让我们明白了,我们要发给谁,但是在网络中,我们必须一步一步路由,所以,在主机/路由器中,存在路由表,数据报到达链路层后,我们可以用dest ip与路由表中的子网掩码进行按位与操作,如果与网络地址向匹配,则在通过ARP协议将IP转换为MAC地址,封装在MAC帧中,发送出去。
路由表结构如下。
在这里插入图片描述
比如说,我们的目的地址为192.168.10.66,则我们同目的地址与所有的子网掩码进行按位与操作,得到,我们应该向Destination为192.168.10.0的网络接口发送数据,如果没有任何匹配,则向默认接口发送,如上图,默认网关为192.168.10.1。
网络中的数据没经过一个路由器,就会进行上述操作,知道找到我们dest ip的网络,随后在局域网内进行转发,这就是链路层的事了。
在这里插入图片描述

NAT

通过公网和内网的划分,我们知道,内网和内网间的IP是可以重复的,那么我们将数据发送过去后,数据就无法发送回来的,因为不同内网的IP可以重复, 当前网络在该框架下,为了解决该问题,就提出了NAT技术。
比如。
从一个局域网内的某台主机要访问某个服务器。
在这里插入图片描述

当私有IP通过一个局部路由器时,就会将该路由器的WAN口地址替换IP报头的src地址,当经过运营商的路由器时,运营商的WAN口IP已经接入了外网,所以将该外网地址作为IP报头的src地址,随后使用新的IP报文在网络中通信,在每次转换的时候,路由器内都会记下一组映射,当服务器要发送返回报文时,就与各种路由器的NAT表进行比对,如果比对成功,则发送到该路由器,依次发送下去。
对于NAT表,我们有两种填充方法,一种是静态NAT,及人为的手工加入映射,第二种是动态NAT,及在路由过程中,将映射加入NAT表。
更具NAT技术的描述,我们可以发现,只能内网先访问公网,公网才能返回到确定的内网,并且无法由内网直接访问内网,这是NAT的特点。
以下内网穿透和内网打洞皆是利用了NAT的特点。

内网穿透

一台内网中的主机可以通过外网访问到另一台内网中的主机,解决了NAT无法从内网访问到另一个内网的缺点。
在这里插入图片描述
1).内网穿透首先需要一个中转服务器,同时,接收方与服务器进行TCP链接,将内网的主机端口和中转服务器的端口进行映射,同时在路由器中建立NAT转化表,为数据返回内网做准备(NAT技术的特点)。
2).当其他内网主机访问中转服务器的对应端口,就可以通过转换表和之前建立的映射,直接访问到另一个内网中的数据。
所以传统的内网穿透,是需要经过中转服务器的。

内网打洞

内网打洞的原理和穿透很相似。
在这里插入图片描述
1).依旧是接收方向某个服务器建立TCP链接,此间经过路由器生成NAT表,为数据返回内网做准备。
2).发送方与服务器建立链接,生成NAT表,根据建立TCP链接的接口,我们可以知道接收方内网的运营商的WAN口IP,同时将该信息发送给发送方的主机。
3).发送方就可以拿着接收方的运营商WAN口IP,访问该路由器,通过早在第一次链接服务器就建立好的NAT表,就能找到对应的主机了。
内网打洞,在真正跨内网访问的时候,没有经过任何中转服务器。

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

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

相关文章

C语言宏定义的使用

文章目录 🍊自我介绍🍊宏定义🍊宏函数🍊嵌入式开发常用do...while(0)🍊字符串化运算符 ‘ # ’🍊不定参数宏 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏&#xf…

SQL报错注入之floor

目录 1.简述 2.关键函数说明 1.rand函数 2.floor(rand(0)*2)函数 3.group by 函数 4.count(*)函数 3.报错分析 4.报错流程 4.1寻找注入点 4.2爆数据库名 4.3爆表名 4.4爆字段名 4.5查询数据 1.…

32、Python之面向对象:对象的表示,再论Python是dict包括语法糖

引言 在前面介绍Python容器的时候,我们曾经用过这种夸张的表述,“Python就是包裹在一堆语法糖中的字典”。虽然夸张,其实更多的是为了突出Python中dict的强大之处。今天这篇文章,打算看下Python中类对象、实例对象的表示及内存管理…

甄选范文“论负载均衡技术在Web系统中的应用”软考高级论文系统架构设计师论文

论文真题 负载均衡技术是提升Web系统性能的重要方法。利用负载均衡技术, 可将负载(工作任务) 进行平衡、分摊到多个操作单元上执行, 从而协同完成工作任务, 达到提升Web系统性能的目的。 请围绕“负载均衡技术在Web系统中的应用”论题, 依次从以下三个方面进行论述。 1.…

自动化测试 — selenium + Java

什么是自动化测试 将人为驱动的测试行为转化为机器执行的过程。 自动化测试包括UI 自动化,接口自动化,单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI )&#xff0c…

智能氮气柜如何为存储应用提供稳定和安全的环境?

智能氮气柜在保持内部环境的严格控制下,如何为各类高要求的存储应用提供一个稳定和安全的环境? 智能氮气柜内部安装高精度温湿度传感器,持续监测内部环境状况。通过外部连接的氮气供应源,向柜内注入高纯度氮气,当检测到…

k8s—ingress应用

一、ingress和ingress-controller ingress对象: 指的是k8s中的⼀个api对象/资源对象,⼀般⽤yaml配置。作⽤是定义请求如何转发到service的规则,可以理解为配置模板。 ingress-controller: 具体实现反向代理及负载均衡的程序&…

IO-Link通信笔记(十七)——可任意MCU平台移植的面向对象程序设计的IO-Link从站协议栈与接口代码生成和监控上位机与便携式通信主站

一、可任意MCU平台移植的面向对象程序设计的IO-Link从站协议栈 图形化界面与驱动代码库生成功能,是现如今几大半导体芯片供应商选择向广大开发人员推荐的主流开发方式,例如意法的cube-mx。开发人员可以通过这些软件针对所使用芯片的相关外设资源&#xf…

缺失值处理方法:代数/统计/机器学习算法补全数据(附Python-sklearn代码精美可视化绘图)

注:本期的删除或插补方法主要针对连续数据,时间序列数据的插补在后续关于时间序列的博客中讲明。参考鸢尾花丛书,链接如下: 参考书籍及源代码链接https://github.com/Visualize-ML 博客是选出自己感觉用的到的精炼部分加自己的理…

春秋云境 | 文件上传 | CVE-2022-30887

目录 靶标介绍 开启靶场 上传一句话木马 蚁剑连接 找到 flag 靶标介绍 多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库&#xff0…

eclipse无法使用jdk1.6编译老项目

主要修改两个地方的配置: 1、eclipse中配置的maven版本不能过高,亲测3.2.5版本是好使的。 2、修改eclipse安装目录下的eclipse.ini文件,将其中的-Dosgi.requiredJavaVersion更改为1.6即可,我得默认是1.7 最后附上maven安装包&…

AGV一体式ARM智能控制主机如何替代传统PLC、工控机等方案

工业自动化的不断发展,AGV(自动导引车)作为一种重要的物流搬运设备,在各个领域得到了广泛的应用。而 AGV 的控制主机是其核心部件之一,直接影响着 AGV 的性能和稳定性。传统的 AGV 控制主机通常采用 x86 工控机交换机i…

【密码学】密码协议的分类:②认证协议

密码协议的分类有很多种方式,这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类:认证协议、密钥建立协议、认证密钥建立协议。 一、认证协议是什么? 认证协议都在认证些什么东西呢?认证一般要认证三个东西&#x…

防止老年痴呆的小学题

直角三角形的周长为16,斜边长为7,求三角形的面积(不使用勾股定理) 答案为(9*9-7*7)/4

aria2下载器在windows端的使用

一、下载aria2 aria2aria2 is a lightweight multi-protocol & multi-source command-linedownload utility. It supports HTTP/HTTPS, FTP, SFTP,BitTorrent and Metalink. …https://aria2.github.io/打开链接,点击要下载的版本,注意windows版本跟…

k8s持久化存储PV和PVC

一、PV和PVC 1.PersistentVolume (PV) PersistentVolume (PV) 是外部存储系统中的⼀块存储空间,由管理员创建和维护。与 Volume⼀样, PV 具有持久性,⽣命周期独⽴于 Pod; 2.PersistentVolumeClaim (PVC) PersistentVolumeClaim…

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log 1. Bin Log(二进制日志)2. Redo Log(重做日志)3. Undo Log(回滚日志) ) 💖The Begin💖点点关注,收藏不迷…

8.6 Day14 匿名用户访问ftp位置

vsftpd的端口号:tcp 20、21 vsftpd的配置文件:/etc/vsftpd/vsftpd.conf LInux系统防火墙默认不允许开启20、21端口访问 使用不同用户访问FTP 1.使用匿名用户访问FTP 匿名用户登录时,用户名为ftp,没有密码 测试匿名用户文件上传…

20240806---特征选择与稀疏学习笔记---pptp61-p92---奇异值分解/压缩感知、字典学习

一.奇异值分解 2.要进行特征分解,则矩阵A为方阵,如果矩阵 𝐴A 不是方阵(即行数和列数不同),我们仍然可以对其进行分解,这就是奇异值分解(SVD)的强大之处。 二.压缩感知 …

力扣面试经典算法150题:移除元素

移除元素 今日的题目依旧是力扣面试经典算法150题中数组相关的题目:移除元素 题目链接:https://leetcode.cn/problems/remove-element/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个排序数组 nums 和一个值 val&a…