IP知识详解
-
IP基本认识
-
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
-
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
-
网络层与数据链路层有什么关系呢?
-
IP 的作用是主机之间通信用的
-
MAC 的作用则是实现「直连」的两个设备之间通信
-
IP 则负责在「没有直连」的两个网络之间进行通信传输
-
-
计算机网络中也需要「数据链路层」和「网络层」这个分层才能实现向最终目标地址的通信。
-
源IP地址和目标IP地址在传输过程中是不会变化的(前提:没有使用 NAT 网络),只有源 MAC 地址和目标 MAC 一直在变化。
-
-
IP地址的基础知识
-
IP 地址(IPv4 地址)由
32位正整数来表示,IP 地址在计算机是以二进制的方式处理的。 -
为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为
4组,每组以「.」隔开,再将每组转换成十进制。 -
IP 地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。
-
IP地址的分类
-
IP 地址显得很充裕,于是计算机科学家们设计了分类地址。
-
IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。
-
什么是 A、B、C 类地址?
-
对于 A、B、C 类主要分为两个部分,分别是网络号和主机号
-
A、B、C 分类对应的地址范围、最大主机个数
-
A、B、C 分类地址最大主机个数是如何计算的呢?
-
为什么要减 2 呢?
-
在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址。
-
主机号全为 1 指定某个网络下的所有主机,用于广播
-
主机号全为 0 指定某个网络
-
-
广播地址用于什么?
-
在同一个链路中相互连接的主机之间发送数据包。
-
广播地址可以分为本地广播和直接广播两种。
-
在本网络内广播的叫做本地广播
-
在不同网络之间的广播叫做直接广播
-
-
-
-
-
什么是 D、E 类地址?
-
D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。
-
多播地址用于什么?
-
用于将包发送给特定组内的所有主机。
-
多播使用的 D 类地址,其前四位是
1110就表示是多播地址,而剩下的 28 位是多播的组编号。 -
从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范围,其划分为以下三类:
-
224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能在局域网中,路由器是不会进行转发的。
-
224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,可以用于 Internet 上。
-
239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围内有效。
-
-
-
-
IP分类的优点
-
路由器还是主机解析到一个 IP 地址时候,我们判断其 IP 地址的首位是否为 0,为 0 则为 A 类地址,那么就能很快的找出网络地址和主机地址。
-
简单明了、选路(基于网络地址)简单。
-
-
IP分类的缺点
-
同一网络下没有地址层次,缺少地址的灵活性。
-
一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能
-
-
不能很好的与现实网络匹配。
-
C 类地址能包含的最大主机数量实在太少了,只有 254 个,估计一个网吧都不够用。
-
而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。
-
-
-
无分类地址CIDR
-
无分类地址的方案,即
CIDR。 -
32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号。
-
怎么划分网络号和主机号的呢?
-
表示形式
a.b.c.d/x,其中/x表示前 x 位属于网络号, x 的范围是0 ~ 32,这就使得 IP 地址更加具有灵活性。
-
-
另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。
-
将子网掩码和 IP 地址按位计算 AND,就可得到网络号。
-
-
为什么要分离网络号和主机号?
-
两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机。
-
路由器寻址工作中,也就是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。
-
-
怎么进行子网划分?
-
通过子网掩码划分出网络号和主机号,那实际上子网掩码还有一个作用,那就是划分子网。
-
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址
-
未做子网划分的 ip 地址:网络地址+主机地址
-
做子网划分后的 ip 地址:网络地址+(子网网络地址+子网主机地址)
-
举例
-
C 类地址中前 24 位是网络号,最后 8 位是主机号,根据子网掩码可知从 8 位主机号中借用 2 位作为子网号。
-
-
-
-
公有IP地址与私有IP地址
-
公有 IP 地址由谁管理呢?
-
私有 IP 地址通常是内部的 IT 人员管理,公有 IP 地址是由
ICANN组织管理,中文叫「互联网名称与数字地址分配机构」。 -
IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按州的方式层层分配。
-
-
IP地址与路由控制
-
IP地址的网络地址这一部分是用于进行路由控制。
-
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。
-
在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。
-
如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
-
环回地址是不会流向网络
-
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。
-
计算机使用一个特殊的 IP 地址 127.0.0.1 作为环回地址。与该地址具有相同意义的是一个叫做
localhost的主机名。使用这个 IP 或主机名时,数据包不会流向网络
-
-
-
IP分片与重组
-
每种数据链路的最大传输单元
MTU都是不相同的 -
每种数据链路的 MTU 之所以不同,是因为每个不同类型的数据链路的使用目的不同。
-
最常见数据链路是以太网,它的 MTU 是
1500字节。 -
经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的
-
-
IPv6的亮点
-
可分配的地址变多
-
IPv6 可自动配置,即使没有 DHCP 服务器也可以实现自动分配IP地址,真是便捷到即插即用
-
IPv6 包头包首部长度采用固定的值
40字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能 -
IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性
-
IPv6地址标识方法
-
IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开。
-
如果出现连续的 0 时还可以将这些 0 省略,并用两个冒号 「::」隔开。但是,一个 IP 地址中只允许出现一次两个连续的冒号。
-
-
IPv6地址的结构
-
IPv6 的地址主要有以下类型地址:
-
单播地址,用于一对一的通信
-
组播地址,用于一对多的通信
-
任播地址,用于通信最近的节点,最近的节点是由路由协议决定
-
没有广播地址
-
-
IPv6 单播地址类型
-
在同一链路单播通信,不经过路由器,可以使用链路本地单播地址,IPv4 没有此类型
-
在内网里单播通信,可以使用唯一本地地址,相当于 IPv4 的私有 IP
-
在互联网通信,可以使用全局单播地址,相当于 IPv4 的公有 IP
-
-
-
IPv4首部和IPv6首部
-
首部改进
-
取消了首部校验和字段。
-
取消了分片/重新组装相关字段。
-
取消选项字段。
-
-
-
-
-
-
-
IP协议相关技术
-
DNS
-
上网的时候,通常使用的方式是域名,而不是 IP 地址,因为域名方便人类记忆。
-
这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。
-
域名的层级关系
-
域名都是用句点来分隔的,比如
www.server.com,这里的句点代表了不同层次之间的界限。 -
越靠右的位置表示其层级越高。
-
域名的层级关系类似一个树状结构:
-
根 DNS 服务器
-
顶级域 DNS 服务器(com)
-
权威 DNS 服务器(server.com)
-
客户端只要能够找到任意一台 DNS 服务器,就可以通过它找到根域 DNS 服务器,然后再一路顺藤摸瓜找到位于下层的某台目标 DNS 服务器。
-
-
-
域名解析的工作流程
-
浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件
hosts,如果还是没有,就会 DNS 服务器进行查询 -
DNS 域名解析的过程蛮有意思的,整个过程就和我们日常生活中找人问路的过程类似,只指路不带路
-
-
-
ARP
-
在传输一个 IP 数据报的时候,确定了源 IP 地址和目标 IP 地址后,就会通过主机「路由表」确定 IP 数据包下一跳。然而,网络层的下一层是数据链路层,所以我们还要知道「下一跳」的 MAC 地址。
-
主机的路由表中可以找到下一跳的 IP 地址,所以可以通过 ARP 协议
-
ARP 又是如何知道对方 MAC 地址的呢?
-
把第一次通过 ARP 获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 IP 地址的 MAC 地址。
-
-
RARP 协议你知道是什么吗?
-
ARP 协议是已知 IP 地址求 MAC 地址,那 RARP 协议正好相反,它是已知 MAC 地址求 IP 地址。
-
通常这需要架设一台
RARP服务器,在这个服务器上注册设备的 MAC 地址及其 IP 地址。然后再将这个设备接入到网络,接着:-
该设备会发送一条「我的 MAC 地址是XXXX,请告诉我,我的IP地址应该是什么」的请求信息。
-
RARP 服务器接到这个消息后返回「MAC地址为 XXXX 的设备,IP地址为 XXXX」的信息给这个设备。
-
-
-
-
DHCP
-
电脑通常都是通过 DHCP 动态获取 IP 地址,大大省去了配 IP 信息繁琐的过程。
-
DHCP 交互中,全程都是使用 UDP 广播通信。
-
DHCP 中继代理。有了 DHCP 中继代理以后,对不同网段的 IP 地址分配也可以由一个 DHCP 服务器统一进行管理。
-
-
NAT
-
互联网的用户增速是非常惊人的,所以 IPv4 地址依然有被耗尽的危险。
-
网络地址转换 NAT 的方法,再次缓解了 IPv4 地址耗尽的问题。
-
简单的来说 NAT 就是同个公司、家庭、教室内的主机对外部通信时,把私有 IP 地址转换成公有 IP 地址。
-
那不是 N 个私有 IP 地址,你就要 N 个公有 IP 地址?这怎么就缓解了 IPv4 地址耗尽的问题?这不瞎扯吗?
-
普通的 NAT 转换没什么意义。
-
绝大多数的网络应用都是使用传输层协议 TCP 或 UDP 来传输数据的。
-
可以把 IP 地址 + 端口号一起进行转换。
-
用一个全球 IP 地址就可以了,这种转换技术就叫网络地址与端口转换 NAPT。
-
两个私有 IP 地址都转换 IP 地址为公有地址 120.229.175.121,但是以不同的端口号作为区分。
-
生成一个 NAPT 路由器的转换表,就可以正确地转换地址跟端口的组合,令客户端 A、B 能同时与服务器之间进行通信。
-
-
NAT 那么牛逼,难道就没缺点了吗?
-
由于 NAT/NAPT 都依赖于自己的转换表,因此会有以下的问题:
-
外部无法主动与 NAT 内部服务器建立连接,因为 NAPT 转换表没有转换记录。
-
转换表的生成与转换操作都会产生性能开销。
-
通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。
-
-
-
如何解决 NAT 潜在的问题呢?
-
第一种就是改用 IPv6
-
第一种就是改用 IPv6
-
-
-
ICMP
-
互联网控制报文协议。
-
ICMP 功能都有啥?
-
确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。
-
-
ICMP 类型
-
一类是用于诊断的查询消息,也就是「查询报文类型」
-
另一类是通知出错原因的错误消息,也就是「差错报文类型」
-
-
-
IGMP
-
组播地址,也就是 D 类地址,既然是组播,那就说明是只有一组的主机能收到数据包,不在一组的主机不能收到数组包,怎么管理是否是在一组呢?需要
IGMP协议了。 -
IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间
-
IGMP 工作机制
-
IGMP 分为了三个版本分别是,IGMPv1、IGMPv2、IGMPv3。
-
常规查询与响应和离开组播组
-
-
-
相关文章:
IP知识详解
IP基本认识 IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。 网络层与数据链路层有什么关系呢? IP 的作用是主机之间通信…...
设计模式:适配器模式
定义 适配器模式(Adapter Pattern),也称为包装器(Wrapper)模式,是一种结构型设计模式,它允许不兼容的接口之间进行交互。适配器模式通过包装一个已有的类,提供一个与原系统兼容的接…...
大语言模型落地的关键技术:RAG
1、什么是RAG? RAG 是检索增强生成(Retrieval-Augmented Generation)的简称,是当前最火热的大语言模型应用落地的关键技术,主要用于提高语言模型的效果和准确性。它结合了两种主要的NLP方法:检索ÿ…...
ffmpeg Android 笔记
目录 没有示例项目 编译好的.a文件 ffmpegandroid 延时有220ms rk官方有例子 ffmpeg Android 笔记 没有示例项目 编译好的.a文件 FFmpeg-Android/ffmpeg-android-aarch64-34/lib at main yhbsh/FFmpeg-Android GitHub ffmpegandroid 看到了音频解码器 FFmpegAndroid/a…...
本地创建新分支并提交gitee
初始化本地仓库 git init链接远程仓库 git remote add origin https://gitee.com/xxxxxxxxxxx提交本地代码(进行commit提交) git add . git commit -m "分支名"创建分支 git branch 分支名选择刚刚创建的分支 git checkout 分支名查看所选中的分支 git branch …...
[蓝桥杯 2019 国 C] 数正方形
[蓝桥杯 2019 国 C] 数正方形 题目描述 在一个 N N N \times N NN 的点阵上,取其中 4 4 4 个点恰好组成一个正方形的 4 4 4 个顶点,一共有多少种不同的取法? 由于结果可能非常大,你只需要输出模 1 0 9 7 10^9 7 1097 的…...
Redis: 配置文件详解(Redis.conf)
文章目录 一、Units二、INCLUDES三、NETWORK四、GENERAL五、SECURITY六、LIMITS 一、Units 单位,配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感 二、INCLUDES 包含,多…...
学习vue3第十四节 Teleport 内置组件介绍
<Teleport></Teleport> 作用目的: 用于将指定的组件或者元素传送到指定的位置; 通常是自定义的全局通用弹窗,绑定到 body 上,而不是在当前元素上面; 使用方法: 接收两个参数 to: 要将目标传…...
mybatis模糊查询查不到数据
排除SQL语句本身存在错误,字段名称不匹配,编码格式问题后,若使用%方式查询,一开始使用单引号查询不到数据,把改成",可以查询到数据 疑问:看别人的代码,使用单引号也可以查询到数据,原因未知...
Python语法总结:not(常出现错误)
0、not是什么 在python中not是逻辑判断词,用于布尔型True和False之前 a not Ture # a False b not False # b True1、not的用法 (1)判断语句 if not a:# 如果a是False,执行的语句(2)判断元素是否在…...
深入理解WebSocket:实时双向通信的利器
一、介绍 1.1 基础概念介绍 单工通信:数据传输只允许在一个方向上传输,只能一方发送数据,另一方接收数据并发送。半双工:数据传输允许两个方向上的传输,但在同一时间内,只可以有一方发送或接收数据。全双…...
Gateway是什么?(SpringCloudAlibaba组件)
1、网关介绍 **网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。**网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可…...
阿里巴巴拍立淘API新功能揭秘:图片秒搜商品,实现智能化个性化购物新体验
在数字化快速发展的今天,智能化和个性化已经成为购物体验中不可或缺的元素。为了满足消费者日益增长的购物需求,阿里巴巴中国站不断推陈出新,其中拍立淘API的新功能——图片秒搜商品,无疑为智能化个性化购物体验开创了新的篇章。 …...
蚓链为移动实体经济加油!
在当今数字化时代,数据已成为企业宝贵的资产之一。如何利用数据资产为可移动实体经济创造更多的增值机会呢?蚓链将为你揭示 11种行之有效的方法! 1. 个性化服务:根据客户数据,提供量身定制的产品和服务,满…...
MySQL 核心模块揭秘 | 12 期 | 创建 savepoint
回滚操作,除了回滚整个事务,还可以部分回滚。部分回滚,需要保存点(savepoint)的协助。本文我们先看看保存点里面都有什么。 作者:操盛春,爱可生技术专家,公众号『一树一溪』作者&…...
SpringMVC --- 老杜
1、什么是SpringMVC? SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,…...
详细介绍如何利用 A star(A*)算法解决8数码问题
文章目录 1. A star(A*)算法简介2. 利用A*解决8数码问题(含Python代码)2.1 什么是8数码问题2.2 A*算法中的开放列表和关闭列表2.3 A*算法解决8数码问题过程2.3.1 计算节点(棋盘顺序)间距离2.3.2 交换数字生成新的节点2.3.3 A*主求解程序1. A star(A*)算法简介 A ∗ A^*…...
如何锁定鼠标光标在水平、垂直或45度对角线模式下移动 - 鼠标水平垂直移动锁定器简易教程
在我们进行精细工作例如如创建图标和图形设计时,通常需要我们对鼠标移动进行精确控制。一旦向左或向右轻微移动,都可能导致设计出错。若出现不必要的错误,我们极有可能不得不重新开始,这会令人感到非常沮丧。这种情况下࿰…...
在 Docker 部署的 MySQL 容器内安装和使用 vim
在 Docker 部署的 MySQL 容器内安装和使用 vim 文章目录 在 Docker 部署的 MySQL 容器内安装和使用 vim步骤一:进入 MySQL 容器步骤二:更新软件源和安装 vim步骤三:验证 vim 安装步骤四:使用 vim 进行文件编辑步骤五:保…...
人工智能|深度学习——基于Xception实现戴口罩人脸表情识别
一、项目背景 近年来,随着人工智能技术的不断发展,人脸表情识别已经成为了计算机视觉领域中的重要研究方向之一。然而,在当前的疫情形势下,佩戴口罩已经成为了一项必要的防疫措施,但是佩戴口罩会遮挡住人脸的部分区域&…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
