개인공부) 서버실습(26) - TCP, UDP

Justin·2022년 6월 17일
1

서버공부

목록 보기
25/45
post-custom-banner

✅ 지난시간

🔌 TCP 프로토콜

❓ 왜 TCP에 대해 알아야하는가?

TCP/IP 프로토콜 을 학습할 당시에 간단하게 알고 넘어갔지만 패킷 통신처리를 하기 위해서는 TCP는 뭐고, UDP랑은 어떤 차이가 있는지 이해해야 처리를 할 수가 있다.

💫 간단 예시

TCP로 구성시에는 요청시에 100bytes를 요청해도 상황에따라 30bytes 만 처리하고, 나머지는 나중에 처리하는 경우가 있을 수 있음

그러면 다 처리 된 뒤에 어떤 액션이 진행되도록 구현을 해야함. 이러한 특징이 있기에 TCP를 더 알아두어야한다.

🟦 TCP란?

특정 클라이언트와 서버 프로그램 사이에 데이터 통신을 제공해주는 Transport layer의 대표적인 두 가지 프로토콜중 하나이다.

🧐 TCP(Transmission Control Protocol)
패킷이 누락되거나 중복되지는 않았는지 최종 확인하는 역할을 하며, 꼼꼼하게 관리를 해주는 프로토콜이다. 안정성의 이율 주로 MMO에서 자주 사용한다.

🟩 TCP와 UDP의 차이

📤 연결 지향성

TCP(연결형 서비스)
1. 연결을 위해 할당되는 논리적 경로가 있다.
2. 전송 순서가 보장된다.

UDP(비연결형 서비스)
1. 연결이라는 개념은 없다.
2. 전송 순서 보장이 없다.(보내는 순서와 상관없이 맘대로감)

🛵 속도와 신뢰성

TCP 신뢰성 GOOD 속도 BAD
1. 분실이 일어나면 다시 전송(TCP LAYER에서 처리)
2. 물건을 주고 받을 상황이 아니면, 일부만 보냄
-> 흐름제어(혼잡제어)가 됨
3. 고려할게 많아 속도는 느림

UDP 신뢰성 BAD 속도 GOOD
1. 분실 책임 없음
2. 일단 전송만함
3. 단순해서 속도가 빠름

정리를 하자면 아래와 같다.

TCP: 안전한 트럭, 전화 연결방식

  • 배송이 안정적으로 처리 되어있는지 확인함
  • 안정적이나 속도는 느림

UDP: 위험한 총알 배송, 우편 전송 방식

  • 보내놓고 확인은 하지 않음. 잃어버려도 책임 없음
  • 위험하지만, 속도는 빠름

📝 추가 공부 - TCP 3way, 4way Handshake

TCP에서는 신뢰성을 높이기 위해 꼼꼼하게 확인을 한다고 했는데, 이 확인 과정을 3,4 way로 한다고 이런 말이 나온다.

3way는 세션이 연결될 때 거치는 절차, 4way는 종료할 때 거치는 절차이다.

🔹 Three Way Handshake
1) 클라가 서버에게 전송요청을 한다.
2) 서버가 클라에게 준비될 경우 요청 수락을 보냄
3) 서버의 승인 수락을 받고, 클라이 확인을 보냄

위 과정을 거쳐 연결이 처리 된다. 아래 과정을 통해 종료가 된다.

🔹 Four Way Handshake
1) 클라이언트가 연결 종료 선언
2) 서버는 확인 메시지를 보내고, 자신의 통신 종료 시 까지 대기함(TIME_WAIT 상태)
3) 서버가 통신이 끝나면, 연결 종료 메시지를 클라에게 보냄
4) 클리언트가 확인 회신을 보냄

이렇게 여러 단계를 거치기에 안전할 수 밖에 없고, 느릴 수 밖에 없을 것 같다. 그렇기에 정보를 주고 받는 것이 중요한 게임에서는 대부분 TCP를 이용하는게 아닐까 싶다.

profile
인디 게임을 만들며 공부하고 있습니다.
post-custom-banner

0개의 댓글