小朋友们好,大朋友们好!
我是猫妹,一名爱上Python编程的小学生。
和猫妹学Python,一起趣味学编程。
今日主题
今天的内容比较多哦,主要是网络编程的一些入门知识。
这些知识在互联网发展过程中很重要,猫妹抛砖引玉。
OSI七层模型和TCP/IP四层模型
IP地址和端口
TCP/UDP
socket
Python实现TCP服务器客户端
Python实现UDP服务器客户端
OSI七层模型和TCP/IP四层模型
OSI七层模型和TCP/IP四层模型是互联网通信的基石,我们之所以可以愉快地上网,底层就是它的功劳。
它们在底层默默工作,我们仿佛感觉不到它的存在。其实底层的设计和实现汇集了众多人类的智慧。
OSI七层模型和TCP/IP四层模型都是网络通信中常用的分层架构。
OSI七层模型更加详细,涵盖了更多的功能和细节;而TCP/IP四层模型则更加简洁明了,便于理解和应用。
下面分别对它们进行简要介绍:
OSI七层模型:
OSI(Open Systems Interconnection)是一种定义了网络通信协议栈的国际标准。它将网络通信分为七个层次,每一层都有特定的功能和任务。从底层到顶层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
* 物理层:负责在物理媒介上传输比特流,主要涉及硬件接口和信号传输。
* 数据链路层:负责在相邻节点之间建立可靠的数据传输通路,实现数据的分组和错误检测。
* 网络层:负责将数据包从源节点发送到目的节点,实现端到端的连接。
* 传输层:负责控制和管理数据传输过程中的流量控制、错误恢复和数据重组等。
* 会话层:负责建立、管理和终止应用程序之间的会话。
* 表示层:负责数据的格式转换、加密和解密等。
* 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输、远程登录等。
TCP/IP四层模型:
TCP/IP(Transmission Control Protocol/Internet Protocol)是一种广泛应用于互联网的分层架构。它将网络通信分为四个层次,每一层都有特定的功能和任务。从底层到顶层分别是:网络接口层、网际层、传输层和应用层。
* 网络接口层:负责处理数据包的物理介质(如以太网、Wi-Fi等)以及地址和路由选择等问题。
* 网际层:负责在不同网络之间建立逻辑连接,实现端到端的数据传输。
* 传输层:负责控制和管理数据传输过程中的流量控制、错误恢复和数据重组等。
* 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输、远程登录等。
IP地址和端口
我们要上网,离不开两个东西,一个是IP地址,一个是端口。
IP地址和端口是网络通信中两个重要的概念,它们共同用于在互联网上唯一标识一个设备或应用服务。
IP地址用于在数据包头中指明源设备的地址,而端口号则用于在网络上唯一标识一个应用服务。
IP地址唯一标识一台连接在互联网上的电脑。
IP(Internet Protocol)地址是一个32位的二进制数,用于在互联网上唯一标识一个设备。
IP地址分为IPv4和IPv6两种格式。
IPv4地址通常以点分十进制表示法(如192.0.2.1),而IPv6地址则采用冒号分隔的128位十六进制数(如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
IP地址用于在数据包头中指明源设备的地址,以便接收方能够将数据包正确地发送到目标设备。
有了IP地址还不够,一台电脑有许多应用程序,端口用于区分应用程序。
端口(Port)是网络通信中设备之间进行通信的逻辑接口。
取值0~65535,0~1023系统占用,其他端口应用程序随机分配。
每个应用程序都使用一个唯一的端口号来标识自己的通信服务。
常见的端口号有80(HTTP)、21(FTP)、25(SMTP)、3306(MySQL)等。
TCP和UDP
TCP和UDP位于TCP/IP四层模型中的传输层。
TCP(Transmission Control Protocol)特点:
可靠性高:TCP是一种面向连接的协议,它通过建立可靠的连接来保证数据传输的可靠性。当数据包在传输过程中丢失或损坏时,TCP会进行重传,直到数据被完全接收。
流控制:TCP使用滑动窗口机制来控制数据的发送速率,避免网络拥塞。发送方会根据接收方的缓冲情况动态调整发送速率。
有序性:TCP保证数据包的顺序性和完整性,确保接收方能够按照正确的顺序接收到数据。
适用场景:TCP适用于需要可靠数据传输的应用场景,如文件传输、电子邮件等。
UDP特点:
不可靠性高:UDP是一种无连接的协议,它不保证数据传输的可靠性。当数据包在传输过程中丢失或损坏时,UDP不会进行重传,而是直接丢弃。
快速性:UDP没有复杂的控制流程,因此具有较快的传输速度和较低的延迟。
无序性:UDP不保证数据包的顺序性和完整性,接收方可能收到乱序的数据包。
适用场景:UDP适用于对实时性要求较高、不需要可靠数据传输的应用场景,如视频流媒体、在线游戏等。
TCP就像打电话,对方必须在线才能通过。
UDP就像写信,写好直接发送就是了。
没有优劣,各有千秋。
socket
TCP/UDP是很复杂的,为了使应用开发更简单。
在应用层和TCP/UDP之间有一层,叫socket。
Socket(套接字)是计算机网络编程中的一种通信机制,用于实现不同计算机之间的数据传输。
简单来说,Socket就是一种用于建立网络连接的抽象接口,它允许程序员通过网络协议进行数据传输。
在网络编程中,Socket通常由两部分组成:客户端和服务器端。
客户端发送数据到服务器端,而服务器端接收并处理这些数据。
Socket通信可以基于TCP(传输控制协议)或UDP(用户数据报协议)两种不同的协议。
使用Socket进行网络编程需要以下步骤:
1. 创建Socket对象:首先需要创建一个Socket对象,指定要使用的协议类型。
2. 绑定Socket:将Socket与特定的IP地址和端口号绑定在一起,以便客户端能够找到服务器端。
3. 连接Socket:当客户端想要与服务器端通信时,需要建立连接。这可以通过调用Socket对象的connect()方法来实现。
4. 发送和接收数据:一旦连接建立成功,就可以使用Socket对象的send()和recv()方法来发送和接收数据。
5. 关闭Socket:当通信完成后,需要关闭Socket对象以释放资源。
总之,Socket是网络编程中非常重要的一个概念,它提供了一种通用的、跨平台的通信机制,使得程序员可以轻松地实现不同计算机之间的数据传输。
Python实现TCP服务器客户端
TCP客户端服务器交互流程图:
socket关键函数介绍:
函数 | 描述 |
---|---|
socket() | 获取socket类对象 |
bind((hostname, port)) | 在指定主机的端口绑定监听 |
listen() | 在绑定端口上开启监听,参数表示最大等待建立连接的个数 |
accept() | 等待客户端连接,连接后返回客户端地址 |
send(data) | 发送数据,data 是二进制数据 |
recv(buffer) | 表示接收数据, buffersize 是每次接收数据的长度 |
close() | 关闭套接字连接 |
connect((hostname, port)) | 设置要连接的主机名称与端口号 |
TCP协议客户端服务器代码测试:
注:服务端可以持续监听连接,客户端下线,服务端自动断开连接。客户端再次上线,服务端建立连接。
Python实现UDP服务器客户端
UDP客户端服务器交互流程图:
客户端流程:
-
导入包socket
-
创建一个套接字
-
收发消息(优先发送)
-
关闭套接字
服务器流程:
-
导入包socket
-
创建一个套接字
-
绑定信息
-
收发消息(优先接收)
-
关闭套接字
UDP协议客户端服务器代码测试:
需要代码的小伙伴,可从和猫妹学Python,下图第一名平台的次条推文获取哦!
平台太多了,代码排版太耗时了。
好了,我们今天就学到这里吧!
如果遇到什么问题,咱们多多交流,共同解决。
我是猫妹,咱们下次见!