浏览器输入一个url到底经历了什么?

写在前面:以一个python后台的角度来看

 

1 dns ->  2  tcp握手  -> 3 HTTP请求 -> 4 反向代理nginx  -> 5 uwsgi/gunicorn -> 6 web app响应 -> tcp挥手

 

1: 其实进行dns查询之前会首先查看网址是不是在dns缓存里面, 如果不在dns缓存和host文件里的话,才会向本地服务器发起dns查询。如果本地查询没有查询到的话,则继续向上层dns服务器进行查询(递归) 最后获取到了url的 IP地址。

 

2 TCP三次握手和服务器建立连接。

 

3 发送应用层的HTTP请求。

 

4 Nginx(进行负载均衡, 反向代理)     ps: Nginx 把请求分发给不同的服务器。

 

5 请求发送给WSGI服务器。      ps:WSGI (Web Server Gateway Interface) 是一个接口,或者协议它规定了服务器怎么把请求信息告诉给应用,应用怎么把执行情况回传给服务器。

 

6 之后达到web框架层            进行层删改查之类的

 

7 进行tcp的四次挥手

 

 

 

tcp的三次握手

     

 

四次挥手

  

TCP 和 UDP的区别

   TCP: 面向连接、可靠的、基于字节流。    ps: 基于字节流 : TCP有缓冲区,应用层使用socket发送来的数据,可以存在缓冲区里面,然后从缓冲区里面读取数据。

   UDP: 无连接、 不可靠、面向报文。

 

posted @ 2019-09-05 17:01  DRQ丶  阅读(270)  评论(0编辑  收藏  举报