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

这篇具有很好参考价值的文章主要介绍了浏览器输入一个URL之后发生了什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

URL 解析

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络
主要分为:

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

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

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

DNS 解析

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

TCP连接

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

  • 第一次发送连接请求
    • 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: 第三次确认是否多余?

不多余。这是为了防止已失效的连接请求报文段突然又传到了服务器而导致错误,造成服务端资源浪费
假如我们把连接改为两次握手,就会产生如下错误情况
浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

TSL 连接

q: Http和Https的区别?

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

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

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

TSL 连接的过程如下:

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

消息发送与验证

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

HTTP请求

建立连接后,浏览器发起Http请求,Http报文如下
浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

TCP 挥手

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

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

  • 第一次发送释放连接请求
    • 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报文段丢失,则服务端会一直等待或者重传,浪费资源
浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

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

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络

接收并解析响应

浏览器输入一个URL之后发生了什么?,计算机网络,计算机网络文章来源地址https://www.toymoban.com/news/detail-677854.html

参考资料

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

到了这里,关于浏览器输入一个URL之后发生了什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面试:浏览器从输入url到渲染页面,发生了什么

    用户输入阶段 合成 URL :浏览区会判断用户输入是合法 URL,比如用户输入的是搜索的,默认的搜索引擎会合成新的,如果符合url规则会根据url协议,在这段内容加上协议合成合法的url      查找缓存 网络进程获取到 URL,先去本地缓存中查找是否有缓存资源,如果有则

    2024年02月06日
    浏览(51)
  • 从输入URL到浏览器显示页面的过程中都发生了什么?

    用户在浏览器中输入一个 url 或直接点开一个 url 后,就可以看到网页内容了。虽然可以直接显示,但在这背后却经过了非常复杂的操作,主要有五大过程:         ip 指的是网络为每一台电脑分配的一个地址。由于 ip 地址不容易被记住,所以有了域名,浏览器拿到域名后

    2024年02月11日
    浏览(55)
  • 程序部署到tomcat之后,在浏览器上输入URL报错404,该如何定位?

    目录 1.首先检查url是否正确 2.检查war包,查看部署之后的目录结构 3.查看tomcat日志 4.通过postman发请求 spring项目打包成war包再部署到tomcat上时,项目的路径要加上war包的名称,通过更改war包的名称,就可以更改访问路径。 格式为:协议://ip:端口号/war包名称/请求路径       

    2024年01月18日
    浏览(45)
  • 浏览器输入url后执行的整个过程(详细解析)

    这个问题也是老生常谈了,更是经常被作为面试的压轴题出现。在此稍微全面一点记录下。 检查网页重定向 URL 重定向 (也称为 URL 转发 )是一种为页面、表单或者整个 Web 站点/应用提供多个 URL 地址的技术。 当实际资源(如单个页面、表单或者整个 Web 应用)被迁移到新的

    2024年02月03日
    浏览(83)
  • 前端学习之浏览器从输入URL到页面加载的全过程

    从输入URL到页面加载的主干流程如下: 1、浏览器的地址栏输入URL并按下回车。 2、浏览器查找当前URL的DNS缓存记录。 3、DNS解析URL对应的IP。 4、根据IP建立TCP连接(三次握手)。 5、HTTP发起请求。 6、服务器处理请求,浏览器接收HTTP响应。 7、渲染页面,构建DOM树。 8、关闭

    2023年04月23日
    浏览(57)
  • 在浏览器中输入URL到显示页面经历哪些过程,涉及到哪些协议?

    作为一个大学学过计算机网络的人,在工作后。。。几乎把TCP/IP模型和OSI模型忘得干干净净的了,重新根据百度词条,对浏览器地址解析做了粗略的总结,也当是给自己加深一下印象。 首先浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如

    2024年02月09日
    浏览(61)
  • 从浏览器输入url到页面加载(五)请求数据在网线中的故事

    前言 上一章我们说到了,为了确保连接通道已建立完成,进行 三次握手 的确认。但无论是请求页面,还是发送一个ajax请求,数据都是要达到服务器的,包括header头,body信息这些。一旦离开了客户端浏览器,再离开了客户端操作系统,就要开始 漫长的网线旅程 了。 目录 前

    2024年02月10日
    浏览(39)
  • 谷歌浏览器输入url地址后http自动转https问题解决方法

    谷歌浏览器输入“http + 域名”后自动变成 “https + 域名” 格式原因 安装配置了 SSL证书后,浏览器开启了 HSTS(HTTP Strict Transport Security)功能,它会告诉浏览器只能通过 https 访问,绝对禁止 http 方式,所以浏览器中输入http 后自动转成了 https 解决方法: 1、进入“chrome://net

    2024年02月11日
    浏览(61)
  • 从浏览器输入url到页面加载(六)前端必须了解的路由器和光纤小知识

    前言 上一章我们说到了 数据包 在网线中的故事,说到了 双绞线 ,还说到了 麻花 。这一章继续沿着这条线路往下走,说一些和cdn以及路由器相关,运营商以及光纤相关的小知识,前端同学应该了解一下的   目录 前言 1.  CDN和路由器有关系吗? 2. 你的电脑能直接上网吗?

    2024年02月09日
    浏览(57)
  • UniApp开发安卓以及H5实现页面级权限管理,避免用户浏览器直接输入url访问页面

    前言:uni-app如何像vue-router中的beforeEach一样实现跳转拦截功能呢? 为此uniapp官方提供了专门的API方法 uni.addInterceptor 举个栗子 我们发现底部有四个菜单分别是:首页、分类、购物车、我的;按常理来说首页和分类是不需要登陆就能查看的。另外两个则需要先登陆才能查看没登

    2024年01月16日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包