浏览器输入一个URL之后发生了什么?

  1. URL解析
  2. DNS解析
  3. TCP连接
  4. TSL连接
  5. HTTP请求
  6. TCP挥手
  7. 接收并解析响应

URL 解析

image.png
主要分为:

  • 协议,eg http,https
  • 域名或者ip地址,eg www.baidu.com

域名相对于ip地址来说,更方便人们记忆,但是实际的网络传输中使用的是ip地址

  • 端口号,不同的协议对应不同的端口号,一般可以不写,eg http是80,https是443
  • 请求的资源或路径,默认不写就是 /index

DNS 解析

根据域名找到对应的ip
首先会在本机查找浏览器缓存,如果没有查操作系统缓存
如果还没有,就后台向本机已经通过DHCP配置好的DNS服务器发起一个查询递归请求
DNS服务器会首先查询自己的缓存,如果没有就向分布式DNS域名系统发起迭代查询,依次是根域名服务器,顶级域名服务器,权限域名服务器
image.png

TCP连接

image.png

image.png

  • 第一次发送连接请求
    • SYN=1表示这是一个TCP连接请求报文段
    • seq设为x,作为TCP客户进程所选的初始序号
    • TCP规定SYN=1的报文段不能携带数据,但要消耗掉一个序号
  • 第二次发送请求连接请求确认报文段
    • SYN=1和ACK=1表示这是一个TCP连接请求确认报文段
    • seq设为y,作为TCP服务进程所选的初始序号
    • ack=x+1,这是对TCP客户进程所选的初始序号的确认
    • 因为SYN=1,所以不能携带数据,但要消耗掉一个序号
  • 第三次发送请求连接确认的确认
    • ACK=1,表示这是一个普通的TCP确认报文段
    • seq=x+1,第一次发送请求连接,TCP客户进程所选的初始序号x,不携带数据,但是消耗一个序号
    • ack=y+1,这是对TCP服务进程所选的初始序号的确认
    • 普通的确认报文段可以携带数据
    • 如果不携带数据,则不消耗序号;在这种情况下,下一个发送的序号seq仍为x+1

q: 第三次确认是否多余?

不多余。这是为了防止已失效的连接请求报文段突然又传到了服务器而导致错误,造成服务端资源浪费
假如我们把连接改为两次握手,就会产生如下错误情况
image.png

TSL 连接

q: Http和Https的区别?

  • Http是明文传输,容易遭到窃听和篡改,Https对传输内容做了加密
  • Http缺乏报文完整性验证,Https对报文做了验证
  • Http缺乏身份验证,Https加入了身份验证机制
  • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。

如果你输入http://www.taobao.com , 你首先会获得一个重定向的响应
然后浏览器重新发起对https://www.taobao.com 的请求

image.png

image.png

TSL 连接的过程如下:

image.png

消息发送与验证

image.png

HTTP请求

建立连接后,浏览器发起Http请求,Http报文如下
image.png

TCP 挥手

image.png

image.png

客户端和服务端都可以释放连接

  • 第一次发送释放连接请求
    • FIN=1和ACK=1,表示这是一个TCP连接释放报文段
    • seq=u,u为上一次发送请求的seq+1,即已传发送过的字节序号+1
    • ack=v,表示对上一次请求确认的确认 ,即服务端已收到的字节序号+1
    • TCP规定FIN=1的报文段即使不携带数据也要消耗一个序号
  • 第二次发送对释放连接请求的确认
    • ACK=1,表示这是一个普通的确认
    • seq=v,v为服务端以收到的字节序号+1(正好和第一次请求的ack一致)
    • ack=u+1,这是对连接释放报文段的确认

中间服务端可能还要有数据进行发送

  • 第三次发送,TCP服务端发送TCP连接释放报文段
    • FIN=1和ACK=1,表示这是一个TCP连接释放报文段
    • seq=w,是因为服务端可能又发送了若干数据
    • ack=u+1是对第一次请求连接释放报文段的重复确认
  • 第四次TCP客户端发送普通确认报文段
    • ACK=1,表示这是一个普通的确认
    • seq=u+1,是因为第一次发送请求时消耗了一个字节序列
    • ack=w+1,这是对第三次请求的确认

q: 最后等待2MSL是否有必要?

有必要。如果最后一次TCP报文段丢失,则服务端会一直等待或者重传,浪费资源
image.png

q: 服务端如何发现客户端故障?

image.png

接收并解析响应

image.png

参考资料

  • 浏览器输入url发生了
  • 在浏览器输入 URL 回车之后发生了什么(超详细版) - 知乎 (zhihu.com)
  • 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系! | Dailc的个人主页 (dailichun.com)

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

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

相关文章

c++查漏补缺(1)

目录 1.explicit关键字 2.static关键字 3.友元函数 1.explicit关键字 exeplicit关键字是在构造函数要使用的关键字。可以防止“隐式构造”&#xff0c;例如&#xff1a; #include<iostream>using namespace std;class Date { public:explicit Date(int year, int mo…

当我焦虑时,我从CSDN的博主身上学到了什么?

文章目录 前言一、思考为什么会产生差距1.1 懒惰1.2 没有合理的规划学习时间 二、我该如何做&#xff1f;2.1 认真生活规律作息2.2 做事就是0和1 结语 前言 我们在学习的过程当中总会遇到一些比我们自己优秀的人&#xff0c;不论你是在更好的985或211院校学习&#xff0c;还是…

PHP8函数的引用和取消-PHP8知识详解

今天分享的是php8函数的引用和取消&#xff0c;不过在PHP官方的参考手册中&#xff0c;已经删除了此类教程。 1、函数的引用 在PHP8中不管是自定义函数还是内置函数&#xff0c;都可以直接简单的通过函数名调佣。函数的引用大致有下面3种&#xff1a; 1.1、如果是PHP的内置函…

C#_委托详解

委托是什么&#xff1f; 字面理解&#xff1a;例如A要建一栋别墅&#xff0c;找到B建筑施工队&#xff0c;请B来建筑别墅。 委托类型规定方法的签名&#xff08;方法类型&#xff09;&#xff1a;返回值类型、参数类型、个数、顺序。 委托变量可以用来存储方法的引用&#x…

Spring -学习笔记

文章目录 1. Spring介绍1.1 Spring的体系结构 2.DI/Ioc&#xff08;依赖注入/控制反转&#xff09;2.1 依赖及注解说明1. lombok2. spring-context 2.2 Bean和Spring 上下文的配置方式方式1&#xff1a;基于xml文件的配置方法2&#xff1a; 基于java注解配置bean方法3&#xff…

Nginx详解 第三部分:Nginx高级配置(附配置实例)

Part 3 一、网页的状态页二、Nginx第三方模块2.1 echo 模块 三、变量3.1 内置变量3.1.1 常用内置变量3.1.2 举个例子 3.2 自定义变量 四、自定义访问日志 (优化)4.1 自定义访问日志的格式4.2 自定义json 格式日志 五、Nginx压缩功能&#xff08;重要&#xff09;六、HTTPS 功能…

Android RecyclerView 之 列表宫格布局的切换

前言 RecyclerView 的使用我就不再多说&#xff0c;接下来的几篇文章主要说一下 RecyclerView 的实用小功能&#xff0c;包括 列表宫格的切换&#xff0c;吸顶效果&#xff0c;多布局效果等&#xff0c;今天这篇文章就来实现一下列表宫格的切换&#xff0c;效果如下 一、数据来…

香港全新的虚拟资产服务商发牌制度

香港证监会2023年2月20日通告&#xff0c;原有虛擬資產交易平台如要符合資格參與當作為獲發牌的安排&#xff0c;必須在2023 年6 月1 日至2024 年2 月29 日期間(即由2023 年6 月1 日37起計九個月內)內&#xff0c;根據《打擊洗錢條例》下的虛擬資產服務提供者制度在網上提交完全…

中文乱码处理

&#x1f600;前言 中文乱码处理 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&#x1f609; 在csdn获奖荣誉: &#x1f3c…

揭秘视频号创收计划:松松一个月赚1300+

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 这是卢松松一个月视频号的收益&#xff0c;1300元。自从视频号在五月份推出创作者分成计划以来&#xff0c;许许多多的视频号创作者开始获得了一些收益&#xff0c;这绝对是一项挺不错的进展。 目前…

iOS App签名与重签名:从开发者证书到重新安装运行

前文回顾&#xff1a; iOS脱壳技术&#xff08;二&#xff09;&#xff1a;深入探讨dumpdecrypted工具的高级使用方法 iOS逆向&#xff1a;越狱及相关概念的介绍 在本文中&#xff0c;我们将详细介绍iOS应用的签名过程&#xff0c;包括开发者证书的种类、证书与App ID、Provisi…

原生web实现不固定列数的表格、随机列、document、querySelector、forEach、hasOwnProperty、call、includes

文章目录 效果图公共样式第一种解决方案(不推荐)第二种解决方案(强烈推荐) 效果图 公共样式 .d_f {display: flex; }.flex_1 {flex: 1; }.jc_sb {justify-content: space-between; }.ai_c {align-items: center; }.bc_ccc {background-color: #cccccc; }/* ------------paddin…