본문 바로가기

네트워크

(16)
[네트워크] 동기 I/O와 비동기 I/O의 비교 동기 I/O와 비동기 I/O의 비교동기 실행과 비동기 실행의 차이점은 처음에는 약간 혼동될 수 있습니다. 기본적으로 입출력 동기화에는 동기 I/O와 비동기 I/O(또는 오버랩 I/O) 두 가지가 있습니다. 동기 I/O 처리에서는 스레드가 행동에 들어가면 I/O 요청이 완료될 때까지 기다려야 합니다(프로그램은 프로세스가 종료될 때까지 대기 상태에 '빠지고', 이를 빠져나갈 길은 없습니다). 비동기 환경에서 같은 행동이 일어나면 스레드는 커널의 도움을 받아 I/O 작업을 처리합니다. 실제로 스레드는 요청을 커널에 즉시 전달하고 계속해서 다른 작업을 처리합니다. 커널은 작업이 완료됐을 때 스레드에 신호를 보내고, 스레드는 현재 작업을 중단하고 I/O 작업의 데이터를 필요한대로 처리하는 것으로 이 신호에 답합니..
[네트워크] 블로킹과 논블로킹 메커니즘 블로킹 모드어떤 시스템 콜을 호출했을때 네트워크 시스템 동작이 완료할때까지 그 시스템 콜에서 프로세스가 멈춥니다.소켓 생성시 디폴트는 default 모드입니다.listen(), connect(), accept(), recv(), send(), read(), write(), recvfrom(), sento(), close()block 될 수 있는 소켓 시스템 콜입니다.I/O시 처리될 때까지 기다려야하기 때문에 비동기적인 작업 수행 불가능하게 됩니다.일대일 통신을 하거나 프로그램이 한가지 작업만 하면 되는 경우는 blocking 모드로 프로그램을 작성할 수 있습니다. 논블로킹 모드소켓 관련 시스템 콜에 대하여 네트워크 시스템이 즉시 처리할 수 없는 경우라도 시스템콜이 바로 리턴되어 응용 프로그램이 block..
[오픈소스] 메시지큐(Message Queue) 알아보기 메시지 큐 개념을 다시 잡아보고자 학습용도로 작성한 포스팅입니다. 출처는 http://zzong.net/post/3 입니다. 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미합니다. MOM을 구현한 시스템을 메시지 큐(MessageQueue: MQ)라 합니다. 메시지 큐는 별도의 공정 작업을 연기할 수 있는 유연성을 제공하여 SOA(Service-Oriendted Architecture)의 개발에 도움을 줄 수 있습니다. 프로그래밍에서 MQ는 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할때 사용하는 방법입니다. 이때 데이터를 교환할 때 시스템이 관리하는 메시지 큐를 이용하는 것이 특징입니..
[네트워크] Netty 프로젝트 3.1 가이드 The Problem 사람들은 다른 애플리케이션과의 통신을 위해 일반적인 목적의 애플리케이션이나 라이브러리를 사용합니다. 예를 들어, 우리는 웹서버로부터 정보를 가져오고 웹서비스를 통해 원격 프로시저를 호출하기 위해 HTTP 클라이언트 라이브러리를 사용합니다. 그러나, 일반적인 목적의 프로토콜이나 이를 구현한 것은 때때로 그렇게 잘 확장되지 않습니다. 덩치 큰 파일, 전자 메일 메시지, 금융정보와 멀티 플레이어 게임 데이터와 같은 실시간 메시지 교환을 위해 우리는 일반적인 목적의 HTTP 서버를 사용하지는 않을 것입니다. 필요한 것은 특수한 목적을 위해 매우 최적화된 프로토콜 구현입니다. 예를 들면, 여러분은 Ajax 기반 채팅 애플리케이션, 미디어 스트리밍, 혹은 덩치 큰 파일 전송을 위해 최적화된 H..
[인프라] NAT에 의한 IP 주소 변환 글로벌 IP 주소는 그 수가 부족해지고 있기 때문에 이에 대한 대응으로서 사설 IP주소를 활용하는 NAT(Network Address Translation)가 이용되고 있습니다. 사설 IP 주소와 글로벌 IP를 변환함으로써, 각각의 기기가 글로벌 IP를 가지지 않은 채로 글로벌 네트워크와 통신을 할 수 있게 해주는 기술이 NAT입니다. 엄밀하게 말해서 NAT라고 하기보다는 IP 주소와 접속포트를 변환하는 NAPT(Network Address Port Translation)가 사용되는 경우가 많습니다. 실제로는 NAT 라우터가 소스 IP와 소스 포트 및 목적지 IP와 목적지 포트를 기억해 둠으로써 IP 주소를 변환하는 구조입니다. 이는 가정용 라우터에서도 흔히 사용되고 있으며, 대규모 서비스에서도 많이 사..