编程(48)----------网页打开的过程

news2024/11/25 23:12:16

一个网页的打开大致分为以下几步:

1.DNS查询

在进行网络访问过程中, 实际上所访问的是IP地址. 但输入的却仅仅是域名. 因为IP地址过于复杂不利于记忆. 因此, 需要将IP转换成更具有辨识度的域名. 通过输入域名, 以DNS进行转换为IP, 再发起请求. 

DNS在得到域名后会进行查询, 如果在本机中存在DNS缓存, 则会直接使用缓存显示于页面. 但是若没有, 就会进行DNS解析, 向上一级的DNS服务器发起请求, 直到本地获取到对应的IP并缓存至本地.

2.建立连接

当获取到正确的域名后, 就会对该域名发起建立连接的请求, TCP建立连接最常见的便是三次握手. 

                                                                                

这里有一个经典的问题, 为什么是三次而非两次或者四次. 这里以连麦举例.

假设甲乙二人连麦, 甲问:你听得见吗? 此为第一次握手

已回:我听得见, 你听的见吗? 此为第二次握手

甲回:我听得见. 此为第三次握手. 至此双方确认对方能听见, 连接建立

TCP的建立其实也是如此的过程, 之所以是三次, 是因为第二次将得到的回应和询问对方是否能收到回应给一起发送了过去. 因此是三次而非四次.

3.发送请求

连接建立以后, 作为客户端这一方就会发起请求. 这里以百度为例. 客户端会发起一个打开百度搜索的请求. 这个请求常见的以GET和POST居多. 但就自身而言, 更倾向于使用POST. POST与GET相比更为安全, 因为不会将传递参数显示在URL上. 但二者本质区别是GET是从服务器上获取数据, 而POST是向服务器内传递数据.

4. 返回响应

收到客户端发来的请求后, 服务器会根据请求返回数据. 这里返回的数据大都是前端的数据, 最后加载展示到前端页面上. 这样一次请求就结束了.

5.断开连接

断开连接, 可以形象的称为四次挥手. 这里也可以画图说明问题:

              

 这里大致的过程是客户端发起一个FIN断开连接的请求, 然后服务器回应, 确认断开. 稍后再以同样的方式, 以服务器再发一次, 这样双方就断开了连接. 

但是这里也存在一个问题, 为什么不能向三次握手那样将第二个ACK和第三个FIN一起发送从而变为三次挥手呢? 原因在于FIN的发送不是由内核控制的 ,而是由应用程序执行到相关的close方法才会触发. 但是ACK是由内核控制, 一旦收到FIN就会发送ACK. 但是对服务器而言, 要发送FIN也得执行到服务器相关的close方法才行. 因此, 服务器的ACK和FIN不一定同时执行. 所以二者不能像三次挥手那样融合在一起. 

当连接断开以后, 整个过程也就差不多结束了.

------------------------------最后编辑于2023.9.17 下午6点左右

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

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

相关文章

P7075 [CSP-S2020] 儒略日(内附封面)

[CSP-S2020] 儒略日 题目描述 为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这…

得帆信息副总裁——陈明:低代码企业内部推广场景建议

在之前的文章中有介绍过#企业内部如何做低代码的运营推广(☜点击回顾精彩),感兴趣的可以结合之前的文章进行了解。 结合本人这几年的低代码落地推广经验,不论是由得帆主导的低代码平台运营推广,还是由客户自身主导进行…

广通优云完成2亿元C轮融资,加速平台级运维产品的技术创新

广通优云于近期完成2亿元C轮融资,松禾资本领投,朗玛峰创投、奇安投资、舜宇投资、天雅资本等机构跟投,皓石资本担任本轮独家财务顾问。资金将主要应用于公司产品创新研发、团队人才建设及市场生态开拓等方面。 在当前资本市场遇冷的背景下&a…

RSS阅读器

focus:免费、无广告、已停止维护[2020]、开源 也许后面我会维护更新。 Archive: https://www.ihewro.com/archives/948/ 开源代码:https://github.com/ihewro/Focus 🍰借助RSShub开源项目,自带丰富订阅市场,尽可能简…

【大数据之Kafka】十四、Kafka-Eagle监控

Kafka-Eagle 框架可以监控Kafka 集群的整体运行情况,在生产环境中经常使用。 1 MySQL环境准备 https://blog.csdn.net/qq_18625571/article/details/130613704?spm1001.2014.3001.5501 2 Kafka环境准备 (1)关闭Kafka集群。 kf.sh stop&…

反向动力学Ik学习

参考文章:(非本人原创) 英文原文:Inverse Kinematics Techniques in Computer Graphics: A Survey (andreasaristidou.com) 知乎翻译文章: 【游戏开发】逆向运动学(IK)详解 - 知乎 (zhihu.co…

django创建web服务器

安装 pip install django 创建项目 django-admin startproject report django-admin startapp data //project下可创建多个app 执行使用 python manage.py migrate //orm代码到数据库 python manage.py runserver 0.0.0.0:80 权限管理 python manage.py createsuperuser 创建…

住宅区电力系统管理,这一点很重要!

随着现代社会对电力供应的不断增长需求,住宅小区的电力分配系统变得越来越复杂。电力是我们日常生活中不可或缺的一部分,因此确保小区的电力供应安全和稳定至关重要。 配电柜监控是确保电力系统安全和稳定运行的重要工具。它可以提高电力供应的可靠性&am…

掌动智能浅谈UI自动化测试工具的重要性

在现代软件开发中,用户界面(UI)的质量和可靠性对于一个应用的成功至关重要。为了确保应用在各种环境和设备上都能正常运行,开发团队需要进行全面的UI测试。为了提高测试效率和减少人为错误,UI自动化测试工具成为不可或缺的工具。本文将探讨UI…

Redis缓存实现及其常见问题解决方案

随着互联网技术的发展,数据处理的速度和效率成为了衡量一个系统性能的重要指标。在众多的数据处理技术中,缓存技术以其出色的性能优化效果,成为了不可或缺的一环。而在众多的缓存技术中,Redis 以其出色的性能和丰富的功能&#xf…

安卓系统--翻译手机rom语言 添加多国语言 编译apk 反编译ODEX 工具步骤解析

很多小品牌机型不具备多语言设置。国内大都是中文。要想换为其他语言除非固件支持。例如国际版固件等等。大厂基本都有中文或者英文或者其他语言配置。而小品牌机型只能通过修改rom来达到多语言调用. 工具步骤演示 今天给友友介绍一款工具,可以用来翻译手机rom语言…

Android Studio 打不开

现象:点击PC端上Android Studio 图标,没有反应,AS没有打开 环境:windows 11 解决办法: 1、找到任务管理器 2、发现后台进程中,有Android Studio 3、结束该任务。 4、再此点击Android Studio 图标&…

阿里系常用代码规范及工具

1. 前言 1.1 为什么需要代码规范 可能有同学觉得代码需要突出个人的特点,需要特异化,但是这样就会造成别人阅读起来很困难 代码不仅仅是交给机器来执行的,同时代码也是让其他同事来阅读的,如果代码不规范就会出现各种各样的问题&…

vscode:连接服务器进行远程开发调试

以下推荐一个使用远端服务器开发调试的方法,可以让我们像在本地编写调试程序一样简单:使用vscode vscode-remote插件 一、安装SSH 1.windows自带的openssh经测试不可用,建议先安装git,使用git中自带的ssh,方法如下&a…

【STL容器】list

文章目录 一、list定义二、list的迭代器三、list的元素操作四&#xff0c;list的优缺点 一、list定义 list本质是一个双向带头循环链表 template<class T> struct list_node {list_node* prev;T val;list_node* next; };template<class T> class list {typedef lis…

Redis性能压测、监控工具及优化方案

Redis是一款高性能的开源缓存数据库&#xff0c;但是在实际应用中&#xff0c;我们需要对Redis进行性能压测、监控以及优化&#xff0c;以确保其稳定性和高可用性。本文将介绍Redis性能压测、监控工具及优化方案。 01 Redis性能压测 常用的Redis性能压测工具有&#xff1a; …

探秘移动端BI:发展历程与应用前景解析

什么是移动端BI 维基百科 上对于 移动端商业智能的定义是这样的 > Mobile BI is a system that presents historical and real-time information on mobile devices for effective decision-making and management support. It enables analysis on smartphones and table…

DLT645-2007智能电表通讯规约 协议读取数据实战

【本文发布于https://blog.csdn.net/Stack_/article/details/132946097&#xff0c;未经许可不得转载&#xff0c;转载须注明出处】 协议文档&#xff1a;DL-T 645-2007 多功能电能表通信协议 先用电表厂家提供的上位机进行通讯并拦截数据&#xff0c;再对照协议文档进行以下分…

springcloud3 分布式事务解决方案seata之AT模式5

一 seata的AT模式 1.1 AT模式与XA模式 XA模式一阶段不提交事务&#xff0c;锁定资源&#xff1b;AT模式一阶段直接提交&#xff0c;不锁定资源。 XA模式依赖数据库机制实现回滚&#xff1b;AT模式利用数据快照实现数据回滚。 XA模式强一致&#xff1b;AT模式最终一致 1.2 …

python虚拟环境(venv)

一、什么是python环境 首先要知道什么是python环境&#xff1f; Python环境主要包括以下内容&#xff1a; 解释器 python.exe (python interpreter&#xff0c;使用的哪个解释看环境配置) Lib目录 标准库 第三方库&#xff1a;site-pakages目录&#xff0c;默认安装第三方…