Python之socket编程(53)

这篇具有很好参考价值的文章主要介绍了Python之socket编程(53)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

我是猫妹,一名爱上Python编程的小学生。

和猫妹学Python,一起趣味学编程。

今日主题

今天的内容比较多哦,主要是网络编程的一些入门知识。

这些知识在互联网发展过程中很重要,猫妹抛砖引玉。

OSI七层模型和TCP/IP四层模型

IP地址和端口

TCP/UDP

socket

Python实现TCP服务器客户端

Python实现UDP服务器客户端

OSI七层模型和TCP/IP四层模型

OSI七层模型和TCP/IP四层模型是互联网通信的基石,我们之所以可以愉快地上网,底层就是它的功劳。

它们在底层默默工作,我们仿佛感觉不到它的存在。其实底层的设计和实现汇集了众多人类的智慧。

Python之socket编程(53)

OSI七层模型和TCP/IP四层模型都是网络通信中常用的分层架构。

OSI七层模型更加详细,涵盖了更多的功能和细节;而TCP/IP四层模型则更加简洁明了,便于理解和应用。

Python之socket编程(53)

下面分别对它们进行简要介绍:

OSI七层模型:

OSI(Open Systems Interconnection)是一种定义了网络通信协议栈的国际标准。它将网络通信分为七个层次,每一层都有特定的功能和任务。从底层到顶层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

  * 物理层:负责在物理媒介上传输比特流,主要涉及硬件接口和信号传输。

  * 数据链路层:负责在相邻节点之间建立可靠的数据传输通路,实现数据的分组和错误检测。

  * 网络层:负责将数据包从源节点发送到目的节点,实现端到端的连接。

  * 传输层:负责控制和管理数据传输过程中的流量控制、错误恢复和数据重组等。

  * 会话层:负责建立、管理和终止应用程序之间的会话。

  * 表示层:负责数据的格式转换、加密和解密等。

  * 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输、远程登录等。

Python之socket编程(53)

TCP/IP四层模型:

TCP/IP(Transmission Control Protocol/Internet Protocol)是一种广泛应用于互联网的分层架构。它将网络通信分为四个层次,每一层都有特定的功能和任务。从底层到顶层分别是:网络接口层、网际层、传输层和应用层。

  * 网络接口层:负责处理数据包的物理介质(如以太网、Wi-Fi等)以及地址和路由选择等问题。

  * 网际层:负责在不同网络之间建立逻辑连接,实现端到端的数据传输。

  * 传输层:负责控制和管理数据传输过程中的流量控制、错误恢复和数据重组等。

  * 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输、远程登录等。

Python之socket编程(53)

IP地址和端口

我们要上网,离不开两个东西,一个是IP地址,一个是端口。

IP地址和端口是网络通信中两个重要的概念,它们共同用于在互联网上唯一标识一个设备或应用服务。

IP地址用于在数据包头中指明源设备的地址,而端口号则用于在网络上唯一标识一个应用服务。

Python之socket编程(53)

IP地址唯一标识一台连接在互联网上的电脑。

IP(Internet Protocol)地址是一个32位的二进制数,用于在互联网上唯一标识一个设备。

IP地址分为IPv4和IPv6两种格式。

IPv4地址通常以点分十进制表示法(如192.0.2.1),而IPv6地址则采用冒号分隔的128位十六进制数(如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

IP地址用于在数据包头中指明源设备的地址,以便接收方能够将数据包正确地发送到目标设备。

Python之socket编程(53)

有了IP地址还不够,一台电脑有许多应用程序,端口用于区分应用程序。

端口(Port)是网络通信中设备之间进行通信的逻辑接口。

取值0~65535,0~1023系统占用,其他端口应用程序随机分配。

每个应用程序都使用一个唯一的端口号来标识自己的通信服务。

常见的端口号有80(HTTP)、21(FTP)、25(SMTP)、3306(MySQL)等。

TCP和UDP

TCP和UDP位于TCP/IP四层模型中的传输层。

Python之socket编程(53)

TCP(Transmission Control Protocol)特点:

可靠性高:TCP是一种面向连接的协议,它通过建立可靠的连接来保证数据传输的可靠性。当数据包在传输过程中丢失或损坏时,TCP会进行重传,直到数据被完全接收。

流控制:TCP使用滑动窗口机制来控制数据的发送速率,避免网络拥塞。发送方会根据接收方的缓冲情况动态调整发送速率。

有序性:TCP保证数据包的顺序性和完整性,确保接收方能够按照正确的顺序接收到数据。

适用场景:TCP适用于需要可靠数据传输的应用场景,如文件传输、电子邮件等。

Python之socket编程(53)

UDP特点:

不可靠性高:UDP是一种无连接的协议,它不保证数据传输的可靠性。当数据包在传输过程中丢失或损坏时,UDP不会进行重传,而是直接丢弃。

快速性:UDP没有复杂的控制流程,因此具有较快的传输速度和较低的延迟。

无序性:UDP不保证数据包的顺序性和完整性,接收方可能收到乱序的数据包。

适用场景:UDP适用于对实时性要求较高、不需要可靠数据传输的应用场景,如视频流媒体、在线游戏等。

Python之socket编程(53)

TCP就像打电话,对方必须在线才能通过。

UDP就像写信,写好直接发送就是了。

没有优劣,各有千秋。

socket

TCP/UDP是很复杂的,为了使应用开发更简单。

在应用层和TCP/UDP之间有一层,叫socket。

Python之socket编程(53)

Socket(套接字)是计算机网络编程中的一种通信机制,用于实现不同计算机之间的数据传输。

简单来说,Socket就是一种用于建立网络连接的抽象接口,它允许程序员通过网络协议进行数据传输。

在网络编程中,Socket通常由两部分组成:客户端和服务器端。

客户端发送数据到服务器端,而服务器端接收并处理这些数据。

Python之socket编程(53)

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客户端服务器交互流程图:

Python之socket编程(53)

socket关键函数介绍:

函数 描述
socket() 获取socket类对象
bind((hostname, port)) 在指定主机的端口绑定监听
listen() 在绑定端口上开启监听,参数表示最大等待建立连接的个数
accept() 等待客户端连接,连接后返回客户端地址
send(data) 发送数据,data 是二进制数据
recv(buffer) 表示接收数据, buffersize 是每次接收数据的长度
close() 关闭套接字连接
connect((hostname, port)) 设置要连接的主机名称与端口号

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

Python之socket编程(53)

注:服务端可以持续监听连接,客户端下线,服务端自动断开连接。客户端再次上线,服务端建立连接。

Python实现UDP服务器客户端

UDP客户端服务器交互流程图:

Python之socket编程(53)

客户端流程:

  1. 导入包socket

  2. 创建一个套接字

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

  4. 关闭套接字

服务器流程:

  1. 导入包socket

  2. 创建一个套接字

  3. 绑定信息

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

  5. 关闭套接字

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

Python之socket编程(53)

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

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

Python之socket编程(53)

Python之socket编程(53)

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

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

我是猫妹,咱们下次见!文章来源地址https://www.toymoban.com/news/detail-474638.html

到了这里,关于Python之socket编程(53)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )

    Socket 套接字 是一种 进程之间的 通信机制 , 通过套接字可以在 不同的进程之间 进行数据交换 ; 在 网络编程 中 , Socket 套接字 主要用于 客户端 与 服务器 之间的 通信 , 大部分 网络相关的应用程序 , 都使用到了 Socket 套接字技术 ; 套接字有两种类型 : 流套接字 : 提供了一个可

    2024年02月15日
    浏览(130)
  • Python使用 Twisted 实现 TCP/UDP Socket 编程

    更多文章: 技数未来 环境准备: - 安装Python:确保你已经安装了Python解释器。 - 安装Twisted:可以通过pip命令来安装Twisted库,运行`pip install twisted`即可。 依赖的类库: - twisted.internet.protocol:包含了实现TCP/UDP Socket编程所需的协议类。 - twisted.internet.reactor:用于处理事件循环

    2024年02月16日
    浏览(46)
  • Python中两种网络编程方式:Socket和HTTP协议

    本文分享自华为云社区《Python网络编程实践从Socket到HTTP协议的探索与实现》,作者:柠檬味拥抱。 在当今互联网时代,网络编程是程序员不可或缺的一项技能。Python作为一种高级编程语言,提供了丰富的网络编程库,使得开发者能够轻松地实现各种网络应用。本文将介绍P

    2024年04月16日
    浏览(41)
  • Python中的网络编程Socket与HTTP协议的实践【第158篇—网络编程】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在当今互联网时代,网络编程是程序员不可或缺的一项技能。Python作为一种高级编程语言,提供了丰富的网络编程库,使得开发者能够轻松地

    2024年04月09日
    浏览(85)
  • python 学习之 socket 库的基本使用(网络编程-套接字)

    目录 一、关于 socket 的介绍 二、创建套接字对象(Socket 的实例化) 三、套接字对象方法(Socket 常用函数) 1、bind 函数 2、listen 函数 3、accept 函数 4、connect 与 connect_ex 函数 5、send 、 sendall 、sendto 函数 6、recv 与 recvfrom 函数 7、close 函数 三、简单的服务端和客户端示例 四、

    2024年02月20日
    浏览(59)
  • Python网络编程基础之ip地址,端口号,TCP,socket

    IP地址 IP地址 (Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 换而言之,IP 地址就是标识网络中设备的一个地址,好比

    2024年02月02日
    浏览(39)
  • python网络编程:通过socket实现TCP客户端和服务端

    目录 写在开头 socket服务端(基础) socket客户端(基础) 服务端实现(可连接多个客户端)  客户端实现 数据收发效果   近期可能会用python实现一些网络安全工具,涉及到许多关于网络的知识,逃不过的就是最基本的socket。本文将介绍如何通过python自带的socket库实现TCP客户

    2024年03月21日
    浏览(54)
  • 【socket】从计算机网络基础到socket编程——Windows && Linux C语言 + Python实现(TCP+UDP)

    简单讲一下基础知识,便于后面代码的理解,建议大概浏览一下这一小节内容。这里讲的只是冰山一角,建议大家学习计算机网络相关知识,推荐几本书: 《计算机网络》(谢希仁) 《计算机网络 自顶向下方法》 《计算机网络技术》 《计算机网络基础及应用》 《Linux C从入

    2024年02月08日
    浏览(56)
  • 2、安全开发-Python-Socket编程&端口探针&域名爆破&反弹Shell&编码免杀

    用途:个人学习笔记,欢迎指正! 目录 主要内容: 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码:多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端,服务端Socket编程通信cmd命令执行 1、客户端: 2、服务端: 四、python代码shellCode编码免杀后门上线

    2024年02月22日
    浏览(41)
  • python3套接字编程之socket和socketserver(TCP和UDP通信)

    socket和socketserver是python3中socket通信模块,关于其使用做如下总结。 目录 1.socket 1.1模块引入 1.2套接字获取 1.3套接字接口 1.3.1 服务端 1.3.2 客户端套接字函数 1.3.3 公共套接字函数 1.3.4 面向锁的套接字方法 1.3.5 面向文件的套接字的函数 2.socketserver 3.TCP 3.1 socket类型TCP 3.2 sockets

    2024年02月15日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包