手动配置IP
手动配置IP,需要考虑四个配置项:
四个配置项
IP地址、子网掩码、默认网关、DNS服务器
IP地址:格式表现为点分十进制,如192.168.254.1
子网掩码:用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的(1)】
网络位:类似于身份证的前六位,表示自己所在的大区(网段)
主机位:精确到自己的主机
对于一个IP:192.168.254.1/16,根据子网掩码,可以得出它的网络位是192.168,得出网络位有什么用呢? 下面会说明
默认网关:对于不在一个大区(网段),A和B两个人想要直接进行消息交流,是行不通的【好比两个人不在一个群聊,怎么能在这个群里聊天呢?】,这个时候就需要中间人(同时加了所有的群),这样A能在群里艾特中间人,让中间人在B所在的群转发消息,这个中间人就是网关,当然更应该叫路由器【家庭网络中,默认网关就是路由器的IP】。
网关的作用就是帮助不同网段的用户来转发数据,网关本身也是个网络设备,有自己的地址,靠这个网络设备去往不同的网段。
DNS服务器:使得我们可以直接通过域名去访问目标,作用是帮我们将域名解析成IP地址。
两台主机AB通信的整个过程
比如A要个B发消息,首先是知道A,B的IP以及A本身的子网掩码,通过主机A的子网掩码,计算B的网络号,是否和自己在同一个网段,如果在同一个网段,那我们不需要网关/路由器,直接通过交换机就可以进行通信;如果不在同一个网段,那么我们就需要去找自己的网关/路由器(路由器本身有路由表,进行转发),如果不能帮我们转发(即路由表没有B的地址),则不通。
以上也充分说明了子网掩码的作用,用来计算是否在同一个网段。
对上面的过程进行概括就是两点:
用交换机组建一个同网段的局域网,不需要网关;
用路由器,组建一个不同网段的局域网,路由器充当两个网段的网关。
现在有这样一个场景:我不小心修改了子网掩码,发现有的网站能正常访问,有的不行,为什么?
根据我上面所说的过程,修改了子网掩码后,比如 192.168.254.1/16 -> 192.168.254.1/8,本来网段是192.168,但是现在误认为是192开头的都是,当发消息的目的地是192开头的,就不会去找网关,如192.200,则访问不了。
那如果是200.x.x.x,都能通,因为会正常找网关,所以造成了有的网站能访问....
对于同一网段下的主机,最好统一子网掩码,避免误判为同一网段或误判为不在同一网段,当然也有其他协议辅助,如ARP协议,如果B在同一网段下,通过ARP协议获得B的MAC地址,不在同一网段,则发给网关....
DNS解析域名的过程
先了解下域名的层级:
举例来说,www.example.com
真正的域名是www.example.com.root
,简写为www.example.com.
。因为,根域名.root
对于所有域名都是一样的,所以平时是省略的。
根域名的下一级,叫做"顶级域名"(top-level domain,缩写为TLD),比如.com
、.net
;
再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.example.com
里面的.example
,次级域名是用户可以注册的;
再下一级是主机名(host),比如www.example.com
里面的www
,又称为"三级域名",这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的。
DNS服务器的分类:
-
根 DNS 服务器。根 DNS 服务器提供 TLD 服务器的 IP 地址。目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。
-
顶级域 DNS 服务器(TLD 服务器)。顶级域是指域名的后缀,如
com
、org
、net
和edu
等。国家也有自己的顶级域,如uk
、fr
和ca
。TLD 服务器提供了权威 DNS 服务器的 IP 地址。 -
权威 DNS 服务器。在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。
-
本地 DNS 服务器。每个 ISP(互联网服务提供商)都有一个自己的本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 层次结构中。严格说来,不属于 DNS 层级结构。
过程:
浏览器在本地会维护一个hosts
列表,浏览器会先查看要访问的域名是否在hosts
列表中,如果有的话,则直接返回IP地址记录。如果本地hosts
列表内没有域名-IP 对应记录的话,那么就需要请求DNS服务了。
简要说一下:先去本地DNS服务器发送DNS请求,如果有本地缓存,则直接返回,否则向根服务器发请求,比如我要查看www.baidu.com(.root)域名的IP地址,则向.root根域名服务器查询,发现有com.root,并告诉本地服务器去com.root的顶级域服务器看看,然后知道了baidu.com.root可能在哪一个权威DNS服务器,并返回给本地DNS服务器,本地DNS又向指定的权威DNS服务器发DNS请求,结果找到了,并返回对于的IP地址。
本地服务器到本地DNS服务器式递归的,然后本地DNS服务器到根域名、顶级域名、权威DNS服务器都是迭代的,一步一步知道要找哪个域名服务器,并最终拿到IP地址。
迭代式:
现在,主机cis.poly.edu
想知道gaia.cs.umass.edu
的 IP 地址。假设主机cis.poly.edu
的本地 DNS 服务器为dns.poly.edu
,并且gaia.cs.umass.edu
的权威 DNS 服务器为dns.cs.umass.edu
。
-
首先,主机
cis.poly.edu
向本地 DNS 服务器dns.poly.edu
发送一个 DNS 请求,该查询报文包含被转换的域名gaia.cs.umass.edu
。 -
本地 DNS 服务器
dns.poly.edu
检查本机缓存,发现并无记录,也不知道gaia.cs.umass.edu
的 IP 地址该在何处,不得不向根服务器发送请求。 -
根服务器注意到请求报文中含有
edu
顶级域,因此告诉本地 DNS,你可以向edu
的 TLD DNS 发送请求,因为目标域名的 IP 地址很可能在那里。 -
本地 DNS 获取到了
edu
的 TLD DNS 服务器地址,向其发送请求,询问gaia.cs.umass.edu
的 IP 地址。 -
edu
的 TLD DNS 服务器仍不清楚请求域名的 IP 地址,但是它注意到该域名有umass.edu
前缀,因此返回告知本地 DNS,umass.edu
的权威服务器可能记录了目标域名的 IP 地址。 -
这一次,本地 DNS 将请求发送给权威 DNS 服务器
dns.cs.umass.edu
。 -
终于,由于
gaia.cs.umass.edu
向权威 DNS 服务器备案过,在这里有它的 IP 地址记录,权威 DNS 成功地将 IP 地址返回给本地 DNS。 -
最后,本地 DNS 获取到了目标域名的 IP 地址,将其返回给请求主机。
递归式:
参考:
DNS 原理入门 - 阮一峰的网络日志
DNS 如何将 xxxhub.com 转化为 IP 地址?
相关文章:

手动配置IP
手动配置IP,需要考虑四个配置项: 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址:格式表现为点分十进制,如192.168.254.1 子网掩码:用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…...

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下: 打开 IntelliJ IDEA: 打开你的 IntelliJ IDEA 应用…...

游戏引擎学习第101天
回顾当前情况 昨天的进度基本上完成了所有内容,但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的,但还是存在一些可能或者确定的bug。正如昨天最后提到的,既然现在时间晚了,就不太适合开始调试,所以今天我…...
css块级元素和行内元素区别
在CSS中,元素可以分为两大类:块级元素(Block-level elements)和行内元素(Inline elements)。这两种元素在网页布局中起着不同的作用,主要体现在它们的显示方式、尺寸控制、以及与其他元素的交互…...

JAVA安全—Shiro反序列化DNS利用链CC利用链AES动态调试
前言 讲了FastJson反序列化的原理和利用链,今天讲一下Shiro的反序列化利用,这个也是目前比较热门的。 原生态反序列化 我们先来复习一下原生态的反序列化,之前也是讲过的,打开我们写过的serialization_demo。代码也很简单&…...
什么是信息熵
信息熵 公式 一个离散随机变量 X X X的可能取值为 X x 1 , x 2 , . . . , x n Xx_1,x_2,...,x_n Xx1,x2,...,xn,而对应的概率为 p i p ( X x i ) p_ip(Xx_i) pip(Xxi),如下 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4… x n x_n xnp( x …...

使用API有效率地管理Dynadot域名,清除某一文件夹中域名的默认DNS设置
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...

2.11 sqlite3数据库【数据库的相关操作指令、函数】
练习: 将 epoll 服务器 客户端拿来用 客户端:写一个界面,里面有注册登录 服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确…...

当 LSTM 遇上 ARIMA!!
大家好,我是小青 ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。 ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时…...

kali连接xshell
1.先保证宿主机:以太网适配器 VMware Network Adapter VMnet8 和kali(net 模式)在同一个网段 windows VMnet8开启 查看是否是自动获取ip ipv4 和ipv6一样的 查看 windows VMnet8的IPv4的地址 查看 kali 的IP地址 window ping的结果…...
图像曲率滤波
看到这么一个非常有意思的东西,记录一下 https://www.zhihu.com/question/35499791 https://zhuanlan.zhihu.com/p/22971865 GCFilter_talk.pdf_免费高速下载|百度网盘-分享无限制 https://github.com/YuanhaoGong/CurvatureFilter?tabreadme-ov-file...
TCP 和 UDP 可以绑定相同的端口吗?
前言 当一个网络接口接收到一个数据报时,IP 模块首先检查目的地址是否为自己的 IP 地址,如果是的话,数据报交付给由 IPv4 头部的协议字段指定的协议模块。 TCP 和 UDP 在内核中是两个完全独立的模块,送给 TCP/UDP 模块的报文根据…...

【Python网络爬虫】爬取网站图片实战
【Python网络爬虫】爬取网站图片实战 Scrapying Images on Website in Action By Jackson@ML *声明:本文简要介绍如何利用Python爬取网站数据图片,仅供学习交流。如涉及敏感图片或者违禁事项,请注意规避;笔者不承担相关责任。 1. 创建Python项目 1) 获取和安装最新版…...

2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)
2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布!2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布! 【2024博客之星】恭喜完成✅主题创作的226位博主࿰…...

【CLIP系列】4:目标检测(ViLD、GLIP)
目录 1 ViLD2 GLIP2.1 前言2.2 损失计算2.3 模型框架 1 ViLD OPEN-VOCABULARY OBJECT DETECTION VIA VISION AND LANGUAGE KNOWLEDGE DISTILLATION 从标题就能看出来,作者是把CLIP模型当成一个Teacher,去蒸馏他自己的网络,从而能Zero Shot去…...

Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)
1 安装Qt Designer 安装这个包的时候会自带安装 Qt Designer, 安装目录为python的安装根目录的 Lib/site-packages/qt5_applications/Qt/bin 目录下。 pip install pyqt5-tools2 新建窗体 2.1 新建主窗体 创建之后如下图: 设置主窗口大小: 设置窗…...
【一文读懂】HTTP与Websocket协议
HTTP协议 概述 HTTP (Hypertext Transfer Protocol),即超文本传输协议,是一种用于在客户端和服务器之间传输超文本(例如网页、图片、音频、视频等)的通信协议。它是万维网(WWW)的基础,负责在浏…...

大语言模型入门
大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1.2.1 token 1.2 SFT监督微调1.3 人类反馈强化学习1.3.1 人…...
SQL 大厂面试题目(由浅入深)
今天给大家带来一份大厂SQL面试覆盖:基础语法 → 复杂查询 → 性能优化 → 架构设计,大家需深入理解执行原理并熟悉实际业务场景的解决方案。 1. 基础查询与过滤 题目:查询 employees 表中所有薪资(salary)大于 10000…...
Shader Step和frac函数
Step又称为阶跃函数,在着色器(Shader)编程中,step 函数是一个非常有用的函数,尤其是在GLSL(OpenGL Shading Language)和其他类似的着色器语言中。它用于生成基于阈值的阶跃函数输出。step 函数的…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...