您当前的位置:首页 > 电脑百科 > 电脑知识

电脑是怎么知道它自己已经联上网

时间:2020-08-26 12:33:05  来源:  作者:

简单解释, 当你的操作系统连接特定 HTTP 服务, 比如 http://www.gstatic.com/generate_204, 如果能够返回 204 状态码, 那就基本说明你连接上网络了. 如果被 301, 说明你已经有 IP, 但是你的网络可能是一个付费网络, 会跳转到一个页面让你付钱/登陆. 如果无法解析域名/创建 TCP 连接, 说明你的三层/四层网络存在问题, 再下去多半是网线没插之类的物理层问题.

至于 TCP/UDP(一般主要是为了 DNS) 无法创建, 有可能是因为没路由, 或者是 SYN 过去没包回来超时, 或者是 SYN 飞过去, 中间路由 ICMP 告诉你目标不可达; 如果是创建 socket 失败说明可能没三层 IP, 没 IP 可能是因为没网卡/没插网线/二层里没有 DHCP 或者没有设置 IP.

但是你看到这些没明白, 你看下面可能都不见得明白. 很多人自以为明白上面那些内容, 实际上不少观点还是错误的.

首先就是很经典的五层网络模型:

科普-电脑是怎么知道它自己已经联上网

 

首先从物理层开始说.

所谓物理层, 就是双绞线/光纤/无线电等传输介质. 比方说电脑上显示的「网线已经拔出」, 就说明物理层没有建立链接. 还有就是双绞线以太网的速度协商, 光模块的功率协商, 各种无线网络的时分/码分/空分/功率协商技术都是物理层的体现.

科普-电脑是怎么知道它自己已经联上网

 

无线网络的频率,信噪比, 带宽, 物理模式

科普-电脑是怎么知道它自己已经联上网

 

光模块的信息, 包含了波长, 电压, 功率, 发射/接收功率(信噪比)

科普-电脑是怎么知道它自己已经联上网

 

有线网络的状态

接下来就是媒体访问控制层, 也即是 mac 层, 简称二层, 代表的以太网设备有交换机/无线AP.

首先要确定, 我们的以太网是一个「分组传输」机制, 也就是数据流(stream), 会被切成分组(packet), 而每个数据分组都有可能因为各种问题, 比如你的网线质量不好, 然后产生错误被分组内的校验和检查出来, 然后被交换机丢掉; 与分组传输机制对应的就是「电路交换」, 比如工作在电路域的电话, 本质上是机器代替人工帮你完成了从你的电话到你交流的人的线.

而分组在二层上的大小, 被称为 MTU, 最大传输单元, 超过这个大小, 就会尝试调整或在三层进行拆分;所有以太网二层设备都会有一个能接受的最大 MTU, 和一个标记设备的 mac 地址. 这个地址的前 24bit 是 vendor ID, 厂商编号

这一层包含了著名的 ARP 协议(地址解析协议), 简单来说就是用于完成 IP 地址-> mac 物理地址的转换, 就好比教室里你喊一声某个同学的名字, 然后那个同学/知道那个同学的人就会回答你他所在的座位坐标. 如果多个 mac 地址对应了一个 IP 地址, 我们就说 IP 地址发生了冲突, 好比两个人坐在了一个位置上.

以及还有 IPv4 里面非常基础的 DHCP 协议, 这个协议好比一个老师, 当你没有就坐(没有分配到 IP 地址)的时候, 可以听到老师(们)宣布分配座位的广播, 然后你选择一个选择老师的分配广播, 请求这个老师为自己分配位置. 当然这个位置是有时间限制的, 到这个期限之前就要提出续约, 当然老师也可要求你改变位置. 当然你自己也可以坐在一个固定位置, 相当于手工设置 IP(但是如果和别人不在一个子网(subnet)里面, 除非有人充当 arp proxy 的角色, 不然你就无法和不在一个子网的同一个二层人进行 IP 的传输.

科普-电脑是怎么知道它自己已经联上网

 

DHCP 的状态机

其中大多数操作系统当检测到链接到一个二层但是没有 DHCP 的时候, 就会使用一个特殊的 link-local 机制, 为自己分配一个 169.254.0.0/16 的地址, 后面的 /16 是根据自己 mac 地址的填充. 所以当你把两台电脑直接用 RJ45 网线连接在一起的时候, 理论上常见的操作系统的 DHCP client 都会配置上这个地址, 从而允许通过 IP 连接.

而 IPv6 不主张使用 DHCP 的分配模式, 而是使用类似 link local 那样的自己设置+随机生成的模式, 让设备拿到, 这套机制叫 SLAAC, 借助的协议叫做 NDP, 其中需要二层网络里面有一个三层路由器宣告自己的 IPv6 路由, 大概就是比如说 2001:2333::2a4e/48是你的路由器, 他告诉这个网络的人他有到 2000::/3(差不多是 IPv6 的公网地址) 的路由, 那么你就可以通过他的地址前缀 2001:2333::/48 给自己取名字. 其中一个相对固定的名字是通过你的 mac 地址来确定, 而因为 SLACC 地址前缀都只要有 /64, 所以就需要一套机制完成 48bit 的 mac 地址到 64bit, 即 EUI64. 除了这个地址之外就是一些临时地址, 直接随机生成, 用于提供 IPv6 的匿名性.

所以简单说二层的意义就是让一堆在不同物理层的设备连接在一起交换数据, 同时为各种三层上的数据连接/交换做准备.

然后就是三层, 也叫做 IP 层. 其实我们在以太网二层里面讲了很多三层的信息. 其实简单的说一二层的各种作用就是让我能够拿到 IP 地址, 并且能和其他 IP 地址的设备进行通信:

科普-电脑是怎么知道它自己已经联上网

 

我们通过 DHCP/PPPo/SLAAC 拿到 IP 地址, 但是不足以说明我们真的能连上互联网. 所以三层的重点就在于路由. 所谓路由就好比刚才那个给你分配地址的 DHCP 老师, 他告诉你, 如果你要访问别的班级, 那么你需要把信息传达给一个中介, 这个中介很多时候就是这个老师, 有的时候就是别的同学; 这个中介通常叫做网关, 而作为一个萌新, 你通常也不会有别的路由, 所以这个网关带来的路由意义就很重要, 通常就叫做「默认路由」, 刚才提到的 2000::/3, 就是 IPv6 里面最重要的一类「默认路由」.

然而这个经过路由后面的交换层不一定就是你要访问的对象, 还要经过别的路由器. 通常来说就需要各种路由协议让各个路由器之间互相交换信息, 这里根据很多路由协议, 比如基于距离向量的 RIP, 还有基于图论 Dijkstra 最短路径算法的 OSPF, 还有像是 IS-IS 协议. 当然这些都是 AS 内的协议, 在今天互联网起着决定性作用的协议还是 BGP 协议. 同时 BGP 协议关联的还有 IP 地址块的分配.

然而三层本身还是有个问题: 他仍然是一个分组交换. 换句话说, 你发一个 ICMP echo(也就是经常说的 ping 包), 中间路由任何一条丢了就没了. 但是你访问的网页所建立的连接 就不能因为一个包丢了就完全坏了, 所以我们还需要一层.

这就是传输层, 最典型的协议就是 TCP 和 UDP.

先说 UDP, UDP 就是在 IP 包的基础上加上端口机制, UDP 本身没有连接的概念, 也就是有一说一, 直接发了就行. 然后从你自己的一个信箱(端口)发了之后就到了另外一个端口(信箱), 这样对面的应用就能读这个信箱.

而 TCP 不仅仅是在 IP 包上加了端口那么简单, 更重要的是他提供了一种可靠的交付方式, 即 ARQ 机制, 换句话说两边建立连接之后发送的所有内容, 都会有个「签收」机制保证到达, 如果不到的话就会重发; 并且有拥塞控制机制, 防止因为发送速率过快导致中间路由超载(buffer 用完)导致的大量丢包, 让速度维持在一个可靠的位置.

但是 TCP 的可靠是有代价的, 首先它需要建立连接, 而 UDP 直接发包就行. TCP 监测到自己发送的包丢失之后, 会暂时停止/减慢后面的数据包的发送, 主要会先把漏掉的包补上. 而监测到对面过来的数据包丢失的一边, 这个丢失数据包后面的包则无法交付给用户, 所以就会造成一个瞬间的大延时. 也就是所谓的 TCP 的实时性差. 借助 TCP 的语音/直播应用, 就需要加入比较的缓冲空间, 避免这些延迟造成的中断. 换句话说就是用一个固定的延迟中和掉了随机产生的大延迟, 让人感觉连接没有中断. 而 UDP 虽然实时性好, 但是就 UDP 协议栈本身没法抵抗丢包, 除非应用有一套类似的 ARQ 机制, 或者 UDP 发送的内容里面包含了冗余编码, 从而在个别包丢失的情况下, 其他抵达的包仍然能还原内容. 特别是音频/视频应用里面这种技术非常的有用. 换句话说丢包对于这些有冗余设计的应用来说只是短暂降低了传输的质量, 但是并不会造成业务的中断.

有了 TCP 我们就可以建立连接. 但是连接之上我们需要一套协议, 用户规范连接里面的「礼仪」, 也就是各种各样的协议, 其中使用最广泛的代表就是 HTTP 协议. HTTP 不仅仅是用来传输文本, 比如网页, 还包含了 RPC 的基本设计理念, 比如 RESTful, 就好比你用 HTTP 传输你点个外卖的信息, POST 方法就是发出点外卖的请求, PUT 方法就是改变外卖订单信息, GET 方法就是获取订单状态, DELETE 方法就是撤销订单. 同样类比, 你查看这个回答就是 GET, 提交评论是 POST, 修改提交的评论是 PUT, 删除评论是 DELETE. 这样一套标准就能很方便实现各种功能.

但是问题在于这套协议构建在明文的 TCP 之上, 所以我们就需要 TLS/SSL 加密保护我们的 TCP 连接. 被 TLS/SSL 保护的 HTTP 也被叫做 HTTPS. 而加密之外还要进行身份验证(使用非对称密钥), 不能连上假的知乎, 那么就需要 PKI 机制去验证这个知乎的真伪. 然后验明正身的同时还需要协商出一把公共密钥(使用非对称密钥或者 DH 算法生成公共秘密)和对称加密算法(加解密是同一把密钥), 用于加密双方通信.

科普-电脑是怎么知道它自己已经联上网

 

DigiCert 签发的知乎域名证书

科普-电脑是怎么知道它自己已经联上网

 

这里展示了加密了 TLS 的版本, 密钥协商算法 ECDHE_RSA, 非对称椭圆曲线算法 X25519 用于身份验证, AES-128-GCM 用于对称密钥加密传输, 其中还有一个消息摘要/哈希算法没有展示, 目前安全的算法通常是 SHA256, 还有 SHA3, 以及国密 SM3 干的也是这个事情

然后我们又回到最初的那段话了, 如果我们的 HTTP 返回的是 204(注意那个页面就是为了返回 204), 说明你大概率连上了互联网, 只不过身份确认无法做. 而还有个情况就是中间有人通过 DNS/路由/HTTP 劫持等手段掌握了你的 HTTP 连接(HTTPS + HSTS 做不到), 那么他就能发出 301 请求, 把你定位到另外一个页面, 这种技术通常叫做 portal, 也就是常见让你在付费的免费 Wi-Fi 下, 系统弹出一个页面让你登陆/付费.



Tags:电脑   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天教大家通过windows的CMD终端查看WIFI密码 使用管理权限打开CMD 查看本机连接过WIFI名称netsh wlan show profiles 查询某一个WIFI的密码比如这里我想查询猪猪侠的...【详细内容】
2021-12-27  Tags: 电脑  点击:(1)  评论:(0)  加入收藏
一台计算机装好系统的硬盘,移到另一台电脑现在是可以使用的,如果这个问题放回到WINXP时代是行不通的,不过随着时代的发展,操作系统的功能越来越强大,这个问题现在就不是一个问题,...【详细内容】
2021-12-27  Tags: 电脑  点击:(2)  评论:(0)  加入收藏
大家好,我是小匠。在日常使用电脑以及一些朋友第一次动手装机都会遇到一些奇奇怪怪的问题,但是很多朋友对于如何处理、判断没有一个准确的方法。今天小匠就来给大家介绍下一般...【详细内容】
2021-12-27  Tags: 电脑  点击:(2)  评论:(0)  加入收藏
回答这个问题前首先要了解一度电的定义一度电= 1000W·h ,是一个能量单位,一个功率为1000w的设备持续运作一小时就会消耗1度电。所以台式机多少时间一度电完全取决于台...【详细内容】
2021-12-20  Tags: 电脑  点击:(5)  评论:(0)  加入收藏
一部分喜欢追求动力的车主朋友,都听说过通过刷一阶电脑可以提升车辆动力,那其实“刷一阶”并没有严格的定义,一般的一阶就是没有硬件的改装,只通过改写行车电脑的程序来达到提升...【详细内容】
2021-12-17  Tags: 电脑  点击:(6)  评论:(0)  加入收藏
苹果昨日向 iPhone 和 iPad 用户推送了 iOS 15.2 / iPadOS 15.2 正式版更新,带来了多项新功能。据 9To5Mac 报道,iOS 15.2 / iPadOS 15.2 还有一项新功能,允许用户不借助 Mac...【详细内容】
2021-12-16  Tags: 电脑  点击:(13)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  Tags: 电脑  点击:(28)  评论:(0)  加入收藏
你是不是很多时候都会紧急冲向电源插座以拯救笔记本电脑的电量?很多时候由于附近没有方便的插座,一是会误事,二是会导致尴尬。幸运的是,现代笔记本电脑比前辈高效得多。如今,即...【详细内容】
2021-12-16  Tags: 电脑  点击:(17)  评论:(0)  加入收藏
要想将电脑显示屏变成电视机观看电视节目,必须要买一个HDMI转VGA转换器,买来转换器将相对应的接口接到电 脑显示屏处,另一端的HDMI接口插上HDMI线的一端,另一端插到机顶盒接口上...【详细内容】
2021-12-15  Tags: 电脑  点击:(14)  评论:(0)  加入收藏
给电脑安装软件,最让人担心的就是安装到“拖家带口”的,而这样的手法正是国产软件惯用的!全家桶自动安装、软文弹窗等等,这些让我们讨厌的却是软件的直接收入来源。 那么在你安...【详细内容】
2021-12-15  Tags: 电脑  点击:(18)  评论:(0)  加入收藏
▌简易百科推荐
回答这个问题前首先要了解一度电的定义一度电= 1000W·h ,是一个能量单位,一个功率为1000w的设备持续运作一小时就会消耗1度电。所以台式机多少时间一度电完全取决于台...【详细内容】
2021-12-20  数码榜    Tags:台式电脑   点击:(5)  评论:(0)  加入收藏
你是不是很多时候都会紧急冲向电源插座以拯救笔记本电脑的电量?很多时候由于附近没有方便的插座,一是会误事,二是会导致尴尬。幸运的是,现代笔记本电脑比前辈高效得多。如今,即...【详细内容】
2021-12-16  趣玩公社    Tags:电池   点击:(17)  评论:(0)  加入收藏
电脑在我们生活中的重要性不言而喻。如何保证自己的电脑流畅好用,对于很多用户来说都非常重要。作为一个理科男和IT从业者,对于自己的电脑还是非常在意的,会定期的进行整理,保持...【详细内容】
2021-12-09  小伊评科技    Tags:电脑   点击:(13)  评论:(0)  加入收藏
大家好,我是良许。不管我们使用什么操作系统,无论是 Windows、macOS 还是 Linux ,里面都安装了许多软件、驱动程序和固件。但是,这三者概念有区别呢?我在朋友圈做了个小调查,发现...【详细内容】
2021-11-30  良许Linux    Tags:固件   点击:(10)  评论:(0)  加入收藏
澎湃问吧世界著名密码史学家戴维·卡恩曾说:“人类使用密码的历史几乎与使用文字的时间一样长”,这意味着人类密码领域的较量已近五千年。提及“密码”一词,大多数人会想...【详细内容】
2021-11-24    澎湃新闻  Tags:密码   点击:(16)  评论:(0)  加入收藏
由于去中心化域名和账户体系可以承载应用、网站和用户身份,因此有理由相信,这是 Web3 世界中不可或缺的一环。撰文:潘致雄如果回忆一下初次进行的加密货币转账时的体验,特别是在...【详细内容】
2021-11-03  链闻ChainNews    Tags:ENS   点击:(26)  评论:(0)  加入收藏
 文件系统(File System)是计算机系统必不可少的组成部分,可以说除了部分结构简单的单片机系统之外,文件系统是支撑每一个计算机系统运行的最重要的支撑,无论是操作系统、应用程...【详细内容】
2021-11-01  欧工玩转嵌入式  CSDN  Tags:FAT32   点击:(30)  评论:(0)  加入收藏
SDS 2.0时代进化达尔文的《进化论》认为,地球上现存的所有生物都是自然选择的结果,生物只有适应环境的变化,才能得到生存和进化。回望到企业存储,一个常做常新的行业,从上古结绳...【详细内容】
2021-10-28  ExponTech   企鹅号  Tags:SDS   点击:(35)  评论:(0)  加入收藏
在昨天的微信《远程办公危机四伏,到底该pick谁给你保驾护航?》中介绍了远程员工应该具备的四大安全工具,今天继续分享干货:05 双因子令牌在理想的情况下,每个人都会对所有的关键...【详细内容】
2021-10-26    计算机世界  Tags:远程办公   点击:(32)  评论:(0)  加入收藏
今天几乎所有的数字显示设备都基于某种类型的 RGB(红、绿、蓝)颜色模型。RGB 是表示人类可以看到的大多数颜色的最有效方式(有一些颜色不能很好地产生,但这是另一个讨论)。相机...【详细内容】
2021-10-09  懒懒散散的程序员    Tags:RGB   点击:(49)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条