Socket Programming

TCP/IP 위에서 엔드 포인트가 되는 것이 Socket 이다! IP Address + 포트 번호를 Socket Address라 한다. 따라서 Socket Address 는 특정 프로세스를 찾아갈 수 있다.

Socket Programming 은 TCP위에서 통신 프로그램을 짜는 것이라 말할 수 있다.

Socket 으로 연결되어있는 두 개의 컴퓨터에서는 TCP/UDP로 작동한다. 실제 두 컴퓨터를 연결하는 것이 LAN이든 인터넷이든 상관없고 포트 번호를 다르게 하면 싱글 컴퓨터안에서도 프로세스를 찾아가기 위한 소켓 프로그래밍이 가능하다.

Client and Server Architecture

서버 소프트웨어는 살아나면 소켓을 연다. 본인의 프로그램을 바인드하고 남들이 연결할 수 있도록 대기한다. TCP인 경우는 클라이언트도 소켓을 열고 포트 번호를 요청한다. 이후 클라이언트가 연결 및 해제 요청을 한다.

image

TCP/UDP 는 1대1 커뮤니케이션이다. 따라서 채팅에서도 A가 메세지를 보내면 서버에서 받아 나머지 B,C,D 에게 독립적으로 연결된 TCP/UDP로 하나하나 다 보내준다.

ZeroMQ

프로그램간에 메세지를 주고 받는 라이브러리로 비동기적 메세지를 주고받는다. 대규모로 여러 프로그램이 메세지를 주고 받으면서 동작한다. 서버가 없어서 자기들끼리 메세지를 주고 받을 수 있도록한다

특징으로 소켓 방식을 유지하고 many-to-many 방식이 가능하면서 동시에 다양한 형태의 패턴이 존재한다.

  • Request-reply (service bus) : 1대1 방식이 아닌 상황에서 many-to-many로 서로 요청/응답을 받는다.
  • Publish-subscribe (data distribution): 누군가가 정보를 가지고 변경되거나 새로운 것을 뿌린다.
  • Push-pull (parallelised pipeline): 여러 정보를 수집해서 처리하는 자들이 있을 때 이들간에 정보를 가져오고 주는 병렬처리가 대형으로 가능
  • Exclusive pair : 두 개의 소켓을 그 들만 사용한다.

EX

  • 클라이언트들이 브로커에 요구하고 어디로 갈지 결정하고 원하는 곳에서 정보를 가져올 수 있다.
  • 중간의 라우터서버 프록시 딜러가 적합한 데이터를 받아 전달하는 1대N, N대N 이 가능하다.

image

  • 퍼블리셔가 정보를 구독자에게 한 번에 뿌린다.
  • 퍼블리셔가 여러 개 일 수도 있다.

image

RabbitMQ

브로커가 존재하며 중앙집권이다. 중앙에 있는 애한테 보내면 들어야하는 애들한테 전달할 수 있다. 1대 N으로 전달할 때 가능하다. 가운데 브로커가 서버와 같다.

image

업데이트:

댓글남기기