002.Python爬虫系列_初识协议
我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈
初识协议
- 初识协议
- 协议概念
- 通讯规范
- 背景
初识协议
协议概念
- 网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则、标准和规范的集合
- 用于确保网络中的设备能够相互理解和通信,实现数据的传输和共享
- 那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的"协议"就能够实现通信
- 大多数网络都是采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽
- 客户端通过URL访问服务器,这个仅仅是一个表象,底层原理并不是这么简单
- 比如
- 客户端可能有谷歌浏览器、火狐浏览器、360浏览器等,那么服务器怎么获取到这些信息呢?
- 客户端访问时候的host信息,服务器又如何获取?
- 客服端数据请求方式get还是post,服务器又如何获取?
- …
- 这些信息,我们不可能全部通过URL来传递,那么就需要通过一个附加数据的形式进行传递
- 此时,数据传递就涉及到传递的具体格式,服务器才能把接收到的数据根据具体的格式进行解析
- 所以,我们就对客户端和服务器之间的通讯进行规范
- 例如:
- 假如我们规定数据传递的具体格式为字典
- 那么,我们就要确定每个信息对应的key,客户端根据固定的key进行传值
method: get # 请求方式 host: www.baidu.com # host信息 user-agent: Chrome # 浏览器信息 . . .
- 网络协议的作用
- 确保数据传输和共享的稳定性和可靠性,它规定了数据的格式、传输方式和通信规则,使得设备之间能够正确的接收和发送数据。
- 同时,网络协议还有错误检测和纠正功能,能够确保数据的完整性和准确性
- 网络协议分类
- TCP/IP协议,是一种传输层协议。用于实现互联网中数据的传输和路由
- HTTP协议,是一种应用层协议。用于web浏览器和web服务器之间的通信
- FTP协议,是一种文件传输协议。用于在网络中传输文件
- SMTP协议,是一种电子邮件传输协议。用于在网络中传输电子邮件
- …
通讯规范
背景
-
从一台计算机传递数据到另一台计算机,需要很多步骤
- 1、准备好需要传输的数据
- 2、如果数据包比较大,对数据包进行拆分和编号
- 3、对每个数据包,包装IP地址
- 4、将数据转换成电子信号进行传递
-
每个步骤的数据都是有固定的格式规范,这些约定俗成的规范统称为"协议";
-
而在所有步骤中的协议集合称为"TCP/IP协议栈"(是一个协议栈,由很多相关协议组成,并非是某一个单独协议)
-
将这些步骤按照层次划分, TCP/IP协议模型可以分为四层
- 应用层:规定应用程序之间数据交互的规范(常见协议:HTTP、TFTP、FTP、NFS、WAIS、SMTP等)
- 传输层:将大数据进行分解编号,保证数据传输到达<超时重传,丢包重传>(常见协议:TCP、UDP)
- 网络层:地址管理和路由选择(常见协议:IPv4、IPv6)
- 网络接口层:数据帧和比特流进行转换,比特流和电子信号进行转换
- TCP/IP四层模型是参照原本的OSI七层模型实施的。如图
-
数据经过这四层会进行层层包装和解包
-
我们的关注点应该是:应用层(掌握)+传输层(了解)
-
应用层(HTTP)
- 开发应用程序,大部分只需要关注这一层
- 应用层协议着重学习HTTP协议,绝大多数的web开发,都是构建在HTTP协议之上的web应用
-
传输层(TCP和UDP)
-
TCP与UDP对比
-
关于面相连接
-
传输层,主要是在发送方和接收方直接建立一条通道,保证后续的数据包传递
-
TCP协议是面相连接,在一开始就会确定一条通道(1——2——3——5——8),后续所有的数据包全部都按这一条通道线路传输
-
UDP协议是无连接,每一次的数据包传输的通道都不固定,每一次的传输通道都可能不同,是不确定的。
-
数据传输可靠性
-
TCP协议,客户端每次传输数据包给服务器之后,服务器都要回传信息给客户端,告诉客户端有没有接收成功,成功之后再继续传下一个数据包
-
UDP协议,客户端每次传输数据包给服务器,服务器不会回传信息给客户端,传了一个数据包之后继续传下一个数据包
-
所以UDP传输效率更高,但是TCP传输更可靠(会确保服务器收到)
-