网络当中几个重要的协议介绍与其作用

一:TCP/IP协议

 TCP/IP协议是一个协议集合。 互联网协议是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族,简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。

作用:TCP使用三次握手协议建立连接。三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

二:IP协议

规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

作用: IP主要是实现两个基本功能:1、寻址,IP协议的作用是为每一台计算机分配IP地址。2、分段,是确定哪些地址在同一个子网络。

三:TCP协议(传输控制协议)

 UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP协议就诞生了。

特点:TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

作用:IP协议是找到对方的详细地址,TCP协议是把安全的把数据传输给对方。

四:UDP协议(用户数据报协议)

UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。

作用:UDP提供不可靠服务,具有TCP所没有的优势。

五:HTTP协议(超文本传输协议)

 HTTP协议是一个简单的请求——响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

作用:

HTTP是基于TCP协议,且面向连接的。典型的HTTP事务处理有如下的过程:

  • 客户端与服务器建立连接;
  • 客户端向服务器提出请求;
  • 服务器接受请求,并根据请求返回相应的数据作为应答响应;
  • 客户端与服务器关闭连接。

六:HTTPS协议

HTTPS同样作为应用层协议,可以说它是HTTP的升级版,增加了传输数据的安全性,HTTPS协议是在HTTP的基础上增加了一个SSL外壳,HTTPS运行在SSL上,SSL运行在TCP上,对数据的加密工作就是在SSL上完成的。

七:DNS协议

  DNS协议是一个应用层协议,建立在TCP和UDP的基础之上,使用默认端口为53,其默认通过UDP协议通信,但如果报文过大是则会切换成TCP协议。

八:ICMP协议

   ICMP协议又叫控制报文协议,ICMP协议用于在IP 和 路由器之间传递控制消息,描述网络是否通畅、主机是否可达、路由器是否可用等网络状态,ICMP本身并不传输数据,但对于用户间数据的传递起着重要的作用。

作用:
      在数据包从源主机传输到目的主机的过程中,会经历一个或多个路由器,而数据包在经过这些路由器传输过程中,可能会遇到很多问题,最终导致数据包没有成功传递给目的主机。为了了解数据包在传输过程中在哪个环节出了问题,就需要用到ICMP协议,它可以跟踪数据包,并把消息返回给源主机。

九:ARP协议

    ARP协议是数据进行网络传输过程中,通过IP地址向MAC地址的转换,解决网络层和物理层衔接问题。

作用:由于 IP 地址和 MAC 地址定位方式不同,ARP 协议成为数据传输的必备协议。主机发送信息前,必须通过 ARP 协议获取目标 IP 地址对应的 MAC 地址,才能正确地发送数据包。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前 言 虽然存储区域网络(SAN)为日益增长的信息存储和管理提供了光明的前景,但在这迅速变化的市场上选择适合的解决方案却令人苦恼。很少公司有内部专家能够从这些纷繁的产品择其所需。Marc Farley的这本书从各个集成组件出发,为读者理解和评价存储网络提供了一个综合指导。 存储的传统、趋势及未来 传统的存储和管理方法主要强调限制花费和信息的访问。因此,使用传统的存储管理原则,信息存储量受到极大的限制,甚至存储的积累数据量不超过百天;同时,信息的访问也局限于单个的服务器。 近来的记录技术发展很快,可以用相对低廉的价格实现大量的存储。网络时代正在产生新的应用和新的商业模型,它们不仅要求信息在公司内部共享,也要求在其合作伙伴及用户之间共享。这种挑战已经不再是存储信息的花费,而是寻求合算的管理巨量存储资源的方案,以及使可供访问的数据变成有价值的信息。 随着存储量的持续增长,熟练的存储管理员也变得越来越短缺。因而,传统的存储与管理方案面临着日益增长的数据、信息访问的需求以及管理人才缺乏的挑战,这促进了存储区域网络的发展。这个方案将提供对最广泛的服务器平台、操作系统和应用的支持,事实上,在容量、连接性、性能和可用性等方面,它也有着广阔的发展空间。 存储价格:容量增长的催化剂 国际数据公司(IDC)预言:若按磁盘的每兆字节价格计算,在2003年之前,磁盘存储系统的价格平均每年将下降40%。事实上,不考虑其他的因素,仅考虑新的硬盘驱动器一项,就能得出上述结论,因为磁盘的记录密度每12~18个月就增加一倍。这些价格的下降使公司能够提供更广泛的商业需要,包括企业资源计划、销售自动化、数据仓库、数据市场等。同时,存储价格的下降也加速了信息的数字化,而在过去,许多信息仅能以模拟形式或书写的形式存在,如出版物以及从各种视频和音频应用产生的输出。这些变化导致每年需要新增存储容量达到90%。既然所有这些信息都以数字化形式存在,那么我们每一个人都想享用它们。 网络世界的商业 现在,几乎没有人对网络互联的价值提出什么疑问了,可是在几年前,公司都牢牢地控制存储信息的容量及其访问范围。Internet的出现增强了公司的联网意识,也使公司认识到采取信息保护主义态度的危险,同时,Internet和电子商务模型也带来了不可预测的挑战。 Internet决定了交易时间和地点由顾客决定。在Internet世界,存储总是开放的,而且商业的拥有者完全不能控制潜在的顾客数量,Internet已经成为客户服务的越来越重要的通信手段,受到新增用户极大的青睐,而传统的电话却被大为冷落。 除此之外,Internet也消除了阻挡用户选择供应商的许多壁垒,地理距离的远近概念正在消失。竞争者们容易发现,他们之间的惟一差别就是应用的可用性,因此,应用显示出新的重要意义。 集成方法驱动数据共享 可连接性的大规模增长是发生在公司信息系统的最重大变化之一。越来越多的传统计帐系统正与销售定单处理、库存系统和账单系统连接起来,不仅提高了效率,而且可以支持急剧增长的事务处理量,使系统之间的数据移动和共享的需要巨增。 然而,更为重要的是,公司与其供应商及客户间的集成和连接大规模地增加。历史上,公司尽力限制对系统的访问和保护有价值的信息。但现在公司认识到如果不能提供范围更广阔的系统和信息的访问,将更加危险。 在Internet世界,过去花费数年建设的基础设施现在必须一夜之间完成,对于那些正在加入Internet、电子商务策略的公司,面临的挑战更为严峻,它们要么紧密地将Internet与传统的系统连接在一起,要么就有倒闭的危险。 存储增长及其对员工的影响 存储的爆炸性增长使存储管理面临巨大的挑战,应用和服务器要求更多的数据,因而,也需要更多的存储。每一个应用可能需要不同的存储要求。存储管理员必须面临管理各种不同存储方案的挑战。随着重要应用的扩展,管理这些环境的熟练IT资源却很短缺;事实上,今天对于CIO的主要挑战之一是发现和留住熟练的IT员工。 然而,主要的存储供应商正不断向市场推出新的方案,这些方案可以提供存储的基础设施,由此实现多服务器和多应用间的共享,也使在分立的应用间移动和共享数据更容易。通过集化的管理,管理的花费将大幅度下降,同时,它也提供对容量和性能变化的快速响应能力。通过使用企业级的存储管理方案,公司可以更有效地利用现有的员工。通过新方案的智能化,可以解放员工,以至于他们能集精力处理应用价值的策略问题,而不是数据可用性、容量计划、性能管理等繁琐和重复性的问题。 建设存储区域网络 存储区域网络是一个不断发展的技术,能够为今天的IT管理带来快速的效益。存储区域网络能够提供存储和服务器的统一,以及不受干扰的备份,同时也消除了传统技术的距离限制。此外,与许多传统技术比较,SAN还能大大地改善应用的性能。 1999年末,已经出现几个企业级的SAN方案。现在,各工业组织正在努力消除早期SAN实现存在的互操作性问题,希望提供更广泛的SAN存储和信息管理应用。企业SAN方案必须能够简化繁杂的和重复性的存储管理任务,或者使这些工作完全自动化。至少,这些解决方案必须支持广泛的服务器平台,包括传统的支持办公用的服务器,因此,把存储管理员从兼容性的担忧解放出来。 方案也必须在容量、性能和可用性方面具有可扩展性。虽然每个用户都可能说,他们需要最高级的可用性和性能,但却没有一个愿意为此付出代价;因此,方案必须灵活地提供多种服务。 SAN方案必须提供自管理能力,尤其在错误恢复、数据可用性以及性能管理方面,纠错和失败恢复也是企业存储的关键问题,RAID使存储管理员从由于硬盘失败而引起的数据丢失的担心解脱出来。自动的负载平衡减轻了对存储管理员的管理要求。 数据复制和数据移动正变得越来越重要,通过数据复制、数据共享和数据移动,企业SAN方案也必须在分立的应用之间容易地交换信息。为了提供花费适的应用恢复和容灾,企业的SAN必须提供存储系统间数据拷贝的能力,既可以是本地的,也可以是远程的;既可以是同步的,也可以是异步的。最后,由于备份、应用测以及其他经安排的或未经安排的活动等影响,使应用、系统和数据可用性的持续性的最终目标受到冲击,因此,企业SAN方案必须具有接近即时的瞬间数据拷贝,以减少应用的停止时间。 最后的思考 今天,各公司正面临着信息管理和存储爆炸的挑战,而传统的存储管理方案只能支持单一的应用、服务器和操作系统,仅适合公司最为静态的部分。由于电子商务和变化的客户需求,公司正在经受着巨大的挑战,为了有效的信息管理,必须要有一套新的方案。企业存储系统能够支持多个应用、服务器和操作系统,是一个完备的信息管理解决方案,代表了未来10年支持公司需求的有效方案。SAN满足公司的信息传输需求,提供了网络时代理想的存储与管理方案。 译者序 前言 引言 第一部分 网络存储介绍 第1章 网络存储概述 1 1.1 作为商用价值数据角色的改变 1 1.1.1 建立数据的相对价值 2 1.1.2 大量的流体数据 4 1.2 传统存储方法概述 8 1.2.1 开放系统客户/服务器存储 8 1.2.2 开放系统服务器的数据存储 10 1.2.3 大型机系统的数据 12 1.3 SCSI:开放系统服务器主要I/O路径 技术 14 1.3.1 I/O路径 14 1.3.2 SCSI的起源 15 1.3.3 SCSI的局限性 15 1.4 扩展I/O路径的新的存储连接 16 1.4.1 网络连接存储 17 1.4.2 光纤路径 19 1.4.3 存储区域网络 20 1.5 小结 23 第2章 建立存储I/O路径 24 2.1 认识物理I/O构件 24 2.1.1 系统内存总线 24 2.1.2 主机I/O总线 26 2.1.3 主机I/O控制器 30 2.1.4 I/O总线和网络连接 34 2.1.5 存储设备和子系统 36 2.1.6 介质 40 2.2 SCSI总线集成的可变因素 40 2.3 I/O路径的逻辑成分 44 2.3.1 应用软件 45 2.3.2 操作系统 45 2.3.3 文件系统和数据库系统 46 2.3.4 卷管理器 47 2.3.5 设备驱动程序 49 2.4 组合硬件和软件的I/O“栈” 49 2.5 小结 50 第3章 图解客户/服务器网络从应用到 存储的I/O路径 52 3.1 本地存储的I/O路径 52 3.1.1 工作站的本地I/O 52 3.1.2 本地I/O路径详解 53 3.1.3 网络服务器的本地I/O 60 3.1.4 本地I/O路径的讨论及变化 62 3.2 客户/服务器I/O 65 3.2.1 I/O重定向 65 3.2.2 服务器端的网络I/O 67 3.3 在I/O路径实现设备虚拟化 70 3.4 小结 73 第二部分 建立网络存储应用 第4章 数据保护、可用性及性能的磁盘 镜像 75 4.1 用磁盘镜像保护数据 75 4.2 选择磁盘镜像方案 79 4.2.1 软件镜像 79 4.2.2 外部磁盘子系统的镜像 81 4.2.3 主机I/O控制器镜像 82 4.2.4 使用双主机I/O控制器增强数据保护 83 4.3 使用磁盘镜像获得最大的性能 84 4.3.1 磁带驱动器和磁盘镜像混用时避免 性能问题 85 4.3.2 使用磁盘镜像增加I/O性能 87 4.3.3 安排镜像配置 90 4.4 镜像外部磁盘子系统 91 4.4.1 数据快照 91 4.4.2 校园环境的镜像 94 4.4.3 广域网环境的镜像 96 4.5 存储和网络速度的比较 99 4.6 小结 100 第5章 使用高速缓存及其他技术增 强性能 101 5.1 缓存的更多讨论 101 5.1.1 缓存命和缓存未命 102 5.1.2 缓存与缓冲间的差异 103 5.1.3 磁盘缓存的性能估计 104 5.1.4 磁盘缓存的算法 105 5.1.5 磁盘缓存的组件 111 5.1.6 通过定位优化磁盘缓存 112 5.1.7 存储网络的独立缓存 117 5.1.8 配置缓存 118 5.2 固态磁盘 119 5.2.1 SSD的优越性及使用 119 5.2.2 SSD的局限性 120 5.2.3 非易失SSD 120 5.3 标记命令排队 120 5.3.1 在磁盘驱动器使用智能处理器 121 5.3.2 标记命令排队的效果 122 5.4 I/O路径对系统性能提高的重要性 122 5.5 小结 126 第6章 使用RAID和磁盘子系统增强 可用性和性能 127 6.1 使用RAID的三个原因 127 6.2 RAID的容量和可管理性 128 6.2.1 容量的扩展 128 6.2.2 RAID在管理上的优势 129 6.3 RAID带来的性能增长 130 6.4 RAID的可靠性和可用性优势 133 6.4.1 通过冗余提高数据可靠性 133 6.4.2 电源保护 135 6.4.3 热备用和热交换 138 6.4.4 RAID子系统的内部I/O路径 139 6.5 组织RAID阵列的数据:分区、分块 和分条 142 6.6 校验分块数据 146 6.6.1 使用XOR函数建立校验数据 146 6.6.2 并行访问RAID的校验 149 6.6.3 独立访问RAID的校验 149 6.7 各级RAID的比较 152 6.7.1 RAID咨询委员会 152 6.7.2 RAID 0:分块 153 6.7.3 RAID 1:镜像 154 6.7.4 RAID 2:专有磁盘的并行访问 154 6.7.5 RAID 3:使用专有校验磁盘的 同步访问 154 6.7.6 RAID 4:使用专用校验磁盘的 独立访问 155 6.7.7 RAID 5:使用分布式校验的 独立访问 156 6.7.8 RAID 6:使用双校验的独立访问 158 6.7.9 组合不同级的RAID 160 6.7.10 多层RAID阵列的目标 160 6.7.11 分块和镜像的组合—RAID 0+ 1/RAID 10 161 6.8 RAID功能在I/O路径上的位置 163 6.9 小结 165 第7章 网络备份:存储管理的基础 166 7.1 网络备份构成的分析 166 7.1.1 硬件 166 7.1.2 介质 171 7.1.3 软件 175 7.2 备份 182 7.2.1 备份操作类型 182 7.2.2 备份运行的系统 183 7.2.3 映像备份特例 185 7.3 数据恢复 186 7.3.1 恢复与文件系统和数据库的集成 186 7.3.2 恢复操作类型 187 7.3.3 介质管理对恢复的重要性 188 7.4 备份和恢复安全数据 189 7.5 磁带循环 194 7.5.1 磁带循环的必要性 194 7.5.2 常用的磁带循环模型 195 7.6 备份和恢复存在的问题 199 7.6.1 备份失败的六个原因 199 7.6.2 恢复失败的六个原因 200 7.6.3 管理备份的挑战 201 7.6.4 备份可测问题 202 7.7 小结 204 第三部分 网络存储的访问技术 第8章 SAN和NAS技术的比较 205 8.1 自由的I/O 205 8.2 NAS和SAN的差异 207 8.2.1 文件系统处的分隔 207 8.2.2 NAS 和SAN的软件模型 208 8.2.3 NSA和SAN的硬件差异 209 8.2.4 NAS和SAN的协议差异 209 8.2.5 存储网络的多协议应用 212 8.3 NAS和SAN的实现 213 8.4 术语SAN的使用 215 8.5 小结 216 第9章 SAN设计 217 9.1 开放系统存储技术回顾 217 9.2 基于总线连接的被动存储 218 9.3 SAN 的结构和拓扑 227 9.3.1 点到点SAN 227 9.3.2 交换式SAN 228 9.3.3 环状SAN 229 9.3.4 在I/O路径放置SAN 229 9.3.5 基本SAN结构的变化 232 9.3.6 使用SAN创建可靠的管理系统 235 9.3.7 SAN的主要应用 236 9.3.8 备份 236 9.3.9 存储池 237 9.3.10 数据共享 239 9.3.11 I/O 寻径 240 9.3.12 数据移动器 247 9.3.13 远程存储 248 9.4 建造SAN面临的挑战 249 9.4.1 访问SAN存储所面临的混乱状态 249 9.4.2 兼容性 250 9.5 小结 250 第10章 用SAN实现更好的备份系统 252 10.1 SCSI总线连接备份面临的问题 252 10.2 使用SAN进行备份 254 10.3 SAN备份发展的3个阶段 255 10.3.1 第一阶段:LAN-free,虚拟专有 备份网络 255 10.3.2 第二阶段:集成存储介质 和设备 261 10.3.3 第三阶段:无服务器备份 264 10.3.4 在集成SAN备份使用无服务器 技术 268 10.4 子系统端备份 269 10.5 虚拟磁带 270 10.5.1 虚拟磁带和物理磁带 271 10.5.2 存储网络备份的前景 272 10.6 小结 273 第11章 SAN网络的光纤路径网络 技术 274 11.1 区别SAN和光纤路径网络 274 11.1.1 再谈SAN 274 11.1.2 光纤路径的历史 275 11.2 物理光纤路径网络 275 11.2.1 光纤路径网络端口的地位 276 11.2.2 线缆连接 276 11.3 光纤路径的协议 278 11.4 光纤路径网络的结构 279 11.4.1 光纤路径网络的拓扑结构 279 11.4.2 光纤路径通信的句法 283 11.4.3 节点和端口 284 11.5 服务类型 292 11.5.1 类型1服务 292 11.5.2 类型2服务 293 11.5.3 类型3服务 293 11.6 光纤路径的寻址和命名 294 11.6.1 光纤路径网络名字和地址 元素 295 11.6.2 环初始化 296 11.6.3 光纤路径交换机的分区 297 11.7 光纤路径协议层和串行SCSI 298 11.7.1 FCP映射的独立性 298 11.7.2 以太网上的存储I/O 299 11.8 小结 300 第四部分 NAS设备及其他高级话题 第12章 支持即插即用的存储技术 ——NAS 303 12.1 NAS的起源 303 12.2 专用于存储的设备 303 12.2.1 NAS产品的特性 304 12.2.2 NAS技术的应用 307 12.2.3 NAS装置的实现 309 12.2.4 NAS产品潜在的局限性 312 12.3 网络文件系统和协议 318 12.3.1 桌面客户系统的作用 318 12.3.2 NFS与CIFS访问的比较 319 12.3.3 NFS服务器的CIFS仿真 321 12.4 网络存储的新技术:NASD与OBS 323 12.4.1 OBS 323 12.4.2 NASD 324 12.5 小结 325 第13章 SAN的智能分布与数据 共享 327 13.1 集成在智能存储子系统的处理 能力 327 13.1.1 存储池和卷管理 328 13.1.2 智能后端存储子系统的数据 共享 328 13.2 数据共享的价值 330 13.3 数据共享的空间分配 331 13.4 解决锁定和语义差异 334 13.5 对共享数据使用缓存 336 13.6 可安装的文件系统 338 13.7 小结 346 第14章 从SAN上存取IBM S/390 MVS 大型机数据 347 14.1 大型机I/O系统总图 347 14.1.1 大型机I/O处理 347 14.1.2 ESCON: S/390存储网络 351 14.1.3 从ESCON到FICON 353 14.2 开放系统与大型机存储网络之间的 互联 353 14.3 大型机与开放系统间的数据传输 357 14.4 跨平台数据共享的未来 361 14.5 小结 363 第15章 集群存储及I/O定向 364 15.1 集群服务 364 15.1.1 SAN的含义 364 15.1.2 集群的理由 364 15.1.3 集群的特点 365 15.2 集群通信 370 15.3 InfiniBand I/O路径的介绍 374 15.3.1 对InfiniBand技术的期望 374 15.3.2 InfiniBand与存储网络的集成 376 15.4 小结 377 第16章 在Internet上存储和检索数据 379 16.1 Internet基础存储 379 16.1.1 服务器端的存储需求 379 16.1.2 客户端的Web缓存 386 16.2 在Internet上存储数据 389 16.2.1 Internet存储增长的5个理由 389 16.2.2 存储与处处存储 391 16.2.3 与浏览无关的Internet存储 391 16.2.4 基于Web的存储 393 16.2.5 Internet文件传送技术的比较 396 16.2.6 Internet备份软件及服务 398 16.3 Internet与存储及I/O的集成 401 16.3.1 Internet存储集成的可能性 401 16.3.2 用于Internet存储集成的另一些 技术 403 16.4 小结 405
WEBCRAWLER 网络爬虫实训项目 1 WEBCRAWLER 网 络 爬 虫 实 训 项 目 文档版本: 1.0.0.1 编写单位: 达内IT培训集团 C++教学研发部 编写人员: 闵卫 定稿日期: 2015年11月20日 星期五WEBCRAWLER 网络爬虫实训项目 2 1. 项目概述 互联网产品形形色色,有产品导向的,有营销导向的,也有技术导向的,但是 以技术见长的互联网产品比例相对小些。搜索引擎是目前互联网产品最具技 术含量的产品,如果不是唯一,至少也是其之一。 经过十几年的发展,搜索引擎已经成为互联网的重要入口之一,Twitter联合创 始人埃文•威廉姆斯提出了“域名已死论”,好记的域名不再重要,因为人们会 通过搜索进入网站。搜索引擎排名对于小网站流量来说至关重要。了解搜索 引擎简单界面背后的技术原理其实对每一个希望在互联网行业有所建树的信息 技术人员都很重要。 1.1. 搜索引擎 作为互联网应用最具技术含量的应用之一,优秀的搜索引擎需要复杂的架构 和算法,以此来支撑对海量数据的获取、 存储,以及对用户查询的快速而准确 地响应。 从架构层面,搜索引擎需要能够对以百亿计的海量网页进行获取、 存 储、 处理的能力,同时要保证搜索结果的质量。 如何获取、 存储并计算如此海WEBCRAWLER 网络爬虫实训项目 3 量的数据?如何快速响应用户的查询?如何使得搜索结果尽可能满足用户对信 息的需求?这些都是搜索引擎的设计者不得不面对的技术挑战。 下图展示了一个通用搜索引擎的基本结构。商业级别的搜索引擎通常由很多相 互独立的模块组成,各个模块只负责搜索引擎的一部分功能,相互配合组成完 整的搜索引擎: 搜索引擎的信息源来自于互联网网页,通过“网络爬虫” 将整个“互联网” 的 信息获取到本地,因为互联网页面有相当大比例的内容是完全相同或者近似 重复的,“网页去重”模块会对此做出检测,并去除重复内容。 在此之后,搜索引擎会对网页进行解析,抽取网页主体内容,以及页面包含 的指向其它页面的所谓超链接。 为了加快用户查询的响应速度,网页内容通过 “倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系也会予以 保存。之所以要保存链接关系,是因为这种关系在网页相关性排序阶段是可利 用的,通过“链接分析”可以判断页面的相对重要性,对于为用户提供准确的 搜索结果帮助很大。 由于网页数量太多,搜索引擎不仅需要保存网页的原始信息,还要保存一些 间处理结果,使用单台或者少量的计算机明显是不现实的。 Google等商业搜索 引擎提供商,为此开发了一整套云存储与云计算平台,使用数以万计的普通PCWEBCRAWLER 网络爬虫实训项目 4 搭建了海量信息的可靠存储与计算架构,以此作为搜索引擎及其相关应用的基 础支撑。优秀的云存储与云计算平台已经成为大型商业搜索引擎的核心竞争 力。 以上所述是搜索引擎如何获取并存储海量的网页相关信息。这些功能因为不需 要实时计算,所以可以被看作是搜索引擎的后台计算系统。搜索引擎的首要目 标当然是为用户提供准确而全面的搜索结果,因此响应用户查询并实时提供准 确结果便构成了搜索引擎的前台计算系统。 当搜索引擎接收到用户的查询请求后,首先需要对查询词进行分析,通过与用 户信息的结合,正确推导出用户的真实搜索意图。 此后,先在“Cache系统” 所维护的缓存查找。搜索引擎的缓存存储了不同的搜索意图及其相对应的搜 索结果。如果在缓存找到满足用户需求的信息,则直接将搜索结果返回给用 户。这样既省掉了重复计算对资源的消耗,又加快了整个搜索过程的响应速 度。而如果在缓存没有找到满足用户需求的信息,则需要通过“网页排 序”,根据用户的搜索意图,实时计算哪些网页是满足用户需求的,并排序输 出作为搜索结果。 而网页排序最重要的两个参考因素,一个是“内容相似 性”,即哪些网页是和用户的搜索意图密切相关的;一个是网页重要性,即哪 些网页是质量较好或相对重要的,而这往往可以从“链接分析”的结果获 得。综合以上两种考虑,前台系统对网页进行排序,作为搜索的最终结果。 除了上述功能模块,搜索引擎的“反作弊”模块近年来越来越受到重视。搜索 引擎作为互联网用户上网的入口,对于网络流量的引导和分流至关重要,甚至 可以说起着决定性的作用。因此,各种“作弊”方式也逐渐流行起来,通过各 种手段将网页的搜索排名提前到与其网页质量不相称的位置,这会严重影响用 户的搜索体验。所以,如何自动发现作弊网页并对其给于相应的惩罚,就成了 搜索引擎非常重要的功能之一。 1.2. 网络爬虫 通用搜索引擎的处理对象是互联网网页,截至目前的网页数量数以百万计,所 以搜索引擎首先面临的问题就是如何能够设计出高效的下载系统,将如此海量 的网页数据传送到本地,在本地形成互联网网页的镜像备份。 网络爬虫即扮演 如此角色。 它是搜索引擎及其关键的基础构件。WEBCRAWLER 网络爬虫实训项目 5 网络爬虫的一般工作原理如下图所示:  从互联网网页选择部分网页的链接作为“种子URL”,放入“待抓取URL 队列”;  爬虫从“待抓取URL队列”依次“读取URL”;  爬虫通过“DNS解析” 将读到的URL转换为网站服务器的IP地址;  爬虫将网站服务器的IP地址、通信端口、网页路径等信息交给“网页下载” 器;  “网页下载”器负责从“互联网”上下载网页内容;  对于已经下载到本地的网页内容,一方面将其存储到“下载页面库” ,等 待建立索引等后续处理,另一方面将其URL放入“已抓取URL队列”,后者显 然是为了避免网页被重复抓取;  对于刚刚下载到本地的网页内容,还需要从“抽取URL”;  在“已抓取URL队列”检查所抽取的URL是否已被抓取过;  如果所抽取的URL没有被抓取过,则将其排入“待抓取URL队列” 末尾,在 之后的抓取调度重复第步,下载这个URL所对应的网页。 如此这般,形成WEBCRAWLER 网络爬虫实训项目 6 循环,直到“待抓取URL队列”空,这表示爬虫已将所有能够被抓取的网页尽 数抓完,完成一轮完整的抓取过程。 以上所述仅仅是网络爬虫的一般性原理,具体实现过程还可以有很多优化的 空间,比如将“网页下载”以多线索(进程或线程)并发的方式实现,甚至将 “DNS解析”也处理为并发的过程,以避免爬虫系统的I/O吞吐率受到网站服 务器和域名解析服务器的限制。而对于“已抓取URL队列”则可以采用布隆排 重表的方式加以优化,以降低其时间和空间复杂度。 2. 总体架构 本项目总体架构如下图所示: 配置器 Configurator 超文本传输协议响应 HttpResponse 日志 Log 主线程 main 多路输入输出 MultiIo 插件管理器 PluginMngr 套接字 Socket 字符串工具包 StrKit 统一资源定位符队列 UrlQueues 网络爬虫 WebCrawler 原始统一资源定位符 RawUrl 超文本传输协议响应包头 HttpHeader 域名解析线程 DnsThread 解析统一资源定位符 DnsUrl 接收线程 RecvThread 布隆过滤器 BloomFilter 哈希器 Hash 最大深度插件 MaxDepth 域名限制插件 DomainLimit 超文本传输协议响应包头过滤器插件 HeaderFilter 超文本标记语言文件存储插件 SaveHTMLToFile 图像文件存储插件 SaveImageToFile 发送线程 SendThreadWEBCRAWLER 网络爬虫实训项目 7 2.1. 基础设施 2.1.1. 字符串工具包(StrKit) 常用字符串处理函数。 2.1.2. 日志(Log) 分等级,带格式的日志文件打印。 2.1.3. 配置器(Configurator) 从指定的配置文件加载配置信息。 2.1.4. 多路输入输出(MultiIo) 封装epoll多路I/O系统调用,提供增加、删除和等待操作接口。 2.1.5. 插件管理器(PluginMngr) 加载插件并接受其注册,维护插件对象容器并提供调用其处理函数的外部接 口。 2.2. 网络通信 2.2.1. 哈希器(Hash) 封装各种哈希算法函数。 2.2.2. 布隆过滤器(BloomFilter) 基于布隆算法,对欲加入队列的原始统一资源定位符进行过滤,以防止已被抓 取过的URL再次入队,降低冗余开销同时避免无限循环。 2.2.3. 原始统一资源定位符(RawUrl) 提供原始形态的统一资源定位符字符串的简单包装,以及规格化等辅助支持。 2.2.4. 解析统一资源定位符(DnsUrl) 将原始形态的统一资源定位符字符串,解析为服务器域名、资源路径、服务器 IP地址,乃至服务器通信端口等。WEBCRAWLER 网络爬虫实训项目 8 2.2.5. 统一资源定位符队列(UrlQueues) 封装原始统一资源定位符队列和解析统一资源定位符队列,提供线程安全的入 队、出队操作,通过统一资源定位符过滤器排重,同时支持基于正则表达式的 统一资源定位符抽取功能。 2.2.6. 套接字(Socket) 发送/接收超文本传输协议请求/响应,发送成功将套接字描述符加入多路I/O, 接收成功抽取统一资源定位符压入队列。 2.2.7. 超文本传输协议响应包头(HttpHeader) 状态码和内容类型等关键信息。 2.2.8. 超文本传输协议响应(HttpResponse) 服务器统一资源定位符和超文本传输协议包头、包体及长度的简单封装。 2.3. 流程控制 2.3.1. 域名解析线程(DnsThread) 从原始统一资源定位符队列弹出RawUrl对象,借助域名解析系统(DNS)获 取服务器的IP地址,构造DnsUrl对象压入解析统一资源定位符队列。 2.3.2. 发送线程(SendThread) 通过WebCrawler对象启动新的抓取任务,从解析统一资源定位符队列弹出 DnsUrl对象,向HTTP服务器发送HTTP请求,并将套接字描述符放入MultiIo 对象。 2.3.3. 接收线程(RecvThread) 由WebCrawler对象在从MultiIo对象等到套接字描述符可读时动态创建,通 过Socket对象接收超文本传输协议响应。WEBCRAWLER 网络爬虫实训项目 9 2.3.4. 网络爬虫(WebCrawler) 代表整个应用程序的逻辑对象,构建并维护包括日志、配置器、多路I/O、插件 管理器、统一资源定位符队列、域名解析线程等在内的多个底层设施,提供诸 如初始化、执行多路输入输出循环、启动抓取任务等外部接口。 2.3.5. 主线程(main) 主函数,处理命令行参数,初始化应用程序对象,进入多路I/O循环。 2.4. 外围扩展 2.4.1. 最大深度插件(MaxDepth) 根据配置文件的MAX_DEPTH配置项,对被抓取超链接的最大递归深度进行限 制。 2.4.2. 域名限制插件(DomainLimit) 根据配置文件的INCLUDE_PREFIXES和EXCLUDE_PREFIXES配置项,对被抓取 超链接的前缀进行限制。 2.4.3. 超文本传输协议响应包头过滤器插件(HeaderFilter) 根据配置文件的ACCEPT_TYPE配置项,对超文本传输协议响应的内容类型进行 限制。 2.4.4. 超文本标记语言文件存储插件(SaveHTMLToFile) 将用超文本标记语言描述的页面内容保存到磁盘文件。 2.4.5. 图像文件存储插件(SaveImageToFile) 将页面内容引用的图像资源保存到磁盘文件。 3. 工作流程 3.1. 主事件流 进程入口函数在进行必要的命令行参数处理和系统初始化以后,进入网络爬虫 的多路输入输出循环,一旦发现某个与服务器相连的套接字有数据可读,即创WEBCRAWLER 网络爬虫实训项目 10 建接收线程,后者负责抓取页面内容,而前者继续于多路输入输出循环等待 其它套接字上的I/O事件。 3.2. 解析事件流 独立的域名解析线程实时监视原始统一资源定位符队列的变化,并将其的每 一条新近加入的原始统一资源定位符,借助域名解析系统转换为解析统一资源 定位符,并压入解析统一资源定位符队列。 3.3. 发送事件流 不断从解析统一资源定位符队列弹出解析统一资源定位符,创建套接字,根据 服务器的IP地址和通信端口发起连接请求,建立TCP连接,发送超文本传输协 议请求包,并将套接字放入多路输入输出对象,由主事件流等待其数据到达事 件。 3.4. 接收事件流 每个超文本传输线程通过已明确有数据可读的套接字接收来自服务器的超文本 传输协议响应,并交由统一资源定位符队列进行超链接抽取和布隆排重过滤, 直至压入原始统一资源定位符队列。在压入原始统一资源定位符队列之前,以 及接收到超文本传输协议包头和包体之后,分别执行统一资源定位符插件、超 文本传输协议包头插件和超文本标记语言插件的处理过程。 以上四个事件流,需要平行且独立地并发运行,并在共享资源和执行步调上保 持适度的同步。 4. 目录结构 本项目的目录结构如下所示: WebCrawler/ ├── bin/ │ ├── WebCrawler │ ├── WebCrawler.cfg │ └── WebCrawler.scr ├── docs/ │ ├── 概要设计.pdfWEBCRAWLER 网络爬虫实训项目 11 │ └── 详细设计.pdf ├── download/ ├── plugins/ │ ├── DomainLimit.cpp │ ├── DomainLimit.h │ ├── DomainLimit.mak │ ├── DomainLimit.so │ ├── HeaderFilter.cpp │ ├── HeaderFilter.h │ ├── HeaderFilter.mak │ ├── HeaderFilter.so │ ├── MaxDepth.cpp │ ├── MaxDepth.h │ ├── MaxDepth.mak │ ├── MaxDepth.so │ ├── SaveHTMLToFile.cpp │ ├── SaveHTMLToFile.h │ ├── SaveHTMLToFile.mak │ ├── SaveHTMLToFile.so │ ├── SaveImageToFile.cpp │ ├── SaveImageToFile.h │ ├── SaveImageToFile.mak │ ├── SaveImageToFile.so │ └── mkall └── src/ ├── BloomFilter.cpp ├── BloomFilter.h ├── Configurator.cpp ├── Configurator.h ├── DnsThread.cpp ├── DnsThread.h ├── Hash.cpp ├── Hash.h ├── Http.h ├── Log.cpp ├── Log.h ├── Main.cpp ├── Makefile ├── MultiIo.cpp ├── MultiIo.h ├── Plugin.h ├── PluginMngr.cpp ├── PluginMngr.h ├── Precompile.h ├── RecvThread.cpp ├── RecvThread.h ├── SendThread.cpp ├── SendThread.h ├── Socket.cpp ├── Socket.hWEBCRAWLER 网络爬虫实训项目 12 ├── StrKit.cpp ├── StrKit.h ├── Thread.cpp ├── Thread.h ├── Url.cpp ├── Url.h ├── UrlFilter.h ├── UrlQueues.cpp ├── UrlQueues.h ├── WebCrawler.cpp └── WebCrawler.h 其bin目录存放可执行程序文件、启动画面文件和配置文件,docs目录存放 项目文档,download目录存放爬虫下载的网页文件和图像文件,plugins目录 存放扩展插件的源代码和共享库文件,src目录存放项目主体部分的源代码文 件。 在教学环境下,以上目录结构可分别放在teacher和student两个子目录。其 teacher目录包含完整的程序源码和资料文档,以为学生开发时提供参考和借 鉴。 student目录的源代码是不完整的,部分类或者函数的实现只给出了基 本框架,但代码的注释和teacher目录下对应的部分完全相同,其缺失的内 容,需要学生在理解整体设计思路和上下文逻辑的前提下予以补全。需要学生 参与补全的源代码文件详见开发计划。 5. 开发计划 本项目拟在四个工作日内完成: 工作日 模块 子模块 代码文件 第一天 基础设施 预编译头 Precompile Precompile.h 字符串工具包 StrKit StrKit.h StrKit.cpp 日志 Log Log.h Log.cpp 配置器 Configurator Configurator.h Configurator.cppWEBCRAWLER 网络爬虫实训项目 13 多路输入输出 MultiIo MultiIo.h MultiIo.cpp 插件接口 Plugin Plugin.h 插件管理器 PluginMngr PluginMngr.h PluginMngr.cpp 第二天 网络通信 哈希器 Hash Hash.h Hash.cpp 统一资源定位 符过滤器接口 UrlFilter UrlFilter.h 布隆过滤器 BloomFilter BloomFilter.h BloomFilter.cpp 原始统一资源定位符 RawUrl Url.h 解析统一资源定位符 DnsUrl Url.cpp 统一资源定位符队列 UrlQueues UrlQueues.h UrlQueues.cpp 套接字 Socket Socket.h Socket.cpp 超文本传输协 议响应包头 HttpHeader Http.h 超文本传输协议响应 HttpResponse 第三天 流程控制 线程 Thread Thread.h Thread.cpp 域名解析线程 DnsThread DnsThread.h DnsThread.cpp 发送线程 SendThread SendThread.h SendThread.cppWEBCRAWLER 网络爬虫实训项目 14 接收线程 RecvThread RecvThread.h RecvThread.cpp 网络爬虫 WebCrawler WebCrawler.h WebCrawler.cpp 主线程 main Main.cpp 构建脚本 Makefile Makefile 第四天 外围扩展 最大深度插件 MaxDepth MaxDepth.h MaxDepth.cpp MaxDepth.mak 域名限制插件 DomainLimit DomainLimit.h DomainLimit.cpp DomainLimit.mak 超文本传输协议响 应包头过滤器插件 HeaderFilter HeaderFilter.h HeaderFilter.cpp HeaderFilter.mak 超文本标记语言 文件存储插件 SaveHTMLToFile SaveHTMLToFile.h SaveHTMLToFile.cpp SaveHTMLToFile.mak 图像文件存储插件 SaveImageToFile SaveImageToFile.h SaveImageToFile.cpp SaveImageToFile.cpp 构建脚本 mkall mkall 其被突出显示的代码文件,包含需要学生添加的内容,注意源文件形 如“// 此处添加代码”的注释。WEBCRAWLER 网络爬虫实训项目 15 6. 知识扩展 为了能在实训环节,进一步强化学生独立思考、独立解决问题的能力,本项目 有意涵盖了一些前期课程不曾涉及或只作为一般性了解的知识和技巧。具体 包括:  预编译头文件  std::string  变长参数表  基于epoll的多路I/O  哈希算法和布隆表  URL、 DNS、 HTTP和HTML  正则表达式  线程封装  精灵进程和I/O重定向  Makefile 对于上述内容,建议项目指导教师根据学生的接受能力,结合项目的具体应 用,在项目正式启动之前,先做概要性介绍,同时提供进一步详细学习和研究 的线索,包括man手册、参考书、网络链接或其它媒体资源,尽量让学生通过 自己的实践和探索找到解决问题的方法,这才是项目实训的意义所在!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值