TCP란, 인터넷 상에서 데이터를 메시지 형태(세그먼트)로 전달하기 위해 IP와 함께 사용하는 프로토콜 입니다. TCP는 애플리케이션에게 신뢰적이고 연결지향적인 서비스를 제공합니다.
일반적으로 IP와 함께 사용되며 IP는 배달(주소지정)을 TCP는 패킷의 추적 및 관리(데이터 전송)를 합니다.
- 흐름 제어 : 송신과 수신의 속도차이를 조절하여 수신자의 Overflow를 방지
- 혼잡 제어 : 네트워크 내의 패킷 수가 넘치지 않도록 방지
- Full-Duplex : 전이중 : 전송이 양방향에서 동시에 발생할 수 있음 : 전송 효율 좋음
- Point to Point : 점대점 : 1 : 1로 직접 연결 : 안정적
TCP 헤더에는 서로의 요청에 대한 상태를 확인하기위한 플래그 비트가 존재합니다.
중요한 3가지 플래그 비트를 알아보자
- SYN : 000010 : 연결 설정
- ACK : 010000 : 응답 확인
- FIN : 000001 : 연결 해제
UDP란, 데이터를 데이터그램(독릭접인 관계를 지니는 패킷) 단위로 처리하는 프로토콜입니다.
TCP 통신을 통해 데이터를 전송하기 위해서 네트워크 연결을 설정하는 과정입니다.
양쪽 모두가 데이터를 주고 받을 준비가 되었다는 것을 보장하는 과정입니다.
데이터 전달이 시작되기전에 사전에 세션을 수립하는 과정입니다.
1. 클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 전송합니다. SYN 패킷은 세션을 설정하는 데 사용되며 초기에 시퀀스 번호를 보냅니다.
시퀀스 번호 : TCP 세그먼트의 데이터 순서 번호
2. SYN 요청을 받은 Server는 Client에게 요청을 수락한다는 ACK과 접속을 요청하는 SYN 패킷을 전송합니다.
받은 시퀀스 번호에 1을 더해서 ACK로 돌려줍니다.
3. Client는 Server에게 ACK 패킷을 전송하고 이후 부터는 연결이 이루졌음을 의미하고 데이터를 교환하게 된다. 이상태를 ESTABLISHED 라고 한다.
TCP 연결을 해제하기위해 사용합니다.
Half Close
연결을 종료하는 과정에서 바로 연결을 종료한다면 문제가 발생할 수 있기때문에 반정도 종료해놓고 상대의 응답을 기다립니다. 상대로부터 FIN 패킷 응답이 온다면 나머지 반을 종료하고 ACK 패킷으로 응답합니다.
이 과정으로 좀 더 안정적인 종료과정을 수행할 수 있습니다.