일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- branck 합치기
- js 메서드
- React 자습서
- js DOM 기초
- js 함수 표현식
- js로또 만들기
- 콜백함수
- js 무한루프 슬라이드
- Git
- js 로또
- Rebase
- js 게시판
- Object.keys
- nodejs 게시판
- css #css기초
- Linux 사용자
- GitHub
- 3way handshake
- node js 기본
- 화살표함수
- node js 설치
- typescript
- 배열 메서드
- js 댓글
- JS DOM
- js 함수 #함수
- React 기본설정
- js 댓글수정
- Linux 기본
- js 생성자 함수
- Today
- Total
개발 노트
nodejs [3way handshake] 본문
목차
1. 3way handshake 작동방식
2. server code
3. client code
3way handshake 작동 방식
1. 서버를 생성 후 , 대기상태를 만들어둔다.
net을 사용하면 네트워크 api를 만들고 tcp를 제공해서 통신이 가능하게 만든다.
port와 host를 지정해 줘야한다. 이 때 porcess.env.SERVER 값이 없다면 3000, 127.0.0.1 을 부여해준다.
port 값은 65355 개정도의 값을 가지고 있다. 이 중 0과 맨 마지막 값과, 1000 자리까진 빼고 쓴다.
포트값과 ip값을 같이 지정을 해줘야 포트값에 겹치지 않고 지정이 되기 때문에 둘 다 지정을 해줘야한다.
2(1). client의 연결시도
net을 써서 tcp 통신이 가능하게 만들고 connect 포트값과 host 값을 입력을 하게 되면 server로 syn 값을 보낸다.
server는 이 syn값을 받고 syn + ack 값을 client로 보낸다.
3(2).client 연결
server로부터 syn + ack 값을 받으면 client 는 연결 되었다고 인식하고 콜백 함수 console.log를 실행한다.
socket.on("connect") connect 됐을 때 이벤트 함수처럼 발동 되도록 하는 것이다.
4(3). connection
client 에서 ack 값을 다시 server로 보내서 받게되면 server도 연결이 되었다고 인식한다.
서버 대기상태를 제외한 3번의 통신을 3way handshake 라고 한다.
server.js
listen의 2가지 인자값
1: port
2: host / 어디 컴퓨터에 열건지 ? 127.0.0.1 <-- 내 컴퓨터의 host
3: listen 될 경우 실행할 함수 (callback) = 대부분 콘솔 찍는다*/
server.listen(PORT, HOST, ()=> {
console.log(`Server Listening port : ${PORT}`)
})
client.on("data", (data)=>{
})
client 로부터 data를 받았을 경우 데이터 콜백 함수로 발동이 된다.
client.js
socket.write("나 데이터 보낸다!")
socket.on("data", (chunk)=>{
console.log(`Received : ${chunk}`)
})
socket.end()
writef를 통해 데이터를 보낼 수 있다. server에서 client로 보내는것도 가능하다.
data를 받았을 때 chunk로 받고 이걸 console로 찍을 수 있다.
socket.end() 를 통해 연결을 종료 할 수 있다.
http 는 기본적으로 tcp 통신을 한다.
tcp 통신은 쌍방향 통신이 가능하다 > 서버와 클라이언트가 요청이 가능하다
http 는 url을 치면 3way handshake를 기본적으로 한다.
'nodejs' 카테고리의 다른 글
nodejs 게시판 (0) | 2022.12.20 |
---|---|
Express (1) | 2022.12.14 |
http tcp 미완.2 (0) | 2022.12.09 |
nodejs [내장객체,케싱,내장모듈,osi7계층] (0) | 2022.12.06 |
nodejs (0) | 2022.12.05 |