HTTP知识点小结
HTTP协议是建立在TCP之上的简单的请求-响应协议。
- 特点
1.支持客户/服务器模式
2.简单快速
3.灵活:HTTP允许传输任意类型的数据对象
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 - 内容
请求报文如图,由四个部分组成
请求行(request line)、请求头部(header)、空行和请求数据
图片.png
服务器回应如图
状态行、消息报头、空行和响应正文
图片.png - 请求方法
有8种,常用GET和POST,两者区别是GET有数据长度的限制,所以GET常用来发送查询请求,而POST则用来传输数据 - HTTP步骤
1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本并显示内容
- HTTP状态码
100 continue
101 switching protocol
200 ok
201 created
202 accepted
203 Non-Authoritative Information
204 no content
205 reset content
206 partical content
300 multiple choices
301 moved permanently永久移动
302 found暂时移动
303 see other
304 not modified
305 use proxy
306 unused
307 temporary redirect GET重定向
400 bad request 客户端请求语法错误
401 unauthorized 需要身份验证
402 payment require(预留以后用,现在没卵用)
403 forbidden 服务器拒绝请求
404 not found 找不到资源
405 method not allowed
406 not acceptable
后面还有很多,但记住常见的就差不多了
500 interval server error服务器内部错误
501 not implement服务器不支持请求的功能
502 bad gateway代理服务器接收到无效请求
503 service unavailable服务器暂时无法处理请求
504 gateway timeout代理服务器未及时获取请求
505 http version not supported
- 长连接和短连接
短连接:在三次握手之后建立连接,每次发送数据包并得到服务器返回的结果之后,通过客户端和服务端的四次握手进行关闭断开。如果需要发送新的数据,需要建立新连接。
长连接:执行三次握手链接后,不断开链接,保持客户端和服务端通信,直到服务器超时自动断开链接,或者客户端主动断开链接。
使用长连接后,可以应用pipelined request(不知道怎么翻译),就是在上一个请求的应答完成之前就发起新的请求。
HTTP1.1默认使用长连接
HTTP请求和响应头都有Connection: Keep-alive
,可能后面还会跟着Keep-Alive:timeout=20
还可能有max=XXX