zoukankan      html  css  js  c++  java
  • 网站访问流程

    1. 解析出主机名和端口号

    2. 查询浏览器或者操作系统的DNS缓存,如果命中缓存,则使用缓存的IP地址,否则,使用DNS解析出IP地址

    • 在DNS协议中,先向本地DNS服务器求助(一般是路由器),希望从本地DNS服务器那里得到主机名对应的IP,得到就好,得不到还得向更高层次的DNS服务器求助,直到解析出主机名对应的IP。

    3. 使用IP, ARP, RARP, OSPF协议获取目标IP的MAC地址(唯一标示机器的地址),知道MAC地址后才能进行TCP连接

    4. 进行TCP的3次握手

    • 在TCP协议中,建立TCP需要与目标服务器握手三次,你先告诉服务器你要给服务器发东西(将IP分组的SYN位设置为1),服务器应答你并告诉你它也要给你发东西(将IP分组的SYN、ACK位设置为1),然后你应答服务器(将IP分组的ACK位设置为1),总共来回了3次,称为3次握手。(可使用wireshark抓包分析)

    5. 建立了TCP连接后,如果使用HTTPS,则需要进行SSL握手,沟通加密参数(如,SSL版本)以及交换秘钥,握手完成后,报文会在发送给TCP之前在SSL层进行加密。

    6. 建立了TCP连接便可以发送HTTP请求了,HTTP请求通过TCP协议发到Server端

    7. Server端一般会有Nginx之类的WebServer,在收到HTTP请求后,查看HTTP请求Header的Host字段判断是请求的哪个web app

    • 如果有多个app的话),然后nginx会做一些验证或者黑名单拦截之类的操作,然后直接处理静态资源请求,其他请求分配给后端worker进程(由WSGI服务器创建,比如Gunicorn,Gunicorn使用pre-fork模式提前开启多个web app worker进程用来处理请求),Gunicorn将HTTP请求转为WSGI请求,由web框架如Django, Flask处理请求,返回响应,返回结果使用WSGI协议处理后返回给Nginx,Nginx将结果通过HTTP响应返回给浏览器,浏览器渲染响应。
  • 相关阅读:
    浅谈 倍增/ST表
    Meetings S 题解
    排序模板
    Huffman 树
    2020.7.31 模拟赛 题解
    浅谈 最短路
    【lcez校内第三次考T1】【题解】folder
    【题解】 P2613 【模板】有理数取余
    【题解】P5535 【XR-3】小道消息
    【笔记】积性函数 与 欧拉函数
  • 原文地址:https://www.cnblogs.com/Ycqifei/p/14806759.html
Copyright © 2011-2022 走看看