接上文Python开发从零开始-48.1-网络编程,本文小编与大家分享 Python 网络编程的相关知识。
(四)通信协议
通信协议(或网络协议)是为了在网络中不同设备之间进行数据通信而预先制定的一整套通信双方共同遵守的格式和约定。它的存在与否是计算机网络与一般计算机互连系统的根本区别。不同的计算机网络使用不同的通信协议,如开放系统互连(OSI)协议、X.25 协议等。
1、网络协议的组成要素
网络协议由语义、语法和时序三个要素组成。
语义,解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应;
语法,用户数据与控制信息的结构与格式,以及数据出现的顺序;
时序,对事件发生顺序的详细说明。
可以形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
2、网络协议的分层模型
为了降低网络设计的复杂度,绝大多数网络协议都采用分层的“协议栈”架构,最具代表性的有两类:
ISO( International Organization for Standardization,国际标准化组织)提出的 OSI(Open System Interconnect,开放式系统互连)七层模型,自下而上分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,它是网络协议设计的理论参考框架;
实际互联网广泛使用的 TCP/IP 四层模型,自下而上分为网络接口层、网际层、传输层、应用层,每一层都调用下层提供的服务,同时为上层提供通信支持,层与层之间相互独立又协同工作。
ISO/OSI 模型和 TCP/IP 模型的大致对应关系如下图所示:

OSI 模型理论比较系统全面,对具体实施有一定的指导意义,但是与具体实施还有很大的差别,要完整地实现 OSI 模型所规定的所有功能是非常困难的;TCP/IP 模型是在实践中逐步发展而来的,但缺乏统一的规划,层次划分并不十分清晰和确定,在今后的发展过程中还会有所调整。
3、常见 TCP/IP 协议
TCP/IP 模型是网络实际应用模型,在此模型基础上形成了庞大的协议族(TCP/IP 协议族),下面简单介绍常用协议:
(1)应用层协议
直接面向用户提供各类网络服务,它是日常上网接触最频繁的协议:
HTTP/HTTPS:用于网页内容传输,HTTPS 是加密版本,保障浏览数据安全;
FTP:专门用于文件的上传与下载传输;
SMTP:负责电子邮件的发送投递;
DNS:实现域名到 IP 地址的解析转换,让用户无需记忆复杂数字地址;
DHCP:自动为联网设备分配 IP 地址,省去手动配置的繁琐;
SSH:提供安全的远程登录服务,加密传输避免信息泄露。
(2)传输层协议
负责端到端的应用程序间数据传输,核心分为两类:
TCP:面向连接的可靠协议,通过三次握手、重传机制保障数据完整有序送达,适用于网页、邮件等对可靠性要求高的场景;
UDP:无连接的轻量协议,传输速度快但不保证数据必达,适用于视频直播、DNS 查询等对实时性要求高的场景。
(3)网际层协议
处理跨网络的数据包路由与寻址,它是互联网互联互通的核心:
IP:协议族核心,为每台联网设备分配唯一 IP 地址,负责数据包的跨网络转发寻址;
ICMP:用于网络诊断与差错报告,日常使用的 ping 命令就是基于该协议实现;
IGMP:用于管理 IP 多播组的成员,支撑视频直播等组播类业务。
(4)网络接口层协议
负责物理链路层面的数据帧传输:
ARP:将 IP 地址解析为设备的物理 MAC 地址,保障同一局域网内的设备通信;
Ethernet:以太网协议,是当前有线局域网最主流的底层通信标准;
PPP:点对点通信协议,早期广泛应用于拨号上网等场景。
受文章篇幅所限,下文将继续介绍 Python 网络编程的相关知识。