Всем привет!
Есть простейший TCP-сервер на Python, запущенный в Docker (пример из
документации библиотеки socketserver).
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024)
print("{} wrote:".format(self.client_address[0]))
self.request.sendall(подтвеждение)
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
server.serve_forever()
Docker-контейнеры у нас в rancher. Открыт порт наружу. В настройках внешнего устройства указаны открытые хост и порт.
Внешнее устройство отправляет нам данные. Например:
b"\x01.\x80\x01\x82\x02\x15\x03867459044383263\x042\x00\x10\x00\x00 \xae|\xa5]0 \x8f\xdaR\x03\xdf\xc5=\x023\x00\x00\x00\x00A'"
От TCP-сервера ожидается подтвеждение получения данных путем отправки обратно первого и последних двух байт. При этом в self.client_address[0] я вижу 10.42.0.0. То есть некий внутренний ip.
Я хочу спросить, в таком случае дойдет ли подтверждающий пакет до отправителя (внешнего устройства)?