04 HTTP 协议通信基原理
HTTP 是我们进行爬虫的一个基础之一,我们通过 HTTT 协议才能顺利爬取到 HTML 里面的内容,HTTP 相当于是一条道路,HTML 等网页是道路的终点,我们必须遵守 HTTP 的交通规则,才能高效的在这条道路上运输数据。
1. HTTP 的基本概念
Http(超文本传输协议) 是一种客户端-服务端模型,使用超媒体文档进行传输的,简单的,无状态的,无连接的,可扩展的应用层协议。
下面,我们一一来分析上述定义的几个概念。
1.1 客户端-服务端模型:
客户端,是指发起请求的一方。也就是浏览器,或者指爬虫程序。通过发起请求,来获取想要的网页。
服务端,请求的响应端,是 web 服务端。web 服务,是一个虚拟意思上的机器的概念。可以是一个计算机集群,也可以是一个软件或者程序。
客户端,通过发送一个请求给服务端,然后进行等待。服务端按照客户端的请求,返回客户端需要的数据。这个过程,我们称之为经典的客户端——服务端模型。
1.2 超文本文档:
一个网页,其实就是一个超文本文档。里面不仅包含了基本的文本信息和图片视频信息,也包含了丰富的超链接,用户可以通过点击超链接,来进行互联网的冲浪。
1.3 简单
指的是 HTTP 报文设计的简单易懂,对新手很友好,很容易上手,降低了学习门槛。
1.4 无状态
是指在同一个连接中,不同的请求之间是没有联系的,这次的请求无法知道上次请求的上下文信息。但是,HTTP 又是有会话的,也就是说,我们可以通过 Cookies 来解决不同请求的上下文信息共享。Cookie 的具体内容,我们会在后面的章节进行描述。
1.5 无连接
连接是又控制层控制的,无连接并不是指 HTTP 不需要控制层的连接,而是指每次连接指处理一次请求,请求结束,即端口连接。这样设计的目的,是减少开销,提高效率。因为,TCP 控制层的连接会消耗大量的系统资源。
1.6 可扩展
指的是 HTTP 的 Headers 部分比较容易扩展。只需要在头部中加入扩展的新功能,就可以很方便的实现扩展。
2. HTTP简单的工程流程
假如我们在浏览器输入慕课网地址:https://www.imooc.com/
HTTP 的工作流程如下:
- 首先需要传输层建立连接,这个是 HTTP 的运作的基础之一,因为 HTTP 是应用层,它是建立在传输层之上的。
- 然后发送一个 HTTP 的请求报文如下:
GET / HTTP/1.1
Host: www.imooc.com
Connection: keep-alive
Cache-Control: max-age=0
...
- 服务端会返回一段报文信息如下:
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Content-Length: 49930
Connection: keep-alive
...
- 浏览器渲染服务器返回的信息,并关闭连接或者重用之前的连接。
以上就是 HTTP 的基本工作原理。关于请求与响应的具体解释,我们下一个小节会深入讲解。
3. 小结
这一小节,我们讲解了 HTTP 的基本概念,熟悉了 HTTP 简单的工作流程。其实 HTTP 协议比较复杂,感兴趣的读者可以更加深入的去学习 HTTP 底层的原理,对以后开发爬虫以及 WEB 应用都有很大的帮助。