본문 바로가기
이론/IT

TCP 연결 과정

by 프로그래밍 공부 2023. 11. 22.

[ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake (tistory.com)

 

[ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake

우선 TCP의 3-way Handshaking 에 대하여 알아보겠습니다. * TCP 3-way Handshake 란? TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토

mindnet.tistory.com

상기 블로그 게시글을 학습한 내용입니다. 

TCP는 3-way handshake와 4-way handshake를 통해 연결을 설정하고 해제한다. 그 과정을 학습해보자.

TCP 3-way handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 
먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

클라이언트가 Synchronize Sequence Numbers인 SYN을 서버에게 보내면

서버는  SYN을 받고, 클라이언트에게 받았다는 신호 Acknowledgement인 ACK와 SYN 패킷을 보낸다.

클라이언트는 서버의 응답으로 ACK와 SYN을 패킷을 받고 ACK를 서버로 보낸다.

TCP - IT위키 (itwiki.kr)

위와 같은 형태이다. 여기서 SYN은 랜덤으로 설정하여 세션을 연결하는 데 사용된다. ACK 는 SYN 패킷을 받았다는 것을 의미하기에 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함해서 전송한다. 

즉 클라이언트가 SYN seq=x 를 서버에 보냈다면 서버는 패킷을 받았다는 신호로 ACK=x+1과 SYN seq=y를 보낸다.
이후 클라이언트는 서버의 응답을 받고 ACK=y+1을 서버로 보내게 되고, 연결이 설정된다.

그 과정에서 포트 상태는 위와 같이 변한다.

이러한 과정을 통해서 Full-Duplex 통신을 구성할 수 있다. 

 

TCP 4-way handshake 또한 비슷하지만 여기서는 FIN 플래그를 이용한다. 
Fin(Finish)는 세션을 종료시키는 데 사용되며, 더 이상 보낼 데이터가 없음을 나타낸다. 

TCP는 대부분의 연결 지향 프로토콜과 같이 두 가지의 연결 해제 방식이 있다. 

1. 정상적인 연결 해제(Graceful connection release) 
양쪽의 커넥션이 서로 모두 커넥션을 닫을 때까지 연결되어 있다.

2. 갑작스런 연결 해제(Abrupt connection release)
갑자기 한 TCP 엔티티가 연결을 강제로 해제한 경우, 한 사용자가 두 데이터 전송 방향을 모두 닫는 경우다.

갑작스런 연결 해제는 RST라는 재 연결 종료 플래그가 전송되면 수행된다.

다시 돌아가서 4-way handshake는 다음과 같이 진행된다. 

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

서버는 일단 확인 메시지를 보내고 자신의 통신이 끝날때까지 기다리는데, 이 상태가 TIME_WAIT이다.

서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 플래그를 전송한다.

클라이언트는 확인했다는 메시지를 보낸다. 

이 과정에서 서버에서 FIN을 전송하기 전에 전송한 패킷이 라우팅 지연이나 패킷 유실로 인한 재전송 등으로 인해
FIN 패킷보다 늦게 도착하는 상황이 발생할 수 있다. 이를 대비해서 클라이언트는 서버로부터 FIN을 수신하더라도 일정시간 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 되는데 이 과정을 TIME_WAIT이라고 한다. 일정 시간은 기본적으로 240초로 설정되어 있다.

 

TCP - IT위키 (itwiki.kr)

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

'이론 > IT' 카테고리의 다른 글

운영체제 요약 공부  (0) 2023.11.22
OSI 7계층  (0) 2023.11.22
TCP/IP 4계층  (1) 2023.11.22
TCP와 UDP  (2) 2023.11.22
암호화 개념  (1) 2023.11.22