首页 > 后端开发 > Python教程 > 高级 Python 概念 - 使用 Python 进行网络连接

高级 Python 概念 - 使用 Python 进行网络连接

Linda Hamilton
发布: 2024-12-09 15:28:11
原创
877 人浏览过

您是否想知道您的设备是如何通过互联网连接?或者企业如何跨地区无缝共享信息?所有这一切都是使用计算机网络作为业务策略的一部分来实现的。它允许我们通过互联网在网络中的不同应用程序和设备之间建立通信、协作和共享资源。现在,由于网络与软件应用程序以及各种其他技术的集成,您只需单击一下即可与朋友或任何人联系或共享内容。在 Python 中,网络是一个基本概念,它支持设备与外部资源之间的交互。 Python 包含许多支持网络功能的内置模块,例如用于一般网络的“socket”和用于 HTTP 通信的“requests”。
因此,在本文中,我们将通过实际示例讨论 Python 中的网络从基本概念到高级概念。

网络概念简介

1. 网络及其在分布式系统中的意义

网络涉及通过有线电缆或无线网络连接多台计算机和设备,以通过互联网交换数据和共享资源。它允许多个设备之间的通信。众所周知,分布式系统是指大量客户端、硬件设备和进程相互连接以共享资源和通信的系统。因此,网络和分布式系统具有显着的互连性。它们提供促进存储、资源共享和电子通信的基础设施,以提高系统的效率和生产力。

2. 关键网络概念

我们在日常生活中使用的一些关键网络概念如下:

2.1。 IP 地址

IP 地址在网络上唯一标识您的设备。如果您有连接到互联网的设备,它必须有一个 IP 地址。 IP 代表互联网协议。它是网络内计算机或设备的唯一编号或标识符。每个设备都有一个唯一的编号,使其与网络中的其他设备不同。例如:

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登录后复制
登录后复制
登录后复制
登录后复制

注意:

IP 地址是由句点分隔的唯一数字字符串,用于标识每台使用 Internet 协议通过网络进行通信的计算机。

2.2。港口

端口是网络中使用的数字标识符,用于指定设备上的特定服务或进程。与标识设备在网络上的位置的 IP 地址相比,端口允许多个服务在同一设备上同时运行。它确保数据被定向到正确的应用程序或进程。这些端口的范围从0到65535,为特定协议保留了一定的规模。例如:

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登录后复制
登录后复制
登录后复制
登录后复制

2.3。协议

网络协议是网络设备之间通信的一组过程和实践。它定义了数据的格式化、传输和接收方式。示例包括 HTTP、FTP、SMTP 和 DNS。协议可以在 OSI 模型中的各个层运行,例如应用层 (HTTP)、传输层 (TCP) 和网络层 (IP)。

2.4。插座

套接字是用于跨多个设备发送或接收数据的网络端点。它涉及 IP 地址和端口号 的配对。套接字有两种主要类型:用于 TCP 连接的 SOCK_STREAM(面向连接)和用于 UDP 连接的 SOCK_DGRAM(无连接)。套接字可以实现各种网络服务,例如网络和电子邮件服务器。

3. OSI 模型和 TCP/IP 堆栈

定义了某些模型,告诉我们如何通过互联网连接我们的设备或计算机,以便它们可以相互交互和通信。定义网络有两种主要模型。 OSI 模型或 TCP/IP 堆栈。让我们简要概述一下它们:

Advanced Python Concepts - Networking with Python

3.1。 TCP/IP 堆栈

TCP/IP 堆栈是一套通信协议,用于互连互联网上的网络设备,确保可靠的数据传输和通信。它是一组关于计算机如何交互以及如何设计这些系统的过程。为了理解功能,分为五层。每层都有其工作,即应用层、传输层、网络访问层、数据链路层和物理层。 TCP/IP 堆栈提供了现实世界中网络的实际实现,而 OSI 模型则提供了对网络通信的理论理解。此外,传输层提供可靠数据传输的设施,网络访问层确保数据包的正确IP地址和路由等。

3.2。 OSI模型

与 TCP/IP 类似,OSI 模型也用于设计跨多个设备的网络。它是一个概念框架,由一组用于理解和实现七个不同层的网络协议的过程组成。它与 TCP/IP 共享同一层,但有一个附加层。其中包括:应用程序、表示、会话、传输、网络访问、数据链路和物理层。具体来说,OSI 和 TCP/IP 之间的主要区别在于 TCP/IP 应用层中模制的两个附加层。

套接字编程基础

1. Socket 编程作为 Python 网络的基础

网络涉及两个或多个设备的连接,以便在它们内部进行通信。在Python中,套接字编程是一种基本且核心的网络创建机制。对于socket编程,我们需要导入socket模块。使用套接字模块,开发人员可以生成、配置和管理用于 TCP 和 UDP 通信的套接字。该模块有许多创建套接字并帮助它们相互关联所需的内置方法。使用的一些重要方法是socket.socket,它用于创建套接字。该套接字在客户端和服务器端均使用。此外,为了接受通信,我们使用socket.accept方法。

注意

TCP代表传输控制协议,它是一种面向连接的协议,确保可靠的数据传输。 UDP 是一种用户数据报协议,一种无连接协议,优先考虑速度而不是可靠性。

2. 套接字作为机器之间通信的端点

套接字是用于发送和接收数据的网络端点。默认情况下,单个网络有两个套接字,每个通信设备一个。这些套接字结合了 IP 地址和端口号。此外,根据所使用的端口号,单个设备可以有 N 个套接字。不同类型的协议可使用不同的端口;例如,HTTP 使用端口 80。通过这种端点机制,开发者可以保证各种组网场景下数据的准确可靠交换。

3. 示例:创建和使用套接字进行基本网络通信

现在我们已经了解了套接字编程是什么,因为它是 Python 编程的基础,让我们转到代码编辑器,看看如何创建它。我们必须为客户端和服务器端创建两个不同的文件来建立连接。

server.py

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登录后复制
登录后复制
登录后复制
登录后复制

Advanced Python Concepts - Networking with Python

client.py

HTTP uses port 80  
HTTPS uses port 443
登录后复制
登录后复制

Advanced Python Concepts - Networking with Python

使用 TCP/IP

1. 传输控制协议(TCP)及其在通信中的作用

TCP,也称为传输控制协议,是 TCP/IP 模型中的传输层协议。它由一组决定如何通过互联网发送数据的协议和过程组成。通常,当数据作为文件发送时,它们会被分解为单独的数据包。当数据包到达目的地时,每个数据包都有一个唯一的编号。我们可以用它组装它们。此外,如果某些数据包丢失,TCP 会确保重新发送它们。这就是为什么我们称 TCP 为可靠的通信协议,因为它通过握手过程建立通信,确认接收到的数据,并通过维护数据包的正确顺序并确保数据完整性和传输来重新传输丢失的数据包。

2.示例:在 Python 中创建 TCP 客户端和服务器应用程序

服务器是等待客户端请求的软件,客户端向服务器请求资源。套接字编程主要是针对客户端-服务器架构来实现的。在这里,我们讨论创建客户端和服务器的示例,其中客户端发送消息,服务器响应该消息,并使用 TCP 套接字模块对该请求给出适当的响应。让我们设计客户端和服务器模型。

Advanced Python Concepts - Networking with Python

server.py

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登录后复制
登录后复制
登录后复制
登录后复制

Advanced Python Concepts - Networking with Python
client.py

HTTP uses port 80  
HTTPS uses port 443
登录后复制
登录后复制

Advanced Python Concepts - Networking with Python

3.使用 TCP 套接字构建简单的聊天应用程序

让我们使用 TCP 套接字在 Python 中创建一个简单的聊天应用程序,其中服务器侦听传入的命令,客户端连接到该服务器以发送和接收消息。我们将使用 Python 内置模块(即套接字)构建聊天室。因此,我们需要分别为客户端和服务器端编写代码:

server.py

import socket #Import library

#Create a socket object and then define two arguments first one specifies the IP address
#and second indicate the use of a TCP socket.
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Prepare to receive connections by binding it to the IP address and port
soc.bind((socket.gethostname(), 1042))
#Listen to the connection
soc.listen(5)

while True:
     #Set client socket and address and make a connection
     clt, addr = soc.accept() 
     print(f"Connection Established to address {addr}")
     msg = "Message Received and the message is ->"
     clt.send(bytes(msg + "Socket Programming in Python", "utf-8"))
登录后复制

Advanced Python Concepts - Networking with Python

client.py

import socket #Importing the module

#Create a socket object and then define two arguments first one specifies the IP address
#and second for indicating the use of a TCP socket.
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Set the connection with the port number and hostname
soc.connect((socket.gethostname(), 1042))
#Set the bytes of the message how much you want to receive
msg = soc.recv(100)
print(msg.decode("utf-8"))
登录后复制

Advanced Python Concepts - Networking with Python

总结

网络计算机科学和编程中的一个重要概念。它可以解决大多数人类问题,无论您是在办公室工作还是与团队共享文件。或者,联系来自其他国家的亲戚。总之,我们专注于使用 Python 来扎实介绍网络基础。我们学习了网络控制和模型、客户端和服务器架构的基本主题,以及使用套接字库的实际示例。该库确保为分布式系统建立安全可靠的网络。不断尝试并巩固这些技能,以进一步提高您的网络编程熟练程度。希望本指南对您有所帮助。感谢您的阅读。快乐编码!

参考

Python 中的网络

套接字库

以上是高级 Python 概念 - 使用 Python 进行网络连接的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板