设为首页 加入收藏

TOP

【0基础学爬虫】爬虫基础之HTTP协议的基本原理介绍(一)
2023-07-25 21:23:37 】 浏览:83
Tags:HTTP

00

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为 HTTP 协议的基本原理介绍。

计算机网络模型

计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题,除了标准的 OSI 七层模型以外,常见的网络层次划分还有 TCP/IP 四层协议以及 TCP/IP 五层协议,它们之间的对应关系如下图所示:

01

  • 物理层(Physical):负责传输比特流的硬件部分,包括各种传输介质(如铜线、光纤、无线信道)和传输设备(如集线器、交换机、路由器),基于电器特性发送高低电压(电信号)传输比特流(Bits),高电压对应数字 1,低电压对应数字 0,定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等;
  • 数据链路层(Data Link):负责在物理层的传输介质上传送数据帧,并在源主机和目的主机之间建立逻辑链路,定义了电信号的分组方式,规定电信号多少位一组,每组代表什么,这一层还提供了对传输数据的检测和传输数据错误的纠正以确保数据的可靠传输,例如:Wi-Fi(IEEE 802.11)、ethernet(以太网)、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等;
  • 网络层(Network):负责在多个主机之间传送数据包,并为分组交换提供路由选择功能,基本数据单位为 IP 数据报,主要协议:IP协议(Internet Protocol,因特网互联协议)、 ICMP(Internet Control Message Protocol,因特网控制报文协议)、IGMP(Internet Group Management Protocol,Internet 组管理协议)、ARP(Address Resolution Protocol,地址解析协议)等;
  • 传输层(Transport):负责在源主机和目的主机之间的端到端的数据传输,并为上层协议提供可靠的数据传输服务,主要协议:TCP 协议(Transmission Control Protocol,传输控制协议)、UDP 协议(User Datagram Protocol,用户数据报协议);
  • 会话层(Session):负责封装调用 TCP,会话层建立和管理应用程序之间的通信,封装了调用 TCP 去打包,然后调用 IP 协议去找路由等操作;
  • 表示层(presentation):负责解决不同系统之间的通信语法问题(数据格式化,代码转换,数据加密);
  • 应用层(Application):负责向用户提供网络服务,包括文件传输、电子邮件、远程登录等,主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

02

HTTP 发展史

03

HTTP 协议和 HTTPS 协议

HTTP(Hypertext Transfer Protocol)中文名为超文本传输协议,其作用是把超文本数据从网络传输到本地浏览器,能够高效而准确地传输超文本文档。HTTP 是由万维网协会(World Wide Web Consortium)和 Internet 工作小组 IETF(Interner Engineering Task Force)合作制定的规范,目前被广泛使用的是 HTTP 1.1 版本,如今也有不少网站支持 HTTP 2.0 版本。

HTTP 协议的特点:

  • 应用层协议,由请求和响应构成,是一个标准的客户端服务器模型;
  • 无状态的协议,对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作;
  • 通常承载于 TCP 协议之上;
  • 由请求和响应构成,是一个标准的客户端服务器模型(B/S);
  • 永远都是客户端发起请求,服务器回送响应;
  • 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性;
  • 双向协议,例如在上网冲浪时,浏览器是请求方 A,百度网站就是应答方 B,双方约定用 HTTP 协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以看到图片、视频了。

04

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是一种通过计算机网络进行安全通信的传输协议,经由 HTTP 进行通信,利用 SSL/TLS 建立全信道,加密数据包,HTTPS 使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性,相当于 HTTP 协议的安全版。

HTTPS 协议的特点:

  • 内容加密:建立了一个信息安全通道,保证数据传输的安全性;
  • 身份验证:确认网站的真实性,凡是使用 HTTPS 协议的网站,都可以通过单机浏览器地址栏的锁头标志来查看网站认证之后的真实信息,此外还可以通过 CA 机构颁发的安全签章来查询;
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改。

时势发展:

  • 苹果公司强制所有 iOS APP 在2017年1月1日前全部改为使用 HTTPS 加密,否则 APP 无法在应用商店上架;
  • 谷歌从2017年1月推出的 Chrome 56 开始,对未进行 HTTPS 加密的网址亮出风险提示,即在地址栏的显著位置提示用户”此网页不安全“;
  • 腾讯微信小程序的官方需求文档要求后台使用 HTTPS 请求进行网络通信,不满足条件的域名和协议无法正常请求。

HTTP 和 HTTPS 的区别主要如下:

  • HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;
  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

上述 HTTPS 看起来是加强版的 HTTP,可圈可点,但并不是完美无缺的:

  • HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用;
  • SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行;
  • SSL 证书需要购买申请,功能越强大的证书费用越高;
  • SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗(SSL 有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持);
  • 根据 ACM CoNEXT 数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电;
  • HTTPS 连接缓存不如 HTTP 高效,流量成本高;
  • HTTPS 连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本;
  • HTTPS 协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验,比较好的方式是采用分而治之,比如首页用 HTTP,用户信息相关页用 HTTPS。

HTTP 请求过程

HTTP 由请求和响应

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇03运算符 下一篇Python迭代器是啥?

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目