Will find a way

3-way-handshake 코드 구현 본문

BackEnd/NodeJs

3-way-handshake 코드 구현

Jaka_Park 2024. 6. 18. 14:08

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 데이터를 보내겠다.
});