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

参考Java Guide 计算机网络

1 涉及的网络知识

1.1 IP地址

IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位的标识符

1.2 DNS

DNS 的全称是 Domain Name System(域名系统,或者常称为域名解析系统)。DNS功能是将域名(www.abc.com) 转化为IP地址(192.168.1.1)

1.3 TCP

参考自《计算机网络》谢希仁
传输控制协议TCP(Transmission Control Protocol)

  • TCP是面向连接的运输层协议。就是说,引用在使用TCP协议之前,必须先建立TCP连接
  • 每一条TCP连接只能有两个端点,每一条TCP只能是点对点的
  • TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达
  • TCP提供全双工通信。允许通信双方的引用进程在任何时候都发送数据。
  • 面向字节流。

1.4 APR

将IP地址转化为MAC地址(物理地址)

1.5 HTTP

超文本传输协议(Hyper Text Transfer Protocol)
HTTP 是一个无状态的协议。是指客户端和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就随之被关闭了。

2 执行步骤

执行步骤参考下图。图源:JavaGuide
在这里插入图片描述

2.1 DNS解析

  • 此时用到DNS协议
  • DNS查找过程:浏览器缓存→路由器缓存→DNS缓存

2.2 建立TCP连接

  • 三次握手建立连接(图源:JavaGuide)

在这里插入图片描述

2.3 服务器处理请求(以SpringMVC为例)

  1. 前端发送请求
  2. DispatcherServlet在HandlerMapping中查找对应的Handler
  3. 返回对应Handler
  4. 向HandlerAdapter发送请求
  5. 执行对应Handler
  6. 返回视图(ModelAndView)到HandlerAdapter
  7. 返回视图(ModelAndView)到DispatcherServlet
  8. DispatcherServlet请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
  9. ViewResovler向前端控制器返回View
  10. DispatcherServlet进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
  11. DispatcherServlet向用户响应结果

在这里插入图片描述