计算机网络——在地址栏输入网址(URL)之后都发生了什么

网址,也叫域名,域名就像一个 IP 地址的可读版本,比如,百度的域名 www.baidu.com,他的 ip 是 110.242.68.3,输入 IP 一样可以跳转到百度搜索的页面,我想没有一个人没去记百度的 IP 吧。其实我们真正访问的就是这个IP。

所以输入网址之后,实际就是将网址解析,查询 IP 地址,然后通过 IP 和端口访问到百度的网站。

 

解析网址

当输入到地址栏之后,首先浏览器需要对网址进行解析。

首先看一下 URL 的组成,https://www.baidu.com

9a533f2b7d3e402b835f3cb70497c2d2.png

首先是协议,http 或者 https,

然后 www.baidu.com 就是域名,域名可以理解为 IP 的可读版本。

再然后冒号后面的就是端口。

再后面的是资源路径,表示在服务器上的文件路径。

问号后面的是参数,参数是在发送某些请求时添加在 URL 里的。参数的格式:key=value。

最后井号后面的时锚点。

对 URL 进行解析之后,浏览器就知道了 web服务器,资源地址和资源名,根据这些内容生成 HTTP 的请求信息。

 

DNS获取真实地址

HTTP 请求信息为被操作系统发送到 web 服务器,但在发送之前,需要通过域名获取到真实的 IP 地址。

打个比方,我们保存联系人都是用名字来保存,很少会有人记住几十个电话号码的。但是我们需要打电话时又不能直接通过名字打电话,手机理解不了这个名字,只能理解电话号码,其实就是手机得知你要打电话,比如你要打给张三,手机查到张三的电话是 10086,然后给 10086打电话。

这里的名字和电话就是域名和 IP 的关系。要想通过域名得到对应的 IP,此时就需要 DNS 服务器了。

DNS 服务器-应用层

从大到小有 根服务器、顶级域服务器、权威服务器、本地服务器

DNS 的工作流程

1. 首先客户端发出来一个 DNS 请求,想要直到 www.server.com 的 IP 地址,发送给本地 DNS 服务器。

2. 本地服务器接受到请求之后,会去缓存中查找是否存在,如果有直接返回即可,如果没有,就会去问根服务器。

3. 根服务器接到请求之后,发现后缀域名是 .com,说你去问问 .com 的顶级域服务器,看看他有没有这个 IP

4. 本地服务器拿着请求找到顶级域服务器,询问是否有该域名的 IP 地址,顶级域服务器也不知道,说你去问问 server.com 的权威服务器。

5. 本地服务器有拿着这个域名找到权威服务器,权威服务器查询之后就把对应的 IP 告诉了本地服务器。

6. 本地服务器将 IP 返回给客户端。

f979b884ca5f4c68b9312ca149fe9a12.png

除了上面的迭代式的查询,还有一种递归式的查询,顺序不同,但是这样根服务器的压力会比较大。

同时,浏览器会先看是否存在缓存,如果有缓存就不用发送给本地服务器,直接返回即可。

 

TCP 传输数据--传输层

获取到 IP 地址后,由于 DNS 只指路不带路,所以需要一个协议栈,将 HTTP 传输工作交给协议栈,协议栈使用 TCP 和 UDP 协议来收发数据。

TCP 报文头部格式,首先有源端口号和目标端口号,相当于导航的出发地和目的地,打车的时候司机才知道到哪接你,送你去哪,你就是数据包。

然后是序列号,主要是为了解决包的乱序问题。

还有确认号,目的是确认是否收到,确保不出现丢包的情况。

状态位,例如 SYN、ACK、RST、FIN分别是连接,应答,重新连接,断开连接。

窗口大小,主要用于流量控制,根据接收端的处理能力限制窗口流量。

 

值得一提的是,TCP 传输数据前需要进行三次握手建立连接,计算机网络——TCP 协议的三次握手 / 四次挥手-CSDN博客

TCP 是传输层的协议,会给应用层传下来的 HTTP 报文加上 TCP 的头部,头部包含了上面的各类信息,然后将数据包给网络层处理。

 

IP协议--网络层

IP 协议的主要功能就是寻址和路由,相当于导航,导航最重要的就是起点地址和目的地地址。在 IP 协议中就表现为源 IP 地址和目的地 IP 地址。

还需要记录协议号,表示使用的是 TCP 协议。当目标设备有多个网卡,就会有多个 IP 那么该怎么判断传给哪个网卡,主要是通过 路由表规则来判断,如果都不符合,就会发送给 0.0.0.0。

IP 协议给传输层传下来的 TCP 报文加上 IP 头,之后传递给网络接口层处理。

网络接口层会给 IP 数据报加上MAC头部,用来找到路由器。

最后数据通过网关,交换机,路由器,最终成功发到了服务器。

 

解析请求

服务器接收到了HTTP请求之后,会对请求进行解析,根据请求的内容执行相应的操作,比如数据库查询,读取文件等。

处理完一系列的请求操作后,服务端会发送 HTTP 的响应报文,客户端接收到了响应之后,同样进行解析,获取到 HTML 文件,图片等数据,然后对其进行渲染,生成网页,同时根据网页中其他的 URL 再次请求服务器,直到网页完全渲染。

最后不再传输数据后,关闭 TCP 连接,通过四次挥手的方式。

 

总结

1. 地址栏输入 URL

2. 应用层 DNS 协议解析域名的IP地址

3. 网络层 TCP 协议发起连接,传输对应的 HTTP 请求报文,通过每层模型的不同的协议,生成最终的请求数据包并发送给服务器

4. 服务器接收到了请求数据包后,解析请求,并进行处理,比如读取文件,查询数据库,然后生成响应的 HTTP 报文

5. 浏览器接收到了响应报文之后,同样进行解析,获取其中的 HTML 文件,图片视频的 URL等,然后将这些渲染到页面上,同时根据获取到的图片视频等的 URL 再次请求服务器,直到所有 URL 都解析完成,然后将页面所有内容都渲染完毕。

6. 结束数据传输可以断开 TCP 的连接。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340287.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

网络安全等级保护相关标准及发展

目录 等保标准 等保定级 发展 等保标准 2016年11月发布的《网络安全法》第二十一条提出“国家实行网络安全等级保护制度”。 等级保护标准体系: (1)安全等级类标准 主要包括GB/T 22240-2008《信息安全技术 信息系统安全保护等级保护定…

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…

启智CV机器人,ROS,ubuntu 20.04 【最后一步有问题】

资料: https://wiki.ros.org/kinetic/Installation/Ubuntu https://blog.csdn.net/qq_44339029/article/details/120579608 装VM。 装ubuntu20.04 desktop.iso系统。 装vm工具: sudo apt update sudo dpkg --configure -a sudo apt-get autoremove o…

守护任务用来防止资源冲突

背景:有三个任务,他们都需要操作数码管。每个任务对应三个数码管,共9个数码管。硬件上9个数码管的控制使用一套硬件完成。 策略:每个任务都往自己的队列里面发数据,单独建立一个监听任务:处理所有队列的数…

网络编程(七)

网络编程(七) UNIX域套接字(本地间进程间通信的技术)(S文件)基于TCP传输基于UDP传输 UNIX域套接字(本地间进程间通信的技术)(S文件) socket同样也可以用于本…

echarts-series的x,y轴的规则

series的data与x,y轴的匹配规则 如果series的data为[1,2,3,4,5,6] 1.如果x,y轴都是类目轴,且data没有与x,y轴的值匹配上,则无效。 2.如果x,y轴都为类目,data中能够跟类目轴上的字符串对应上,轴,有效。 3.如果都为value.,则按数值…

掌握Element UI:加速你的网页设计过程!

Element UI 是一套为开发者、UI/UX设计师和产品经理准备的采用Vue 2.0作为基础框架实现的组件库,提供配套的设计资源,可以帮助设计快速成型。即时设计也内置Element UI Kit资源,但有些小伙伴还是对此不太了解,接下来本文会详细带你…

“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton

“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton在神经网络领域数十年如一日的研究,对深度学习的推动和贡献显著。 一、早期贡献与突破 反向传播算法的引入:Hinton是将反向传播(Backpropagation)算法引入多层神经网络训练的…

室内外无缝定位技术:连接虚拟与现实的新桥梁

随着科技的快速发展,人们对于位置信息的精确度和实时性要求日益提高。在这样一个背景下,室内外无缝定位技术应运而生,成为连接虚拟与现实世界的关键桥梁。它不仅为人们提供了更加便捷、高效的生活体验,还推动了物联网、智能制造等…

Java面试八股之怎么降低锁竞争

怎么降低锁竞争 减少锁的持有时间: 尽量缩短线程持有锁的时间,只在必要时才获取锁,一旦操作完成立即释放锁。可以通过将同步代码块的范围缩小到最小必要程度来实现,避免在锁保护的代码块中执行耗时操作或等待操作,比如…

Java集合基础知识点系统性总结篇

目录 集合一、图解集合的继承体系?([图片来源](https://www.cnblogs.com/mrhgw/p/9728065.html))点击查看大图二、List,Set,Map三者的区别?三、List接口的实现3.1、Arraylist 、 LinkedList、Vector3.2、Arraylist 、 LinkedList、…

MacOS - 为什么 Mac 安装软件后安装包在桌面上无法删除?

只要你将这磁盘里面的软件放到应用程序里面去了,那么用鼠标选中这个跟磁盘一样的东西,然后按下键盘上的 Command E 即可移除桌面上的这个磁盘。

气压、湿度、震动开关、声音、红外火焰传感器 | 配合Arduino使用案例

BMP180 气压传感器 BMP180 是一种用于测量气压的科学仪器。可以获取到温度、气压、海拔。 先在 arduino ide 中安装依赖 /****** Arduino 接线 ***** Arduino 传感器* VCC 5v* GND GND* A4 SDA * A5 SCL ***********************/#include &l…

ubuntu使用oh my zsh美化终端

ubuntu使用oh my zsh美化终端 文章目录 ubuntu使用oh my zsh美化终端1. 安装zsh和oh my zsh2. 修改zsh主题3. 安装zsh插件4. 将.bashrc移植到.zshrcReference 1. 安装zsh和oh my zsh 首先安装zsh sudo apt install zsh然后查看本地有哪些shell可以使用 cat /etc/shells 将默…

③单细胞学习-pbmc的Seurat 流程

目录 1,数据读取 2,线粒体基因查看 3,数据标准化 4,识别高变基因 5,进行数据归一化 6,进行线性降维 7,确定细胞簇 8,UMAP/tSNE降维(保存pbmc_tutorial.rds&#…

如何用TCC方案轻松实现分布式事务一致性

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 哈喽,大家好!我是小米,一个热爱技术的活力小青年,今天要和大家分享的是一种在分布式系统中实现事务的一种经典方案——TCC(Try Confirm Canc…

第一篇 逻辑门(与门、或门、非门、异或门)

一、实验目的 了解DE1-SOC开发板一些外设。 掌握常用组合逻辑门电路的基本原理。 学习Verilog HDL的基本语法。 学习使用ModelSim工具对设计的电路进行仿真,包括编写Testbench仿真代码,以及ModelSim工具的使用。 熟悉使用Quartus软件从创建Quartus工…

汽车MCU虚拟化--对中断虚拟化的思考(2)

目录 1.引入 2.TC4xx如何实现中断虚拟化 3.小结 1.引入 其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客 那么,作为车规MCU龙头…

Docker基础篇之将本地镜像发布到私有库

文章目录 1. Docker Registry简介2. 将本地镜像推送到私有库 1. Docker Registry简介 Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。 2. 将本地镜像推送到私有库 下载Docker Registry docker pull registry现在我们可以从镜像中看到下载的Regist…