목차
개요
IP(Internet Protocol)의 문제점을 보완하기 위해 TCP, UDP가 사용됩니다. TCP, UDP는 전송 계층(Transport Layer) 프로토콜입니다.
1. TCP(Transmission Control Protocol)
TCP는 신뢰성 있는 연결 지향형(Connected, Reliable) 프로토콜입니다. 데이터를 정확하게, 순서대로, 손실 없이 전송하기 위해 다양한 매커니즘을 제공합니다.
TCP의 특징
항목 | 설명 |
연결 지향(Connection-oriented) | 통신 전에 3-way handshake로 연결을 설정해야 함 |
신뢰성 보장 | 패킷 손실, 중복, 순서 오류를 감지하고 재전송 함 |
흐름 제어 | 수신 측의 처리 속도에 맞춰 전송 속도 조절 |
혼잡 제어 | 네트워크 혼잡 상태를 감지하고 조절 |
전송 순서 보장 | 전송한 순서대로 도착 보장 (순서 틀어지면 재정렬) |
- 이러한 특징들이 IP(Internet Protocol)를 보완해줍니다.
TCP 헤더 구성 (기본 20Byte)
필드 | 크기 | 설명 |
Source Port | 16bit | 송신 측 포트 번호 |
Destination Port | 16bit | 수신 측 포트 번호 |
Sequence Number | 32bit | 데이터 바이트의 순서를 지정 (패킷 순서 식별에 사용) |
Acknowledgment Number | 32bit | 수신 측이 기대하는 다음 바이트의 순서 (ACK 응답용) |
Data Offset | 4bit | 헤더 길이 (옵션 포함 길이) 단위: 4바이트 |
Reserved | 3bit | 현재는 사용되지 않음 (미래 확장을 위해 예약) |
Flags (Control Bits) | 9bit | 통신 제어용 플래그들 |
Window Size | 16bit | 수신 측이 수용 가능한 버퍼 크기 (흐름 제어용) |
Checksum | 16bit | 데이터 무결성 확인용 (IP + TCP + 데이터 기반 계산) |
Urgent Pointer | 16bit | 긴급 데이터가 있는 경우, 긴급한 데이터의 끝 위치 지정 |
Options + Padding | 0~40 bytes | 추가 기능 설정 (예: 윈도 크기 확장, 타임스탬프 등) |
IP는 네트워크 내 기기를 식별할 순 있지만, 하나의 기기에서 어떤 애플리케이션의 데이터인지는 구분할 수 없다.
✅ TCP를 사용하면, 포트 번호를 통해서 특정 IP 주소의 특정 애플리케이션의 데이터라는 것을 구분할 수 있게 된다. (IP의 문제점 보완)
사용 예시
- 웹 사이트 로딩
- 금융 거래
- 로그 전송
2. UDP
UDP는 비연결형(Connectionless) 프로토콜입니다. 빠른 전송이 중요하고 일부 손실을 감수할 수 있는 상황에 적합합니다.
UDP 특징
항목 | 설명 |
비연결형(Connectionless) | 연결 설정 없이 바로 데이터 전송 |
신뢰성 없음 | 손실, 중복, 순서 뒤바뀜 등을 자체적으로 처리 안함 |
경량 프로토콜 | TCP보다 오버헤드가 작고 빠름 |
흐름/혼잡 제어 없음 | 네트워크 상황 고려 없이 전송 |
- TCP처럼 3 way handshake를 하지 않습니다.
- 실시간성 보장이 중요합니다.
- UDP는 IP처럼 비신뢰성 프로토콜입니다. 하지만 더 나은 점이 있습니다.
- IP보다 조금 더 구체화된 헤더를 제공
- 포트 번호를 포함해 여러 애플리케이션이 같은 IP 주소에서 동시에 통신 가능하게 함
- 애플리케이션 개발자가 직접 재전송, 순서 처리 등을 구현할 수 있게 자유도를 제공
(애플리케이션 레벨에서 신뢰성을 보완할 수 있다.)
UDP 헤더 구성 (8 Byte)
필드명 | 크기 | 설명 |
Source Port | 16bit | 송신 측 애플리케이션의 포트 번호 (수신자가 응답을 보낼 때 사용) |
Destination Port | 16bit | 수신 측 애플리케이션의 포트 번호 (어떤 서비스(예: DNS, NTP 등)가 데이터를 받아야 하는지 식별) |
Length | 16bit | UDP 헤더 + 데이터의 총 길이 (바이트 단위) |
Checksum | 16bit | 오류 검출용 간단한 무결성 검사 |
IP는 네트워크 내 기기를 식별할 순 있지만, 하나의 기기에서 어떤 애플리케이션의 데이터인지는 구분할 수 없다.
✅ UDP도 마찬가지로 포트 번호를 통해서 특정 IP 주소의 특정 애플리케이션의 데이터라는 것을 구분할 수 있게 된다.
사용 예시
- 실시간 스트리밍 (YouTueb, Netflix)
- VoIP (Skype, Zoom 등)
- 온라인 게임
- 음성 통화
https://kimyongjun0129.tistory.com/144
[CS] 3-Way Handshake
개요TCP 프로토콜은 신뢰성 있는 데이터 전달을 위해, 통신 전 3-way handshake를 통해 기기 간의 연결을 설정해야 합니다. 3-way handshake가 무엇인지 알아봅시다. 3-Way Handshake네트워크에서 TCP(Transmission
kimyongjun0129.tistory.com
https://kimyongjun0129.tistory.com/145
[CS] 포트(PORT)
개요TCP, UDP에서 포트를 통해 어떤 애플리케이션의 데이터인지 구분할 수 있었습니다. 그럼 포트가 무엇인지 알아봅시다. 포트(PORT)운영체제(OS)가 여러 개의 네트워크 애플리케이션을 동시에 실
kimyongjun0129.tistory.com
'CS' 카테고리의 다른 글
[CS] 포트(PORT) (0) | 2025.05.06 |
---|---|
[CS] 3-Way Handshake (0) | 2025.05.05 |
[CS] IP (Internet Protocol) (0) | 2025.05.04 |
프론트엔드(Front-End)와 백엔드(Back-End)는 뭐가 다를까? (0) | 2025.04.19 |
[CS] 스레드(Thread), 멀티 스레드(Multi-Thread) (0) | 2025.04.18 |