【无标题】

TCP

简单的TCP协议的Python实现,包括服务器和客户端

服务器端

import socket

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器地址和端口号
server_socket.bind(server_address)

# 监听连接
server_socket.listen(1)

print('等待客户端连接...')

# 接受客户端连接
client_socket, client_address = server_socket.accept()
print(f'客户端 {client_address} 已连接!')

# 接收客户端数据
while True:
    data = client_socket.recv(1024).decode('utf-8')
    if not data:
        break
    print(f'收到来自客户端 {client_address} 的数据: {data}')

# 关闭连接
client_socket.close()
server_socket.close()

客户端 


import socket

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 创建TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器
client_socket.connect(server_address)

# 发送数据
for i in range(10):
    client_socket.send(f'消息 {i}\n'.encode('utf-8'))

# 关闭连接
client_socket.close()

在这个简单的示例中,服务器监听来自客户端的连接,并接收和打印客户端发送的消息。客户端连接到服务器,并发送10条消息到服务器

 【无标题】_第1张图片

TCP和UDP对应的协议分别是FTP、SMTP、POP3、HTTP和DNS、SNMP、TFTP、UDP。
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在网络通信中是可靠的传输方式,传输前会进行连接确认,确保数据传输的准确性和顺序。
UDP是面向无连接的不可靠传输层通信协议,在网络通信中是简单的传输方式,不需要进行连接确认,因此可能会出现数据丢失或接收错误等问题。

UDP

以下是一个简单的Python UDP协议示例:
 

import socket

# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定本地IP和端口号
sock.bind(('localhost', 8000))

# 接收数据
while True:
    data, addr = sock.recvfrom(1024)
    print('收到来自 %s 的数据: %s' % addr, data.decode('utf-8'))

这个示例中,我们首先使用socket模块创建了一个UDP套接字,并通过bind方法绑定了本地IP和端口号。然后通过recvfrom方法不断接收来自客户端的数据,并打印出来。这里的协议比较简单,只是简单地接收数据并打印,你可以根据实际需求来扩展它。

客户端实现

import socket

# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 发送数据
message = 'Hello, UDP server!'
sock.sendto(message.encode('utf-8'), server_address)

# 接收响应
data, server = sock.recvfrom(1024)
print('收到来自 %s 的响应: %s' % server, data.decode('utf-8'))

# 关闭套接字
sock.close()

OSI 七层

OCI七层指的是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层:

物理层:主要定义物理设备标准,如网线的接口类型、网卡的物理接口、传输的速率等。
数据链路层:主要将原始数据封装成数据帧,然后实现网络连接之间的通信。
网络层:主要将数据帧发送到目标主机,然后完成通信。
传输层:主要负责数据的传输,提供端到端的服务,如TCP协议。
会话层:主要负责建立和维护通信的会话连接。
表示层:主要负责转换数据的格式,以支持不同的应用。
应用层:主要负责处理用户的应用请求,并为用户提供网络服务。

不同的协议栈各层协议并不完全相同,比如在TCP/IP协议中:

网络接口层:规定了如何在物理网络媒介上传输数据,如以太网、Wi-Fi等。
网络层:定义了数据在网络上的传输和路由方式,主要协议有Internet协议(IP),负责将数据包从源主机发送到目标主机,还有Internet控制报文协议(ICMP)、互联网组管理协议(IGMP)等。
传输层:提供了应用程序之间的端到端通信服务,确保数据可靠、完整地从源主机传输到目标主机,最常用的传输层协议是传输控制协议(TCP)和用户数据报协议(UDP)。
应用层:包含了各种应用程序和协议,用于实现特定的网络功能和服务,例如,超文本传输协议(HTTP)、文件传输协议(FTP)、域名系统(DNS)等。

 

你可能感兴趣的:(python,网络,tcp/ip,网络协议)