• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
xiaoyaovo
博客园    首页    新随笔    联系   管理    订阅  订阅
浏览器输入 URL 后会发生什么呢?

目录

    • 以访问 CSDN 为例
      • 传输过程
        • 1. DNS 域名解析
        • 2. TCP 建立连接
        • 3. 客户端给服务器发送 HTTP/HTTPS 请求
        • 4. TCP / IP 传输数据
        • 5. IP 传输数据
        • 6. 数据链路层
        • 7. 服务器解析数据
      • 应用程序处理
        • 1. 服务器收到数据
        • 2. 服务器返回数据

以访问 CSDN 为例

传输过程

1. DNS 域名解析

浏览器访问 DNS 服务器,得到 域名 与 IP 的映射关系,然后返回 IP 地址给客户端。
在这里插入图片描述

2. TCP 建立连接

  1. 在访问 DNS 服务器后得到一个 IP 地址,根据这个 IP 地址客户端就可以与服务器建立连接了,建立连接需要三次握手;
  2. 三次握手的目的在于确保双方的接受与发送数据的能力都是正常的。

3. 客户端给服务器发送 HTTP/HTTPS 请求

在这里插入图片描述

  1. GET 方法明确了传输数据的部分不在 body,而是在 URL 中(查询字符串),这个 URL 虽然没有,但是其他的 URL 可能会有;
  2. Connection(连接方式):希望服务器能够与客户端的连接是持续的(keep-alive),希望不要关闭后面的 TCP 连接;
  3. User-Agent(客户端操作系统等属性与浏览器属性):服务器得到这个属性后,决定返回数据的格式等(不同的操作系统与浏览器属性的功能不一样,因此服务器需要确定客户端的属性与浏览器属性来返回什么样的数据);
  4. Cookie:Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接,所以我们设置了Cookie。

就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。
补充一点,Cookie 中含有 session,Cookie中有一个sessionid,而服务器中以键值对的形式存储了Session。
例如sessionid=123,当客户端发送请求给服务器时,服务器解析出Cookie中的sessionid=123,即key的值是123,通过get(key)就可以得到一个value,这个value里就有对象,对象里就包含了你在这个网站的信息。比如你登录了抖音成人版,然后你的浏览记录、收藏、喜欢就会返回到你到手机上。(这只是一个例子,手机app应该不是根据Cookie来返回的。但是原理应该大差不差)

4. TCP / IP 传输数据

对数据进行封装,确保数据的可靠性。

5. IP 传输数据

封装目的 IP 与源 IP,确保数据能够到达。
如果数据过大将对数据进行分包。

6. 数据链路层

通过路由到达服务器。

7. 服务器解析数据

通过物理层、数据链路层、网络层、传输层将数据依次分用,然后将数据传给应用层。

应用程序处理

1. 服务器收到数据

Tomcat (应用程序)收到数据后,找到对应的 Servlet 并执行代码,根据执行的代码构造响应。
构造响应过程中可能会存在一些渲染页面过程,比如 ajax 和 Thymeleaf。

2. 服务器返回数据

根据响应返回给客户端。
在这里插入图片描述

posted on 2021-08-06 18:40  豆本豆红枣豆奶  阅读(15)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3