반응형
시작하기 앞서 간단하게 네트워크에 대해서 얘기를 해보고 넘어가보면
네트워크란 데이터를 교환하기 위해 전송 매체를 매개로 서로 연결되어 있는 것이고,
인터넷은 전세계 컴퓨터들이 서로 연결되어있는 거대한 네트워크를 의미한다.
사람간의 대화에서 같은 언어를 이용해서 의사소통을 하듯이 네트워크 상에서 데이터를 주고 받기 위해서는 일종에 정해진 규약이 있는데 이것을 프로토콜 이라고 한다.
데이터를 전달하기 위해서는 OSI 7 계층에서 전송계층을 사용하여 TCP, UDP 통신을 하는데 이에 대한 내용은 아래 참고 포스팅을 참고하도록 하자.
이제 여기서 TCP에서의 연결 지향적인 특성을 갖게 해주는 과정이 바로 이 포스팅의 주제인 3Way - handshake 방식이다.
간단하게 비유를 하면 두명이 서로 무전기로 대화를 하는 과정이다.
A : 잘 들리나? 오바.
B : 잘 들린다. 오바.
A : 확인 했다.
이렇게 3번의 악수(handshake) 가 오고 가는 것이다.
실질적으로는 사용자인 client랑 데이터를 가져올 server에서의 통신이며 사진으로 보면 다음과 같다.
스텝은 다음과 같다.
(SYN > synchronize sequence numbers / ACK > acknowledgements)
- 클라이언트는 서버에 접속을 요청하는 SYN패킷을 보낸다. 이때 클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT상태가 된다.
- 서버는 Listen상태로 포트 서비스가 가능한 상태여야 하고 그렇다면 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 클라이언트가 ACK로 응답하길 기다린다. 그러면서 서버는 SYN_RECEIVED 상태가된다.
- 클라이언트는 서버에게 ACK 를 보내고 이후로부터는 연결이 이루어지고 데이터가 오고가게 된다. 서버의 상태는 ESTABLISHED가 된다.
이렇게 신뢰를 얻는 과정이 3Way-Handshake 방식이다.
참고 포스팅
https://thenicesj.tistory.com/198
반응형
'IT > Knowledge' 카테고리의 다른 글
로드밸런싱 (Load balancing) 종류 / 알고리즘 / L4장비 (43) | 2022.05.06 |
---|---|
websocket과 Rest의 차이점 (11) | 2022.05.05 |
TCP / UDP (13) | 2022.05.02 |
지역변수와 전역변수 (14) | 2022.04.29 |
캐시서버에 대해서 (11) | 2022.04.25 |
댓글