눈송이의 개발생활
[Network]TCP와 UDP 본문
네트워크 계층 중 전송 계층에서 사용하는 프로토콜
- 전송 계층 : 데이터의 전달 담당. 송신자와 수신자 연결하는 통신 서비스 제공
TCP(Transmission Control Protocol)
- 데이터를 메시지와 함께 보내기 위해 IP와 함께 사용하는 프로토콜
- IP : 데이터 배달 처리
- TCP : 패킷 추적 및 관리
- 연속성보다 신뢰성있는 전송이 중요할 때
- 신뢰성 : 데이터를 순차적으로 안정적이게 전달
- 전송 : 포트 번호에 해당하는 프로세스에 데이터 전달
TCP 특징
- 연결형 서비스(양방향 통신) → 가상 회선 방식 제공
- 3-way handshaking : 연결 설정
- 4-way handshaking : 연결 해제
- 흐름제어 제공
- 데이터 송신하는 곳/수신하는 곳의 데이터 처리 속도 조절해서 수신자의 버퍼 오버플로우 방지
- 송신 쪽에서 많은 데이터를 빨리 보내 수신쪽에서 문제 발생하는 것 방지
- 혼잡제어 제공
- 네트워크 내 패킷 수 과다 증가 방지
- 정보 소통량 과다하면 패킷 수 줄임 → 혼잡 붕괴 현상 방지
- 높은 신뢰성
- UDP보다 느림
- 오류 검출 방식 다양
- 전이중(Full-Duplex) 점대점(Point-to-point) 방식
- 전이중 : 전송 양방향으로 동시에 일어날 수 있음
- 점대점 : 각 연결이 정확히 2개의 종단점 가짐
- 멀티캐스팅, 브로드캐스팅 지원 ❌
TCP의 패킷 추적 및 관리 방식
- 패킷 A, B, C를 수신해야 할 때, 각 패킷에 번호를 부여한다. (ex. 1, 2, 3)
- 분실된 패킷은 없는지 확인하기 위해서 목적지에서 번호에 맞게 재조립을 한다.
TCP 서버의 특징
- 서버 소켓은 연결만 담당
- 연결 과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용됨
- 서버 : 클라이언트 = 1 : 1
- 스트림 전송 ⇒ 전송 데이터의 크기 무제한
- 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮음
- 매번 connection을 해야 해서 시간 손실 발생
- 패킷 조금만 손실해도 재전송
- streaming에 불리 (손실된 경우 재전송을 요청해서)
UDP(User Datagram Protocol)
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- 비연결형 프로토콜 ⇒ 각각의 패킷이 다른 경로로 전송, 독립적인 관계
- 신뢰성보다 연속성이 중요할 때 (ex. 실시간 서비스, 영상 스트리밍)
- ex) DNS
- 호스트 네임의 주소 IP를 찾지 않아도 되는 프로그램 → DNS 서버로 호스트 네임 포함한 UDP 패킷 보냄
- 서버는 호스트의 IP 주소 포함한 UDP 패킷으로 응답
UDP 특징
- 비연결형 서비스 → 데이터그램 방식 제공
- 연결을 위해 할당되는 논리적인 경로 ❌
- 각각의 패킷 다른 경로로 전송. 독립적 관계
- 데이터를 서로 다른 경로로 독립적으로 처리
- 정보 주고 받을 때 신호 절차 거치지 않음
- UDP 헤더의 CheckSum 필드로 최소한의 오류만 검출
- 신뢰성 낮음
- TCP보다 빠름
UDP 서버의 특징
- 서버 소켓과 클라이언트 소켓의 구분이 없음(연결 자체가 없음)
- IP 기반으로 데이터 전송
- 서버 : 클라이언트 = 1 : 1, 1 : N, N : M 등 다양
- 데이터그램(메세지) 단위(65535바이트)로 전송되며 크기가 초과하면 잘라서 보냄
- 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없음
TCP | UDP | |
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 보장됨 | 순서 바뀔 수 있음 |
수신 여부 확인 | ⭕ | ❌ |
통신 방식 | 1:1 | 1:1, 1:N(Broadcast), N:M(Multicast) |
신뢰성 | ⬆️ | ⬇️ |
속도 | ⬇️ | ⬆️ |
참고
https://mangkyu.tistory.com/15
https://www.youtube.com/watch?v=ikDVGYp5dhg&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC
'Computer Science > Network' 카테고리의 다른 글
[Network]HTTP와 HTTPS (0) | 2023.02.07 |
---|---|
[Network]TCP/IP 흐름제어(Flow Control)와 혼잡제어(Congestion Control) (0) | 2023.02.06 |
[Network]TCP 3-way Handshake & 4-way Handshake (0) | 2023.02.03 |
[Network]REST API (0) | 2023.02.03 |
[Network]OSI 7계층 & TCP/IP 4계층 (0) | 2023.02.03 |
Comments