HTTP协议之发送和响应消息重点——网络基础知识(一)

1,763 阅读5分钟

熟悉网络编程、熟悉TCP/IP、HTTP协议,看到这句话是不是特别亲切,这是大多数招聘信息要求上会看到的。作为开发者,不管前端还是后端,网络知识是必须要掌握的,这也是我想写这部分系列文章的初衷。网络部分知识很抽象复杂,但是大多数都是死的,如果说学不会,那没有别的,就是懒,不肯去记。本系列文章写的是基础的网络知识,这是第一篇,会从浏览器访问网页开始说起,这是我们日常接触网络最频繁的操作。本系列文章也是参考了《网络是怎样连接的》一书的很多内容,这是一本好书,推荐有空的朋友可以买来看看。

URL类型

当我们想看掘金网站的文章时,在浏览器上输入网址https://juejin.im/timeline,内容就显示在页面上。这个过程中,我们输入了网址,准确来说应该是URL,然后通过浏览器去访问了web服务器(掘金的服务器)。
URL(Uniform Resource Locator),统一资源定位符,就是以https://开头的那串东西,这样说就容易懂了,但是实际上除了“https:”,网址还可以以其他一些文字开头,例如“ftp:”,"file:","mailo:"等。我们访问掘金是使用浏览器来访问Web服务器,刚说过还有其它文字开头的URL,这里可以看出 它还可以用来在FTP服务器上下载和上传文件以及其它功能。浏览器是一个具备多种客户端功能的综合性客户端软件,所以我们才使用URL来告诉它,应该使用哪种功能来访问相应的数据,比如访问Web服务器用“https:”,访问FTP服务时用“ftp:”。下图是互联网中常见的几种URL。


不同的URL写法不同,但是开头的文字都表示浏览器应当使用的访问方法,比如说访问Web服务器时应该使用HTTP协议,访问FTP服务器使用FTP协议,我们就理解为访问时使用的协议。

输入了URL,浏览器第一步就是对URL进行解析,然后生成发送给Web服务器的请求消息。简单的以Web服务器的情况举例子。www.lab.glasscome.com/dir1/file.h… 表示要访问www.lab.glasscome.com这个Web服务器上路径名为/dir1/file.html的文件,也就是/dir1/目录下的file1.html这个文件。URL还有省略文件名的情况,具体请看文章:juejin.cn/post/684490…

HTTP协议

解析完URL之后,知道了访问的目标在哪里,浏览器会使用HTTP协议来访问服务器。HTTP协议定义了客户端与服务端之间交互的消息内容和步骤。我的理解就是,HTTP协议是必须要遵守的规则,很多东西就是需要死记硬背,理解里面的每一项代表的含义,然后去照做就可以了。可以看看HTTP的基本思路。

HTTP的基本思路


对URL解析了以后,浏览器确定了Web服务器和文件名,就会根据这些信息生成HTTP信息,也就是图中的请求信息。请求信息发出去以后,就会返回响应信息。Http在格式上有严格的规定,浏览器会按照规定的格式来生成请求消息,而如果是我们平时开发中,也是需要严格去遵守这些规定。

HTTP消息格式


看上面的图可能比较抽象,可以对照我们平时开发时候的请求信息和响应信息

请求消息举例

响应消息举例
平时我们做开发调试或者抓包的时候,经常需要得到这些信息去做判断。相信做开发的都很熟悉这些信息,不过多的去解释,就补充几个知识点。

请求消息重点讲解

请求消息第一行,重点看请求行中的请求方法。平时我们用得最多的就是GET和POST方法,GET一般是获取数据的时候,POST一般是在表单填写数据并且发送到服务器的时候用。(表单:网页中的文本框、复选框等能输入数据的部分),除了这两个方法,还有其它的方法,我们也应该去了解。
HTTP主要方法


第二行开始为消息头,也就是存放一些额外的详细信息,这些细节的信息非常多。消息头的内容会随着浏览器类型、版本号、设置等的不同而不同,不懂的时候可以在网上搜索一下,或者参考一下这篇文章https://blog.csdn.net/sinat_22840937/article/details/64438253。

写完消息头以后要添加一行空行,然后再是需要发送的数据。有些时候是不需要填写任何数据的,比如说我们单纯的获取服务器的数据。

响应消息重点讲解

讲完请求消息的一些重点,现在我们来看看响应消息。响应消息的格式和基本思路和请求消息是相同的。有区别的是第一行,响应消息的内容是状态码和响应短语。状态码是向程序告知执行的结果,响应短语是一段文字,是向人们告知执行的结果。比如我们访问一个网页,会遇到返回的内容是“404 Not found”的情况,这就是告诉我们,这个网页找不到。对于状态码,我们应该很熟悉,平时做安卓开发的时候,也是需要和后台协商,什么情况下返回什么状态码。

HTTP状态码概要

总结

以上就是HTTP请求消息和响应消息的基础知识,只要理解加上多记忆,这部分的知识就可以掌握。
下一篇文章是域名相对应的IP是通过什么机制查询到的?