前言

这是个经典面试题,前后端都会问,当然描述的越详细越好,类似的还有微信扫描一个二维码会发生什么等等

描述

假设以www.google.com为例,浏览器默认会加上http://,使用HTTP协议,发送Get请求,默认端口是80,然后会重定向到https,相对于http来说多了一层SSL(安全套接层)来保证数据的安全性和完整性

接下来会通过DNS查找该域名对应的IP地址,会先从客户端缓存映射表查找是否存在,如果不存在就向DNS服务器发送DNS请求,获取相应的IP地址,找到该网址的具体的IP

然后获取我们客户端的IP地址,通过DHCP服务器获得本机ip地址,和服务端进行TCP的三次握手连接

客户端服务端握手连接后,这时HTTP请求来到了负载均衡层,假设是用Nginx做负载均衡,会根据你的请求来判断,如果是静态数据就直接从缓存中返回给客户端交给浏览器渲染CSS,HTML,如果是动态数据就会转发到Tomcat来处理,Tomcat会为这个请求起一个线程进行服务,然后把想要的数据返回给客户端

扩展:会用到哪些协议?

  1. HTTP,默认端口是80,位于应用层
  2. HTTPS,默认端口是443,位于应用层
  3. TCP,传输控制协议,位于传输层
  4. IP,网络协议,位于网络层
  5. UDP,位于传输层
  6. DNS,域名解析协议,使用的是UDP协议,默认端口是53,位于链路层
  7. ARP, 地址解析协议,将不同层之间的地址进行转换,例如网络层地址(IP地址)和链路层地址(MAC地址),该协议属于网络层和链路层
  8. 路由选择协议

    参考

请你相信我所说的都是错的