네트워크 프로토콜의 역할
네트워크 통신에서 전송 계층에서 사용하는 프로토콜은 데이터의 전송 방식과 규칙을 정의한다.
전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당합니다.
이 중 데이터를 보내기 위해 사용하는 프로토콜이 있는데 그 것이
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 가장 널리 사용되는 두 가지 프로토콜이다.
TCP는 신뢰성이 있는 데이터 전송을 보장하는 반면, UDP는 빠른 데이터 전송을 위해 신뢰성을 약간 포기한다.
네트워크 애플리케이션을 개발할 때, 이 두 프로토콜 중 하나를 선택해야 하는 상황이 자주 발생하는데,
네트워크 프로토콜의 선택은 애플리케이션의 성능과 기능에 직접적인 영향을 미치기 때문이다.
TCP와 UDP는 네트워크 통신의 기본을 이해하는 데 필수적이며,
올바른 프로토콜 선택은 애플리케이션 구현을 위해 큰 영향을 끼친다.
TCP(Transmission Control Protocol)
TCP를 직역하면 전송을 제어하는 프로토콜이라는 뜻이며
인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
일반적으로 TCP와 IP를 함께 사용하는데,
IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 된다.
인터넷 내에서 데이터 전송을 위한 라우팅을 효율적으로 하기 위해 나누어진 조각들을 의미한다.
데이터는 패킷 단위로 나누어 같은 목적지(IP 계층)로 전송된다.
최근에 자전거를 빌렸는데 업장이 7시 마감이었다.
자전거를 빌릴 때 먼저 온 사람 순서대로 순차적으로 자전거 번호와 그 자전거를 누가 빌렸는지 알기 위해 빌린 사람의 핸드폰 번호를 적는다.
그리고 먼저 빌린 사람이 먼저 출발하기 때문에 순차적으로 출발했다고 생각을 해보자.
모든 자전거(패킷)가 업장(발신지)에서 출발하여 여기저기 돌아다니다가 빌린 시간에 따라 반납 시간이 다르고
먼저 나가면 먼저 들어와야 하고 7시 마감이기 때문에 7시에 모든 자전거가 들어와야 한다.
하지만 7시에 자전거 번호 1~10중 3번이 안 왔다.
그렇게 되면 업장(목적지)에는 모든 자전거(패킷)가 와야하는데 업장은 자전거에 번호를 부여하지 않았다면
안 온 줄 모르고 마감하고 퇴근할 수 있는 상황이며 마감하게 된다면 3번 자전거는 없어져도 모르거나
늦게 온 3번 자전거가 제대로 정리되지 않을 수 있다.
그렇기 때문에 모든 자전거에 번호를 부여하고 분실 확인과 같은 처리를 하여 목적지에서 정리(재조립)하는 이러한 방식으로 TCP는 패킷을 추적하고 나누어 보내진 데이터를 받고 조립한다.
TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다.
TCP 특징
- 연결 지향 방식으로 패킷 교환 방식을 사용.
- 3-way handshaking 과정을 통해 연결하고 4-way handshaking을 통해 해제.
- 흐름 제어 및 혼잡 제어.
- 높은 신뢰성 보장.
- UDP보다 느린 속도.
- 전이중(Full-Duplex), 점대점(Point to Point) 방식.
TCP는 연결 지향적인 프로토콜로, 데이터의 신뢰성 있는 전송을 보장한다.
데이터 패킷 순서대로 전송하고, 손실된 패킷은 재전송된다.
연결 설정 과정에서 3-way handshake를 수행하여 신뢰성 있는 통신을 시작하며,
통신이 끝나면 4-way handshake를 통해 연결을 종료한다. 이 과정에 따라 데이터의 정확한 전송이 보장된다.
TCP는 흐름 제어와 혼잡 제어 기능을 제공하며, 네트워크의 상태에 따라 데이터 전송 속도를 조절한다.
이는 네트워크의 혼잡을 방지하고, 전송 효율을 높여준다.
이러한 신뢰성 있는 데이터 전송은 웹 페이지 로딩, 파일 전송, 이메일 전송 등 대부분의 인터넷 애플리케이션에서 필수적이다.
왜나하면 데이터의 손실이나 순서 변경 없이 정확하게 전달되어야 하기 때문이다.
따라서 신뢰성이 중요한 애플리케이션에 주로 TCP를 사용한다.
UDP(User Datagram Protocol)
UDP를 직역하면 사용자 데이터그램 프로토콜이라는 뜻이며
데이터를 데이터그램 단위로 처리하는 프로토콜이다.
데이터그램은 독립적인 관계를 지니는 패킷이라는 뜻으로, TCP와는 달리 비연결형 프로토콜이다.
즉, 연결을 위해 할당되는 논리적인 경로가 없기 때문에 각각의 패킷은 다른 경로로 전송되고,
각각의 패킷은 독립적인 관계를 지녀 데이터를 서로 다른 경로로 독립적으로 처리하게 된다.
UDP 특징
- UDP에는 연결 자체가 없어서 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 소켓을 활용해 IP와 PORT를 기반으로 데이터를 전송한다.
- 서버와 클라이언트는 1 : 1, 1 : N, N : M 등으로 연결될 수 있다.
- 데이터그램 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
- 흐름제어가 없어서 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
- 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.
UDP는 비연결형 지향적 프로토콜로, 빠르고 간단한 데이터 전송을 목표로 한다.
TCP에 비해 오버헤드가 적어, 전송 속도가 빠르다.
UDP는 패킷 손실을 자동으로 복구하지 않고, 데이터의 순서나 완전성을 보장하지 않는다.
이는 실시간 스트리밍, 온라인 게임, VoIP 같은 시간에 민감한 애플리케이션에 유용하다.
데이터를 전송한 후확인 과정 없이 다음 데이터를 바로 전송하기 때문에, 통신 지연이 최소화되어
실시간 애플리케이션의 성능을 향상시켜주는 장점이 있다.
따라서 실시간성이 중요하거나 높은 처리량이 요구되는 애플리케이션에서 UDP를 주로 사용한다.
흐름제어는 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것이다.
송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문이다.
ex) 게임에서 도배를 하거나 PC 카톡으로 빠르게 계속 보내면 몇 초 동안 채팅이 금지되는 현상
혼잡제어는 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
만약 정보의 소통량이 너무 많으면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
'CS > 네트워크' 카테고리의 다른 글
유니캐스트, 브로드캐스트, 멀티캐스트 (0) | 2024.06.03 |
---|---|
3-Way HandShake & 4-Way HandShake (0) | 2024.06.03 |
OSI 7계층 (0) | 2024.05.27 |
HTTP & HTTPS (0) | 2024.05.24 |
네트워크 기초 (1) | 2024.05.23 |