目录
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为例)
- 前端发送请求
- DispatcherServlet在HandlerMapping中查找对应的Handler
- 返回对应Handler
- 向HandlerAdapter发送请求
- 执行对应Handler
- 返回视图(ModelAndView)到HandlerAdapter
- 返回视图(ModelAndView)到DispatcherServlet
- DispatcherServlet请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
- ViewResovler向前端控制器返回View
- DispatcherServlet进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
- DispatcherServlet向用户响应结果