SharedIT | 묻고 답하기(AMP)

클라이언트 끼리의 통신

소켓 통신을 하게 되면 서버와 클라이언트로 보통 나뉘는 것으로 알고 있는데요.

클라이언트 끼리 통신을 하는 것은 어떤 원리로 가능한지 궁금하네요.

그리고, 서버와 클라이언트로 통신을 하게 되면 

공유기가 있는 서버측은 공유기의 포트 포워딩을 해줘야 서버로 통신이 가능한 걸로 알고 있는데

클라이언트 끼리 통신을 할 때는 이 공유기의 포트는 어떻게 찾아가는 지도 궁금합니다.
Tags : 태그가 없습니다.

7개의 답변이 있습니다.

쿨가이
  0 추천 | 5년 이하 전
고수분들이 좋은 답변해주셨지만.

개념적으로는 클라이언트 TO  클라이언트 통신은 없고

클라이언트 TO 서버 통신이 맞다고 보고.

클라이언트 TO 서버 TO 클라이언트 구조가 일반적인 통신 구조가 아닐까 보고 있습니다.
ynktech2
  0 추천 | 5년 이하 전
비트코인 지갑처럼 생각하면 될 듯한데 다른 고수분이 답변을  ;
Andrew Gil
  0 추천 | 5년 이하 전
클라이언트<->클라이언트 간 통신은 같은 네트워크 망일경우 가능하고

클라이언트<->서버<->클라이언트 통신은, 서버가 중계역할을 한다면 가능합니다.

포트포워딩은, 공인IP가 1개밖에 없는데, 특정 포트(예:4000) 으로 통신 시도 시 내부IP 192.168.0.X:3000 으로

말그대로 포워딩하는 겁니다
doubleclick
  0 추천 | 5년 이하 전
옛날 PC방에서 스타할때 하던 UDP가 비슷한 개념이려나요
차바라기
  0 추천 | 5년 이하 전
클라이언트끼리 통신은 불가능합니다. 호툴하는쪽이 클라이언트가 되는거고 요청 받는쪽이 서버가 되는데 둘다 요청을 하는곳이면 안되겠죠
wansoo
  0 추천 | 5년 이하 전
몇가지 방법이 있을 것 같은데요.
TCP 방식, UDP 방식 등에 대한 내용 까지 설명하려면 길어 지게 될 것 같고...
간단히 구분해서 설명해 보면...

한쪽이 서버 역할, 다른 쪽이 클라이언트 역할을 하면서 클라이언트가 서버에다 넣어 주거나, 클라이언트가 서버가 보내 주는 내용을 가져 오는 형태롤 통신하는 방식이 한가지가 될 수 있을 것 같고요.

다른 형태는 양쪽 모두 서버와 클라이언트 역할을 번갈아 가면서 자료를 주고 받는 형태가 될수도 있겠고요.

이 두가지 방식은 서버 역할을 하는 컴퓨터가 클라이언트에서 접속할 수 있는 형태라야 한다는 단점이 있을 수 있겠는데요.
LAN 구간에서 작동되거나 서버에 공인 IP가 들어가 있는 상황일 경우에는 문제 없이 사용가능하나, 양쪽 모두 또는 서버쪽이 사설 IP인 상황에서 인터넷으로 접속하려 한다면 사용할 수 없는 형태가 되겠고요.

앞의 두가지 방식외에, 다른 한가지 방식은...
공인 ip를 가진 컴퓨터에서 서버가 작동되고 있으면서 클라이언트끼리 통신하려는 컴퓨터들이 서버와 연결되고, 서버가 클라이언트 사이에서 중계해 주는 방식으로 작동되는 형태가 있을 수 있겠네요.
이 방식일 경우라면 양쪽 클라이언트 모두 사설 IP를 가진 상황에서도 서로 자료를 주고 받을 수 있게 되겠고...
네이트, 카카오톡 등등의 대부분 챗팅 프로그램, 팀뷰어, R-Support 등의 원격 제어 등의 서비스들이 이런 형태의 접속 방식이 되겠죠~
빨간신발
  0 추천 | 5년 이하 전
엄밀히 말해서 클라이언트간에는 통신이 불가하고..
우리가 클라이언트로 보는 프로그램 2개 중 1개가 서버역활을 해야 통신이 가능한 거 아닐까요?
예전에 델파이로 졸작할때.. 기본으로 제공되는 클라이언트 모듈간에는 통신이 안되어 서버모듈을 같이 심어서 구현했던 기억이...
저렇게 하면 일반사용자들은 클라이언트 프로그램간 통신으로 보이지만 내부적으로는 클라이언트-서버 통신이 되겠죠..
그리고 공유기는 내부에서 외부를 호출하는 것은 상관없지만.. 반대로 외부에서 내부를 호출하려면 포트포워딩을 해줘야 합니다.
서비스를 요청하는 곳(호출) : 클라이언트
서비스를 제공하는 곳(응답) : 서버

제가 아는 것이 부정확할 수 있으니 다른 고수님들께서 답변을...