HTTP 的特性
- HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80
- HTTP 是无连接无状态的
HTTP请求报文
HTTP 协议是以 ASCII 码传输 , 建立在 TCP/IP 协议之上的应用层规范。
规范把 HTTP 请求分为三个部分:
<method> <request-URL> <version>
<headers>
<entity-body>
HTTP 定义了与服务器交互的不同方法
最基本的方法有4种: GET,POST,PUT,DELETE 对应着 查询 、 增加 、修改 、 删除 操作
URL 可以理解为一个 地址。
注意:
- GET 可提交的数据量受到URL长度的限制,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制
- 理论上讲,POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制,出于安全考虑,服务器软件在实现时会做一定限制
- 参考上面的报文示例,可以发现 GET 和 POST 数据内容是一模一样的,只是位置不同,一个在 URL 里,一个在 HTTP 包的包体里
响应报文
HTTP 响应与 HTTP 请求相似,HTTP响应也由3个部分构成,分别是:
状态行
响应头(Response Header)
响应正文
状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。
常见的状态码有如下几种:
200 OK
客户端请求成功301 Moved Permanently
请求永久重定向302 Moved Temporarily
请求临时重定向304 Not Modified
文件未修改,可以直接使用缓存的文件。400 Bad Request
由于客户端请求有语法错误,不能被服务器所理解。401 Unauthorized
请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用403 Forbidden
服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因404 Not Found
请求的资源不存在,例如,输入了错误的URL500 Internal Server Error
服务器发生不可预期的错误,导致无法完成客户端的请求。503 Service Unavailable
服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
参考: https://hit-alibaba.github.io/interview/basic/network/HTTP.html