我有一个用python编写的简单服务器,它打开并监听TCP套接字:
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(("", 4242)) server_socket.listen(5)
print("TCPServer Waiting for client on port 4242")
while 1:
client_socket, address = server_socket.accept()
print("I got a connection from ", address)
while 1:
data = client_socket.recv(512)
if data:
print(data)
if not data:
print("Closed Connection")
break
它很棒!
我现在想知道......如果他们知道我的IP和端口,任何胭脂客户端都可以连接到我的服务器。鉴于我的IP和端口不是安全的......我怎样才能确保唯一可以连接到此TCP套接字的设备是我自己的设备?
我可以制作某种钥匙吗?那是SSL的意思,我很难理解。似乎SSL只是保护数据不被拦截,但任何人仍然可以连接并写入我的听众?
谢谢!
答案 0 :(得分:0)
这里不需要SSL。 TSL和SSL是通过网络提供加密通信的协议,因此即使有人“倾听”该通信,他们也无法理解。
accept()方法返回一个元组(conn,地址)(https://docs.python.org/2/library/socket.html)
如果地址与您的IP地址不匹配,您可以选择删除该连接(不要重新接收任何数据)。
if address == your_ip
# receive data
如果你不想以编程方式进行,在Linux下,你可以使用像iptables这样的包过滤工具。
$ iptables -I INPUT -p tcp --destination-port 4242 -s <range_of_blocked_ip_addresses> -j DROP