一个http请求从用户输入网址开始到结束都发生了什么

 
一、一个http请求从开始到Django后台,到结束发生了什么
  1. 通过用户输入的域名解析出IP地址
  2. TCP/IP 三次握手
  3. 进入nginx---->django
    4.TCP/IP 四次挥手
1.1 通过用户输入的域名解析出IP地址
  • 第一步:
    客户端先检查本地是否有对应的IP地址缓存,找到就返回,没有找到就向上一级DNS服务器发送请求,直到找到或根节点。
    顺序为: 浏览器缓存-->系统缓存-->路由器缓存-->ISP DNS缓存-->从根域名服务区递归搜索
1.2 TCP/IP 三次握手
  1. client先发送一个带synchronize (SYN)标志的数据包给server,在设定的超时时间内等待server的回复,
  2. server 端接收到该数据包后,返回一个带 SYN/ACK (acknowledge charactor) 标志的数据包以表示传达确认信息。
  3. client 收到后再发送一个带有ACK标识的数据包给server表示连接(握手)成功

连接成功后client给web服务器发送一个HTTP请求

1.3 请求进入nginx--->django

HTTP请求进入nginx:
反向代理:指服务提供方出一个代理,客户请求只和代理打交道
如nginx代理:http请求进入nginx处理后,找到对应的业务处理服务器。静态请求如CSS,JS,图片等,就转向静态服务器,如果是动态请求,就把请求分发到Web应用服务器。
不管是静态还是动态都有多台服务器,Nginx按照一定策略把请求向业务服务器进行分配,防止压力集中到一台服务器上,
这就是所说的负载均衡
nginx还可配置一些防爬虫、设置超时时间,文件大小允许等。如爬虫>监控某一Ip如果在短时间类发起大量请求如1s内50次,就将其标记为黑名单。

HTTP分配到Django
一个请求在django的生命周期:
首先请求来到url路由系统,通过查询本地url对应服务,将请求转向相应的业务逻辑函数或类。业务逻辑在处理相应的数据库、static、templates/html后将处理好的模版字符串返回,然后结果返回客户端,经过浏览器相应渲染呈现在屏幕。

1.4 四次挥手
 
博客来源:https://www.cnblogs.com/shiqi17/p/9589267.html

一个http请求从用户输入网址开始到结束都发生了什么的更多相关文章

  1. python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

  2. python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。

    python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...

  3. 【web性能优化】当用户输入网址后发生了什么?

    简单叙述 这个过程可以大致分为两个部分:网络通信和页面渲染. 一.网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信.分层由 ...

  4. 从地址栏输入url到显示页面都发生了什么?

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...

  5. 在浏览器中输入URL并回车后都发生了什么?

    1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...

  6. 从用户输入url到页面最后呈现 发生了些什么?

    一.浏览器获取资源的过程: 1.输入url 2.浏览器解析url,获得主机名 3.将主机名转换成服务器ip地址(查找本地DNS缓存列表,如果没有则向默认的DNS服务器发送查询请求) 4.浏览器建立一条 ...

  7. 第七章 用户输入和while语句

    大多数编程都旨在解决最终用户的问题,为此通常需要从用户那里获取一些信息.例如,假设有人要判断自己是否到了投票的年龄,要编写回答这个问题的程序,就需要知道用户的年龄,这样才能给出答案.因此,这种程序需要 ...

  8. Python:从入门到实践--第七章--用户输入和while循环-练习

    #1.编写一个程序,询问用户要租赁什么样的汽车,并打印. car = input("What's kind of cars dou you want to rent?,sir:") ...

  9. 检查用户输入信息是否完整(vb.net实现)

        机房收费系统中.在将用户输入的信息封装到实体中作为參数传到B层之前,总要对用户输入的信息进行检查.我将这种检查分为两类: 合法性检查 完整性检查     所谓合法性检查,就是用户输入的信息是否 ...

随机推荐

  1. css3选择器和伪类

    元素选择子: * 任何元素 E 与E标签结合的任何元素 E F E的所有派生标签中,有F标签的元素 E > F 或者 E/F E的所有直接的拥有F标签的子类 E + F 所有具有F标签的元素,紧 ...

  2. 按照固定字符数切割字符串 基于python的re正则表达式

    def cut_text(text,lenth): textArr = re.findall('.{'+str(lenth)+'}', text) textArr.append(text[(len(t ...

  3. oracleDBconsole服务启动失败

    问题出现的故障:    在一次正常使用企业管理器后,重新启动计算机,再次启动OracleDBConsoleORCL服务时,报:Windows 不能在 本地计算机 启动 OracleDBConsoleo ...

  4. 集合框架之map

    Map实现类用于保存具有映射关系的数据.Map保存的每项数据都是key-value对,也就是由key和value两个值组成.Map里的key是不可重复的,key用户标识集合里的每项数据. Map提供了 ...

  5. sprigcloud Eureka Server环境搭建

    1.搭建springcloud的Erueka组件,现在搭建这些套件已经变的很方便了,进入https://start.spring.io/页面,如下图: 2.选择好Eureka Server,点击Gen ...

  6. 移动端根据dpr适配

    'use strict'; /** * @param {Number} [baseFontSize = 100] - 基础fontSize, 默认100px; * @param {Number} [f ...

  7. zabbix实现对磁盘性能动态监控

    前言 zabbix一直是小规模互联网公司服务器性能监控首选,首先是免费,其次,有专门的公司和社区开发维护,使其稳定性和功能都在不断地增强和完善.zabbix拥有详细的UI界面和分组策略,在被监控的服务 ...

  8. 语法、id和class选择器、创建、

    一. 1.CSS规则由两个主要部分构成:选择器,以及一条或多条声明(每条声明由一个属性和一个值构成,属性和值被冒号分开). 2.声明以分号“:”结束,生命组用大括号“{}”括起来. [示例:p {co ...

  9. 无聊的js(马赛克)

    <!doctype html> <html lang="en"> <head> <meta http-equiv="Conten ...

  10. ubuntu14/16 安装python3-opencv3_百度经验

    http://jingyan.baidu.com/article/e4511cf348dac52b845eafc8.html