网络是怎么样连接的--输入www.baidu.com之后网络的底层运行

devtools/2025/1/18 10:36:24/

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

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 四次挥手的过程图:


http://www.ppmy.cn/devtools/151536.html

相关文章

关于php语言api接口开发的流程

确定接口需求:首先明确接口的功能和需求,包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由:根据接口需求,设计具体的接口路由,即URL路径,用于访问接口。 搭建PHP环境:确保你的服务器上…

冒泡排序 选择排序 插入排序

package com.nobody.sort; /** author Mr.nobody Description 插入排序 date 2020/9/5 */ public class Code01_InsertionSort { public static void insertionSort(int[] arr) { // 数组为空,或者数组长度小于2就没必要操作 if (null arr || arr.length …

【机器学习实战入门】使用OpenCV和Keras的驾驶员疲劳检测系统

嗜睡驾驶者警报系统 防止司机疲劳驾驶警报系统 中级 Python 项目 - 司机疲劳检测系统 疲劳检测是一种安全技术,能够预防因司机在驾驶过程中入睡而造成的事故。 本中级 Python 项目的目标是建立一个疲劳检测系统,该系统将检测到一个人的眼睛闭合了一段时…

STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理

目录 时间片调度简介 FreeRTOS任务相关API函数介绍 延时函数介绍 时间片调度简介 在FreeRTOS中,同等优先级的任务会轮流分享相同的CPU时间,这个时间被称为时间片。在这里,一个时间片的长度等同于SysTick中断的周期。 FreeRTOS任务相关API…

使用Nginx正向代理让内网主机通过外网主机访问互联网

目录 环境概述 流程说明 在外网服务器上安装部署nginx? 安装前准备 下载nginx ?编译安装nginx 开始配置正向代理 创建systemd服务单元文件,用于管理Nginx服务的启动、停止和重新加载 启动nginx ?代理服务器本地验证 ?内网服务器验证 ?将代理地址添…

服务器怎样防范网络蠕虫病毒?

蠕虫病毒是一种较为常见的计算机病毒,会通过计算机网络中存在的漏洞进行传播,破坏计算机功能和篡改数据信息和系统,蠕虫病毒的传播范围广传播速度比较快,不需要宿主程序即可传播,对于企业来说该怎样防范服务器中的网络…

你会选择java还是node做后台管理

目前后台开源千千万,但说好用且容易上手的也就那几个。 node和java就看你怎么选了 如果你擅长Java,那RuoYi首选 RuoYI后台管理系统https://gitee.com/y_project/RuoYi-Vue有vue2又有vue3。MIT协议全免费开源,功能齐全! 如果你擅…

校园水电费管理小程序的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…