HTTP学习笔记

HTTP整体概念介绍

  • HTTP全名为超文本传输协议,是在互联网上进行通信时使用的一种通信协议
  • HTTP属于应用层协议,底层是靠TCP进行可靠地信息传输。
  • 它最著名的应用是用在浏览器的服务器间的通信

HTTP学习笔记

HTTP在传输一段报文时,会以 流的形式将报文数据的内容通过 一条打开的TCP连接按序传输。TCP接到上层应用交给它的数据流之后,会按序将数据流打散成一个个的分段。再交到IP层,通过网络进行传输。另一端的接收方则相反,它们将接收到的分段按序组装好,交给上层HTTP协议进行处理。

URL

  • URL描述的资源是能通过其他各种协议传送的。
  • URL是可读的,所以不可打印的字符就不能在URL中使用,比如空格。
  • URL是完整的,它需要支持所有语言的字符。

URI/URL/URN

URI(Uniform Resource Identifier, 统一资源标识符)表示服务器资源,URL(Uniform Resource Locator, 统一资源定位符)和URN(Uniform Resource Name, 统一资源名)是URI的具体实现。URI是一个通用的概念,由两个主要的子集URLURN构成,URL通过位置、URN通过名字来标识资源。

URL定义了资源的位置,表示资源的实际地址,在使用URL的过程中,如果URL背后的资源发生了位置移动,访问者就找不到它了。这个时候就要用到URN了,它给定资源一个名字,无论它移动到哪里,都可以通过这个名字来访问到它。

URL通常的格式是:协议方案+服务器地址+具体的资源路径

协议方案(scheme),如http, ftp,告知web客户端怎样访问资源);服务器地址,如www.oreilly.com; 具体的资源路径,如 index.html.

HTTP学习笔记

HTTP方法

HTTP支持几种不同的请求方法,每种方法对服务器要求的动作不同,如下图是几种常见的方法:

HTTP学习笔记

HEAD方法只获取头部,不获取数据部分。通过头部可以获取比如资源的类型(Content-Type)、资源的长度(Content-Length)这些信息。这样,客户端可以获取即将请求资源的一些情况,可以做到心中有数。

POST方法用于向服务器发送数据,常见的是提交表单;PUT用于向服务器上的资源存储数据。

HTTP状态码

每条HTTP的响应报文都会带上一个三位数字的状态码和一条解释性的“原因短语”,通知客户端本次请求的状态,帮助客户端快速理解事务处理结果。

我们平时使用浏览器的时候,很多的错误码其实是由浏览器处理的,我们感知不到。客户端可以据此状态码,决定下一步的行动(如重定向等)。

三位数字的第一位表示分类:

HTTP学习笔记

HTTP报文格式

HTTP报文实际上是由一行行的字符串组成的,每行字符串的末尾用\r\n分隔,人类可以很方便的阅读。

举个简单的请求报文和响应报文的格式的例子:

HTTP学习笔记

实际上,请求报文也是可以有body(主体)部分的。请求报文是由 请求行(request line)、请求头部(header)、空行、请求数据四个部分组成。唯一要注意的一点就是,请求报文即使body部分是空的,请求头部后的 回车换行符也是必须要有的。

HTTP学习笔记

响应报文的格式和请求报文的格式类似:

HTTP学习笔记

请求报文响应报文的起始行和响应头部里的字段都是文本化、结构化的。而请求body却可以包含任意二进制数据(如图片、视频、软件等),当然也可以包含文本。

有些首部是通用的,有些则是请求或者响应报文才会有的。

HTTP学习笔记

笔记参考原文链接:https://mp.weixin.qq.com/s/NUW0sLBMTglnIbN7OHkdoQ

上一篇:Flutter ScrollView或ListView的子View是否露出显示


下一篇:PAT_B1001