티스토리 뷰

728x90

TCP (Transmission Control Protocol) 란?

▪️ 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.

▪️ 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다.

▪️ 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서,이를 교정하고 순서를 재조합할수 있도록 해준다. 

 

TCP 의 역할

▪️ 받을 대상 노드 (호스트)가 서비스 기능 (연결 기능) 상태인지 확인 및 연결을 수립하는 역할

▪️ 전송을 제어해주는 정보를 패킷에 추가해주는 역할

 

TCP 연결 성립 과정

TCP 는 신뢰성을 확보 할 때 '3 way handshake' 라는 작업을 진행 한다.

 

1️⃣ SYN : 클라이언트는 서버에 클라이언트의 ISN 을 담아 SYN을 보낸다. ISN은 새로운 TCP 연결의 첫번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있다.

2️⃣ SYN + ACK : 서버는 클라이언트의 SYN을 수신하고 서버의 ISN 을 보내며 승인번호로 클라이언트의 ISN + 1 을 보낸다.

3️⃣ ACK : 클라이언트는 서버의 ISN + 1 한 값인 승인번호를 담아 ACK 를 서버에 보낸다.

 

이렇게 3 way handshake 과정 이후 신뢰성이 구축되고 데이터 전송을 시작한다.

이러한 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며 UDP 는 이러한 과정이 없기 때문에 신뢰성이 없는 계층이라고 한다.

 

* SYN : Synchronize 의 약자이며, 연결 요청 플래그

* ACK : Acknowledgment 의 약자이며, 응답 플래그

* ISN : Initial Sequence Numbe 의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호이다.

 

TCP 연결 해제 과정

TCP 가 연결을 해제할 때는 '4 way handshake' 라는 작업을 진행 한다.

 

 

1️⃣ 클라이언트가 연결을 닫으려고 할 때 FIN 으로 설정된 세그먼트를 보낸다. 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다린다.

2️⃣ 서버는 클라이언트로 ACK 라는 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT 상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어간다.

3️⃣ 서버는 ACK 를 보내고 일정 시간 이후에 클라이언트에 FIN 이라는 세그먼트를 보낸다.

4️⃣ 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK 를 보내서 서버는 CLOSED 상태가 된다. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다.

 

 

 

Reference

면접을 위한 CS 전공지식노트(길벗)

 

728x90