从浏览器输入地址到响应的过程可以大致分成以下几个部分
1,DNS解析(分别从浏览器缓存,本地host文件,本地DNS服务器,根DNS服务器)
2,建立TCP(得知服务器的ip和端口后,用socket建立连接,通过三次握手连接)
3,用户发送请求和服务器响应请求
4,断开连接(四次挥手)
首先要理解我们平时输入的url各个字段的意思
比如https://tieba.baidu.com/index.ht
服务协议:https 用://分离
主机IP地址和端口号:tieba.baidu.com用/分离
资源的相对路径:index.ht
但是计算机是不认识tieba.baidu.com,无法通过这个直接找到服务器,而是先把tieba.baidu.com这个域名翻译成计算机能识别的ip(14.215.177.221)才能找打相应的服务器,而DNS的工作就是去找域名对应的ip(14.215.177.221)。
DNS解析
当输入网址的时候就浏览器就已经在做DNS解析了,浏览器会从缓存里查找有没有这个域名对应的ip地址,有就直接可以得到ip,没有的话就去本地的host文件里面查找,如果还是没有就去本地DNS服务器找
如果本地DNS服务也没有的话,一般有两种方式去查找ip,一种是递归解析,一种是迭代解析
递归解析
本地DNS服务器找不到的话就会去找根DNS服务器,根DNS服务器找不到就会去找下级的局部DNS服务器,找到后就会返回结果到本地DNS服务器,然后在发送个客户端
迭代解析
与递归解析不同的是,与本地DNS服务器不会主动去查询域名,而是本地服务器把能解析该域名的局部DNS服务器都发送给客户端,让客户端自己查。
建立连接
得到服务器的IP地址和端口号后,用socket进行连接,底层实现是采用三次握手,如图
(图片来源于网络)
用户发送请求和服务器响应请求
建立好连接后,用户就可以发送请求了,请求的格式如下
(图片来源于网络)
服务器处理请求后,返回响应给客户端,响应的内容如下
断开连接
断开连接使用四次挥手来断开连接,如图
(图片来源于网络)