Python零基础之爬虫基础知识(协议和网络模型)

爬虫基础

1. 通讯协议

  • 开放系统互联协议中最早的协议之一,它为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。TCP/IP协议定义了在互联网络中如何传递、管理信息(文件传送、收发电子邮件、远程登录等),并制定了在出错时必须遵循的规则。
  • 实现不同目标的相互通信的过程
  • 通讯协议就是通信方都必须遵守的通讯规则
  • 如: TCP/IP 协议, http协议等

2. 网络模型

2.1 OSI七层模型

OSI七层模型

  • 七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
    • 应用层
      网络服务与最终用户的一个接口。
      协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
    • 表示层
      数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
      格式有,JPEG、ASCll、EBCDIC、加密格式等
    • 会话层
      建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
      对应主机进程,指本地主机与远程主机正在进行的会话
    • 传输层
      定义传输数据的协议端口号,以及流控和差错校验。
      协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
    • 网络层
      进行逻辑地址寻址,实现不同网络之间的路径选择。
      协议有:ICMP IGMP IP(IPV4 IPV6)
    • 数据链路层
      建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
      将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
    • 物理层
      建立、维护、断开物理连接。(由底层网络定义协议)

2.2 TCP/IP模型

  • TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层、和应用层。
    TCP/IP模型
  • 应用层
    应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务。
    • 例如:FTP、Telnet、DNS、SMTP等.
  • 传输层
    传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).
    • TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.
  • 网际互联层
    网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。
    • 该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
      IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
  • 网络接入层
    网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。

3. http、https和相关协议

3.1 http

  • HTTP(Hyper Text Transfer Protocol)<超文本传输协议>的缩写.是用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型.
  • HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
  • HTTP是基于客户/服务器模式,且面向连接的。
  • HTTP的请求过程:
    • 1.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
    • 2.当在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
    • 3.浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
    • 4.当所有的文件都下载成功后,网页会根据HTML语法结构,通过渲染等方式完整的显示出界面。
  • 协议特点
  • 客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成干上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。
  • HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。
  • 从技术上讲是客户在一个**特定的TCP端口(端口号一般为80)**上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。
  • HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

3.2 https

  • HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过SSL传输加密和身份认证保证了传输过程的安全性 。
  • https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。
  • http的缺点
    • 明文传输
    • 可以被嗅探攻击
  • https的改进
    • 通过SSL握手和X.509(X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套公钥证书标准)实现双向身份认证
    • 通过公钥加密算法实现了数据传输的机密性
    • 通过SSL协议实现了对重放攻击的避免,增加了中间人攻击的成本
  • https的缺点
    • 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗 。
    • HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用 。最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行 。
    • 成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度 。

3.3 SSL

  • SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
  • SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。
  • 当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

3.4 TLS

  • TLS(Transport Layer Security安全传输层协议)用于在两个通信应用程序之间提供保密性和数据完整性。
  • 该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
    • TLS 1.0:IETF将SSL标准化,即RFC 2246,并将其称为TLS(Transport Layer Security)。从技术上讲,TLS 1.0与SSL 3.0的差异非常微小。
    • TLS 1.1:TLS 1.1在RFC 4346中定义,于2006年4月发表,它是TLS 1.0的更新。
    • TLS 1.2:TLS 1.2在RFC 5246中定义,于2008年8月发表。它基于TLS 1.1规范。
    • TLS 1.3:TLS 1.3在RFC 8446中定义,于2018年8月发表。它基于TLS 1.2规范
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingx3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值