HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
HTTP(端口80)协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS(端口443)。
HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
HTTP请求报文格式:
HTTP请求报文主要由请求行、请求头部、空行以及请求正文4部分组成
1,请求行由3部分组成,分别为:请求方式,URI(通用资源标识符,注意这里不是URL)以及协议版本组成,之间由空格分隔
请求方法主要包括GET、POST等;常见的协议版本有HTTP/1.1
2,请求头部包含很多有关客户端环境以及请求正文的有用信息
请求头部由“关键字/值”对组成,每行一对,关键字和值之间使用英文“:”分隔
3,空行,这一行非常重要,必不可少,表示请求头部结束,接下来为请求正文
4,请求正文,如以POST方式提交的表单数据
GET请求示例:
POST请求示例:
GET请求方式和POST请求方式到底有什么不同:
1,POST方式比GET更加安全(相对的)
GET方式请求参数放在请求行中作为请求URI的一部分,POST方式请求参数放在请求正文中,我们是可以对请求正文进行加密的
2,如果传输大数据量,只能使用POST方式
由于GET方式将请求参数放置在请求行URI中,故参数的长度受限于URL的长度限制;POST方式请求参数放在请求正文中,请求正文没有长度限制
HTTP响应报文格式:
HTTP响应报文主要由状态行、响应头部、空行以及响应正文4部分组成
1,状态行由3部分组成,分别为:HTTP协议版本,状态代码,状态代码描述
状态代码为3位数字,由1、2、3、4以及5开头,2开头的指响应成功,3开头的指重定向,4开头的指客户端错误,5开头的指服务端错误。详细的状态码就不介绍了,这里列举几个常见的:
200:响应成功
400:错误的请求,用户发送的HTTP请求不正确
404:文件不存在,也就是HTTP请求URI错误
500:服务器内部错误
2,响应头部与请求头部类似,也包含了很多有用的信息
3,空行,这一行非常重要,必不可少,表示响应头部结束,接下来为响应正文
4,响应正文,服务器返回的文档,最常见的为HTML网页
响应示例: