09-HTTP请求协议分析
目标¶
- 知道请求报文包含请求行、请求头、空行、请求体
1.请求协议的格式.¶
Request Headers 中就是请求的报文数据内容. 下面就是我们要请求的报文示例数据:
GET / HTTP/1.1
Host: localhost:10000
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
就是浏览器向服务器请求数据时候的格式!
注意,下面配图(windos+firefox)和上面请求协议头不同,不影响我们理解http协议
http请求又包含了四个部分 :
- 请求行(request-line)
- 请求头(request-header)
- 空行
- 请求数据(request-content),也叫作请求内容或者请求主体
1.1 请求行¶
请求行又可以分成三个部分:
请求方式 请求路径 协议版本
其中,GET就是请求方式,/model/list_father.php就是请求路径,HTTP/1.1就是协议版本号
需要注意的几点:
- 请求行需要单独的占一行,用来说明当前请求的最基本的信息
- 请求路径是不包括域名的
- HTTP协议以前是1.0版本,现在是1.1版本
不同浏览器、浏览器版本都存在差异:
1.2 请求头¶
请求头就是所有当前需要用到的协议项的集合!
协议项就是浏览器在请求服务器的时候事先告诉服务器的一些信息,或者一些事先的约定!
常见的请求头有:
host : 当前url中所要请求的服务器的主机名(域名)
accept-encoding :是浏览器发给服务器,声明浏览器支持的压缩编码类型 比如gzip
accept_charset :表示,浏览器支持的字符集
referer :表示,此次请求来自哪个网址
accept-language :可以接收的语言类型,cn,en,有权重的高低之分
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
cookie :如果之前当前请求的服务器在浏览器端设置了数据(cookie),那么当前浏览器再次请求该服务器的时候,就会把对应的数据带过去
user-agent :用户代理,当前发起请求的浏览器的内核信息
accept :表示浏览器可以接收的数据类型,text/html,image/img
content-length(post) :只有post提交的时候才会有的请求头,显示的是当前要提交的数据的长度(字节)
if-modified-since(get) :表示在客户端向服务器请求某个资源文件时,询问此资源文件是否被修改过
1.3 空行¶
就是用来分离请求头和请求数据,意思就是请求头到此结束!
1.4 请求数据¶
只有post方式提交的时候,才有请求数据!
2. 请求报文格式总结¶
3. 模拟TCP服务器¶
通过网络调试助手模拟TCP服务器,接收request请求
第一步,打开网络调试助手
协议类型选择:TCP服务器
本地IP地址:127.0.0.1
本地端口:8080
第二步,点击连接网络
第三步,打开浏览器,在浏览器中输入 127.0.0.1:8080
回车后,查看网络调试助手接收到的数据