请求响应流程

图示:

第一步:浏览器的处理(用户的操作系统)

①用户在浏览器中输入URL地址

②浏览器解析用户输入的URL地址

③浏览器会先检查本地缓存中有没有这个域名

④浏览器发起一个DNS系统调用

  • 检查操作系统缓存有没有这个域名
  • 找系统的hosts文件中有没有这个域名
  • 如果都没找到,会对DNS服务器发起一个系统调用(最终DNS服务器返回IP)

⑤浏览器会通过本地的随机端口建立一个与服务器指定端口之间的连接通道(三次握手)

⑥浏览器会将客户端的一些信息打上一个"包"(请求报文)

⑦将这个"包"通过这个连接通道发送到服务端

第二步:服务端(websever)的处理(以Apache为例)

①打开客户端提交过来的"包",拿到"包"里面的请求路径

②根据请求的路径对应文件的扩展名找到文件的MIME Type

③判断文件类型是否为静态文件

④如果是静态文件,则直接读取这个文件的内容

⑤如果是动态文件,则交给一些功能模块(比如加载的PHP,相当于外包)处理

⑥服务端会按要求发给客户端的数据打上一个"包"(响应报文)

⑦将这个"包"在通过之前的连接通道发回给客户端

第三步:浏览器再处理(用户的操作系统)

⑧打开服务端返回的"包",找到content-type

⑨根据content-type决定如何处理响应的内容

⑩如果是html则渲染到页面上......

原文地址:https://www.cnblogs.com/EricZLin/p/9189531.html