这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战。
HTTP协议
HTTP时基于TCP的应用层协议。不管是移动端还是PC端,访问远程的网络资源经常食用HTTP协议。
OSI网络七层协议从上往下分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
TCP/IP协议分层从上到下分别是:应用层、传输层、数据链路层、物理层。
HTTP协议的作用
HTTP的全称为Hypertext Transfer Protocol,超文本传输协议。
- 规定客户端和服务器之间的数据传输格式。
- 让客户端和服务器能有效的进行数据沟通。
HTTP的特点
无连接、无状态,HTTP的持久连接、Cookie/Session
HTTP的无状态:HTTP协议对于事务处理没有记忆能力。
- 每次的请求都是独立的,它的执行情况和结果与其安米娜请求、后面请求无直接关系的。即它不会受前面请求应答情况直接影响,也不会直接影响后面的请求应答情况。
- 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。
- 标准的HTTP协议指的是不包括cookies,session,application的HTTP协议
HTTP是一种无状态的协议,为了保存状态引入Cookie技术:
- Cookie通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
- 根据服务器发送响应报文内Set-Cookie的首部字段信息,通知客户端保存Cookie。
- 客户端在下次发送请求时带上Cookie值,这样服务器通过Cookie值就能知道是谁发送的请求。
HTTP的持久连接
- 非持久连接:每个连接处理一个请求-响应事务。
- 持久连接:每个连接可以处理多个请求-响应事务(服务器发出响应后让TCP连接持续打开着,同一客户/服务器之间的后续请求和响应可以通过这个连接发送)。
- HTTP/1.0使用非持久连接。HTTP/1.1默认使用持久连接Connection:keep-alive。
HTTP持久连接是怎样判断一个请求是否结束的?
- Content-length:根据所接收字节数是否达到Content-length值。
- chunked(分块传输):Transfer-Encoding。当选择分块传输时,响应头中可以不包括Content-Length,服务器会先回复一个不带数据的报文(只有响应行和响应头和\r\n),然后开始传输若干个数据块。当传输完若干个数据块后,需要再传输一个空的数据块,当客户端收到空的数据块时,则客户端知道数据接收完毕。
为什么选择使用HTTP
- 简单快速:因为HTTP协议简单,所以HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据。
- 使用非常持续链接:限制每个链接只处理一个请求,服务器对客户端的请求作出相应之后,马上端口链接,节省传输时间。