说一下HTTP服务的全过程及扩展问题整理
问题1:当我们在浏览器中输入网址,按下回车,具体发生了什么?
对网址进行DNS解析,得到对应的IP地址。
根据这个IP地址,找到对应的服务器,并发起TCP的三次握手。
建立TCP连接后会发起HTTP请求。
服务器响应HTTP请求。
浏览器解析得到html代码。
请求html代码中的资源(如js、css、图片等)。
浏览器对页面进行渲染呈现给用户。
服务器关闭关闭TCP连接。
问题2:DNS是什么?
DNS一般指域名系统。域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。
问题3:DNS是如何找到域名的?
浏览器会检查自身的DNS缓存中有没有对应的ip地址(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)
如果还没有找到,则去 hosts文件里面去找
如果host文件没有配置,那么就会去本地区DNS域名服务器进行查找。比如:小区的网络提供商。
本地区DNS域名服务器也不能解析,会去根域名服务器请求解析(.com.cn.org等根域名服务器)。
根域名服务器查询并返回域名对应的服务器的地址。根域名服务器通常是你注册的域名服务器。
Name Server域名服务器会查询存储的域名和ip的映射关系表。
把解析的结果缓存在本地系统缓存中,域名解析过程结束。
问题4:为什么HTTP协议要基于TCP来实现?
TCP(传输层)是一个端到端的可靠的面相连接的协议,HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,会重传)
问题5:说一下三次握手?
拿到域名对应的IP地址后,浏览器会根据IP找到服务器,根据端口号找到所在服务中的web服务,发送一个TCP报文。(我准备好了,你准备好了吗)
这个请求到达服务端后,服务端会给予前端确认收到的响应信息(报文)。(我也准备好了,你确认下)
浏览器接收到来自服务器确认收到报文后,明确了从客户端到服务器的数据传输是正常的,并返回一段TCP报文。(确认成功)
问题6:聊一聊四次挥手?
(断开请求链接 2 次, 断开响应链接 2 次)
客户端告诉服务端:请求数据发送完毕,可以断开
服务端告诉客户端:请求数据接受完毕,可以断开
服务端告诉客户端:响应数据发送完毕,可以断开
客户端告诉服务端:响应数据接受完毕,可以断开