TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 OSI 7계층 모델의 전송 계층에서 사용되는 주요 프로토콜입니다.
이 프로토콜들은 네트워크를 통해 데이터를 전송하는데 사용되며, 각기 다른 동작 방식을 가지고 있어 용도와 특정 서비스 요구사항에 따라 선택적으로 사용되거나 함께 사용될 수 있습니다.
TCP (Transmission Control Protocol)
TCP는 연결 지향적이고 신뢰성 있는 데이터 전송을 제공하는 프로토콜이며,
송신자와 수신자 간의 데이터 전송을 신뢰할 수 있게 보장하며 데이터의 순서와 무결성을 유지합니다.
동작 방식
1. 연결 설정 (3-Way) → 2. 데이터 전송 → 3. 연결 종료 (4-Way)
1. 연결 설정 (3-Way Handshake)
SYN: 클라이언트가 서버에 연결 요청을 위한 SYN (Synchronize) 패킷을 보냅니다.
SYN-ACK: 서버는 클라이언트의 SYN 패킷을 수신한 후, SYN-ACK 패킷으로 응답합니다.
ACK: 클라이언트는 서버의 SYN-ACK 패킷에 대해 ACK (Acknowledgment) 패킷을 보내 연결을 완료합니다.
2. 데이터 전송
데이터 분할: 전송할 데이터는 TCP 세그먼트로 나누어집니다.
순서 보장: 각 세그먼트는 순서가 보장되며, 수신 측에서 다시 조합됩니다.
재전송: 세그먼트가 손실되거나 손상되면, TCP는 이를 감지하고 자동으로 재전송합니다.
흐름 제어: TCP는 수신 측의 버퍼가 넘치지 않도록 흐름 제어를 수행합니다.
혼잡 제어: 네트워크 혼잡 상황을 감지하고 전송 속도를 조절합니다.
3. 연결 종료 (4-Way Termination)
FIN: 클라이언트가 서버에게 연결 종료를 알리는 FIN (Finish) 패킷을 보냅니다.
ACK: 서버는 클라이언트의 FIN 패킷을 확인하고 ACK 패킷을 보냅니다.
FIN: 서버가 클라이언트에게도 연결 종료를 알리는 FIN 패킷을 보냅니다.
ACK: 클라이언트는 서버의 FIN 패킷을 확인하고 ACK 패킷을 보냅니다.
UDP (User Datagram Protocol)
UDP는 비연결 지향적이고 신뢰성을 보장하지 않는 데이터 전송 프로토콜이며,
빠르고 효율적으로 데이터를 전송하지만 데이터의 순서나 무결성을 보장하지 않습니다.
동작 방식
1. 데이터 전송 → 2. 오류 검출 → 3. 연결 관리
1. 데이터 전송
송신자 측 (Request)
데이터그램 생성: 응용 프로그램이 전송할 데이터를 준비하고, 이를 UDP 데이터그램으로 감쌉니다.
UDP 헤더 추가: 소스 포트, 목적지 포트, 길이, 체크섬(Checksum) 등의 필드를 포함한 UDP 헤더를 추가합니다.
전송: UDP 데이터그램을 네트워크 계층(IP)을 통해 수신자에게 전송합니다.
수신자 측 (Response)
데이터그램 수신: 네트워크 계층(IP)에서 UDP 데이터그램을 수신하고, UDP 계층으로 전달합니다.
데이터 추출: UDP 헤더를 제거하고, 데이터(payload)를 응용 프로그램에 전달합니다.
2. 오류 검출
체크섬 (Checksum): 체크섬을 통해 데이터 손상을 검출합니다. 오류가 감지되면 UDP는 데이터의 재전송이나 수정 없이 단순히 오류를 보고하며, 손상된 데이터그램은 버려집니다.
3. 연결 관리
연결 없음: UDP는 데이터를 전송하기 전과 후에 별도의 연결 설정이나 종료 절차가 없습니다. 이는 연결 설정에 필요한 오버헤드(Overhead)를 제거하여 데이터 전송 속도를 향상시킵니다.
차이점 정리
특성 | TCP | UDP |
연결 방식 | 연결 지향적 (Connection-oriented) | 비연결 지향적 (Connectionless) |
신뢰성 | 신뢰성 보장 (Reliable) | 신뢰성 없음 (Unreliable) |
데이터 순서 보장 | 순서 보장 (Ordered) | 순서 보장 없음 (Unordered) |
오버헤드 | 높음 (High) | 낮음 (Low) |
흐름 및 혼잡 제어 | 있음 (Yes) | 없음 (No) |
사용 사례 | Web, E-mail, 파일 전송 | 실시간 애플리케이션, 스트리밍, DNS 조회 |
Thank You!!
'Network > 이론' 카테고리의 다른 글
[Network] VPN (IPsec VPN) 이란? #1 (26) | 2024.08.20 |
---|---|
[Network] DNS(Domain Name System) 동작 방식 #2 (34) | 2024.08.13 |
[Network] DNS(Domain Name System) 란? #1 (26) | 2024.08.08 |
[Network] OSI 7 계층(Layer) 이란? (23) | 2024.07.29 |
[Network] IP(Internet Protocol) 란? (24) | 2024.07.22 |