네트워크

패턴

몇 가지 기본 패턴으로 네트워킹 애플리케이션을 만들수 있다.

가장 일반적인 패턴은 요청-응답 패턴으로, 클라이언트-서버패턴으로 알려져 있다. 이 패턴은 동기적이다. 클라이언트는 서버의 응답이 올 때까지 기다린다.

또 다른 일반적인 패턴은 푸시또는 팬아웃 패턴이다. 데이터를 프로세스 풀에 있는 사용가능한 워커로 전송한다. 예를 들어 로드밸런서 뒤에는 웹 서버가 있다.

푸시의 반대는 또는 팬아웃패턴이다. 하나 이상의 소스로부터 데이터를 받는다. 예를들어 멀티 프로세스에서 텍스트 메세지를 받아서, 하나의 로그 파일에 작성하는 로거가 있다.

패턴은 발행-구독하는 라디오나 텔레비전의 방송과 유사하다. 이 패턴은 발행자가 데이터를 전송한다. 간단한 발행-구독 시스템의 모든 구독자는 데이터의 복사본을 받는다.

발행-구독 모델

발행-구독은 큐가아닌 브로드캐스트다. 하나 이상의 프로세스가 메시지를 발행한다. 각 구독자 프로세스는 수신하고자하는 메세지의 타입을 표시한다. 각 메세지의 복사본은 타입과 일치하는 구독자에 전송된다.

TCP/IP

인터넷은 커넥션을 맺고, 데이터를 교환하고, 커넥션을 종료하고, 타임아웃을 처리하는 등의 방법에 대한 규칙에 의거한다. 이것을 프로토콜이라고 하며, 계층으로 정렬되어 있다. 계층의 목적은 일을 처리하는데 있어 새로운 여러 가지 대안을 허용하기 위함이다.

가장 낮은 계층에서는 전기 신호를 처리한다. 그리고 각 계층은 층층이 쌓여있다. 중간에 있는 계층은 네트워크의 위치와 데이터 흐름의 패킷을 명시하는 IP계층이다. IP계층에는 네트워크 위치 사이에서 바이트를 이동하는 방법을 기술하는 두가지 프로토콜이 있다.

  • UDP(User Datagram Protocol 사용자 데이터그램 프로토콜) 이 프로토콜은 짧은 데이터 교환에 사용된다. 데이터그램은 엽서의 짧은 글처럼, 한단위로 전송되는 작은 메시지다.

  • TCP(Transmission Control Protocol 전송 제어 프로토콜) 이 프로토콜은 수명이 긴 커넥션에 사용된다. TCP는 바이트 스트림이 중복 없이 순서대로 도착하는 것을 보장한다.

UDP 메시지는 응답 메세지가 없다. 그래서 메시지가 목적지에 잘 도착했는지 확인할 수 없다.

TCP는 송신자와 수신자 사이의 커넥션을 보장하기 위해 핸드셰이크를 설정한다.

로컬 머신은 항상 127.0.0.1의 IP주소와 localhost의 이름을 가진다. 어디선가 루프백 인터페이스를 들어봤을 것이다. 만약 인터넷에 연결되어 있다면 공인IP주소를 갖는다.

소켓

네트워크 프로그래밍의 가장 낮은 수준은 C언어와 유닉스 윤영체제에서 빌려온 소켓을 사용한다.