TCP란?
연결 지향형 프로토콜로, 연속성 있는 데이터 패킷을 주고 받을 때 사용한다.
특징
- 전송되는 데이터의 신뢰성 보장(흐름 제어, 혼잡 제어, 오류 제어)
- 파일전송에 주로 사용
- 가상 회선을 만들어 신뢰성 보장
TCP 3 way Handshake
연결하고자 하는 두 장치 간의 논리적 접속을 성립하기 위해서 사용하는 연결 확인 방식으로, 3번의 확인 과정을 거친다고 해서 3 way handshake라고 부른다.
TCP 3-way HandShaking 역할
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제 데이터 전달이 시작하기 전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을 수 있도록 한다.
TCP의 3-way HandShakin 과정
과정을 그림으로 표현하면 위와 같은데 자세히 알아보기 전에 처음 보는 용어들이 많이 보인다. 정리를 하면 아래와 같다.
- SYN(Synchronize Sequence Numbers) : 연결 확인을 위해 보내는 무작위의 숫자값
- ACK(Acknowledgements) : Client 혹은 Server로부터 받은 SYN에 1을 더해 SYN을 잘 받았다는 ACK
- ISN(Initial Sequence Numbers) : Client와 Server가 각각 처음으로 생성한 SYN
이제 과정을 자세하게 나누면 이름에 맞게 3단계로 진행이 된다.
1. Client가 Server에 접속을 요청하는 SYN 패킷을 보낸다.
이 때 Client는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태, Server는 Wait for Client 상태이다.
2. Server는 SYN 요청을 받고 Client에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고
Client가 다시 ACK로 응답하기를 기다린다. 이 때 Server는 SYN_RECEIVED 상태가 된다.
3. Client는 Server에게 ACK를 보내고 이후부터는 연결이 이루어지고 데이터가 오가게 되는 것이다.
이때의 Server 상태는 ESTABLISHED이다.
위와 같은 방식으로 통신하는 것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3-way handShake 방식이다.
TCP 4 way Handshake
4 way handshake는 3 way handshake와 반대로 가성 회선 연결을 해제할 때 주고받는 확인 작업이다. 4번의 확인 과정을 거친다.
TCP 4-way handshaking 과정
3 way handshake 과정에서 보지 못한 용어가 있다. 아래와 같은 의미를 가지고 있다.
- FIN(Finish) : TCP 연결을 종료하겠다는 메세지
이제 과정을 자세하게 확인하면 아래와 같다.
1. Client가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때 Client는 FIN-WAIT 상태가 된다.
2. Server는 FIN플래그를 받고, 일단 확인메세지 ACK를 보내고 자신의 통신이 끝날때까지 기다리는데
이 상태가 CLOSE-WAIT 상태다.
3. 연결을 종료할 준비가 되면, 연결해제를 위한 준비가 되었음을 알리기 위해 Client에게 FIN플래그를 전송한다.
이때 Server의 상태는 LAST-ACK이다.
4. Client는 해제준비가 되었다는 ACK를 확인했다는 메세지를 보낸다.
Client의 상태가 FIN-WAIT 에서 TIME-WAIT으로 변경된다.
TIME-WAIT은 혹시 모를 패킷 전송 실패에 대비하기 위해 존재하는 소캣이다.
만약 TIME-WAIT이 없으면 패킷의 손실이 발생하거나, 통신자 간 연결 해제가 제대로 이루어지지 않을 수 있기 때문에
중요하다.
참고 블로그
'CS(Computer Science)' 카테고리의 다른 글
CS Study 2주차 : HTTP vs HTTPS / SSL(Secure Sockets Layer) (0) | 2022.11.09 |
---|---|
CS Study 2주차 : 대칭키와 공개키 (0) | 2022.11.09 |
CS Study 1주차 : TCP vs UDP (0) | 2022.11.05 |
CS Study 1주차 : OSI 7계층 (1) | 2022.11.05 |
DTO, DAO, Entity (0) | 2022.08.08 |