爬虫基础入门理论篇(下)

      最后更新:2022-07-02 16:38:02 手机定位技术交流文章

      网络基础

      2.1.网络协议

      2.1.协议是什么?

      协议可以被理解为“规则”,这些规则是数据传输和数据解释的规则。

      2.1.2.OSI七级参考模型

      1. 物理层:可以理解我们的网络线,并进行位流传输
      2. 数据链层:可以理解计算机的网络卡,网络卡的驱动器可以提供媒体访问,网络管理等。
      3. 网络层:网络卡可以为网络地址和路由选项设置IP地址
      4. 传输层:可以想象为计算机内部的应用程序,建立一个主机到主机连接
      5. 会议层:建立、维护和管理会议
      6. 显示层: 处理数据格式, 数据加密等.
      7. 应用程序层:提供应用程序之间的通信

      例:小明和小红使用qq软件重新解释 osi7模型

      小明在qq软件中给小红的头发“问候”

      数据封装

      • KOMing_application layer:向KOMing发送的问候数据,加上应用程序层头部:应用程序层数据协议单元
      • 小明显示层:不关心顶层的数据格式,将整个应用程序层的数据放在一个封筒中,加上显示层的数据头
      • Ming_message层:将消息层标题添加到顶层的数据,并封印
      • Ming_Transmission Layer:将上层的数据与传输层标题相连
      • Ming_Network Layer:通过添加网络层标题覆盖顶层的数据
      • 数据连结层:顶层数据与数据连结层头部相连;网络层数据也与数据连结层头部相连,形成最终传输数据
      • Ming_Physical Layer: 发送到交换器

      交换机: 发送到路由器

      路由器:向小红色发送的物理层

      数据解封装

      • 小红物理层:截获小梅传输的数据并将其传递到数据链层
      • Red_Data Chain Layer: 丢失红色数据的数据帧的头部, 进行数据校正, 数据无问题地变为红色, 数据完成, 数据转移到网络层
      • 小红网层:与数据链层分离并转移到顶层
      • 小红传输层:与数据链层分离并转移到顶层
      • Red_Conversation层:解压缩并通过数据链层到顶层
      • 小红指示层:与数据链层一起解耦并转移到顶层
      • Small Red_Apply层:用数据链层解码,小红色看到"hello"

      2.1.3.TCP/IP模型

      TCP/IP协议堆栈,TCP/IP协议继承了互联网上的ISO模型,有些人说是四层,有些人说是五层,第四层是不计数物理层,无论哪一个,这不冲突,都可以。

      图表显示,比tcp/ip相比,表示层和对话层较小

      TCP/IP层实现的协议

      • 应用层:
        • HTTP: Hypertext Transfer Protocol(英语:Hypertext Transfer Protocol)是基于TCP的协议,使用80端口,用于将HTTP服务器的超文本传输到本地浏览器。
        • SMTP:基于TCP的简单邮件传输协议,使用25端口,由源地址发送邮件到目的地地址的规则,控制邮件的发送和传输;例如QQ邮箱,是使用协议
        • FTP:基于TCP的文件传输协议,通常通过FTP服务上传和下载,数据端口为20,控制端口为21
        • 电话网:远程登录协议,基于TCP,使用23号端口,它是互联网远程登录服务的标准协议和主要模式.提供用户在本地计算机上执行远程主机工作的能力。使用端口用户计算机上的 telnet 程序连接到服务器.使用明码传送,保密性差、简单方便
        • DNS:域名分析,基于UDP,使用53端口提供域名转换到IP地址
        • SSH:基于TCP的安全接口协议,使用22端口建立基于应用程序层和传输层的安全的协议。 SSH目前是一种更可靠的协议,为远程登录对话和其他网络服务提供安全
      • 传输层: TCP:传输控制协议。面向连接、可靠和基于字节流的传输层协议UDP:用户数据报告协议。不连接的通信协议,不可靠、基于报告的传输层通信协议SCTP:交通传输控制协议。一个面向连接的流传输协议;可以视为一个升级的TCP:多路径传输控制协议。TCP的多路径版本。尽管SCTP在开头两端有多个路径,但在实践中,这只是一条路径转移,当路径失败时,不需要断开连接,相反,他们转向其他路径。MPTCP实现了多路径并行传输的现实意义,在连接建立阶段,建立多条路径,然后使用多个路径同时传输数据
      • 网络层: IP: 互联网协议.通过路由选择向接口层传递下一个IP包。IP Data Reporting(英语:IP Data Reporting)是一种无连接的服务,称为ICMP: Internet Control Reporting Protocol(英语:Internet Control Reporting Protocol)。是对网络层的补充。用于传输P主机与路由器之间的控制信息,确定网络是否不可访问,主机是否可访问,路由器是否可用,等等;这是cmd窗口 ping地址使用的协议。通过目标设备的IP地址,查询目标设备的MAC地址,确保通讯顺利进行;常用于交换路由器的RARP:逆地址分析协议

      2.2.HTTP协议细节

      2.2.1.HTTP

      HTTP协议(英语:HTTP protocol),又称超文本传输协议,是互联网上最广泛使用的网络协议,它基于TCP应用程序层协议;

      这是客户端与服务器通信的规则,它的模式非常简单:客户端启动请求,服务器响应请求。

      2.2.2.版本分配

      • HTTP于1991年首次发布,0.version 9,但现行版本已不再使用
      • HTTP/1.0于1996年5月发布,引入了许多功能,并仍在使用
      • HTTP/1.1,于1997年1月发布,是目前最受欢迎的版本,默认为永久连接
      • HTTP/2于2015年5月发布,引入了许多功能,如服务器传送,是最新的版本。

      2.2.3.HTTP请求

      • 请求行:包含请求方法、请求地址和HTTP协议版本
      • 消息标题:包含一系列键值对
      • 请求常规表达式(可选):在注释和消息标题之间有一个空行

      2.2.4.HTTP请求方法

      • GET:从服务器获取指定资源(请求地址)的信息,通常只用于阅读数据,并不会修改资源,就像数据库查询一样
      • POST:向指定的资源提交数据(例如提交表格、上传文件)并请求服务器处理数据。 数据包含在请求的原始文本中,可以创建新的资源或更新现有资源
      • PUT:要求服务器通过指定资源的唯一标识符创建或更新资源(服务器上的特定存储位置)
      • 删除:请求服务器删除指定资源
      • 头部:与GET方法类似,从服务器中检索资源信息,与GET方法不同,顶部不包含显示数据,只是HTTP头条。HEAD的优点是,该方法无需传输所有内容,可以获取资源的源信息(或元数据)
      • 选项:此方法允许服务器返回资源支持的所有HTTP请求方法;一个简单的理解是查看服务器支持哪些HTTP请求方法

      2.2.5.HTTP响应

      • 状态行:包含HTTP协议版本、状态代码和状态描述,由空间分隔
      • 响应头条:即包含一系列关键值对的消息头条
      • 答复句子: 返回内容, 注意头和答复之间有空行

      2.2.6.HTTP响应状态代码

      • 1XX消息:服务已收到请求并继续处理
      • 200:OK 201:Created 202:Accepted Received 203:Non-Authoritative Information Non-Authoritative Information 204:No Content
      • 301:移动永久请求永久请求 302:移动逝世请求临时请求 304:未修改的文件未修改,直接缓存的文件 305:使用代理使用代理
      • 4XX请求错误:请求包含此方法错误或不能执行400:错误请求无法由401服务器理解: 未经授权请求未经授权.该状态代码必须与 WW-Authenticate头条域一起使用,以接收403:禁止服务器的请求,但是拒绝提供服务。服务器通常会在响应文404中给出不提供服务的原因:没有找到请求资源不存在,例如,输入错误的URL
      • 5XX服务器错误:服务器在处理正确的请求时发生错误500:内部服务器错误服务器发生意外的错误,503:服务无法提供服务器目前无法处理客户端请求,在一段时间之后,服务器将恢复到正常504:门户休息时间

      2.3.分析HTTP数据流的传输过程

      用经典的面试问题作为缩写来解释:

      请总结:从客户端打开浏览器到返回页面的服务器的中间过程

      2.3.1.宏观分析

      1)在客户端上,打开浏览器,在浏览器地址栏中输入ww。

      2)点击网站并按车后,以下将发生:浏览器首先将尝试从主机文件.Baidu.com/相应的IP地址获取http://ww,如果可用,直接使用主机文件的分析结果;主机文件位于本地C:WindowsSystem32driversetc目录中

      3)如果无法找到主机文件,则将使用DNS协议获取IP。 在DNS协议中,电脑在请求DNS服务器后,会要求你的本地DNS提供帮助,并接收百度IP

      然后,浏览器请求相应的网络服务器的IP地址,网络服务器接收客户端的请求并响应,将请求的内容返回到客户端浏览器中

      5)如果服务器正常运行,请给予“OK”状态代码为200,您所需的数据将被发送给您。你收到服务器的答复,文本以HTML格式。浏览器必须能够理解文本内容,并快速渲染到屏幕上,渲染出来后,你可以看到百度的头版

      2.3.2.微观分析

      1)域名分析:与宏观分析一样,搜索本地主机文件;无法找到,PC请求本地DNS帮助;最后获取域名IP

      2)建立连接:

      TCP Triple Handle:双向连接确认过程

      • 步骤-1监控:首先客户端和服务器服务端处于LISTEN监控状态
      • 客户端告诉服务器我要访问你,完成第一个握手;客户将发送一个TCPSYN,和标记为1的包;同时指出客户端与服务器连接的端口;并发送后,客户端输入SYN_SYNSEND状态;并完成第一个握手
      • 步骤-3第二次握手:服务器告诉客户端我收到了SYN数据包,你的内容是SYN=1,并返回ACK=1数据包,和客户端的SYN=1和包到客户端;同时服务端从Listan状态转到SYN_RCVD状态;完成第二次握手
      • 步骤-4客户端向服务器发送ACK:客户端再次访问服务器并发送ACK=1确认包,以确认服务器是否同意确认。
      • 第五步第三手握(服务结束):
        • 服务器接收客户端发送的ACK=1数据包,并在确认正确后输入相同的STABLISHED状态;
        • 完成第三次握手

      3)发送HTTP请求:通过宏分析,客户端发送获取或发送请求;服务器通常会返回200,OK,并返回您所需的HTML文本;客户端分析,渲染,并显示服务器提供的 heml文本

      4)断开连接:

      TCP四波:双向切断确认

      • 客户端告诉服务器请求已经发送。我想和你断绝联系。不能发送任何数据,但在服务端,你可以向我发送数据,我也可以接收数据;客户将发送一个TCP端口,并且标志位为1的这样一个数据包;告诉服务端我已经不能发送任何数据,但是,我仍能收到数据,发送后,客户端输入 FIN_WAIT_1状态并完成第一波
      • 步骤-2第二波(服务端):服务端确认客户端的 FIN数据包,返回ACK=1数据包,指示我收到客户要求关闭连接的请求,但在这方面,我还没有准备好关闭整个连接;服务端进入CLOSE_WAIT状态;完成第二次握手
      • 步骤-3 客户端接收ACK并等待服务器关闭连接: 客户端接收ACK=1数据包发送到服务端口,并更改客户端状态为 FIN_WAIT_2;并等待服务器关闭连接
      • 第四步第三波(服务结束):
        • 服务器向客户端发送一个 FIN=1数据包,表明我能够关闭连接,并且响应数据已经发送。
        • 服务端状态更改为LAST_ACK;等待客户发送ACK确认包
      • 步骤-5第四波(客户端):客户端接收到服务器可以关闭的Fi数据包,并向服务器发送ACK=1数据包;告诉服务器没有问题,您关闭连接客户端状态被更改为Time_WAIT;
      • 步骤-6服务端关闭连接:服务端收到给客户发送的ACK=1确认包后,关闭连接;服务端状态更改为CLOSED

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29026.html

          热门文章

          文章分类