웹젠 하반기 인턴쉽 백엔드 부문 코딩 테스트 D-1

14문제에 60문제가 출제 된다고 공지가 되었음
알고리즘 문제라면 간단한 문제일 것 같고 예제 문제를 보니 CS문제가 있어서
게임 회사 관련 CS 지식을 한 번 정리해보려고 한다.
TCP 통신 (Transmission Control Protocol)
정의
TCP는 데이터의 신뢰성을 보장하는 연결 지향적 프로토콜로, 전송되는 데이터를 순서대로 수신하도록 보장함.
주요 특징
1) 연결 지향적: 데이터 전송 전에 송신자와 수신자가 연결을 설정 (3-way handshake 방식).
2) 신뢰성 보장: 전송된 데이터가 순서대로 도착하고, 손실된 데이터는 재전송.
3) 흐름 제어 및 혼잡 제어: 네트워크 혼잡 시 전송 속도를 조절하여 통신 품질을 유지.
*3-way handshake는 3번의 확인 절차를 거치는 것이라고 함.

- 3-Way Handshake 과정
1) SYN(Synchronize) : 클라이언트가 서버에 연결 요청 (SYN 패킷 전송).
2) SYN-ACK( Synchronize - Acknowledgement ) : 서버가 요청 수락 후 클라이언트에게 응답.
3) ACK: 클라이언트가 서버에 확인 응답을 보내며 연결 완료.
-> 연결 요청을 전송, 서버에서는 연결 요청을 수락한 것을 또 클라이언트에 전송, 최종적으로 클라이언트가 확인 응답을 보내는 것으로 종료

4-Way Handshake 과정 (연결 종료)
1) FIN: 클라이언트가 연결 종료 요청.
2) ACK: 서버가 확인.
3) FIN: 서버가 종료 준비 완료 후 클라이언트에 종료 요청.
4) ACK: 클라이언트가 종료 요청 확인 후 연결 종료.
-> 보통 게임에서 로그아웃일 경우 4-way handshake를 사용.
1) 로그 아웃 과정에서 남은 데이터를 전송하고 종료
2) 서버와 클라이언트가 자원을 더이상 사용하지 않도록 함
사용 사례
웹 서비스 (HTTP/HTTPS): 웹 페이지 로딩 시 데이터의 손실이나 순서 오류 없이 전달되어야 함.
이메일, 파일 전송(FTP): 데이터가 정확히 도착해야 하는 경우에 적합.
UDP 통신 (User Datagram Protocol)
정의
UDP는 빠른 데이터 전송을 목적으로 하는 비연결형 프로토콜로, 데이터의 신뢰성보다 속도를 우선시함.
주요 특징
1) 비연결형: 송신자가 수신자와 사전 연결 없이 데이터를 전송.
2) 신뢰성 보장 없음: 데이터가 유실되거나 순서가 뒤바뀌어도 재전송하지 않음.
3) 속도 우선: 통신 오버헤드가 낮아 TCP보다 전송 속도가 빠름.
4) 헤더 구조가 간단함 (8바이트): 오버헤드가 적어 대용량 데이터의 빠른 전송에 유리.
사용 사례
실시간 스트리밍 (VoIP, 온라인 게임): 약간의 데이터 손실보다 전송 속도가 중요한 경우.
방송형 전송 (Multicast): 비디오 스트리밍 서버에서 다수의 사용자에게 데이터를 빠르게 전달할 때.
대충 개인 정보나 유저에게 중요한 데이터가 있는 경우는 다 TCP 통신을 사용하고
즉각적인 반응이 필요한 경우 UDP를 사용하면 된다 라고 이해를 하는 중이다.