如上图所示,HTTP协议是应用层的网络协议,是建立在可靠的网络传输协议TCP之上的,换句话说,HTTP协议是用TCP协议实现的。如下图所示,依据HTTP协议建立的网络服务访问实际是TCP的连接访问。

Web服务器监听着80端口,用户端连接上服务器后,将要访问的URL,爬虫名称(User-Agent)等信息按key:value按行分割组成一个数据串,结尾以“\r\n\r\n”,将数据串发送给服务器,服务器便根据URL来定位要访问的文件,并将文件的内容以数据流的形式发送给用户端(文件内容之前有一段数据是响应头部,以"\r\n\r\n"与实际内容分开,这个头部记录的URL对应内容的状态,编码,长度,更新时间,格式等信息,方便用户端解析。
按照这个基本原理,实现用户端访问(爬虫的下载)HTTP服务器的基本步骤如下:
根据URL中的域名,解析得到服务器的IP地址
根据地址,连接服务器的80端口,这样便和web服务器建立了连接
将URL/User-Agent等按行组成字符串,通过建立的连接发送给服务器
尝试从与服务器建立的连接中读取数据,直到能读取到数据为止,先读取到服务器响应的头部,获取返回数据内容的长度,字符编码等,然后在读取到返回的数据内容
对读取到的数据内容进行编码转换,便得到了要下载的资源(网页、文件等)内容。
关闭与服务器建立的连接,便完成了一次HTTP服务器访问过程。

