HTTP协议


HTTP报文有两种:请求报文和相应报文。

请求报文

结构构成:请求行+请求头部(首部)+请求数据(可选)

HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行

请求行有3个字段:方法字段、URL字段和HTTP版本字段。

方法字段有不同的值,包括GET、POST、HEAD和DELETE。

首部行如下图所示,Host:www.someschool.edu指明了服务器的主机名。实际上,TCP连接建立时已经寻找到目标主机的IP地址了,不需要Host字段告知主机的名称,但Host字段仍被需要,用于告知高速Web代理服务器所访问主机的地址。

Connection:close用于告诉服务器不要麻烦地使用持续链接,在发送完被请求的对象后就关闭连接。

User-agent:用来指明用户代理,即向服务器发送请求的浏览器的类型。

Accept-language:用于表示用户想要得到的对象的语言版本。

在这里插入图片描述

通用的请求报文格式如下所示。请求行以及首部行后会添加一个回车和换行表示该行的结束,在首部行后添加一个额外的回车和换行表示后又一个“实体体”,即数据部分。使用GET方法时实体体为空,使用POST方法时才正常使用实体体。

在这里插入图片描述

响应报文

结构构成:状态行+首部行(头部)+实体体(包体)

状态行由协议版本号,状态码以及状态码说明组成。

一些常见的状态码包括:

  • 200 OK:请求成功
  • 301 Moved Permanently:请求的对象已经被永久转移了
  • 400 Bad Request:一个通用的差错代码,表示该请求不能被服务器理解
  • 404 Not Found:被请求的资源不在服务器上

首部行如下图所示,Connection:close首部行告诉用户,发送完报文后将关闭TCP连接。Date首部行知识服务器产生并发送该响应报文的日期和时间,并不是该对象创建或者修改的时间。Last-Modified指示了对象创建或者最后修改的日期和时间。

在这里插入图片描述

MIME类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL,因此 We b服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会无法解析文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

MIME类型结构:

type/subtype

​ 其中type表示可以被分多个子类的独立类别,subtype 表示细分后的每个类型。

常见的MIME类型如下图所示:

在这里插入图片描述

其中在MIME中,有两种较为相似的格式分别为text/javascript以及application/javascript。其中,text/javascript是早期引入的,后来人们思考问题,并决定将text/*表示为人类直接可读的东西。而Javascript尽管是以字符形式进行表示的,但并不是设计给人读的,因此引入了application/javascript来替换它。即appliacation/javascripttext/javascript的一个更加先进的版本,如果考虑向后兼容的话,使用text/javascript,如果使用HTML5,则可以直接使用application/javascript

Transfer-encoding:chunked

由于http协议允许进行持久连接,即在一个连接中发送多个数据。那么客户端和服务器需要某种方式来分辨出不同的报文。在首部行包含content-length字段的情况下,便可以通过报文长度来区分不同的报文。然而对于动态生成的内容或是某些难以计算报文长度的场景下,该字段将不能被使用。

Transfer-encoidng:chunnked,就是将整个报文切分成多个块,最后一个块长度为0,表示为结束。每个块按照MSS的长度进行切分输入到TCP中。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值