TCP/IP 프로토콜 을 학습할 당시에 간단하게 알고 넘어갔지만 패킷 통신처리를 하기 위해서는 TCP는 뭐고, UDP랑은 어떤 차이가 있는지 이해해야 처리를 할 수가 있다.
TCP로 구성시에는 요청시에 100bytes를 요청해도 상황에따라 30bytes 만 처리하고, 나머지는 나중에 처리하는 경우가 있을 수 있음
그러면 다 처리 된 뒤에 어떤 액션이 진행되도록 구현을 해야함. 이러한 특징이 있기에 TCP를 더 알아두어야한다.
특정 클라이언트와 서버 프로그램 사이에 데이터 통신을 제공해주는 Transport layer의 대표적인 두 가지 프로토콜중 하나이다.
🧐 TCP(Transmission Control Protocol)
패킷이 누락되거나 중복되지는 않았는지 최종 확인하는 역할을 하며, 꼼꼼하게 관리를 해주는 프로토콜이다. 안정성의 이율 주로 MMO에서 자주 사용한다.
TCP(연결형 서비스)
1. 연결을 위해 할당되는 논리적 경로가 있다.
2. 전송 순서가 보장된다.
UDP(비연결형 서비스)
1. 연결이라는 개념은 없다.
2. 전송 순서 보장이 없다.(보내는 순서와 상관없이 맘대로감)
TCP 신뢰성 GOOD 속도 BAD
1. 분실이 일어나면 다시 전송(TCP LAYER에서 처리)
2. 물건을 주고 받을 상황이 아니면, 일부만 보냄
-> 흐름제어(혼잡제어)가 됨
3. 고려할게 많아 속도는 느림
UDP 신뢰성 BAD 속도 GOOD
1. 분실 책임 없음
2. 일단 전송만함
3. 단순해서 속도가 빠름
정리를 하자면 아래와 같다.
TCP: 안전한 트럭, 전화 연결방식
UDP: 위험한 총알 배송, 우편 전송 방식
TCP에서는 신뢰성을 높이기 위해 꼼꼼하게 확인을 한다고 했는데, 이 확인 과정을 3,4 way로 한다고 이런 말이 나온다.
3way는 세션이 연결될 때 거치는 절차, 4way는 종료할 때 거치는 절차이다.
🔹 Three Way Handshake
1) 클라가 서버에게 전송요청을 한다.
2) 서버가 클라에게 준비될 경우 요청 수락을 보냄
3) 서버의 승인 수락을 받고, 클라이 확인을 보냄
위 과정을 거쳐 연결이 처리 된다. 아래 과정을 통해 종료가 된다.
🔹 Four Way Handshake
1) 클라이언트가 연결 종료 선언
2) 서버는 확인 메시지를 보내고, 자신의 통신 종료 시 까지 대기함(TIME_WAIT 상태)
3) 서버가 통신이 끝나면, 연결 종료 메시지를 클라에게 보냄
4) 클리언트가 확인 회신을 보냄
이렇게 여러 단계를 거치기에 안전할 수 밖에 없고, 느릴 수 밖에 없을 것 같다. 그렇기에 정보를 주고 받는 것이 중요한 게임에서는 대부분 TCP를 이용하는게 아닐까 싶다.