✴️ HTTP(HyperText Transfer Protocol)
1️⃣ 协议介绍
HTTP,中文名为超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
2️⃣ 报文格式
️请求报文格式:
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/5.0
Accept-language: fr
实体体
上面是一段HTTP请求报文,它有以下几部分组成:
1.请求行:这是HTTP请求报文的第一行
2.首部行:这是HTTP请求报文的后面几行
3.实体体:这是HTTP请求中携带数据给后端的部分
其中:
请求行包括:
1.方法字段:GET、POST、PUT、DELETE、HEAD
2.URL字段:请求对象的唯一标识符
3.HTTP版本字段:标识当前的HTTP协议版本
首部行包括:
1.Host:指定对象所在的主机
2.User-agent:指明用户代理,即用户所用的浏览器
3.Accept-language:期望得到的语言版本
实体体即用户填写的内容,例如表单元素收集的信息。
️响应报文格式:
HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data ...)
上面是一段HTTP响应报文,它有以下几部分组成:
1.状态行:这是HTTP响应报文的第一行
2.首部行:这是HTTP响应报文的后面几行
3.实体体:这是HTTP响应中携带给用户的数据
其中:
状态行包括:
1.协议版本字段:指示当前的协议版本
2.状态码:指示当前的状态,上例中是200
3.状态信息:指示状态码对应的状态信息,上例中是ok
补充:状态码和状态信息常见的有:
200 OK:请求成功,信息返回在响应报文中
301 Moved Permanently:请求对象永久转移,新的URL在响应报文的Location:首部行中
400 Bad Request:通用的差错代码,指示该请求服务器不能理解
404 Not Found:请求对象不在服务器上
505 HTTP Version Not Supported:指示服务器不支持请求报文使用的HTTP协议版本
首部行包括:
1.Connetction:指示用户发送完报文后将关闭该TCP连接
2.Date:服务器检索到请求对象并将其插入响应报文并发送的时间
3.Server:指示服务器的型号
4.Last-Modified:请求对象创建或最后修改的时间
5.Content-Length:指示了被发送对象的字节数
6.Content-Type:首部行指示了实体体中的对象是HTML文本
3️⃣ 持续性连接和非持续性连接
️持续性连接(默认)
所有的请求/响应对经相同的TCP连接发送,能够大量节约网络资源和响应时间
️非持续性连接
每个请求/响应对是经一个单独的TCP连接发送,此时会引入:
(1) 为每一个请求对象建立并维护一个全新的连接,需要额外的资源
(2) 每一个请求对象的连接建立会多消耗一个往返时延(RTT),相当于每个都需要两倍的RTT
4️⃣ Cookie
✳️ SMTP
✴️ DNS
✳️ FTP
持续更新中。。。