Django请求生命周期分析

1.客户端发送请求
- 在浏览器输入url地址,例如
www.baidu.com
,浏览器会自动补全协议(http),变为http://www.baidu.com
,现在部分网站都实现了HSTS
机制,服务器自动从http
协议重定向到https
协议 - 在网页中点击超链接或
javascript
脚本进行url跳转,仅设置href
='绝对路径',浏览器会自动使用当前url的协议、host和port,例如在https://tieba.baidu.com/index.html
网页中,点击一个超链接/f?kw=chinajoy
,会自动访问https://tieba.baidu.com/f?kw=chinajoy
2. 路由转发
- IP查找:因特网内每个公有IP都是唯一的,域名相当于IP的别名,因为我们无法去记住一大堆无意义的IP地址,但如果用一堆有意义的字母组成,大家就能快速访问对应网站
- DNS解析:通过域名去查找IP,先从本地缓存查找,其中本地的
hosts
文件也绑定了对应IP,若在本机中无法查到,那么就会去请求本地区域的域名服务器(通常是对应的网络运营商如电信),这个通过网络设置中的LDNS
去查找,如果还是没有找到的话,那么就去根域名服务器查找,这里有所有因特网上可访问的域名和IP对应信息(根域名服务器全球共13台) - 路由转发:通过网卡、路由器、交换机等设备,实现两个IP地址之间的通信。用到的主要就是路由转发技术,根据路由表去转发报文,还有子网掩码、IP广播等等知识点
3.建立连接
通过TCP协议的三次握手建立连接
4.传输报文
建立连接后,客户端会通过TCP
依次、有序的发送一定大小的报文,其中包括了超时重传、阻塞窗口等等概念,用来保证数据包的完整、有序
- http协议使用的明文传输,所有内容都是直接可读的
- htt