章节二:应用层之HTTP

上一章节对网络分层进行了阐述,接下来来了解下应用层最常见的协议HTTP。

1 HTTP介绍

HTTP是Web中浏览器(或其他客户端)客户端与Web服务器进行数据交互时使用的规范约束。HTTP运作如下:
在这里插入图片描述HTTP是使用TCP作为它的支撑运输协议,通过使用TCP作为运输协议,HTTP的客户端和服务器就可以使用TCP提供的可靠性等服务从而保证数据的正确传输而不需要关注其如何正确的传输。同时HTTP是一个无状态协议,因为HTTP服务器不保存客户端的信息,所以在客户端对同一个数据对象进行多次请求时,服务器不会应为刚才为客户端提供了数据而不做任何事,相反的服务器会重新发送请求的数据对象。

2 HTTP请求报文格式

首先来看一个请求报文的示例:

GET /test/hello HTTP/1.1
Host: localhost:7006
Connection:close
User-Agent: Mozilla/5.0 
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh

上面的报文是一个HTTP的请求报文,由6行组成,每行以回车和换行符结束,最后一行再附加一个回车换行符。虽然这里的示例时6行,单一个请求报文能够拥有更多或者至少一行。HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行。请求行有三个字段:方法字段(也就是这里的GET)、URL字段(对应/test/hello)及HTTP版本字段(对应HTTP/1.1)。方法字段通常有几种不同的值,包括GET、POST、HEAD、PUT和DELETE。

接下来在来看看首部行中的数据,Host: 参数用于指定请求对象位于的主机及对应的端口,Connecttion: 参数用于告诉Web服务器本次请求对完成后关闭连接,当然也可以设置为keep-alive,用于告诉服务器本次请求完成后保持连接,针对于一个HTML页面中存在图片等其他信息时,一个页面的获取会对应多个HTTP请求,当Connection: 参数设置为keep-alive时,则整个页面的所有HTTP请求均使用这一个连接,而Connection: 设置为close时,则每一个请求/响应对均需开启一个连接。当然浏览器一般是默认使用keep-alive这个值。User-Agent: 用于标志当前浏览器类型。Accept-Encoding: 用于标识接收的压缩文件类型。Accept-Language:

在看了一个HTTP的示例请求报文后,我们来看一下HTTP请求报文的通用格式:用于标识用户想接受到数据对象的中文版本。
HTTP请求报文格式
在了解了HTTP请求报文的通用格式后,我们在来了解下HTTP的几个请求方法。

  1. GET:使用GET请求时,请求体是空的,表示用户要获取指定URL的资源对象。
  2. POST:POST请求运气请求报文带有请求体,如用户在页面提交了表单,其表单数据通过请求报文的请求体传输。
  3. HEAD:HEAD方法类似于GET方法,当服务器收到一个HEAD方法的请求时,将会用一个HTTP报文进行响应,但是不返回请求对象。可通过HEAD方法进行调试跟踪。
  4. PUT:PUT方法常与Web发行工具联合使用,它允许用户上传对象到指定的Web服务器上指定的路径(目录)。PUT方法也被那些需要向Web服务器上传对象的应用程序使用。
  5. DELETE:DELETE方法允许用户或者应用程序删除Web服务器上的对象。

3 HTTP响应报文

在了解了HTTP的请求报文的通用格式及请求方法后我们再来了解HTTP的响应报文,我们先以一个示例开始:

HTTP/1.1 200 OK
Connection: close
Date: Fri, 03 Jul 2020 08:50:27 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 5

(data ...)

同HTTP的请求报文类似,HTTP响应报文也有三部分:第一行的状态行,后继的四个首部行,其后就是实体数据。状态行有三个字段:协议版本字段、状态码和相应状态信息。示例报文中状态行表示服务器正在使用HTTP/1.1协议处理,并且响应一切正常。接下来来看首部行的相关的参数。服务器使用Connection: close用于告诉客户端,发送完报文后将关闭TCP连接。Date: 首部行指示服务器产生并发送该报文的日期和时间。需要注意的是Date不是指请求对象创建或者修改的时间,而是指该请求对象被服务器检索到并发送的时间。Content-Type: 首部行指示了实体中对象时HTML文本,同时也指定了HTML文本的编码格式。Content-Length: 首部行用于指定请求对象数据的长度。

在看完一个响应报文的示例后,我们来了解下响应报文的通用格式,如下:
HTTP响应报文格式
在了解了HTTP响应报文的通用格式后,我们来了解下常见的一些响应状态码:

  1. 200 OK:请求成功,信息在返回的响应报文中。
  2. 301 Moved Permanently:请求的对象已经被永久的移除,新的URL定义在响应报文的Location:首部行中。客户端可以通过Location: 首部行重新请求对应的数据对象。
  3. 404 Not Found: 被请求的文档不在服务器上。
  4. 505 HTTP Vsersion Not Supported: 服务器不支持请求报文的HTTP协议版本。

下一章节来了解下应用层的另一个协议DNS服务。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值