TCP란❓
TCP(Transmission Control Protocol)는 인터넷에서 데이터를 안정적으로 전송하기 위해 사용되는 프로토콜(통신 규약)입니다. 네트워크 통신에서 가장 널리 사용되며, IP(Internet Protocol)와 함께 TCP/IP 스택을 구성합니다.
즉, 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 연결지향 프로토콜
TCP의 주요 특징
1. 연결 지향(Connection-oriented)
- 통신을 시작하기 전에 3-way handshake 과정을 통해 송신자와 수신자 간의 연결을 설정합니다.
- 연결이 종료될 때는 4-way handshake를 사용해 연결을 안전하게 종료합니다.
2. 신뢰성 있는 데이터 전송
- 전송된 데이터가 손실되거나 손상된 경우, 재전송 메커니즘을 통해 복구합니다.
- 데이터를 순서대로 수신할 수 있도록 순서 제어를 수행합니다.
3. 흐름 제어(Flow Control)
- 송신자가 수신자의 처리 속도에 맞춰 데이터를 전송하도록 조절합니다.
- 수신자의 윈도우 크기를 기반으로 송신량을 조정합니다.
4. 혼잡 제어(Congestion Control)
- 네트워크 혼잡을 방지하기 위해 전송 속도를 동적으로 조절합니다.
- 일반적으로 슬라이딩 윈도우(Sliding Window)와 같은 알고리즘을 사용합니다.
5. 바이트 기반 스트림 전송
- 데이터를 바이트 스트림으로 간주하며, 패킷 단위로 나누어 전송한 후, 수신 측에서 다시 재조립합니다.
TCP의 동작 과정
1. 연결 설정 (3-Way Handshake)
- 송신자와 수신자는 통신 전에 세션을 설정합니다.
- 송신자가 SYN 패킷 전송
- 수신자가 SYN+ACK 응답
- 송신자가 ACK를 전송하며 연결 완료
2. 데이터 전송
- 데이터를 송신자가 패킷 단위로 전송하며, 수신자는 각 패킷에 대해 ACK(응답)를 보냅니다.
- 패킷 손실 시, 해당 패킷만 재전송됩니다.
3. 연결 종료 (4-Way Handshake)
- 연결 종료 시, 송신자와 수신자가 서로 FIN 패킷을 교환하며 연결을 안전하게 종료합니다.
TCP/IP 스택이란❓
TCP/IP는 전송계층의 TCP와 네트워크 계층의 IP프로토콜을 합친 프로토콜 모음으로, TCP는 데이터의 정확성 확인, IP는 패킷을 목적지까지 전송하는 역할을 합니다.
TCP/IP에선 OSI 7 Layer을 대체하는 TCP/IP 4 Layer가 있는데, 4Layer는 다음과 같습니다.
- 응용 계층: HTTP, FTP, DNS 등 실제 응용 프로그램 동작
- 전송 계층: TCP(신뢰성) / UDP(속도) 프로토콜
- 인터넷 계층: IP를 통한 패킷 라우팅
- 네트워크 접근 계층: 이더넷, Wi-Fi 등 물리적 연결
데이터는 상위에서 하위 계층으로 캡슐화되어 전송되며, 수신 시 역캡슐화 과정을 거칩니다.
UDP(User Datagram Protocol)란❓
UDP(User Datagram Protocol)는 TCP와 함께 전송 계층에서 사용되는 비연결형 통신 프로토콜입니다. 속도가 빠르고 간단한 구조를 가지고 있어, 데이터 손실을 허용할 수 있는 실시간 애플리케이션에서 주로 사용됩니다.
즉, 한쪽에서 일방적으로 보내는 방식의 통신 프로토콜
UDP의 주요 특징
1. 비연결형 (Connectionless)
- 데이터 전송 전에 송신자와 수신자 간에
연결 설정 과정이 없습니다. - 데이터를 바로 전송하며, 송신자는 수신자가 데이터를 받았는지 확인하지 않습니다.
2. 신뢰성 없음
- 데이터 손실이나 손상 시
재전송하지 않습니다. - 전송 순서를 보장하지 않으며, 중복 데이터 발생 가능성이 있습니다.
3. 빠른 속도
연결 설정이나상태 관리를 하지 않기 때문에 TCP보다 속도가 빠릅니다.- 네트워크 대역폭이 적게 사용됩니다.
4. 데이터그램 기반
- 데이터를 개별 데이터그램(패킷)으로 처리하며, 각 데이터그램은 독립적으로 전송됩니다.
5. 간단한 헤더 구조
- UDP 헤더는 8바이트로 매우 간단합니다.
- 헤더 구조
- 소스 포트 (2바이트)
- 목적지 포트 (2바이트)
- 길이 (2바이트)
- 체크섬 (2바이트)
UDP의 동작 방식
- 송신자가 데이터를 데이터그램으로 분리하여 네트워크에 전송합니다.
- 수신자는 데이터를 수신하고, 손실되거나 손상된
데이터는 복구하지 않습니다. - 데이터 순서를 맞추거나 오류를 처리하는 책임은 애플리케이션에 있습니다.
UDP의 장단점
장점
1. 빠른 전송 속도
연결 설정이 없고,데이터 손실에 대한 처리를 하지 않아 지연이 적습니다.
2. 오버헤드가 적음
- 단순한 구조로 인해 네트워크 리소스 소모가 적습니다.
3. 실시간 애플리케이션에 적합
- 지연보다 속도가 중요한 서비스에 이상적입니다.
단점
1. 신뢰성 부족
- 데이터 손실, 중복, 순서 뒤바뀜을
보장하지 않습니다.
2. 데이터 재전송 없음
- 데이터가 손실되면
복구할 수 없습니다.
3. 애플리케이션의 추가 작업 필요
- 신뢰성을 애플리케이션 레벨에서 구현해야 합니다.
TCP와 UDP비교
특징 | TCP | UDP |
연결 방식 | 연결 지향 (3-way handshake) | 비연결 지향 |
신뢰성 | 데이터 전송 보장, 재전송 기능 제공 | 데이터 손실 허용, 재전송 없음 |
속도 | 느림 (오버헤드 있음) | 빠름 (오버헤드 적음) |
오류 제어 | 오류 검출 및 복구 | 오류 검출 및 복구 없음 |
전송 순서 보장 | 순서 보장 | 순서 보장하지 않음 |
사용 사례 | 웹, 이메일, 파일 전송 | 스트리밍, VoIP, 게임 |
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.12.01 - Docker COPY 명령어의 경로 지정 방식 이해하기: COPY .. (0) | 2024.12.01 |
---|---|
[TIL, 일일 회고] 2024.11.30 - VsCode > Docker 확장 프로그램 알아보기 (0) | 2024.11.30 |
[TIL, 일일 회고] 2024.11.28 - CS 간단 정리 : HTTP와 HTTPS 차이 (2) | 2024.11.28 |
[TIL, 일일 회고] 2024.11.27 - List를 배열로 변환하는 다양한 방법: 프리미티브 타입과 레퍼런스 타입 구분하기 (0) | 2024.11.27 |
[TIL, 일일 회고] 2024.11.26 - Udemy 동영상이 안보일 때 해결방법 (0) | 2024.11.26 |