当你在浏览器地址栏输入一个URL后,将会发生的事情?个人笔记

news2024/11/22 22:57:44

客户端

在浏览器输入 URL 回车之后发生了什么(超详细版) - 知乎 (zhihu.com)

大致流程是:

  1. URL 解析
  2. DNS 查询
  3. TCP 连接
  4. 处理请求
  5. 接受响应
  6. 渲染页面

1.URL解析

地址解析:

首先判断你输入是否是一个合法的URL还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作

HSTS

由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。

其他操作

浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。

缓存检查:

200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

DNS查询

进行将域名现在本地的 hosts 文件里,没有则启动DNS解析器向注册的 DNS 服务器发送查询请求,当然在路由的路上部分路由器也有缓存域名与ip的映射关系,如果在路由中存在就直接在路由器返回ip,如果没有则到子域名服务器查询需要的ip,当然不仅可以访问同域的服务器,也可以访问其他域的服务器。如果在这里也没有找到ip则去根域名服务器查询拥有对应ip地址的域名服务器,根域名服务器会整颗域树进行遍历,直到找到对应的域名服务器,然后根据其域名服务器提供给,其主机的同域的域名服务器,然后由其同域域名服务器返回ip。

当然如果你乱输url地址,当然找不到其ip,返回404给你玩。

在得到映射的ip后,在每一层都会备份缓存一份映射关系,这样不用每一次发包前都DNS查询一次。

HTTPS协议

在对其url解析后,创建HTTP/HTTPS报文,在数据前添加对应的报头。

HTTP/HTTPS的请求报文和协议报文的报头格式是不同的

https是在http上做到安全处理,加入了密钥措施,保护了数据的安全性。

弃用http改用https的缘故,与密钥的使用,证书意义-CSDN博客

TCP链接

在外面访问某个网页前,会先发起TCP三次握手的链接。

链接建立成功后才会开始tcp报文交流,详细链接文章参考博客链接中的3次握手细节UDP与TCP报头介绍,三次握手与四次挥手详谈_云的小站的博客-CSDN博客

TCP协议采用了:超时重传,滑动窗口,流量控制,快重传,延迟应答,捎带应答,拥塞控制等等操作方法,保证了传输的可靠性与效率。

滑动窗口的理念-CSDN博客

拥塞控制概念_云的小站的博客-CSDN博客

网络层ip的发送处理

拿到了传输层给的报文外面需要对齐做封装处理,添加ip的报文数据。

ip报头和ip报文切片组装问题-CSDN博客

尽量不对一个tcp报文去做切片处理,一旦切片不仅仅是增加了分片的时间,并且一旦众分片中的

其中一个丢失就需要整体重新传达,这是得不偿失的。

当然切不切片并不是网络层决定而是传输层和以太网中允许最大决定的。

如果tcp传入到网络层中的数据包加上ip报头超过一定大小就必须切片才能在网络中发送。

数据链路层 

TCP/IP 分为四层,在发送数据时,每层都要对数据进行封装:

数据链路层中存在的报文ip,arp,rarp-CSDN博客

数据在这一层完成最后的包装,然后发送到网络中。

对了这ARP中的目的ip并不是最终目的ip而是下一跳路由结点的ip地址,依靠此ip找对应路由的mac

数据包在路由传输过程

在网络通信的过程中,必须知道对方ip地址才可以进行通信(不同局域网的主机通信必须采用静态路由技术)。

在一个私网局域网中,向外通信是需要采用NAP/NATP技术相辅相成完成的

ip划分与私公网ip、ip的传递-CSDN博客

依托子网掩码在路由表选择发送网口,根据arp得到mac做下一跳路由,依托NAT替换原ip地址,并且记录NAT表中,这个表的映射记录也是动态的,在tcp报文链接时在三次握手阶段,第一次的FIN经过此路由器时候就会构建完毕,在四次挥手的过程中,TIME_WAIT状态发送ACK报文发送给路由器的时,将映射关系设置为失效。诚然如果希望路由器允许这样工作,那么路由器是拥有应用层功能的。(UDP不连接,导致何时销毁映射关系比较困难)

在传输的路上可能会出现回环情况,这个不用怕,在ip层拥有8位生存时间,这是一个计数器,每次跳转一个结点就会自减,到0意味着报文失效被接收的路由器销毁报文。

在这个过程中存在代理服务器,代理服务器可以将其看成高级路由器,替我们转发报文到公网中。

运营商其实就是依托其,为我们提高我们服务。

代理服务器

正向代理

校园网就是最好的正向代理服务器代表,链接校园网的设备,向外界访问资源的时候,所有的请求都会经过该服务器,我们可以将其看成一个巨大的路由器,但是服务器允许缓存资源预设在代理服务器中,打个比方,2个主机同时访问抖音服务器,A主机先B主机后,A、B主机访问的资源相同,服务器在访问数据后会预留一段时间,当B再来访问时候,直接从代理服务器中获取资源,不用再去抖音服务器访问,大大的提高了我们的网络读写效率,并且正向代理服务器会检查访问的合法性,访问的内存合法性。

反向代理

依旧和路由器很像

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理服务器中的内容发送普通请求,接着反向代理将判断向何处转交请求,并将获得的内容返回给客户端。反向代理对外的表现都是透明的,客户不知道自己访问的是代理服务器,客户端也不需要任何配置就可以访问。当我们配置好代理服务器后,反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

正向代理和反向代理区别

正向代理中 ,代理服务器和client同属一个网络,对server透明。正向代理需要配置在客户端;
反向代理中,代理服务器和server同属一个网络,对client透明。 反向代理需要配置在服务端;
实际上代理服务器在两种代理中做的事都是代为请求和响应,不过从结构上看正好左右相反,故称为正反向代理。

服务器响应

服务器必须拥有和其客户端一样的各层协议,才能相互通信。

必须拥有相同的各层协议,否则接收方无法解开接到的数据报文,无法向上交付。

在服务器得到申请后在自己的库中查找是否存在该资源,申请对象权限是否满足,资源的位置是否改变,然后构建HTTP报文向下交付然后响应给对方。

HTTP存在响应码,这是约定的一个响应码,标识着这次响应的状态信息。

【精选】HTTP 响应码大全_http响应码_JFS_Study的博客-CSDN博客

这篇博客详细介绍了响应码的介绍。

后续的返回过程,与发送过程几乎一样。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上市公司-供应链效率数据集(2000-2022年)

参照张倩肖(2023)、Feng(2015)、张树山(2023)的做法,团队以库存周转天数来衡量供应链效率 库存周转天数有效克服了因企业保留安全库存而导致供应链效率较低的测算误差,体现供应链上…

回归预测 | Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测

Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测 目录 Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.POS-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机的多变量回归…

好用的CRM软件都有哪些功能?

好用的CRM软件不仅仅是将客户资料存档,更大的作用还在于充分发挥数据的价值提升客户管理效率。如果您了解过多款CRM软件就一定会发现它们的功能都不尽相同,但是好用的CRM工具离不开这些功能: 一、客户视图 客户视图主要由4类数据组成&#…

基于springboot实现游戏分享网站系统项目【项目源码+论文说明】

基于springboot实现游戏分享网站演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合,利用java技术建设游戏分享网站,实现游戏分享的信息化。则对于进一步提高游戏分享管理发展,丰富游戏分享管理经验能起到…

跨境商城源码价格

在当今数字商务的时代,跨境电商已经成为了越来越多企业的选择。然而,要建立一个高效、便捷、全球化的跨境商城并不是一件简单的事情。所幸,现在有一个开源的解决方案,给企业提供了无限的可能性。跨境商城源码价格合乎实际&#xf…

浅谈AcrelEMS-CB商业建筑能源管理系统解决方案-安科瑞 蒋静

1概述 AcrelEMS-CB商业建筑能源管理系统,集电力监控、电能质量监测与治理、电气安全预警、能耗分析、照明控制、新能源使用、能源收费以及设备运维等功能于一体,通过一套系统对商业建筑的能源进行统一监控、统一运维和调度,系统可以通过WEB和…

对比学习(contrastive Learning)

起源和定义 自监督学习又可以分为对比学习(contrastive learning)和生成学习(generative learning)两条主要的技术路线。 比学习的核心思想是将正样本和负样本在特征空间对比,从而学习样本的特征表示,使得样本与正样本的特征表示尽可能接近。正样本和负…

webase编译合约一直转圈卡住解决方案

问题:webase编译合约一直转圈卡住,等再久也没反应 解决方案: 进入webase-web目录,然后进入static\js目录,执行以下命令: curl -#L https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/download/solidity/wasm/v0.4.25.js -o v0.4.25.js curl -#L https://os…

Unity AssetBundle打包

1,AssetBundle的概念与作用 AssetBundle是一个存档文件,是Unity提供的一种用于存储资源的资源压缩包,可以包含模型、贴图、音频、预制体等。 Unity中的AssetBundle系统是对资源管理的一种扩展,通过将资源分布在不同的AB包中可以最…

SpringBoot--Web开发篇:含enjoy模板引擎整合,SpringBoot整合springMVC;及上传文件至七牛云;restFul

SpringBoot的Web开发 官网学习: 进入spring官网 --> projects --> SpringBoot --> LEARN --> Reference Doc. --> Web --> 就能看到上述页面 静态资源映射规则 官方文档 总结: 只要是静态资源,放在类路径下&#xff1…

制作网页版H5页面商城源码系统+随心DIY 带前后端完整搭建教程

随着智能手机的广泛普及,人们越来越依赖手机进行日常生活中的各种活动,包括购物。传统的PC端购物模式已经无法满足人们的需求,因此开发移动端的购物系统势在必行。而现如今H5技术不断发展成熟,使得在手机等移动设备上展示网页版商…

Nginx常见问题解决

一、修改nginx.conf报错 背景:修改nginx.conf,配置转发到tcp的信息: 在stream块中配置转发规则:在stream块中,使用server指令来配置转发规则。例如,如果你要将TCP流量转发到example.com:1234,可…

短视频矩阵营销系统工具如何助力商家企业获客?

1.批量剪辑技术研发 做的数学建模算法,数学阶乘的组合乘组形式,采用两套查重机制,一套针对素材进行查重抽帧素材,一套针对成片进行抽帧素材打分制度查重,自动滤重计入打分。 2.账号矩阵分发开发 多平台,…

[学习笔记]python绘制图中图(绘制站点分布图)

背景 在绘制站点分布图时,有时需要采用图中图的方式,以便于在一张图中尽可能多的表达信息。此处记录一下利用python matplotlib绘制图中图的脚本,方便然后查询。 包含数据 该绘图脚本中包含以下数据: CMONOC站点分布&#xff…

日本移动支付Merpay QA团队的自动化现状

Merpay是日本最大的网购平台之一Mercari的无现金支付系统。Merpay 的主要功能是让用户在 Mercari的网站上购物,也可以在日本的许多实体店和餐厅使用它,也可以理解为日本的“支付宝”。以下为Merpay QA 团队在自动化方面的一些思考: 这几年&am…

C++构建与编译

C构建 一般来讲,写完c的源文件(src),就需要去编译为: 可执行文件动态库/静态库 那么就遇到了几个问题: 编译的主机是什么代码运行的目标平台是什么 主机 一般来讲工作的机器,Windows或者L…

vMix导播软件使用NDI协议输入输出

前两篇文章一直写NDI,写了NDI在OBS【链接】、芯象【链接】中的使用。有的朋友问在vMix中的用法,今天就详细说说。 vMix在软件导播领域可算大名鼎鼎,功能丰富、工作稳定,支持多种媒体导入。由它衍生出多种产品,如&#…

中考倒计时7个月复习攻略:名师支招,为“长跑”积蓄能量

今天是2023年11月2日,距离2024年中考还有7个月多一点的时间。其实据六分成长了解,很多学校到了初三(九年级)基本上都是奔着中考考试复习的,这一学年基本上是长跑、拉力赛,拼的不只是智力,还有体…

chatgpt接口调用

在线接口文档: https://app.apifox.com/invite?tokensymrLP7sojF6N31kZqnpZ 接口地址 https://chat.xutongbao.top/api/light/chat/createChatCompletion 请求方式 POST 请求参数 token String, 必须 prompt Array, 必须 例子一: 包含上下文 [ { "…

LVGL库入门 01 - 样式

一、LVGL样式概述 1、创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式。每个控件都可以独立添加样式,创建的样式之间互不影响。 可以使用 lv_style_t 类型创建一个样式并初始化: static lv_style_t s…