Will find a way
3-way-handshake 코드 구현 본문
3-Way-Handshake란?
TCP는 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정한다. 이 과정을 3-way-handshake라고 한다.
순서
1. 클라이언트가 서버에 연결 요청(SYN)을 보낸다.
2. 서버가 클아이언트의 요청을 승인하고 연결 수락(SYN-ACK)을 보낸다.
3. 클라이언트가 서버의 수락을 확인(ACK)한다
일단 3-way-handshake를 구현하기 위해서는
클라이언트와 서버가 있어야한다.
서버와 클라이언트에 해당하는 코드를 구현해보자.
서버 (server)
// net 내장모듈 사용
const net = require("net");
const server = net.createServer(() => {});
// connection -> 서버측에서 서버 연결됐을 때 3-way-hands 마지막
server.on("connection", (client) => {
// client : 접속한 client에 대한 정보가 담김.
// setEncoding('utf8'); client가 전달한 내용을 utf8 문자열로 변환
client.setEncoding("utf8");
console.log("client가 접속했다.");
console.log(client);
client.on("data", (chunk) => {
// 데이터 받으면 콜백함수 실행
console.log(chunk);
// 버퍼
})
});
server.listen(3000, () => {});
// 서버가 돌아가게 해준다.
// 서버는 항상 돌아가야한다.
// 서버가 대기상태일 때 콜백 실행
클라이언트 (Client)
const net = require("net")
const socket = net.connect({
port: 3000,
host: 'localhost'
});
// 소켓이 커넥트일 때 콜백함수 실행
socket.on("connect", () => {
console.log("CLIENT : 연결 되있어");
socket.write("hello world");
// write 데이터를 보내겠다.
});
'BackEnd > NodeJs' 카테고리의 다른 글
[NodeJs] 템플릿 엔진 EJS 에 대해서 (0) | 2024.06.29 |
---|---|
NodeJs fs 모듈 (파일 시스템) (0) | 2024.06.18 |
스트림(Stream) 사용 예제 (0) | 2024.06.12 |
버퍼 (Buffer) / 스트림 (Stream) (1) | 2024.06.11 |
TCP 서버 간단하게 구현하기 (0) | 2024.06.10 |