一、Http请求报文
1、请求信息
浏览器发起请求http://localhost:8080/时,请求头信息如下所示
- GET http://localhost:8080/ HTTP/1.1,请求行,其中后面的是请求的协议类型及版本号。
- Host:localhost:8080是主机名及端口,DNS服务器会解析为相应的ip地址。
- Proxy-connection:代理连接设置,keep-alive表示长连接,及http连接建立持续有效。默认client和server都支持长连接。
- Cache-Control:缓存指令。
- Authorization:授权信息
- User-Agent:浏览器类型
- Accept:浏览器可接受的MIME类型。
- Accept - Encoding:浏览器能够进行解码的数据编码方式
- Accept - Language:浏览器所希望的语言种类
- Cookie:这是最重要的请求头信息之一
请求报文
POST请求中请求体是key value键值对。
上图的HTTP请求报文格式可统一归纳如下:
2、请求方法
Method:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT、PATCH
二、Http响应
1、响应信息
和请求信息类似,包括状态行,响应头部及响应包体。
2、状态码
1XX:服务器已经接收了客户端请求。
2XX:服务器成功接收请求并进行处理。
3XX:服务器要求客户端重定向。
4XX:客户端请求有非法内容。
5XX:服务器未正常处理客户端请求,出现错误。
详解见附录1
3、重定向
重定向地址再次请求后返回状态200
重定向技术可用于服务器的负载均衡。
三、Http请求过程
1、建立连接、数据传输、连接断开
报文组装完成后,首先客户端会建立和服务端的连接,也就是常说的TCP三次握手。
SYN:synchronous表示建立连接。
FIN:finish表示关闭连接。
ACK:acknowledgement表示相应。
PSH:push表示DATA数据传输。
Seq:sequence表示序列号,首次建立连接时,客户端随机产生。