Python连载58-http协议简介
一、http协议实战
1.url(uniform resource located)
(1)使用fftp的url,例如:ftp://rtfm.mit.edu
(2)使用http的url,例如:http://www.baidu.com
2.http工作原理
(1)浏览器分析超i链接中的url
(2)浏览器向dns请求解析网站的ip地址
(3)dns将解析出的ip地址返回浏览器
(4)浏览器与服务器建立tcp连接(80端口)
(5)浏览器请求文档:get/index.html
(6)服务器给出响应,将文档index.html发送给浏览器
(7)释放tcp连接
(8)浏览器显示index.html中的内容
3.持久连接和非持久连接
4.无状态性
是指同一个客户端(浏览器)第二次访问同一个web服务,服务器无法知道这个客户端曾经访问过。http的无状态性简化了服务器的设计,使其更容易支持大量并发的http请求。
5.http报文结构:(1)请求报文;(2)返回报文;(3)请求报文的方法;(4)响应报文中的状态码;(5)首部字段或消息头;(6)报文结构实例。
6.请求报文:即从客户端(浏览器)向web服务器发送的请求报文,报文的所有字段都是ascii码
{
方法 url 版本 crlf
首部字段名 值 crlf
首部字段名 值 crlf
.....
.....
首部字段名 值 crlfsho
crlf
实体主体(entity body)
}第一行是请求行,例如:get/index.html/1.1
首部行:用来说明浏览器、服务器或报文主体的一些信息/
如:
host:www.sxtyu.com
connection:close
user:agent:mozilla/5.0
accept-language:cn
7.接收报文
{
版本 状态码 短语 crlf
首部字段名 值 crlf
首部字段名 值 crlf
.....
.....
首部字段名 值 crlfs
crlf
实体主体(entity body)
}
第一行是状态行,如:http/1.1 200 ok
首部行:用来说明浏览器、服务器*和报文主体的一些信息。如:
date :wed 08 may 2008 22
sever:apach/1.3.2(unix)
content0length:
datedadat4096
content-type:text/html
7.请求报头的方法
方法是对所有请求对象所进行的操作,也就是一些命令,请求报文中的操作有:
get 请求读取一个web页面 head 请求读取一个web页面的首部
post 附加一个命名资源(如web页面)
put 请求存储一个web页面
delete 删除web页面
trace 用于测试,要求服务器送回收到的请求
connect 用于代理服务器
option 查询特定选
8.响应报文中状态码
1xx 含义:通知信息;例如:100=服务器正在处理客户请求
2xx 含义:成功;例如:200=请求成功(ok)
3xx 含义:重定向;例如:301=页面改变了位置
4xx 含义:客户错误;例如:403=禁止的页面;404=页面未找到
5xx 含义:服务器错误;例如:500=服务器内部错误;503=以后再试
具体各个状态码的含义,请参考w3c的http1.1标准规范rfc2616
http://www.w3.org/protocols/rfc2616/rtc2616.html
五、源码
2.csdn:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料