Python网络编程之网络与通信介绍
本文系统梳理计算机网络核心架构与通信机制,详解OSI七层与TCP/IP四层模型、IP地址分类与私有网段配置、域名解析及端口划分。重点剖析TCP协议的三次握手与四次挥手流程,并对比UDP的高性能与无连接特性,为后续Python网络编程开发奠定底层理论基础。
计算机网络基础与通信协议原理
计算机网络通过通信线路互联分布在不同地区的计算机与外部设备,实现资源共享、信息传输与集中处理。按地理覆盖范围可划分为:
- 局域网(LAN):覆盖范围小,延迟低,可靠性高。
- 城域网(MAN):覆盖城市范围,提供高速信息服务。
- 广域网(WAN):覆盖地域广,不等于互联网。因特网(Internet)是最大的广域网实例。
国际标准组织(ISO)提出的OSI参考模型将网络分为7层(自下而上),作为结构设计的参考标准:
- 物理层:数据与硬件信号转换。
- 数据链路层:数据打包/解包与链路传递。
- 网络层:子网间路由选择。
- 传输层:数据分段与端到端控制。
- 会话层:建立、管理与终止会话。
- 表示层:数据格式转换与加密压缩。
- 应用层:为应用程序提供服务接口。
TCP/IP四层模型与常用应用层协议
实际互联网广泛采用TCP/IP四层模型,包含网络接口层、网络层、传输层与应用层。该模型将OSI的物理层与数据链路层合并为网络接口层:
- 应用层:支持HTTP、HTTPS、DNS、FTP等协议。
- 传输层:负责TCP(可靠连接)与UDP(无连接)数据传输。
- 网络层:核心为IP协议,辅以ICMP/IGMP。
- 网络接口层:处理局域网/广域网的物理介质访问。
在应用层中,HTTP与HTTPS最为常见:
- HTTP:超文本传输协议,默认TCP 80端口,采用明文传输,响应速度较快。
- HTTPS:超文本传输安全协议,基于SSL/TLS加密技术,默认TCP 443端口,保障数据传输安全。
域名用于替代记忆困难的IP地址进行位置寻址。DNS负责将域名解析为对应的IP地址,完成逻辑位置到物理网络的映射。
IP地址规划与端口管理
IP地址由32位二进制组成,分为网络ID与主机ID两部分。查看本机IP的命令如下:
- Windows系统:
ipconfig - macOS/Linux系统:
ifconfig或ip addr
IPv4地址主要分类及范围:
- A类:首字节以0开头,范围 1.0.0.0 ~ 126.255.255.254,单网段主机数约1677万。
- B类:首字节以10开头,范围 128.0.0.0 ~ 191.255.255.254,单网段主机数约6.5万。
- C类:首字节以110开头,范围 192.0.0.0 ~ 223.255.255.254,单网段主机数254。
- D类:多点广播地址,范围 224.0.0.0 ~ 239.255.255.254。
- E类:保留实验用途,范围 240.0.0.0 ~ 255.255.255.254。全1(255.255.255.255)为广播地址。
局域网常使用私有IP段:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。127.0.0.1 为回环测试地址,也可用 localhost 表示本机。
端口是数据传输的通道,分为知名端口(0-1023,固定分配给特定服务)与动态端口(1024-65535,操作系统随机分配,程序结束后释放回收)。
TCP协议:连接建立与拆除机制
TCP首部包含20字节固定头部及可变选项,位于传输层。报文经网络层封装为IP数据报,再经数据链路层添加帧头后发送。

三次握手(建立连接)
TCP通过三次交互确认双方收发能力正常,同步序列号并协商窗口大小:
- 客户端发送SYN包,请求建立连接。
- 服务端回复SYN+ACK包,确认请求并同步自身序列号。
- 客户端发送ACK包完成确认,连接正式建立。

四次挥手(断开连接)
确保残留数据完全传输后才彻底关闭连接:
- 客户端发送FIN包,通知服务端停止发送数据。
- 服务端回复ACK包进入半关闭状态,等待自身数据发完。
- 服务端发送FIN+ACK包,请求断开。
- 客户端回复ACK包并进入TIME_WAIT状态,服务端关闭连接。

TCP提供可靠、面向连接的传输,适用于网页浏览、邮件收发、文件传输等对数据准确性要求高的场景。
UDP协议特性及与TCP的对比
UDP是无连接的传输协议,无需握手与挥手过程。它直接将数据包封装后通过网卡发出,效率高、延迟低,但存在丢包风险,稳定性弱于TCP。适用于实时音视频、直播流、在线游戏等对速度敏感且可容忍少量丢失的业务。

总结
掌握网络分层模型、IP与端口分配规则,以及TCP/UDP的交互机制,是编写稳定高效网络应用的前提。以上就是Python网络编程之网络与通信介绍的详细内容,更多关于计算机网络底层原理与网络编程实战的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













