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协议是一个全双工协议
全双工/半双工(形象比喻,一个双轨可以来回发送信息,一个单轨,一个发了,一个等待,一个轨道只能一个信号发送)