TCP 3 - way handShake
TCP 3 - way handShake 란 무엇일까?
먼저 직역을 해보자면 TCP 3방향 응답 확인 방식이다.
여기서 TCP는 줄임말인데,
Transmission Control Protocol로 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜을 의미한다.
어째 이해가 점점 더 힘들어지는 기분이지만 마저 설명을 해보겠다.
먼저 전송계층을 이해하기 전에 네트워크에는 계층이라는 것이 존재한다.
다음과 같이 7개의 계층으로 나눠져 있으며 통신에 대한 기능을 수행한다고 이해하고 넘어가면 되겠다.
여기서 전송계층이란 4계층으로 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받게 해주는 역할을 수행해,
상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않도록 해준다.
자 이제 TCP 에 대한 개념이 어느정도 자리 잡았을 거라 생각하고,
TCP 3 - way handShake에 대한 설명으로 돌아오겠다.
TCP 3 - way handShake이란 결과적으로 TCP/IP 프로토콜을 이용해 통신을 하는 응용프로그램이 데이터를 전송하기 전 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정이다.
과정이 3개로 나눠지기에 3 - way handShake 라고 불리는 것인데 하나씩 살펴보겠다.
1. 먼저 클라이언트에서 서버에 접속을 요청하는 SYN 패킷을 보낸다.
클라이언트는 이 과정에서 SYN/ACK 응답을 기다리는 상태(SYN_SENT)가 된다
2. 서버는 SYN요청을 받고 클라이언트에게 요청수락 의미의 ACK 와 SYN flag가 설정된 패킷을 발송한다.
그리고 클라이언트가 다시 ACK로 응답하기를 기다린다.
이때 서버가 SYN_RECEIVED 상태가 된다.
3. 클라이언트는 서버에게 ACK를 보내고 이후 연결되어 데이터가 오가게 된다.
이때 서버 상태는 ESTABLISHED 상태가 된다.
이러한 과정으로 통신하는 것이 TCP 3 - way handShake 방식이다.
TCP 4 - way handShake
뭐가 다를까? 3 과 4 숫자 1개의 차이이다. 예상하기 쉽듯 이는 4가지로 쪼개서 진행되는 방식이다.
다만 위의 경우엔 TCP 연결을 초기화할 때 사용하지만 4의 경우 세션을 종료하기 위해 수행하는 절차이다.
1. 먼저 클라이언트가 종료를 위한 FIN 플래그를 서버로 전송한다.
2. 서버는 확인메시지 전송후 통신이 끝날때까지 기다린다.
이때 서버는 TIME_WAIT 상태이다.
3. 통신이 종료되면, 연결 종료를 알리기 위해 클라이언트에게 FIN플래그를 전송한다.
4.클라이언트에서 확인 메시지를 보낸다.
여기서 서버에서 FIN 전송 전 전송했던 패킷이 Routing 지연, 패킷 유실등으로 인한 재전송으로 FIN보다 늦게 도착하게 된다면 패킷이 드랍되고, 데이터는 유실되게 된다.
이를 방지하고자 클라이언트는 서버로부터 FIN을 수신하더라도 일정시간(default : 240s) 동안 세션을 남겨놓고 잉여 패킷을 기다른 과정을 걸친다. 이가 위에서 언급했던 TIME_WAIT 상태이다.
'CS' 카테고리의 다른 글
TLS/SSL HandShake (0) | 2022.11.20 |
---|---|
HTTP GET vs. POST (0) | 2022.11.13 |
ep 02-2. HTTP vs. HTTPS (0) | 2022.11.13 |
ep 02-1. 대칭키와 공개키 (0) | 2022.11.13 |
ep 01-2. OSI 7계층 (0) | 2022.11.06 |