1.http协议介绍
2.协议头格式
(1)请求格式
a.常见请求方法
b.GET和POST区别
(2)响应格式
3.响应状态码
4.http协议特点
1.http协议介绍
HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
2.协议头格式
(1)请求格式
(1)请求行:在HTTP请求报文中第一行,以空格为界,分为三个区域:【请求方法,常为GET/POST】+【请求的资源URL】+【HTTP协议版本,常为1.0/1.1】;
(2)请求报头Header:在HTTP请求报文中从第二行到空行之前的即为请求报头,即为请求的属性,均以冒号分割的键值对形式呈现,每组属性间用 \n 分隔;
(3)空行:请求报头与请求正文的分界,不能省略
(4)请求正文Body:空行以后的均是请求正文,表示要提交给浏览器看的消息,允许为空字符串。
(2)响应格式
(1)响应行:在HTTP响应报文的第一行,以空格为界,分为三个区域:【HTTP协议版本号】+【状态码】+【状态码解释】
(2)响应报头Header:在HTTP响应报文中从第二行到空行之前的即为响应报头,即为响应的属性,均以冒号分割的键值对形式呈现,每组属性间用 \n 分隔;
(3)空行:响应报头与响应正文的分界,不能省略
(4)响应正文Body:空行以后的均是响应正文,允许为空字符串。若Body存在,Header中会有一个Content-Length来标识Body的长度。
a.请求方法:
b.GET和POST区别
(1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。 POST方法是把提交的数据放在HTTP包的Body中.
(2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
(3)GET用于获取资源,而POST用于提交数据。
(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
3.响应状态码
4.http协议特点
(1)无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。后来,Keep-Alive 被提出用来解决这效率低的问题。Keep-Alive 功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接
(2)无状态
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
(3)支持客户/服务器模式。
(4)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(5)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。