重新认识HTTP协议

一、概述:

HTTP是计算机通过网络进行通信的规则,是一个基于请求与响应、无状态的、应用层的协议,常基于TCP/IP协议传输数据。目前任何终端之间的任何一种通信都必须按照HTTP协议进行,否则无法连接。

二、四个基于:

  • 请求与响应:客户端发送请求,服务器响应请求;
  • 无状态:客户端与服务器建立连接时需要进行一系列的安全认证匹配等,因此会增加等待时间;当服务器响应完请求后,就会立即断开两者的连接,下次请求需要再次建立连接(HTTP/1.1版本可以设置持续连接);
  • 应用层HTTP属于应用层协议,配合TCP/IP使用
  • TCP/IP是支撑HTTP协议运输的协议。HTTP客户机发起一个与服务器的TCP连接,一旦建立,客户机和服务器进程就可以通过套接字接口访问TCP。

三、HTTP请求报文:

一个HTTP请求报文由请求行(request line)、请求头(request header)、空行请求数据4个部分组成

请求行:

由3个部分组成:请求方法请求地址协议版本

  • 请求方法:HTTP/1.1定义的请求放啊有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。常用的是GET和POST两种。
  • 请求地址:URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。组成:<协议>://<主机>:<端口>/<路径>  端口和路径有时可以省略
  • 协议版本:协议版本的格式为:HTTP/主版本号.次版本号,常用的有:HTTP/1.0和HTTP/1.1

请求头部:

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。常见有:

请求头说明
Host接受请求的服务器地址,可以是IP端口号,也可以是域名
User-Agent发送请求的应用程序名称
Connection指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset通知服务端可以发送的编码格式
Accept-Encoding通知服务端可以发送的数据压缩格式
Accept-Language

通知服务端可以发送的语言

请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行很重要,必不可少。

请求数据:

可选部分,如GET请求没有请求数据,下图为一个POST方法的请求报文:

四、HTTP响应报文:

HTTP响应报文主要由状态行、响应头部、空行及响应数据组成。

状态行:

由3部分组成,分别为:协议版本状态码状态码描述

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,这里只介绍状态码。

状态码:状态代码为3位数字:

  • 1xx:指示信息——表示请求已接收,继续处理。
  • 2xx:成功——表示请求已被成功接收、理解、接受。
  • 3xx:重定向——要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误——请求有语法错误或请求无法实现。
  • 5xx:服务器端错误——服务器未能实现合法的请求

以下为几个常见的:

状态码说明
200响应成功
302跳转,跳转地址通过响应头中的Location属性指定(JSP中Foward和Redirect之间的区别)
400客户端请求有语法错误,不能被服务器识别
403服务器接收到请求,但是拒绝提供服务(认证失败)
404请求资源不存在
500服务器内部错误

响应报头:

与请求报头类似,为响应报文添加了一些附加信息,常见响应头部如下:

响应头说明
Server服务器应用程序软件的名称和版本
Content-Type响应正文的类型(是图片还是二进制字符串)
Content-Length响应正文的长度
Content-Charset响应正文使用的编码
Content-Encoding响应正文使用的数据压缩格式
Content-Language

响应正文使用的语言

响应数据:

用于存放需要返回给客户端的数据信息,下面为一个响应报文的实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值