http和https
http是一种约束发布和接收html页面的协议。
http端口号:80
https端口号:443
http协议属性:(1)应用层协议
(2)无连接:http1.0以前每次发送http均是单独连接,http1.1以后发送http会设置一个请求头Connection保持与服务器的长连接
(3)无状态:http发送不记录状态,每次请求与前面相关的内容需要单独发送,为解决此问题产生了cookie和session技术
url:统一资源定位符,主要用来定义位置,也是域名
url定位资源路径:
(1)scheme:协议--http
(2)netloc:通过id找到主机、通过端口号进入主机
(3)path:资源在服务器的相对路径
url可以通过netloc找到任何主机,通过路径找到所需的资源
url中的特殊符号:
?:后面跟get的请求参数
&:多个get请求参数中间隔开
#:锚点,页面可以定位锚点位置
python的urllib下的parse模块可以帮助我们解析一个url
from urllib import parse
url = 'https://localhost:9999/bin/index.html?usename=zhangsanY&password=123#bottom'
parse_result = parse.urlparse(url)
print(parse_result)
print(parse_result.netloc)
print(parse_result.path)
运行结果:
ParseResult(
scheme='https',
netloc='localhost:9999',
path='/bin/index.html',
params='',
query='usename=zhangsanY&password=123',
fragment='bottom')
localhost:9999
/bin/index.html
http工作过程:
url = 'https://localhost:9999/bin/index.html?usename=zhangsanY&password=123#bottom'---》
(1):路径解析四部分 scheme netloc path param query(参数usename=zhangsanY&password=123) fragment(锚点)
(2):封装http请求数据包
(3):封装tcp数据包,通过三次握手建立与服务器的tcp连接
(4):客户端发送请求,服务端接收请求
(5):关闭tcp连接
客户端发送请求获取页面流程:
(1):客户端解析地址封装数据包,建立连接,发送请求
(2):服务器从数据包中解析出客户端想要获取的页面,将页面打包发送给客户端,客户端解析获取页面
(3):客户端获取页面后,发现页面中缺少的静态文件,继续向服务端发起请求获取
(4):服务端将缺少的静态文件发送给客户端,客户端根据html的语法将网页加载出来
客户端请求:
(1):请求行
(2):请求头 重要的请求头:uset-Agent,referer(上一个网址,作为防盗链),centent-typ(post数据的请求类型)e,centent-length(post数据的请求长度),Accept(可接受的数据类型),cookie,x-requested-with(获取ajax数据必备,表明是一个ajax请求)
(3):空行
(4):请求体
服务端响应:
(1):状态栏
以1开头:数据还在发送中
以2开头:数据已经发送处理完成 200 OK
以3开头:本次数据发送已完成,请求资源已转移,正在进行下一步细化 302-重定向 304-使用缓存资源
以4开头:客户端请求存在问题 404-服务器未找到请求内容 403-权限不够
以5开头:服务器存在问题 502-服务器错误 504-请求未完成,服务器遇见未可知问题
(2):响应头
(3):空行
(4):响应内容

浙公网安备 33010602011771号