HTTP的请求相应过程

(1)请求响应流程

        在日常的生活中,我们每天都要用到浏览器,不知道你是否好奇,当我们输入一个网站的网址时,到底发生了什么事情?让我们通过一个例子来探讨一下,我们假设访问的URL地址为

http://www.baiduu.com/s/1754896,当我们输入网址时浏览器内部会进行下面的操作。

  • DNS服务器会首先进行域名的解析,就像www.baiduu.com这个域名,我们的浏览器肯定不能只靠域名就找到百度的服务器的位置并建立连接,所以DNS服务器会首先进行域名的解析,找到对应域名映射的ip地址

DNS域名解析流程

首先浏览器会根据域名找到对应的ip地址DNS查找过程如下

  • 首先浏览器会先查找自己的DNS缓存(缓存时间很短,大概只有一分钟的时间,而且只能容纳大概1000条缓存),看自身的缓存中是否有域名对应的条目,而且没有过期的,如果有且没有过期则解析到此结束
  • 系统缓存:如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束
  • 路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询请求。
  • ISP(互联网服务提供商)DNS缓存:如果在路由缓存也没找到,最后要查的就是ISP缓存的DNS服务器

然后让我们来回到HTTP的请求流程

  • 进行完DNS解析之后,我们也就知道了域名对应的ip地址,然后HTTP客户端进程在80端口(80为HTTP的默认端口)发起一个请求到www.baiduu.com的TCP连接此时通过三次握手建立连接,在客户端和服务器会有一个套接字相互连接
  • HTTP客户端通过它的套接字向服务器发送一个HTTP请求报文。该报文包含了资源路径/s/1754896
  • HTTP服务器通过它的套接字接受该报文,进行请求的解析工作,并从其存储器(RAM或磁盘)中检索出对象http://www.baiduu.com/s/1754896,然后把检索出来的对象进行封装,封装到HTTP响应报文中,并通过套接字向客户进行发送
  • HTTP服务器随即通知TCP断开TCP连接,实际上是需要等到客户端接受完响应报文后才会断开TCP连接
  • HTTP接受完响应报文之后,TCP连接会关闭。HTTP客户端从响应中提取出得报文是一个HTML响应文件,并检查该HTML文件,然后循环检查报文中其他的内部对象
  • 检查完成之后,HTTP客户端会把对应的资源通过显示器呈现给用户

猜你喜欢

转载自blog.csdn.net/asdasd121312dasd/article/details/127992227
今日推荐