Python之socket编程(53)

news/2024/10/19 17:41:01/

​小朋友们好,大朋友们好!

我是猫妹,一名爱上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客户端服务器交互流程图:

客户端流程:

  1. 导入包socket

  2. 创建一个套接字

  3. 收发消息(优先发送)

  4. 关闭套接字

服务器流程:

  1. 导入包socket

  2. 创建一个套接字

  3. 绑定信息

  4. 收发消息(优先接收)

  5. 关闭套接字

UDP协议客户端服务器代码测试:

需要代码的小伙伴,可从和猫妹学Python,下图第一名平台的次条推文获取哦!

平台太多了,代码排版太耗时了。

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!


http://www.ppmy.cn/news/202479.html

相关文章

Executor框架的结构

Executor框架的结构 Executor框架主要由3大部分组成如下。任务。包括被执行任务需要实现的接口:Runnable接口或Callable接口。任务的执行。包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现…

JavaWeb三大组件之一Filter(过滤器)

定义 拦截所有访问web资源的请求或者响应(servlet、Jsp页面、HTML页面),从而实现我们自己的业务逻辑,这些逻辑可以是实现访问权限的控制、过滤敏感词、压缩响应等功能。 原理 过滤器是"链接"在容器的处理过程中的,它会在servle…

映目云摄影介绍

映目云摄影—品质影像、即刻分享,公司成立于2014年5月,获得国家高新技术企业和中关村高新技术企业资质,是一体化摄影服务开创者,全球4000多位签约摄影师、数码修图师, 活动拍摄近万场,服务全球主要城市。18年获得千万美…

android o 结构光流程,【OPPOFindX评测】O-Face 3D结构光:最科幻的交互方式-中关村在线...

O-Face 3D结构光:最科幻的交互方式 当然,外观只是一方面,交互才是OPPO Find X的最具科幻精神的亮点。OPPO Find X采用了O-Face 3D结构光(以下简称3D结构光技术)作为生物识别技术的核心交互技术。这一技术曾出现在各种科幻作品中,挑…

统计学相比于计算机的优势,生命科学导论2吴庆余课后思考题答案【参考】.doc...

生命科学导论 刘贵忠 思考题习题解答 第一章 1.生物同非生物相比,具有哪些独有的特征? 由于不可能对生命进行确切定义,但是我们可以将生命的基本特征总结如下: (1)生命的基本组成单位是细胞。 (2)新陈代谢:生命体无时…

iqooz1手机能搭载鸿蒙吗,【iQOOZ1评测】iQOO Z1三摄重在AI 这些功能让小白也能玩转拍照(全文)_iQOO Z1_手机评测-中关村在线...

5月7日,MediaTek(联发科)举办线上媒体技术沟通会,搭载多项全球领先技术的天玑1000系列技术增强版——天玑1000 正式发布。据悉天玑1000在成像画质方面引入了AI技术进行调优,首发搭载这一芯片的iQOO Z1,其影像表现自然备受关注。 0…

lg g5 android,【LGG5SE评测】Android中的SE 模块化LG G5 SE评测(全文)_LG G5 SE_手机评测-中关村在线...

1G5 SE和G5外观竟完全一样? 【中关村在线】LGG5SE评测:因为苹果的启用,让“SE”这个名号被很多人所知,同时其也被拉到了“小屏”阵营。不过这款Android中的“SE”或许会改变很多人的认知,因为其并非因小屏而得名,那就…

逛逛摄影器材城

中午去中关村溜达一圈,想买块儿SDHC卡,可是整个中关村居然都没有创见的SDHC 4G 150X,好东西他们都不进货。恶劣的导购和糟糕的心情让我对中关村彻底地失望和厌恶。 下午转战五棵松的摄影器材城。从外面看好像一个低档的小商品批发市场的模样&…