#socket #tcp #udp #zmq #http/1.1 #http/2 #http/3 #quic #webrtc

제목[re]수업 내용에 대한 질문입니다2022-04-08 06:41
작성자 Level 10

[질문 1] 

IPC 통신을 할 때 UDP를 사용하면 문제가 생기나요?

제 추측으로는 IPC라고 하더라도 큐 오버플로우 등의 문제는 생길 수 있으니 패킷 손실은 생길 것 같습니다.

그런데 패킷의 순서가 뒤바뀌기도 하는지 궁금합니다.

<답변>

통상 IPC는 서로 다른 컴퓨터 간에 주고 받는 부분까지 포함합니다.

따라서 중간에 네트워킹 장치가 포함된다고 가정하면 순서가 바뀌는 경우에 대한 확률을 0%로 보긴 어렵습니다.


[질문 2]

최근 강의분 중 Dirty P2P의 구현을 보다보니 서버 역할을 맡은 클라이언트가 갑자기 종료될 경우,

다른 클라이언트들이 다시 서버 역할을 하도록 핸들링을 해야할 것 같은데요.

이걸 나이브하게 구현하면 모든 클라이언트가 다른 클라이언트를 감지하지 못하고 서버가 되려고 할 것 같습니다.

P2P를 구현할 때 이런 경우를 처리하는 패턴이 있을까요?

<답변>

P2P에 대한 교과서적인 패턴은 드물다고 볼 수 있습니다.

다만, 네트워킹 소프트웨어나 전통적인 OS에서 이런 문제를 다룬 경우가 여럿 있습니다.

서버 혹은 중앙컨트롤러가 사라진 것이 검출되면, 각자 random 값을 만들어서, 이 값 동안 지연 시간을 가진후,

지연 시간이 지나도 서버 역할을 하는 노드가 없다면 본인이 서버가 되도록 하는 식으로 처리하는 겁니다.

완전하진 않지만 해결책이 될 수 있는 것이지요. 분산처리에서 '완전'은 찾기 어렵습니다.

댓글