- 순서
- TCP란?
- TCP의 특징
- TCP의 장단점
- UDP란?
- UDP의 특징
- UDP의 장단
- TCP와 UDP의 차이
- IP
- ICMP 프로토콜
- ARP 프로토콜
- ACK
- UE에서의 UDP
- TCP란?
- 서버와 클라이언트간에 데이터를 신뢰성 있게 전달할 수 있도록 하는 프로토콜
- 두 호스트 간의 연결을 설정하고, 데이터 패킷이 손실 없이 올바른 순서대로 전달되도록 보장하며, 네트워크의 혼잡을 제어하는 등 다양한 기능을 수행하여 인터넷 통신의 핵심적인 역할을 함
- TCP의 특징
- 연결지향: 통신을 시작하기 전에 3-way handshake를 통해 연결을 수립
- 신뢰성 보장: 전송한 데이터가 도착했는지 확인, 손실된 패킷 재전송, 순서 보장
- 순서 보장: 데이터가 바이트 스트림으로 전달됨, 패킷 단위가 아닌 연속된 데이터 흐름으로 처리됨
- 흐름 제어: 송신 속도를 조절하여 수신 버퍼가 오버플로우되는 것을 방지함
- 혼잡 제어: 네트워크 혼잡 시 송신 속도 감소
- 사용 예
- 웹 브라우징, 이메일, 파일 전송, 데이터베이스 통
- TCP의 장단점
- 장점
- 데이터 손실, 순서 뒤바뀜, 중복 등 문제 해결 > 신뢰성 높음
- 스트림 기반으로 대용량 데이터 전송에 적합
- 단점
- 연결 설정 과정 필요 > 초기 지연 발생
- 헤더가 크고 관리해야 할 정보가 많음 > 오버헤드 증가
- 실시간 전송보다는 신뢰성 위주 > 속도 느릴 수 있음
- 장점
- UDP란?
- 인터넷 통신에서 데이터를 빠르고 효율적으로 전송하기 위한 프로토콜 신뢰성보다 연속성이 있는 전송이 중요할 때 사용
- 데이터가 전송되기 전에 연결을 설정하지 않아 속도가 빠르지만, TCP와 달리 데이텅의 순서나 도착 여부를 보장하지 않음.
- UDP의 특징
- 비연결: 연결 수립 없이 데이터를 바로 전송
- 비신뢰성: 전송 확인, 재전송, 순서 보장 없음
- 메시지 기반: 데이터그램 단위로 전송하며, 한 번 보낸 패킷이 손실될 수 있음
- 헤더 간단: TCP보다 오버헤드가 적음 > 빠른 전송 가능
- 사용 예
- 실시간 스트리밍, 온라인 게임, DNS 질의, 방송/멀티캐스트
- UDP의 장단점
- 장점
- 속도가 빠르며 오버헤드가 적음
- 간단하고 실시간 전송에 적합함
- 단점
- 패킷 손실, 순서 뒤바뀜, 중복 발생 가능 > 신뢰성 없음
- 응용 프로그램에서 직접 오류 처리 필요함
- 장점
- TCP와 UDP의 차이
| 특징 | TCP | UDP |
| 연결 여부 | 연결 지향 | 비연결 |
| 신뢰성 | 있음(재전송, 순서 보장) | 없음 |
| 전송 방식 | 스트림 기반 | 메시지(데이터그램) 기반 |
| 속도 | 상대적으로 느림 | 빠름 |
| 헤더 크기 | 20바이트 이상 | 8바이트 |
| 흐름 제어/혼잡 제어 | 있음 | 없음 |
| 사용 예 | HTTP, FTP, SMTP, 이메일 | DNS, VoIP, 게임, 스트리밍 |
- IP
- IP란 Internet Protocol 즉 인터넷 규약을 의미함. OSI의 3계층인 네트워크 계층에 해당함
- 인터넷 상의 호스트를 식별하고, 데이터가 담긴 패킷의 목적지 주소를 지정하며, 네트워크 내에서 데이터의 경로를 찾는 라우팅을 담당함.
- 호스트 간 라우팅/포워딩과 주소 지정을 담당하여 최선형, 비연결성, 무상태를 전달
- ICMP 프로토콜
- ICMP는 Internet Control Message Protocol의 약자로 인터넷 제어 메시지 프로토콜임.
- TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알리거나, 진단 등과 같이 IP 계층에서 필요한 기타 기능들을 수행하기 위한 프로토콜
- IP와 하나의 쌍을 이루며 동작함
- IP 상위 계층의 프로토콜처럼 행동하나 IP계층의 일부이며 IP 데이터그램의 데이터 부분에 포함되어 전달됨
- ARP
- 주소결정 프로토콜로 IP 주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 네트워크 계층 프로토콜임.
- ACK
- 통신 과정에서 데이터가 성공적으로 수신되었음을 확인하고 응답하는 신호 또는 메시지를 의미함
- 패킷의 수신 여부를 확인하여 데이터의 신뢰성을 높이는 역할을 함
- 신뢰성이 있는 TCP에는 존재하나 UDP 자체에는 ACK가 없음. 하지만 필요하다면 애플리케이션 레벨에서 구현할 수 있음.
- UE에서의 UDP
- UE에서는 기본적으로 UDP 통신이 사용되는데 Reliable을 사용하면 작동 방식이 어떻게 이루어 질까?
- RPC에서 Reliable옵션을 사용하게 되면 데이터가 손실되지 않고 순서대로 수신될 때까지 재전송을 시도하고 패킷을 정렬하는 매커니즘을 통해 UDP 위에서 TCP와 유사한 신뢰성을 보장함
- 패킷 분할 및 시퀀스 번호 할당: RPC 호출로 여러개의 패킷으로 분할되어 각 패킷에 고유한 시퀀스 번호가 부여됨
- 수신 확인: 패킷을 성공적으로 받았음을 ACK를 통해 확인함
- 재전송: 응답을 받지 못했다면 패킷 재전송을 통해 반드시 도달하도록 함
- 패킷 정렬: 데이터를 수신한 쪽에서 패킷의 시퀀스 번호를 확인하여, 순서와 누락을 파악하고 재정렬 후 최종 호출함
- 채널 관리: UDP 트랜스포트 계층 위에 구축된 언리얼 엔진의 네트워크 채널 시스템 내에서 관리되며, NetConnection이 이 패킷 처리의 핵심 역할을 함
- UE에서는 기본적으로 UDP 통신이 사용되는데 Reliable을 사용하면 작동 방식이 어떻게 이루어 질까?
'CS' 카테고리의 다른 글
| [CS] RVO (0) | 2025.09.05 |
|---|---|
| [CS]뮤텍스와 세마포어 (3) | 2025.08.28 |
| [CS]리틀 엔디안과 빅 엔디안 (1) | 2025.08.28 |
| [CS]스택 오버 플로우 (2) | 2025.08.28 |
| [CS]busy-waiting (3) | 2025.08.28 |