在家中访问一个网站的思考
在家中访问一个网站的思考
- 1、家庭网络简介
- 2、家庭WLAN + DHCP
- 2.1、家庭路由器PPPOE拨号
- 2.2、DHCP(动态主机配置协议)
- 2.3、接入家庭网的主机IP地址
- 2.4、家庭总线型以太网
- 2.5、Mac地址
- 2.6、ARP协议
- 2.7、IP协议 & UDP/TCP协议
- 2.8、NAT(Network Address Translation,网络地址转换)
- 3、Router路由器
- 3.1、源IP & 目的IP
- 3.2、路由表
- 3.3、路由器是如何知道到达所有的网络的通路的呢?
- 4、 总结
1、家庭网络简介

- 要连接公网,通过 Modem 光猫 pppoe 拨号。
- wlan路由器的wan口链接ADSL 猫,一般情况下会动态获取一个公网IP地址,在广域网内,任何一个主机,均可以访问到该ip地址。
- 终端可以通过有线或者无线的方式通过共享无线路由器的wan口访问公网。
- 台式机、手机、ipad、笔记本等终端通过路由器的dhcp协议自动获取的地址是局域网地址。
- 局域网内终端通过NAT协议进行源、目的IP,源、目的端口号的转换后共享WAN口地址上网。
- 局域网内终端之间通信可通过arp协议学习其他网口的mac地址,网卡通过mac地址过滤数据帧。
- 公网内路由器之间数据传输一般是ppp协议。
2、家庭WLAN + DHCP
家用路由器也是路由器一种,只是他只能连接两个网络,一个是局域网,一个是与运营商连接的那个网络。
2.1、家庭路由器PPPOE拨号
- 家用路由器上网通常是通过PPPoE拨号上网,账号密码由运营商提供。
- 拨号成功后会获得一个公网IP。如果拥有一个固定的公网IP,那么此处也可以设置固定ip。
-
登录管理界面
以TP-LINK为例,打开 http://192.168.1.1网页,在弹出的设置管理密码界面中,设置6~15位的管理密码,点击 确定,登录路由器管理界面。
-
选择上网方式: PPPoE(ADSL虚拟拨号)
-
输入上网宽带账号和密码
-
设置无线参数
SSID 即无线网络名称(可根据实际需求设置),选中 WPA-PSK/WPA2-PSK 并设置 PSK密码,点击 下一步。
-
设置完成,重启,查看 WAN口状态
2.2、DHCP(动态主机配置协议)
路由器开启dhcp并配置一个IP地址范围,开启DHCP客户端的主机接入LAN网络时就可以自动获得DHCP分配的IP地址、子网掩码、租期、网关、DNS等配置信息。
如上地址池是192.168.2.100~192.168.2.199;终端连接家用路由器之后会获得地址其中的一个地址。
2.3、接入家庭网的主机IP地址
我的笔记本是通过无线路由器连接的无线Wi-Fi。本机无线网卡信息配置信息如下:
ipconfig /all

2.4、家庭总线型以太网
基于IEEE802.11标准的无线局域网大多使用的是 2.4GHz 或 5GHz 的射频。
如下总线型网络中,主机B向主机D发送数据,总线上的每一个工作的计算机都能检测到 B 发送的数据信号。由于只有计算机 D 的MAC地址与数据帧首部的目标MAC地址一致,因此只有 D 才接收这个数据帧。其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。这样就在具有广播特性的总线上实现了一对一的通信。
随机访问 介质访问控制 协议 对比:
ALOHA 协议:不听就说 ;
CSMA 协议:先听再说 ;
CSMA/CD 协议:先听再说 , 边听边说 ;
CSMA/CA 协议:先听再说 , 边听边说 ;
CSMA/CD(Carrier Sense Multiple Access / Collision Detection)载波监听多点接入 / 碰撞检测 【有线】。
CSMA/CA(Carrier Sense Multiple Access With Collision Avoidance)载波监听多点接入 / 碰撞避免 【无线】。
2.5、Mac地址
- 在以太网中,硬件地址又称为物理地址,或 MAC 地址,6个字节,共48 位。
- IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
- 适配器从网络上每收到一个数据帧就首先用硬件检查数据帧中的 MAC 地址,如果是发往本站的帧则收下进行其他的处理;否则就将此帧丢弃不再进行其他的处理。
2.6、ARP协议
假如我们要访问局域网中的另外一个pc上的进程,假设我们只知道对方的IP地址,那么如何才能知道对方的mac地址呢?可以通过ARP协议。
ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值不存在,那么主机就向网络发送一个ARP协议广播包。
这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。
而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。
Windows 的arp表查询
arp -a

2.7、IP协议 & UDP/TCP协议

2.8、NAT(Network Address Translation,网络地址转换)
NAT将有助于减缓可用的IP地址空间的枯竭。在RFC 2663中有对NAT的说明。经过NAT转换的数据包IP地址替换见下图:
- 从局域网内部发往路由器的数据包,源ip和源port【10.0.0.1:3345】,经过路由器之后源ip和源port替换为【138.76.29.7:5001】。
- 从服务器返回的数据包的目的ip和目的port【138.76.29.7:5001】,经过路由器之后目的ip和目的port替换为【10.0.0.1:3345】。
- 完美。
3、Router路由器
路由器(Router)是互联网的主要结点设备。路由器通过路由策略决定数据的转发。
作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络。
家庭常用的路由器通常有一个Wan口,4个Lan口。既可以通过网线连接,也可以通过无线连接,通常带宽100M到1000M。
还有在大型机房中性能强悍的带宽可高达T级大型路由器。

以下是1个企业级网络的组网拓扑图,我们通常用图中的图标表示路由器:企业级网络拓扑结构
路由器的一些使用规则:
- 路由器工作在IP(网络)层;
- 路由器用来连接不同的网络;
- 路由器的每一个接口都必须是不同网段的;
- 路由器之间互联是接口直接连接,一般用ppp协议通信;
- 处于不同网络中的2个设备要想互相通信,必须通过路由器;
- 一个成熟稳定的网络,路由器必须知道每一个网络设备到达另外一个网络的通路,否则会直接丢弃,路由器通过路由表来维护这些通路;
- 路由器只解析到数据包的IP层(传输层和应用层不会查看)
3.1、源IP & 目的IP
公网中的数据包都是ip数据包,ip数据包头中有个非常重要的协议字段:「目的地址」。
一口君随机抓取了一个本机网络通信的ip数据包:
如上图所示, 源ip地址是:192.168.0.104 目的ip地址是:140.246.147.33
很显然,源地址是一个c类地址,就是本机地址,也是一个私网地址, 目的地址是一个公网地址。
路由器之所以能转发数据包就是靠路由表和ip数据包的目的ip地址+源ip地址。
3.2、路由表
以下是windows下的路由表 windows路由表
route print
路由表中包含了若干个路由条目。
「PC路由条目:」
名称 | 说明 |
---|---|
网络目标 | 表示要到达某个网段的网络,可以查询该条路由条目 |
网络掩码 | 点分十进制法,配合网络目标,可得出最终的目标网络号 |
网关 | 数据包要发送给哪个网口所在的路由器 |
接口 | 表示数据包要从哪个本地的接口发送出去 |
跃点数 | 数据包在网络中最多能经过多少个路由器,放置数据包在网络中无限转发 |
永久路由:
网络地址 | 网络掩码 | 网关地址 | 跃点数 |
---|---|---|---|
0.0.0.0 | 0.0.0.0 | 192.168.0.1 | 默认 |
该条路由其实是一条默认路由,表示如果查找不到路由条目,就将数据包发送给192.168.0.1这个ip地址所在的路由器。
3.3、路由器是如何知道到达所有的网络的通路的呢?
通常借助ospf、rip等协议可以动态学会到达各个网络的协议。
广域网中的设备路由协议更加复杂,往往需要专业的网络工程师搭建网络。
4、 总结
综上,我们可知,粉丝的问题答案:
- 路由器的IP地址分wan口和lan口,wan口地址是PPPoE拨号时运营商的其他设备分配的用于公网寻址,lan口地址在路由器中设置, 用于和局域网内终端通信
- 终端连接无线路由器时,路由器通过dhcp协议给终端分配了动态ip地址,通过DHCP的地址池可以设置分配的ip地址的范围
- 分配ip地址的时候,同时终端会将无线路由器的lan口地址设置为自己的默认网关,所以pc访问外网,所有的数据包都会发送给网关,就是无线路由器
- 当用户要访问外网的时候,需要知道网关的mac地址,如果arp缓存中没有对应的的arp条目,那么就通过arp协议找到lan口的mac地址,因为网关地址已分配
- 局域网内终端通过共享WAN地址上网,所有走wlan路由器的数据包都要通过NAT协议进行源、目的IP,源、目的端口号的转换
相关文章:
在家中访问一个网站的思考
在家中访问一个网站的思考 1、家庭网络简介2、家庭WLAN DHCP2.1、家庭路由器PPPOE拨号2.2、DHCP(动态主机配置协议)2.3、接入家庭网的主机IP地址2.4、家庭总线型以太网2.5、Mac地址2.6、ARP协议2.7、IP协议 & UDP/TCP协议2.8、NAT(Netwo…...
LINUX 入门 9
LINUX 入门 9 day11 20240507 耗时:120min 课程链接地址 第9章 百万并发的服务器 1 百万并发项目介绍与并发概念讲解 书接上回,把server做成并发量百万级的服务量 装4台虚拟机 vmware右下角可以设置虚拟机内存 内核 没敲,就看了一下&a…...
汇编个位数求和实验
title: 汇编求和实验 keywords: 汇编 tags: [汇编] categories: 嵌入式 汇编求和实验 刚开始学习汇编 给大家做个参考 实验 5 子程序 5.1 实验目的 ①掌握利用堆栈传递参数的子程序调用方法。 ②过程调用伪指令:PROC,ENDP,NEAR和FAR。 ③8088…...
CGAL在ubuntu下的安装及Hello World的测试
ubuntu下的安装 CGAL安装 参考地址:https://doc.cgal.org/latest/Manual/usage.html 在ubuntu下安装: sudo apt-get install libcgal-dev 安装后的路径: 注意安装这个步骤安装后,boost,CGAL,gmp,mpfr头文件都在/usr/include目录下。 boost,gmp,mpfr库文件都在/…...
VIM命令常用
一、启动vim 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 二、文件命令 打开单个文件vim file同时打开多个文件vim file1 …...

STM32单片机实战开发笔记-I2C通讯总线【wulianjishu666】
嵌入式单片机开发实战例程合集: 链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码:28ab I2C模块测试 功能描述 I2C总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序&am…...

区块链 | NFT 水印:Review on Watermarking Techniques(一)
🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为: 可见 v i s i b l e \mathsf{visible} visi…...

Python设计模式 - 单例模式
定义 单例模式是一种创建型设计模式, 其主要目的是确保一个类只有一个实例, 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理:当需要共享某个资源时,例如数据库连接、线程池、日志对象等,可以使用单例模…...

AI日报:干翻AI PC!苹果M4芯片首发;GoEnhance可生成粘土风格视频;DeepSeek-V2模型已在魔搭社区开源
欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 1、干翻AI …...
cmake进阶:目标属性
一. 简介 前面学习了 cmake 的一些目录属性,本文来学习 cmake的一些 目标属性。 目标属性,顾名思义就是目标对应的属性。 二. cmake进阶:目标属性 目标属性,顾名思义就是目标对应的属性。 cmake的所有目标属性可以通过如下网址…...

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件
前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…...

恢复数据,电脑数据恢复详细操作指南(4个方法)
“我经常会把很多重要的文件都保存在电脑上,但今天在清理电脑时好像误删了一些数据,有没有比较好用的数据恢复方法可以分享一下呢?请大家给我推荐几个吧!” 随着电脑的普及,我们越来越多地将重要数据存储在电脑中。然而…...
make SGX_MODE=SW
make SGX_MODESW...

【毕业设计】基于微信小程序的校园快递平台系统设计与实现
1.项目介绍 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园快递平台系统信息管理难度大,容错率…...

SWAT模型【建模方法、实例应用、高级进阶技能】实践
第一部分:SWAT模型实践部分 一、SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二、SWAT模型中GIS必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安装和注意事项 2.3 ArcGIS入门 2.…...

远动通讯屏功能和作用
远动通讯屏功能和作用 首先大家要先了解,什么叫远动通讯?远动通讯是电力系统指用于远程通信和远程控制的设备。它主要采集电发场站的电气运行参数与远程调度监控中心进行数据交互,并接收调度中心远程的指令控制。提高电力系统的运行效率和可靠…...

Dashboard 安装部署
Dashboard 安装部署 Dashboard 安装部署 一:下载 二:部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败,可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…...

idea Maven 插件 项目多环境打包配置
背景 不同环境的配置文件不一样,打包方式也有差异 1. 准备配置文件 这里 local 为本地开发环境 可改为 dev 名称自定义 test 为测试环境 prod 为生产环境 根据项目业务自行定义 application.yml 配置: spring:profiles:#对应pom中的配置active: spring.…...

密室逃脱游戏-第12届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第58讲。 密室逃脱游戏&…...

ES6-自学01
调用方法读取文件:如果失败就throw抛出err,成功则抛出data 2.使用promise封装,如果失败就改变状态为 reject(err) 如果成功就 resolve(返回成功的值) ,然后then,就可以获取返回的值,值toString()方法来把…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...