[TIL] 20241210 TIL

Jaeyoung Ko·2024년 12월 10일
0

이제 다가오는 CH4 주차에는 웹 소켓을 활용한 실시간 데이터 통신에 대한 학습이 주를 이룬다.


목차는 다음과 같이 볼 수 있다.

  • 게임 개발의 전반적인 프로세스
  • HTTP, TCP, Web Socket 에서의 데이터 교환 방법
  • 데이터 교환을 위한 packet 구조 설계
  • handler 구조의 server 데이터 처리 구현

<1> HTTP (hypertext transfer protocol)

application layer level


(1) Request - Response 구조


HTTP 에서는 기본적으로 요청-응답의 구조를 가진다. 즉, 비연결성으로 연결에 대해 항상 유지하는 것이 아니라, 요청에 대해서만 응답을 하는 구조이다.

이는 연결을 유지할 필요가 없기 때문에 들어가는 리소스가 가벼워져 처리속도가 빠른 점을 가지게 된다.

그리고 이전에 여떤 요청을 했는지에 대한 정보의 저장을 담고 있지 않는 무상태성을 띈다.


따라서 HTTP의 특성을 요약하면 다음과 같다.

요청-응답 구조

비연결성

Stateless



<2> TCP (Transmission Control Protocol)

transport layer level


TCP는 연결지향적인 통신규약이다.

// 3way handshake

client 	|| 	_____  ||	Server
			-SYN->
			<-SYN-ACK
			-ACK->

서버는 접속 요청을 받기 위한 소켓을 열어 listen을 시작하고,
클라이언트는 소켓을 만들고 서버에 접속을 요청하여 connect한다.
서버는 요청을 받아 클라이언트와 통신할 소켓을 만들어 accept 과정을 거치면,
해당 소켓을 통해 데이터 교환 send & receive가 이루어진다.
통신을 마치면 소켓을 닫아주는 것으로 마무리된다.



<3> Web Socket


웹소켓은 주요 특성은 다음과 같다.

  • 실시간 통신
  • 양방향 통신
  • 지속적인 연결
  • 낮은 오버헤드
  • HTTP와의 호환성

웹 소켓을 통한 통신은 지속적인 연결성을 유지함으로 실시간 통신이 가능하며 그 교환의 방향도 양방향으로 동시에 데이터를 주고 받는 것이 가능하다.

또한, 헤더에 포함하는 데이터가 HTTP보다 경량화되어 있어 낮은 오버헤드를 가진다. HTTP 요청은 매 요청 시 다양한 메타데이터(콘텐츠 타입, 길이 등)를 포함해야 한다. 반면, 웹 소켓 헤더는 초기 연결 설정 시에만 사용되며, Upgrade와 Connection 필드가 포함되어 프로토콜을 웹 소켓으로 업그레이드하고, 이후의 데이터 전송에서는 헤더를 사용하지 않고, 연결이 지속적으로 유지한다.



profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글