티스토리 뷰

소켓을 통해 프로세스들은 IP 주소와 포트를 통해 통신할 수 있다. 소켓을 이용한 프로세스 간 통신(IPC)은 동일한 서버에 존재하는 프로세스 간 통신뿐만 아니라 다른 서버에 존재하는 프로세스 간 통신에도 사용할 수 있다.

Node.js는 net 모듈을 제공해 소켓 서버와 클라이언트 생성을 지원한다.

 

네트워크 소켓 이해

네트워크 소켓은 컴퓨터 네트워크를 통한 통신의 종단에 위치한다. 소켓은 HTTP 계층 아래에 존재하고, 서버 간의 지점 대 지점 point to point 통신을 제공한다. 인터넷 통신은 인터넷 소켓에 바탕을 두고 있다.

 

소켓은 IP 주소와 포트의 조합으로 구성된 소켓 주소를 사용해 동작한다. 소켓 연결은 두 가지 형태(서버, 클라이언트)로 존재하며 서버는 연결을 수신하고, 클라이언트는 서버에 연결을 진행한다. 이때 서버와 클라이언트는 유일한 IP주소와 포트 조합을 가져야 한다.

 

Node.js 의  net 모듈 소켓은 전송 제어 프로토콜 TCP 를 사용해 원시 데이터를 전송한다. TCP 프로토콜은 데이터를 패키징하고 지점 간 데이터 전송 성공 여부를 보장한다. net 모듈은 요청을 처리할 TCP 서버 및 요청을 만들 TCP 소켓 클라이언트를 위한 Framework를 제공한다.

 

소켓 서버 상에서 socket 객체는 클라이언트가 서버에 연결하는 시점이나 연결 이벤트 핸들러에 전달되는 시점에 생성한다.

 

Client

var net = require('net');
var client = net.connect({port: 8107, host:'localhost'},function(){
//net모듈의 소켓 객체를 사용
console.log('Client connected');
client.write('Some Data\r\n');
});

client.on('data',function(data){//data 이벤트 발생시 callback
console.log(data.toString());
client.end();
});

client.on('end',function(){//end 이벤트 발생시 callback
console.log('Client disconnected');
});
 

Server

//server객체는 net.createServer() 호출 시 내부적으로 생성된다.
//소켓 서버는 연결을 위한 수신 처리 후 서버 연결을 통한 데이터 송신/수신을 한다.
var net = require('net');
var server = net.createServer(function(client){
console.log('Client connected');
client.on('data', function(data){
console.log('Client sent ' + data.toString());
});
client.on('end',function(){
console.log('Client disconnected');
}
);
client.write('Hello');
});
server.listen(8107, function(){
console.log('Server listening for connections');
});

 

 

 

TCP - Transmission Control Protocol 전송 과정을 컨트롤 하는 프로토콜, 호스트간 신뢰성

있는 데이터 전달과 흐름제어 및 혼잡제어 등을 제공하는 전송계층의 연결 지향형 프로토콜

 

UDP - User Datagram Protocol 사용자 데이터그램 프로토콜, 전송계층에서 제공해야할

최소한의 서비스, 즉 호스트간 데이터 전달과 오류검출만을 제공하는 비연결형 전송 프로토콜

 

동작TLS 서버와 TLS 클라이언트 Transprot Layer Security/Secure Sockets Layer

인터넷에서 안전하게 통신하도록 하는 암호화 프로토콜

통신하는 소켓 서버의 적합성 여부를 판단하기 위해 세션 키와 x.509 인증서를 사용한다.

장기간 사용하는 공개 키와 개인 키를 사용해 송/수신 데이터 암호화를 위해 단기간 사용하는

세션 키를 교환한다. 인증 역할도 수행하기 때문에 의도 하지 않은 서버로 재 라우팅이 수행되는

중간자 공격을 방어할 수 있다.

 

'node.js' 카테고리의 다른 글

(express) 8. 폼 처리  (0) 2016.01.18
7. HTTP 서비스를 Node.js로 구현  (0) 2016.01.12
(express) 3. express로 시간 절약  (0) 2016.01.11
6. Node.js에서 파일시스템 접근  (0) 2016.01.04
5. Node.js의 데이터 입출력 처리  (0) 2015.12.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함