본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
Tech.log/네트워크

[TCP의 3-Handshake VS 4-Handshake ]

by SpaciousKitchen 2021. 5. 12.

2021.05.11 - [Tech.log/네트워크] - [TCP/IP VS UDP]

 

[TCP/IP VS UDP]

TCP/IP 프로토콜이라고 주로한다. 신뢰성에 초점을 맞추고 데이터가 신뢰성 있게 올바르게 전송 되도록 하는 프로토콜이다. TCP는 IP 프로토콜로 만들어졌으며 패킷의 전송흐름을 담당한다. 패킷

itfordoit.tistory.com

TCP는  3- way Handshake 을 사용한 이유는 양방향 연결 지향으로 신뢰성있는 데이터 전송을 하기 위해서였다.

 

그림1. 3-way handshakeing 

 

1. 클라이 언트는 서버에세 접속을 요청 하는 SYN을 보낸다. 이후 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.

2.서버는 SYN요청에 대한 수락을 한다. ACK와 SYN flag 패킷을 전송하고 ACK의 대한 응답을 기다린다.. 이때 서버는 SYN_RECEIVED상태가 된다.

3. 클라이언트는 서버에서 ACK을 보내고 이후 부터는 연결 된 것으로 판단해 데이터를 주고 받는다. 이때 서버의 상태는 ESTABLISHED가 된다.

 

 

 3- way Handshake는 연결을 시작할때 사용 되는 것이라면 , 4-way Handshaking 는 세션을 종료하기 위해 수행된다.

그림2. 4-way handshakeing 

 

1. 클라이 언트가 연결을 종료하겠다는 FIN플래그를 전송한다.

2.서버는 ACK을 보내고 통신이 끝날때 까지 기다리는 TIME-WAIT상태로 전환한다.

3.서버가 통신이 끝났으면 연결이 종료되었다고 FIN플래그를 전송한다.

4. 클라이언트는 ACK을 보낸다.
만일 "패킷이 라우팅 지연이나 유실등으로 인해 FIN보다 늦게 도착하는 상황"이 발생할 수있다. 이를 대비하기 위해 클라이언트는 디폴트(Default) 시간 동안 세션을 남기고 패킷을 기다리는데 이를 TIME_WAIT이라고 한다.
동기화를 요청하는 SYN 은 ‘Synchronize sequence numbers’ 약자로 난수를 이용해 생성한다. 그 이유는 ?
- 연결을 할때 사용하는 port는 유한 범위내에서 사용 되며, 재사용 될 수 있다.이 때 두 통신 호스트는 과거에 사용된 포트 번호를 사용 할 가능 성이 있는데,  이를 구분 하기 위해 순차적 Number 아닌 난수를 사용하며 구분한다.
세션 종료는 왜 4-way Handshaking 인가 ?
- 클라이언트 가 데이터 전송을 마쳤다 할 지라도, 상대 호스트는 전송할 데이터가 남아있을 수 있다. 따라서, 모두 전송이 완료 되었을때, 상대 호스트가 FIN을 보내주는 과정이 더 추가 된 것이다.

 

 

 

 

 

'Tech.log > 네트워크' 카테고리의 다른 글

[CORS란]  (0) 2021.05.20
[HTTP 요청/응답 헤더]  (0) 2021.05.17
[HTTP VS HTTPS]  (0) 2021.05.17
[TCP/IP VS UDP]  (0) 2021.05.11
[OSI의 7 계층]  (0) 2021.05.11

댓글