HTTP通信传输过程详解。

点击一个URL以后,到最终页面返回,中间都会发生什么过程。

一、点击URL:new.qq.com

二、首先 DNS 解析

      linux 可以用dig 域名查看ip地址服务器

      1、一个域名可能回对应多个IP地址

  2、一个IP地址也可能对应多个域名

三、客户端与服务器建立TCP连接

  1、client-->SYN----->server

  2、client<-ACK + SYN <- server

  3、client -> ACK----->server

四、客户端封装『请求报文』为     二进制encode后信息

五、发送『请求报文』

六、HTTP Server 接受 『请求报文』

七、WSGI数据解析,将『请求报文』封装城HtttpRequest对象:WSGI Web Server Gateway Interface 服务器网关接口

           process_request

八、Django url映射 - 对应func

    process_vies

九、执行 view_func

  1 取出参数

  2 调用内部逻辑

  3 缓存、数据库处理

    process_template

  4 模板渲染

  5封装HttpResponse对象

    process_exception

    process_response

十 WSGI 进行协议解析,将HttpResponse对象封装成『响应报文』

十一 HTTP Server将『响应报文』发送给客户端

十二 HTTP Server 关闭 TCP连接

    四次挥手

  1 client <- FIN <- server

  2 client ->ACK->server

  (等待数据接受完成)

  3 client ->FIN ->server

  4 client <-ACK<-server

十三 客户端接受『响应报文』

十四 解析、渲染、显示

HTTP:建立在TCP协议之上的短连接协议。

TCP协议是一个全双工协议

全双工/半双工(形象比喻,一个双轨可以来回发送信息,一个单轨,一个发了,一个等待,一个轨道只能一个信号发送)

原文地址:https://www.cnblogs.com/sidianok/p/11565613.html