前言
这是个经典面试题,前后端都会问,当然描述的越详细越好,类似的还有微信扫描一个二维码会发生什么等等
描述
假设以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会为这个请求起一个线程进行服务,然后把想要的数据返回给客户端
扩展:会用到哪些协议?
- HTTP,默认端口是80,位于应用层
- HTTPS,默认端口是443,位于应用层
- TCP,传输控制协议,位于传输层
- IP,网络协议,位于网络层
- UDP,位于传输层
- DNS,域名解析协议,使用的是UDP协议,默认端口是53,位于链路层
- ARP, 地址解析协议,将不同层之间的地址进行转换,例如网络层地址(IP地址)和链路层地址(MAC地址),该协议属于网络层和链路层
- 路由选择协议
参考
- 《计算机网络:自顶向下方法》
- 《图解HTTP》
- 转载博客计算机网络
请你相信我所说的都是错的