文章目录
- HTTP 介绍
- 请求数据包/请求消息/请求报文
- 请求数据包解析
- 响应数据包/响应消息/响应报文
HTTP 介绍
概念:Hyper Text Transfer Protocol 超文本传输协议
传输协议:定义了客户端和服务器端通信时发送数据的格式
特点:
1.基于TCP/IP的高级协议
2.默认端口号:80
3.基于请求/响应模型的:一次请求对应一次响应
4.无状态的:每次请求之间相互独立,不能交互数据
历史版本:
1.0:每一次请求响应都会建立新的连接;每一次新的请求都会建立新的连接
1.1:复用连接
请求数据包/请求消息/请求报文
1.第一部分,请求行(数据包中的一行内容)
请求行包括三部分内容:
1.1.请求方式(get/post)
2.1.请求资源路径(端口号之后的内容,比如 /appname/servlet
)
3.1.协议的类型与版本
2.第二部分,若干消息头(消息头是由 w3c 定义的一些有特殊含义的键值对)
也叫请求头,客户端告诉服务端一些信息
2.1.消息头的样式,比如:content-type= text/html;
2.2.服务器和浏览器都会遵守这些消息头的约定。
2.3.消息头一般由服务器或者浏览器自动生成,但是也可以通过编程的方式生成
常见请求头:
1.User- Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息。可以在服务器端获取该头的信息,解决浏览器的兼容性问题
2.Accept:浏览器告诉服务器,浏览器可以接收的内容格式,即服务器可以返回给浏览器什么格式的内容
3.Accept-Encoding:浏览器告诉服务器,浏览器可以接收的压缩格式
4.Referer:告诉服务器,我(当前请求)从哪里来
作用:
防盗链,判断访问来源,从而屏蔽非法访问
统计工作,统计不同的访问来源
5.Connection:连接状态
3.第三部分,实体内容
也叫请求体,封装请求消息中的请求参数
3.1.如果请求方式是 post 方式,请求参数及值会放在这儿。
3.2.如果请求方式是 get 方式,请求参数与值包含在请求资源路径里面。
请求数据包解析
响应数据包/响应消息/响应报文
1.第一部分:状态行
也叫响应行
HTTP/1.1 200 OK
协议版本 状态码 状态码描述
1.1.协议的类型与版本
1.2.状态码(状态码是一个数字,不同的数字代表不同的含义)
1.3.状态码的描述
2.第二部分:若干消息头
也叫响应头
2.1.格式
响应头名称:值
2.1.1Content-Type:text/html;charset=UTF-8
告诉浏览器返回是html格式的文本内容,使用的编码格式是UTF-8。这样浏览器就会使用html引擎解析文本内容,且使用UTF-8进行解码。
2.1.2.Content-Length:101
文本内容的字节数
2.1.3.Content-disposition
in-line:默认值,告诉客户端在当前页面内打开响应体的内容
attachment:告诉客户端以附件形式打开响应体的内容。常用于文件的下载。
3.第三部分:实体内容
也叫响应体
服务器返回给浏览器的最终数据。例如,html源代码;图片的二进制码等