网络是怎么样连接的?浏览器输入一个地址之后的过程?
网络是怎么样连接的这本书就是在讲**浏览器输入一个网址之后,到页面渲染计算机网络层和软件层面发生了什么变化。**
在腾讯面试的时候经常会问到网络是怎么样连接的,考察对网络的理解。
在现在主要是 TCP\IP 四层架构的方式: 也会问道传统的TCP\IP七层的结构
应用层、传输层、网络层、网际连接层
DNS解析
1.首先对网址进行解析,我们输入的一个http://www.baidu.com/ 如果后面不带任何的资源路径,默认访问的 nginx 目录下面的index.html。
这个要有了解,前端 vue 项目 build 打包完成之后页面中都是 index.html,所以默认就访问的是 index.html
路由器转发需要根据IP地址进行转发的,IP地址比较难记住,我们用一个域名来对应IP地址。所以第一步就是域名解析,将URL域名转为IP地址,这个过程叫做DNS 解析。
DNS解析的过程包括了递归查询和迭代查询,正常时递归查询和迭代查询一起使用。
域名服务器的层次结构:本质就是一个数据库,域名和 ip 地址进行对应起来。
首先检查浏览器和本地缓存是否有,如果没有,发送给本地DNS服务器,就是电脑配置的DNS服务器,如果本地DNS缓存中有就直接返回,如果没有向根域名服务器发送请求、根域名向顶级域名发送请求、顶级域名向权威域名发送请求。权威域名返回对应的IP地址告诉本地DNS。最后本地DNS进行缓存。
https://blog.csdn.net/bangshao1989/article/details/121913780 DNS 解析过程
全球一共有13台根域名服务器。
封装HTTP请求
2.生成HTTP消息。
HTTP请求消息包含了** 请求行、请求头、请求体。使用的端口默认80**,https使用的端口是443。
HTTP常用的包括 get、put、post、delete请求。需要区分get请求和post请求,get请求是将参数放在请求行中的,是可以直接看到的,post请求将请求参数放在请求体中。get请求是幂等性安全的,而post请求是不安全的。
幂等性: 就是两次修改结果是一样的。
TCP三次握手建立连接
.在传输层,TCP进行三次握手连接,保证双方都有接收的能力。
这边可以往TCP三次握手、四次挥手、流量控制、拥塞控制、滑动窗口继续深挖。
包括还有一些其他的操作:
进行数据的封装,如果请求的数据块大于了MSS,就需要进行分片。
如果是 https 的协议,还需要进行 SSL 和 TLS 的握手。
网络层
层的功能主要是转发和路由,主要的协议就是IP协议,携带源ip地址和目的ip地址。将TCP层传下来的数据封装成IP数据包。
对于IP数据包这个也需要有些了解,常用的有哪些字段,他们有什么含义。
这一层还有子网掩码的概念,和ip地址进行与操作就得到了所在网络的地址。
IP 地址可以考察的有 TTL 生命周期,这个不是时间,是 IP 数据包可以经过的路由器个数。
IP 数据包可能会比较大,当大于 MTU1500 字节的时候需要进行切片传输操作,类似于文件传输也需要切片。 和标志、片偏移有关。
标志用来告诉用户是否切片和当前是否最后一个,片偏移告诉用户在原来数据包的位置。
数据链路层
封装MAC地址,IP就是类似于小区,MAC地址是全球唯一的,用来确定你的具体位置。每一个网络设备在出场的时候 MAC 地址就已经固定了。
MAC 的协议类型 一般是 IP 和 ARP。
想要获得对方的MAC地址,使用的协议是ARP地址解析协议,通过给局域网的内的所有主机进行广播,如果某个主机和目的IP地址一样,那么就单播回来。将结果还需要放入到ARP缓存中去。
对于查询到的ip地址放入arp缓存中,便于下一次查询。
在windows中用arp -a,查看本地的arp缓存表。
网卡
上面的所有都完成之后就需要从网卡中出去了。
网络包只是存储的二进制的数据,在光纤中传输的是电信号,需要将数字信号转为电信号。
将数字信号转为电信号,在网线中进行传输。
交换机和路由器
传输过程中数据包需要经过多个设备,包括了交换机和路由器。
路由器进行转发 查询路由表进行数据的转发
当找不到对应的路由表的时候选择默认路由 0.0.0.0.
整体的过程
到达服务器端,网上还是层层脱衣服,如果发现不是自己的,那么就丢弃掉
解析HTML
浏览器接收到服务器的响应后,会开始解析 HTML 文档,首先并构建 DOM 树。
浏览器从上到下解析 HTML 文档,遇到标签时创建对应的 DOM 节点,并按照层级关系构建 DOM 树。
在解析 HTML 的过程中,浏览器会遇到 CSS 文件或内联样式,并开始解析 CSS,构建 CSSOM 树。
一颗DOM树结构的结构:
https://blog.csdn.net/wei1273356078/article/details/106543967
完成解析之后 进行 TCP 四次挥手,释放连接。
TCP 四次挥手的过程图:
牛牛的面试专栏,希望自己在25年可以拿到一份大厂的SP Offer 你的点赞和收藏都是我持续更新的动力