1. 在浏览器中输入一个URL

2. 查找本地配置文件

如果之前有访问过,浏览器会进行缓存,如果没有的话会在本机域名解析文件hosts文件中寻找是否存在该URL的域名映射,如Windows的配置文件:C:\Windows\System32\drivers\etc\hosts。如果有相应URL->IP的映射,则使用该映射并访问相应的IP地址,跳到第四步发起TCP连接;若没有,则到第三步。

3. DNS解析

去DNS找(DNS本身也是一台服务器,也具有自己的ip地址,通常是配置在操作系统中),DNS中管理着几乎全世界所有的URL->IP的映射,找到的话就返回该IP地址。DNS服务器不是唯一,世界上有很多。当局部的DNS服务器无法解析这个域名时,他有两种途径:
a. 递归解析:局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。
b. 迭代解析:当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。

4. 发起TCP连接

当浏览器获得IP地址后,就会与服务器进行TCP连接(三次握手),如果使用的是HTTPS协议,还会有一个TLS的握手
a. 第一次握手 (发出连接请求):客户端将标志位SYN置为1,随机产生一个值为seq=J(J的取值范围为=1234567)的数据包到服务器,客户端进入SYN_SENT状态,等待服务端确认。
b. 第二次握手 (回应连接请求):服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务端进入SYN_RCVD状态。
c. 第三次握手 (收到回应,最后确认):客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务端,服务端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,完成三次握手,随后客户端A与服务端B之间可以开始传输数据了。
d. 三次握手的原因:第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。

客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
作者:CyC2018
链接:https://leetcode.cn/leetbook/read/tech-interview-cookbook/oeb2ld/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5. 浏览器发送HTTP请求 (Request)

6. 服务器返回HTTP响应 (Response)

7. 断开TCP连接

当浏览器希望与服务器断开时(反之亦然),就会与对方进行TCP断开连接(四次挥手)。
a. 第一次挥手 (告诉对方我要断开了,停止向对方传输信息,但仍接收对方信息):Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
b. 第二次挥手 (对方收到请求,并关闭接收从我这里过去的信息流,并发送确信给我,但仍可能在向我传输信息):Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
c. 第三次挥手 (对方完成对我的信息传输,关闭了对我传输的信息流,并告知我)Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
d. 第四次挥手 (我收到对方对我传输流的关闭,并告知对方我收到了,我也关闭了从对方接收的流,对方收到我的关闭信息,进入closed状态)Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

8. 浏览器对Response进行页面渲染

参考:

  1. 【狂神说Java】JavaWeb入门到实战
  2. 前端经典面试题之一(浏览器输入url按下回车后发生了什么)

在浏览器输入URL,按下回车之后的流程?相关推荐

  1. 浏览器 重定向次数限制_在浏览器输入URL到页面渲染的整个流程是如何的?都有哪些步骤?...

    问题:输入 URL 到页面渲染的整个流程 DNS解析 TCP握手 TLS握手 浏览器开始解析文件 构建 DOM 树.构建 CSSOM 树.解析JS 生成 Render 树 调用 GPU 绘制,合成图层 ...

  2. 从浏览器输入URL到展示页面的全流程

    从本地终端(如手机.电脑)访问一个网站,怎么处理请求并且加载出数据的.实际上考察的是计算机网络TCP/IP协议栈. 主要的得分项为TCP协议各层的描述.数据传送的封装和解包.一次页面包含多个TCP连接 ...

  3. 输入url并按下回车的那一刻发生了什么?

    一.事前准备 在进行网络通信前,本机需要知道四个参数分别是: 本机的IP地址 子网掩码 网关的IP地址 DNS的IP地址 这四个参数通常在开机时,通过DHCP服务器获取,该过程遵循DHCP协议,该协议 ...

  4. 前端——在浏览器输入url后发生了都发生了什么

    一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么? 主要包括以下几个基本步骤: 浏览器的地址栏输入URL并按下回车. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期. DNS解 ...

  5. 在浏览器中输入URL按下回车键后发生了什么

    在浏览器中输入URL按下回车键后发生了什么 [1]解析URL [2]DNS查询,解析域名,将域名解析为IP地址 [3]ARP广播,根据IP地址来解析MAC地址 [4]分别从应用层到传输层.网络层和数据 ...

  6. 在浏览器输入url回车后发生了什么

    在浏览器输入url回车后发生了什么 转载 https://www.cnblogs.com/tisikcci/p/5866753.html

  7. 在浏览器输入url回车之后发生了什么?

    在浏览器输入url回车之后发生了什么? 浏览器解析URL(https://www.baidu.com/dist/test.html),获得协议(https).web服务器名(baidu.com)和文件 ...

  8. 【网络】浏览器输入URL到展示页面全过程(含互联网协议及HTTPS简介)

    这里写自定义目录标题 前言 1.URL介绍 2.DNS查找 3.互联网协议 3.1 实体层 3.2 链路层 3.2.1 以太网协议 3.2.2 Mac地址 3.2.3 广播 3.3 网络层 3.3.1 ...

  9. HTTP浏览器输入URL后发生了什么

    原文:"天龙八步"细说浏览器输入URL后发生了什么   慕课大神 本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应 ...

  10. 每天一道面试题 浏览器输入URL到页面呈现详细过程

    浏览器输入URL到页面呈现过程 1.当用户敲下回车的那一刻,浏览器会判断用户输入的是ip地址还是域名 2.如果是ip地址就直接访问,否则就会先解析域名 3.域名的解析会先从浏览器缓存中去查询,是否有之 ...

最新文章

  1. php的安装配置,PHP 安装/配置
  2. 开发日记-20190914 关键词 汇编语言王爽版 第七章第八章
  3. JavaScript eval()
  4. 输入法注入源码_将注入进行到底:利用Mono注入C#游戏脚本
  5. springsession使用redis
  6. UpdatePanel之间的调用
  7. LLVM和clang
  8. Python 科学计算库 Numpy 准备放弃 Python 2 了
  9. js之事件冒泡和事件捕获详细介绍
  10. ML/DL-复习笔记【十】- 分组卷积和深度可分离卷积的区别
  11. 深入浅出WPF(1)——什么是WPF
  12. 程序员修炼之道(一)
  13. 面经_黑盒测试与白盒测试
  14. 图像检索哈希算法综述
  15. 易思ESPCMS企业建站管理系统 P8.21120101 稳定版
  16. android studio图形验证码,android 一行代码,快速实现图片验证码(附android studio 版小demo)...
  17. 蚂蚁电竞ANT27VQ电子竞技显示器重磅来袭
  18. 系统非功能需求(质量属性)
  19. 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板
  20. 科技战疫——战疫背后的神秘力量

热门文章

  1. 图解FDISK与FORMAT命令分区与格式化
  2. java如何输入(输出)二进制,八进制,十六进制数?(新手向)
  3. 【学习记录】使用多协程和队列,爬取时光网电视剧TOP100的数据
  4. 论文笔记 - Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
  5. 求最大公约数代码 Java_java怎么求最大公约数?
  6. 《场景革命》读书笔记
  7. java访问邮箱 apache,关于apache common-mail发邮件,部分邮箱无法接收有关问题
  8. 13.6.1 PDF 偏执狂
  9. IOS 开发环境,证书和授权文件是什么?
  10. Redis配置详解(转)