网络是怎么样连接的--输入www.baidu.com之后网络的底层运行
网络是怎么样连接的这本书就是在讲**浏览器输入一个网址之后,到页面渲染计算机网络层和软件层面发生了什么变化。**
DNS解析
1.首先对网址进行解析,我们输入的一个http://www.baidu.com/ 如果后面不带任何的资源路径,默认访问的是跟目录下面的index.html。
这个要有了解,前端 vue 项目打包完成之后页面中都是 index.html,所以默认就访问的是 index.html
路由器转发需要根据IP地址进行转发的,IP地址比较难记住,我们用一个域名来对应IP地址。所以第一步就是域名解析,将URL域名转为IP地址,这个过程叫做DNS 解析。
DNS解析的过程包括了递归查询和迭代查询
域名服务器的层次结构
首先检查浏览器和本地缓存是否有,如果没有,发送给本地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三次握手建立连接
3.在传输层,TCP进行三次握手连接,保证双方都有接收的能力。
这边可以往TCP三次握手、四次挥手、流量控制、拥塞控制、滑动窗口继续深挖。
包括还有一些其他的操作:
进行数据的封装,如果请求的数据块大于了MSS,就需要进行分片。
网络层
层的功能主要是转发和路由,主要的协议就是IP协议,携带源ip地址和目的ip地址。将TCP层传下来的数据封装成IP数据包。
对于IP数据包这个也需要有些了解,常用的有哪些字段,他们有什么含义。
这一层还有子网掩码的概念,和ip地址进行与操作就得到了所在网络的ip地址。
数据链路层
封装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 四次挥手,释放连接。
参考: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.142v101pc_search_result_base8&utm_term=%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B&spm=1018.2226.3001.4187
TCP 四次挥手的过程图: