一个http请求从用户输入网址开始到结束都发生了什么
一个http请求从用户输入网址开始到结束都发生了什么
- 通过用户输入的域名解析出IP地址
- TCP/IP 三次握手
- 进入nginx---->django
4.TCP/IP 四次挥手
- 第一步:
客户端先检查本地是否有对应的IP地址缓存,找到就返回,没有找到就向上一级DNS服务器发送请求,直到找到或根节点。
顺序为: 浏览器缓存-->系统缓存-->路由器缓存-->ISP DNS缓存-->从根域名服务区递归搜索
- client先发送一个带synchronize (SYN)标志的数据包给server,在设定的超时时间内等待server的回复,
- server 端接收到该数据包后,返回一个带 SYN/ACK (acknowledge charactor) 标志的数据包以表示传达确认信息。
- client 收到后再发送一个带有ACK标识的数据包给server表示连接(握手)成功
连接成功后client给web服务器发送一个HTTP请求
HTTP请求进入nginx:
反向代理:指服务提供方出一个代理,客户请求只和代理打交道
如nginx代理:http请求进入nginx处理后,找到对应的业务处理服务器。静态请求如CSS,JS,图片等,就转向静态服务器,如果是动态请求,就把请求分发到Web应用服务器。
不管是静态还是动态都有多台服务器,Nginx按照一定策略把请求向业务服务器进行分配,防止压力集中到一台服务器上,
这就是所说的负载均衡
nginx还可配置一些防爬虫、设置超时时间,文件大小允许等。如爬虫>监控某一Ip如果在短时间类发起大量请求如1s内50次,就将其标记为黑名单。
HTTP分配到Django
一个请求在django的生命周期:
首先请求来到url路由系统,通过查询本地url对应服务,将请求转向相应的业务逻辑函数或类。业务逻辑在处理相应的数据库、static、templates/html后将处理好的模版字符串返回,然后结果返回客户端,经过浏览器相应渲染呈现在屏幕。
一个http请求从用户输入网址开始到结束都发生了什么的更多相关文章
- python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。
python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...
- python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。
python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...
- 【web性能优化】当用户输入网址后发生了什么?
简单叙述 这个过程可以大致分为两个部分:网络通信和页面渲染. 一.网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信.分层由 ...
- 从地址栏输入url到显示页面都发生了什么?
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...
- 在浏览器中输入URL并回车后都发生了什么?
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- 从用户输入url到页面最后呈现 发生了些什么?
一.浏览器获取资源的过程: 1.输入url 2.浏览器解析url,获得主机名 3.将主机名转换成服务器ip地址(查找本地DNS缓存列表,如果没有则向默认的DNS服务器发送查询请求) 4.浏览器建立一条 ...
- 第七章 用户输入和while语句
大多数编程都旨在解决最终用户的问题,为此通常需要从用户那里获取一些信息.例如,假设有人要判断自己是否到了投票的年龄,要编写回答这个问题的程序,就需要知道用户的年龄,这样才能给出答案.因此,这种程序需要 ...
- Python:从入门到实践--第七章--用户输入和while循环-练习
#1.编写一个程序,询问用户要租赁什么样的汽车,并打印. car = input("What's kind of cars dou you want to rent?,sir:") ...
- 检查用户输入信息是否完整(vb.net实现)
机房收费系统中.在将用户输入的信息封装到实体中作为參数传到B层之前,总要对用户输入的信息进行检查.我将这种检查分为两类: 合法性检查 完整性检查 所谓合法性检查,就是用户输入的信息是否 ...
随机推荐
- css3选择器和伪类
元素选择子: * 任何元素 E 与E标签结合的任何元素 E F E的所有派生标签中,有F标签的元素 E > F 或者 E/F E的所有直接的拥有F标签的子类 E + F 所有具有F标签的元素,紧 ...
- 按照固定字符数切割字符串 基于python的re正则表达式
def cut_text(text,lenth): textArr = re.findall('.{'+str(lenth)+'}', text) textArr.append(text[(len(t ...
- oracleDBconsole服务启动失败
问题出现的故障: 在一次正常使用企业管理器后,重新启动计算机,再次启动OracleDBConsoleORCL服务时,报:Windows 不能在 本地计算机 启动 OracleDBConsoleo ...
- 集合框架之map
Map实现类用于保存具有映射关系的数据.Map保存的每项数据都是key-value对,也就是由key和value两个值组成.Map里的key是不可重复的,key用户标识集合里的每项数据. Map提供了 ...
- sprigcloud Eureka Server环境搭建
1.搭建springcloud的Erueka组件,现在搭建这些套件已经变的很方便了,进入https://start.spring.io/页面,如下图: 2.选择好Eureka Server,点击Gen ...
- 移动端根据dpr适配
'use strict'; /** * @param {Number} [baseFontSize = 100] - 基础fontSize, 默认100px; * @param {Number} [f ...
- zabbix实现对磁盘性能动态监控
前言 zabbix一直是小规模互联网公司服务器性能监控首选,首先是免费,其次,有专门的公司和社区开发维护,使其稳定性和功能都在不断地增强和完善.zabbix拥有详细的UI界面和分组策略,在被监控的服务 ...
- 语法、id和class选择器、创建、
一. 1.CSS规则由两个主要部分构成:选择器,以及一条或多条声明(每条声明由一个属性和一个值构成,属性和值被冒号分开). 2.声明以分号“:”结束,生命组用大括号“{}”括起来. [示例:p {co ...
- 无聊的js(马赛克)
<!doctype html> <html lang="en"> <head> <meta http-equiv="Conten ...
- ubuntu14/16 安装python3-opencv3_百度经验
http://jingyan.baidu.com/article/e4511cf348dac52b845eafc8.html