<Transmission Control Protocol (TCP)>
전송 제어 프로토콜(TCP)은 네트워크 상의 장치 간에 데이터가 신뢰성 있게 전송되도록 보장하는 인터넷의 표준 프로토콜입니다. 이는 애플리케이션이 데이터를 교환할 수 있도록 네트워크 대화를 설정하고 유지하는 방법을 정의합니다.
TCP는 웹 브라우징, 이메일, 파일 및 데이터 전송, 그리고 P2P(피어 투 피어) 공유와 같은 많은 애플리케이션의 기본 프로토콜입니다.
<TCP / IP 4 계층>
OSI 7 계층 중 TCP / IP 모델은 4 계층으로 구성되어 있으며, 각각의 데이터 전송 프로세스룰 담당합니다.
- 물리 계층 : 주로 물리적 연결과 관련된 정보를 정의하고 들어온 전기 신호를 잘 전달하는 목적입니다.
- 데이터 링크 계층 : 물리 계층에서 들어온 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리합니다. (주소 정보를 정의하고 출바지 + 도착지 주소를 확인 후 데이터 처리 합니다)
- 네트워크 계층 : IP주소와 같은 논리적인 주소를 정의합니다. 또한 라우터를 통해 정의한 IP주소를 이해하고, 이를 사용해 최적의 경로를 찾아 패킷을 전송합니다.
- 전송 계층 : 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할을 합니다. 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는 데, 이를 바로 잡아주는 역할도 담당합니다.
<TCP 특징>
- 3 way Handshake :
1. 클라이언트는 서버를 접속을 요청하는 SYN 패킷 전송
2. 서버는 SYN 요청받고 수락한다는 ACK+SYN 설정된 패킷을 발송하고 클라이언트가 다시 ACK으로 응답하기를 대기합니다.
3. 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있습니다. 만약 서버가 꺼져있으면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않습니다.
- 데이터 전달 보증 : TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있습니다.
- 순서 보장 : 만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있습니다. 이를 통해 IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있습니다.
<TCP 장점>
- 신뢰성 : 앞서 언급한 바와 같이, TCP는 오류 감지, 누락된 패킷에 대한 재전송, 그리고 패킷의 순서를 보장하여 신뢰할 수 있는 데이터 전송을 제공합니다.
- 패킷의 순서 및 시퀀스 : TCP는 데이터 패킷이 전송된 순서대로 수신되도록 순서와 시퀀스 번호를 보장합니다.
- 연결 지향적 : TCP는 송신자와 수신자 간에 연결을 생성하여 안정적이고 지속적인 통신 링크를 보장합니다.
- 지원 : TCP는 IP와 함께 개방된 산업 표준을 나타냅니다.
<TCP 단점>
- 오버헤드 : TCP는 신뢰성 기능 때문에 UDP보다 더 많은 오버헤드를 가지며, 이는 때때로 전송 속도를 느리게 할 수 있습니다.
- 지연 시간 : TCP의 데이터 전송 방식은 확인 응답과 재전송을 포함하므로, 이 과정에서 발생하는 지연 시간이 실시간 애플리케이션에 영향을 미칠 수 있습니다.
- 일반성 : 블루투스 연결과 같은 다른 프로토콜 스택에는 적용할 수 없습니다.
- 대역폭 : UDP의 단순한 방식과 달리, TCP는 연결 설정, 확인 응답 및 재전송을 위한 양방향 통신이 필요하기 때문에 때때로 더 많은 대역폭을 사용할 수 있습니다.
<UDP>
사용자 데이터그램 프로토콜(UDP)은 비디오 재생 또는 DNS 조회와 같이 시간에 민감한 전송을 위해 인터넷에서 사용되는 통신 프로토콜입니다. UDP는 데이터 전송 전에 연결을 공식적으로 설정하지 않음으로써 통신 속도를 높입니다.
<UDP 특징>
UDP는 IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜입니다. TCP처럼 3 way handshake 방식을 사용하지 않아 빠른 속도를 보장하지만 신뢰성이 낮습니다.
<UDP 장점>
- 빠름 : UDP는 데이터를 전송하기 전에 연결을 설정할 필요가 없기 때문에 TCP보다 더 빠릅니다.
- 효율적 : UDP는 TCP보다 오버헤드가 적은 경량 프로토콜입니다.
- 실시간 애플리케이션에 적합 : UDP는 온라인 게임, 화상 회의, 라이브 스트리밍과 같은 실시간 애플리케이션에 적합하며, 이 경우 신뢰성보다는 속도가 더 중요합니다
<UDP 단점>
- 신뢰성 없음 : UDP는 패킷의 전송을 보장하지 않으며, 패킷이 순서대로 도착할 것이라는 보장도 없습니다.
- 혼잡 제어 없음 : UDP는 혼잡 제어 메커니즘이 없기 때문에 신중하게 사용하지 않으면 네트워크에 패킷을 과다하게 보낼 수 있습니다. (Ddos / UDP 플러딩 공격이 더 쉽게 발생할 수 있음)
- 제한된 사용 사례 : UDP는 파일 전송, 이메일, 웹 브라우징처럼 신뢰성 있는 데이터 전송이 필요한 애플리케이션에는 적합하지 않습니다
<TCP vs UDP>
참고 자료 :
https://www.techtarget.com/searchnetworking/definition/TCP
https://www.cloudflare.com/learning/ddos/glossary/user-datagram-protocol-udp/
'웹 개발 (Frontend Developer) > 네트워크' 카테고리의 다른 글
URL & URI & URN (1) | 2024.09.29 |
---|---|
REST API (5) | 2024.09.27 |
HTTP 버전별 차이점 (5) | 2024.09.26 |
HTTPS는? (3) | 2024.09.26 |
기본 HTTP에 대해 알아보기 (2) | 2024.09.26 |