HTTP协议即超文本传输协议,用于从服务端传输超文本到本地浏览器。
HTTP协议是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
HTTP协议通常是承载在TCP协议之上的,有事也承载与TLS或SSL协议层之上,其默认的端口号是80,而https默认的端口号是443.
HTTP永远都是由客户端发起请求,再由服务端回送响应的模式。
http的三点注意事项:
1、http是无连接的:即限定每次连接只处理一次请求,服务端处理客户端请求并接收到用户的应答后就立即断开连接。
2、http是无状态的:即同一个客户机的本次请求与上一次请求之间是没有对应关系的。
3、http是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP的工作流程
一次http操作可以看成是一个事务,其过程可分为四步:
1、客户机与服务器建立连接,可以是单击某一个超链接使http开始工作
2、连接建立后,客户机向服务器发送一个请求,格式:统一资源定位符(url)、协议版本号、后边是MIME信息(包括请求修饰符、客户机信息和可能的内容)。
3、服务器接收到请求后,给予相应的响应信息,其格式为:一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息,包括服务器信息、实体信息和可能的内容。
4、客户端接收到服务器返回的响应信息,通过浏览器显示在用户的显示屏上,客户机与服务器断开连接。
以上步骤中若有一步出现错误,那么产生的错误信息将返回给客户端,有显示屏输出。
http请求报文:
1、请求行
三部分组成:请求方法、URL以及协议版本,之间由空格分隔
请求方法有:GET、HEAD、PUT、POST、OPTIONS、DELETE等等........
常用的协议版本有:HTTP/1.0和HTTP/1.1
2、请求头部
请求头部为请求报文添加了一些附加信息,由”名/值”对组成,每行一对,名和值之间使用冒号分隔。
请求头部的最后会有一个空行,表示请求头部结束,接下来为请求正文。
常见的请求头:
HOST:接收请求的服务地址,可以是IP:端口号,也可以是域名
USER-Agent:发送请求的应用程序名称
Connection:指定与连接相关的属性
Accept-Charset:通知服务端可以发送的编码格式
Accept-Encoding:通知服务器端可以发送的数据压缩格式
Accept-Language:通知服务端可以发送的语言
3、请求正文
可选部分,比如get就没有请求正文
http响应报文格式:
1、状态行
由3部分组成:协议版本,状态码、状态码描述。之间由空格分隔。
常见状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其他URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
2、响应头部,与请求头部类似,添加一些附加信息。