Python DTLS - 服务器将不接受连接

问题描述 投票:0回答:0

我一直在含泪学习网络编程的概念。我从一个简单的 UDP 客户端/服务器对开始,转移到 TCP,然后使用 TLS 成功保护 TCP 流。现在我正在尝试“打败最终的老板”,并使用 DTLS 保护 UDP 通信。

我使用 DTLS 组合了一个非常简单的 UDP 客户端/服务器对,以尝试并成功地交换加密通信。让我将问题分解为客户端和服务器。

DTLS 客户端

import socket
import ssl
from dtls import do_patch
do_patch()

serverAddress, serverPort = "IP Address", 12345
addr = (serverAddress, serverPort)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
SSLSocket = ssl.wrap_socket(s, '.\key.pem', '\cert.pem', server_side=False)

SSLSocket.connect(addr)
clientMessage = bytes(('I am the UDP client').encode('utf-8'))

SSLSocket.send(clientMessage)

Client Hello
使用DTLS协议在Wireshark中成功看到

DTLS 服务器

import ssl
from socket import socket, AF_INET, SOCK_DGRAM
from dtls import do_patch
do_patch()

##### Server and Socket Parameters #####
serverAddress, serverPort = "192.168.1.158", 12345
addr = (serverAddress, serverPort)

s = socket(AF_INET, SOCK_DGRAM)
sock = ssl.wrap_socket(s, '.\key.pem', '.\cert.pem', server_side=True)
sock.bind(addr)
sock.listen(2)
clientSocket, addr = sock.accept()
print("Connection established")

服务端程序运行成功,但是客户端好像连接不上。服务器从不确认

Client Hello
,这反映在客户端定期重新传输其问候消息。

Print()
之后,我无法在服务器中获得
sock.listen(2)
语句。我不是 100% 确定这意味着什么。服务器正在监听和等待,
Print()
语句未执行,或者其他不会导致运行时错误的东西。

无论如何,

sock.accept()
永远无法到达,并且客户端永远无法发送 Hello 消息。我不确定问题是什么,非常感谢对此事的一些反馈。

python udp dtls
© www.soinside.com 2019 - 2024. All rights reserved.