소켓프로그래밍 2

[네트워크] TCP 멀티플렉싱 이해하기

멀티플렉싱이란? 하나의 통신 채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술이다. 기본적으로 멀티플렉싱이란 여러 개를 하나로 묶어 다중화 시킨다는 뜻이다. 코드에서 볼 것은 여러 개의 channel을 하나로 묶어서 사용하는 것인데, 이 방법을 입출력에 적용한다. 여기서 입출력 버퍼를 사용하게 된다. Blocking mode로 동작하는 것들과는 달리 멀티플렉싱은 Non-Blocking Mode로 동작하게 된다. I/O blocking : I/O의 효율을 높이기 위해 디스크에서 읽어오는 data를 운영체제의 kernel 버퍼 에 저장한 후, 버퍼가 꽉 차면 프로세스의 버퍼로 옮기는데, data가 kernel 버퍼로 저장되는 동안 프로세스의(정확하게는 I/O를 요청한 thread가) blocking..

[네트워크] TCP/UDP 와 자바 소켓프로그래밍 예제

■ 소켓 프로그래밍 소켓 프로그래밍이란 소켓을 이용한 통신 프로그래밍을 말한다. 소켓이란 (Socket) 프로세스 통신 간에 사용되는 양쪽 끝단을 의미한다. 즉, 소프트웨어 차원에서 원격에 존재하는 두 호스트를 연결해주는 매개체이다. 대표적으로 TCP 와 UDP이용이 있다. 소켓프로그램은 주로 서버-클라이언트 2개의 프로그램이 쌍을 이룬다. 이런 흐름은 포트에 대기하다가 클라이언트의 연결을 기다리고 (listen), 클라이언트가 접근을 요청하면 받아들여서(accept) 서버-클라이언트 연결을 설정하고, 클라이언트의 여러 명령을 받아서 서비스를 하게 되는 것이다. 비유적으로 생각해보자. 서버소켓은 먼저 소켓을 생성한다. (전화기 구입) 그리고 주소와 포트를 할당한다. (전화번호 개통) 요청대기 (전화를 기..

반응형