浏览器输入一个url 中间经历的过程

一个常见的考题,要回答全面不容易,可以从以下角度回答问题

中间涉及到了哪些过程

每个过程包含哪些网络协议

每个协议都干了什么?

以上就是回答这个问题的思路。

(提醒:知道什么说什么,不要把自己带坑里,熟悉到哪一层协议就说到哪一层)

网络是分层的常见的五层模型:物理层、链路层、网络层、传输层、应用层。

OSI七层协议:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。

七层协议把五层协议的 应用层 细分为会话层、表示层、应用层。

一个请求从浏览器发起一直到TCP握手结束中间经历了哪些过程?

     流程图:

    DNS查询—》TCP握手—》HTTP请求—》反向代理Nginx—》uwsgi / gunicom—》web app 响应—》TCP握手。

       当浏览器发起请求的时候其实一开始并不会做DNS查询,而是先去看有没有DNS缓存,如果不在DNS缓存里面并且hosts文件里面也没有的时候,它就会向本地DNS服务器发起一个DNS查询,如果本地DNS没有查到的时候(DNS 查询是一个递归查询)它就会向上层继续查询,一直向匿名服务器和根服务器继续进行递归查询。一直到查询完之后返回给我们对应的IP地址,比如:输入www.aliyun.com阿里云就会返回对应的IP地址:106.11.62.15。

       DNS查询完之后就获取到IP地址,当拿到IP地址之后浏览器就可以调用Socket函数来去发起TCP请求,通过三次握手与服务器建立连接,

       建立起连接之后,发起应用层协议HTTP请求,发起的HTTP请求并不是一开始打到web框架,而是打到Nginx反向代理,很多访问量比较高的网站都会使用nginx来作为反向代理和负载均衡,通过nginx转发到多台服务器上。

       Nginx反向代理之后就到 WSGI服务器这一层,uwsgi / gunicom作用就是主要兼容web应用(flask/django/tornado)。通过uwsgi 再把请求转发到web应用层(web app响应)也就是web框架层。在web应用层一般就是做一些数据库的增删改查或者发一条消息等,最后把请求response,通过TCP发送给用户。

      如果没有其它数据传输的时候,就会执行TCP的四次挥手。


————————————————
版权声明:本文为CSDN博主「AllardZhao」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37189082/java/article/details/98110340

猜你喜欢

转载自www.cnblogs.com/suger43894/p/12666928.html