网络是怎么样连接的?浏览器输入一个地址之后的过程?

网络是怎么样连接的这本书就是在讲**浏览器输入一个网址之后,到页面渲染计算机网络层和软件层面发生了什么变化。**

在腾讯面试的时候经常会问到网络是怎么样连接的,考察对网络的理解。

在现在主要是 TCP\IP 四层架构的方式: 也会问道传统的TCP\IP七层的结构

应用层、传输层、网络层、网际连接层

alt

DNS解析

1.首先对网址进行解析,我们输入的一个http://www.baidu.com/ 如果后面不带任何的资源路径,默认访问的 nginx 目录下面的index.html。

这个要有了解,前端 vue 项目 build 打包完成之后页面中都是 index.html,所以默认就访问的是 index.html

alt

路由器转发需要根据IP地址进行转发的,IP地址比较难记住,我们用一个域名来对应IP地址。所以第一步就是域名解析,将URL域名转为IP地址,这个过程叫做DNS 解析。

DNS解析的过程包括了递归查询和迭代查询,正常时递归查询和迭代查询一起使用。

域名服务器的层次结构:本质就是一个数据库,域名和 ip 地址进行对应起来。

alt

首先检查浏览器和本地缓存是否有,如果没有,发送给本地DNS服务器,就是电脑配置的DNS服务器,如果本地DNS缓存中有就直接返回,如果没有向根域名服务器发送请求、根域名向顶级域名发送请求、顶级域名向权威域名发送请求。权威域名返回对应的IP地址告诉本地DNS。最后本地DNS进行缓存。

https://blog.csdn.net/bangshao1989/article/details/121913780 DNS 解析过程

全球一共有13台根域名服务器。

封装HTTP请求

2.生成HTTP消息。

HTTP请求消息包含了** 请求行、请求头、请求体。使用的端口默认80**,https使用的端口是443

alt

HTTP常用的包括 get、put、post、delete请求。需要区分get请求和post请求,get请求是将参数放在请求行中的,是可以直接看到的,post请求将请求参数放在请求体中。get请求是幂等性安全的,而post请求是不安全的

幂等性: 就是两次修改结果是一样的。

TCP三次握手建立连接

.在传输层,TCP进行三次握手连接,保证双方都有接收的能力。

alt

alt

这边可以往TCP三次握手、四次挥手、流量控制、拥塞控制、滑动窗口继续深挖。

包括还有一些其他的操作:

进行数据的封装,如果请求的数据块大于了MSS,就需要进行分片。

alt

如果是 https 的协议,还需要进行 SSL 和 TLS 的握手。

网络层

层的功能主要是转发和路由,主要的协议就是IP协议,携带源ip地址和目的ip地址。将TCP层传下来的数据封装成IP数据包。

对于IP数据包这个也需要有些了解,常用的有哪些字段,他们有什么含义。

alt

这一层还有子网掩码的概念,和ip地址进行与操作就得到了所在网络的地址。

IP 地址可以考察的有 TTL 生命周期,这个不是时间,是 IP 数据包可以经过的路由器个数。

IP 数据包可能会比较大,当大于 MTU1500 字节的时候需要进行切片传输操作,类似于文件传输也需要切片。 和标志、片偏移有关。

标志用来告诉用户是否切片和当前是否最后一个,片偏移告诉用户在原来数据包的位置。

数据链路层

封装MAC地址,IP就是类似于小区,MAC地址是全球唯一的,用来确定你的具体位置。每一个网络设备在出场的时候 MAC 地址就已经固定了。

alt

MAC 的协议类型 一般是 IP 和 ARP。

想要获得对方的MAC地址,使用的协议是ARP地址解析协议,通过给局域网的内的所有主机进行广播,如果某个主机和目的IP地址一样,那么就单播回来。将结果还需要放入到ARP缓存中去。

alt

对于查询到的ip地址放入arp缓存中,便于下一次查询。

在windows中用arp -a,查看本地的arp缓存表。

alt

网卡

上面的所有都完成之后就需要从网卡中出去了。

网络包只是存储的二进制的数据,在光纤中传输的是电信号,需要将数字信号转为电信号。

alt

将数字信号转为电信号,在网线中进行传输。 alt

交换机和路由器

传输过程中数据包需要经过多个设备,包括了交换机和路由器。

alt

路由器进行转发 查询路由表进行数据的转发

alt

当找不到对应的路由表的时候选择默认路由 0.0.0.0.

整体的过程

alt

到达服务器端,网上还是层层脱衣服,如果发现不是自己的,那么就丢弃掉

alt

解析HTML

浏览器接收到服务器的响应后,会开始解析 HTML 文档,首先并构建 DOM 树。

浏览器从上到下解析 HTML 文档,遇到标签时创建对应的 DOM 节点,并按照层级关系构建 DOM 树。

在解析 HTML 的过程中,浏览器会遇到 CSS 文件或内联样式,并开始解析 CSS,构建 CSSOM 树。

一颗DOM树结构的结构:
https://blog.csdn.net/wei1273356078/article/details/106543967 alt

完成解析之后 进行 TCP 四次挥手,释放连接。

参考:https://blog.csdn.net/spade_Kwo/article/details/119464901?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229e069b679f997623d9f5e26f46f40c9e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=9e069b679f997623d9f5e26f46f40c9e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-119464901-null-null.142^v101^pc_search_result_base8&utm_term=%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B&spm=1018.2226.3001.4187

alt

TCP 四次挥手的过程图: alt

#浏览器输入一个地址后发生了##网络面试#
牛牛的面试专栏 文章被收录于专栏

牛牛的面试专栏,希望自己在25年可以拿到一份大厂的SP Offer 你的点赞和收藏都是我持续更新的动力

全部评论
看到好多面试都问了这个
点赞 回复 分享
发布于 03-16 18:06 江苏
点赞 回复 分享
发布于 03-13 11:18 江苏

相关推荐

04-26 13:09
已编辑
门头沟学院 前端工程师
50min项目重难点?路由懒加载?不变化路由更改页面怎么实现?vue性能优化?如果更新一个组件,只让这个组件重新渲染怎么做?deepseek底层模型?底层架构?怎么微调?如何用更少成本实现更好训练效果?组件通信方式?vuex包含哪些参数?具体使用方法?数据存储形式?数组操作方法?增删改查有哪些?split都传哪些参数?怎么实现查?filter和find区别?排序的理解?快排的具体实现过程?第二次的基准怎么设置?手撕是写多选功能,自己设计数据结构,实现点击父节点全选子节点全选,全选子节点父节点自动勾选等等最汗流浃背坐立难安的一集,这次面试约的图书馆的研讨室,结果空间巨小,封闭空间在近期的南京30度高温里巨热,椅子座位很小,坐着容易往下滑,但是椅子又高,坐着脚着不了地,特别痛苦,面试时一直反复滑下来 坐上去 还在被面试官拷打面试体验的话,面试官人很好,快手就像传说中的人好业务水平高,一个温柔爱笑有点小幽默的姐姐,基本是根据简历上写的提问。场景题一直在引导提示我写,但是我实在是太菜了,从一开始就滑跪,一般别的厂滑跪就结束了,快手面试官还在一直从各个角度引导提示我继续,诚惶诚恐,但我太菜感觉实在对不起面试官的时间😂这周五天要面7场,发面经攒人品~面经有帮助的话麻烦送朵花~我想兑换牛客的周边#牛客创作赏金赛#
查看17道真题和解析 牛客创作赏金赛
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务