[Network 주요 개념] 1. TCP/IP, UDP, ICMP와 네트워크 통신

steve·2024년 10월 9일

Network

목록 보기
1/3

개요

  • 현대의 모든 네트워크 통신은 TCP/IP 프로토콜 스택을 기반으로 이루어짐. 이 스택은 TCP(Transmission Control Protocol)UDP(User Datagram Protocol)라는 두 가지 주요 전송 계층 프로토콜을 통해 데이터 전송의 신뢰성, 속도, 연결 여부를 결정
  • ICMP(Internet Control Message Protocol)는 네트워크 상태를 검사하고 문제를 진단하는 데 사용됨. 이번 글에서는 TCP, UDP, ICMP 각각의 역할과 차이점에 대해 설명하며, 네트워크 통신의 기본 개념을 실무적 관점에서 다룸

1. TCP/IP 프로토콜 스택과 신뢰성

  • TCP/IP는 인터넷을 포함한 네트워크 통신에서 데이터를 전송하기 위한 프로토콜 스택임. 이 스택은 여러 계층으로 구성되며, 각 계층은 특정 역할을 담당함. TCPUDP전송 계층(Transport Layer)에서 작동하며, 데이터를 네트워크를 통해 전송할 때 신뢰성이나 속도를 조절하는 역할을 함

TCP (Transmission Control Protocol)

  • TCP연결 지향적인 프로토콜로, 데이터 전송의 신뢰성을 보장하는 역할을 함. TCP는 데이터를 세그먼트 단위로 나누고, 각 세그먼트가 올바르게 전송되었는지 확인하기 위해 수신 확인(ACK)을 사용함. 이를 통해 전송 중 손실된 데이터가 있다면, 해당 데이터를 재전송하여 정확한 데이터 전송을 보장
  • TCP는 다음과 같은 주요 특징을 가짐:

1) 3-way Handshake

  • 통신을 시작하기 전, TCP는 SYN, SYN-ACK, ACK로 이루어진 3단계 핸드셰이크 과정을 거쳐 연결을 성립함. 이를 통해 두 장치 간에 논리적 연결이 설정되고, 데이터가 신뢰성 있게 전송될 수 있는 준비가 완료됨
    Client -> Server: SYN
    Server -> Client: SYN-ACK
    Client -> Server: ACK

2) 데이터 흐름 제어

  • TCP는 슬라이딩 윈도우 기법을 사용해 데이터 전송 속도를 조절함. 네트워크 대역폭이나 수신 측의 상태를 고려해 전송 속도를 조정함으로써, 네트워크 혼잡을 방지하고 데이터의 효율적 전송을 가능하게 함

3) 재전송

  • TCP는 손실된 패킷을 자동으로 재전송하여 데이터의 신뢰성을 보장함. 패킷이 손실되거나 손상되면, 수신 측은 ACK를 전송하지 않고, 송신 측은 일정 시간 동안 ACK가 도착하지 않으면 해당 패킷을 다시 전송

실무에서의 TCP 활용

  • 웹 브라우저파일 전송 프로토콜(FTP), 이메일(POP/IMAP) 등에서 TCP를 사용함. 데이터의 신뢰성과 정확성을 보장해야 하는 서비스에서 주로 사용되며, 데이터 손실이 발생할 수 없는 상황에서 필수적

2. UDP (User Datagram Protocol)

  • UDP비연결성 프로토콜로, TCP와 달리 데이터 전송의 신뢰성을 보장하지 않음. 속도가 중요한 네트워크 통신에 사용되며, 데이터를 빠르게 전송할 수 있다는 장점이 있음. UDP는 데이터를 전송하기 전에 연결을 설정하지 않으며, 수신 확인(ACK) 없이 데이터를 전송하기 때문에 손실 패킷에 대한 재전송도 이루어지지 않음
  • UDP의 주요 특징:

1) 비연결성

  • UDP는 데이터를 전송하기 전에 연결을 설정하지 않음, 즉, Handshake 과정이 필요 없음. 이를 통해 오버헤드가 줄어들고, 데이터 전송 속도가 빨라짐

2) 빠른 전송 속도

  • TCP에 비해 전송 속도가 매우 빠름. 데이터의 신뢰성보다는 실시간 전송이 중요한 서비스에 사용됨. 예를 들어, 스트리밍 서비스에서는 일부 데이터 손실이 있더라도 빠르게 전송하는 것이 더 중요

3) 패킷 손실 가능성

  • UDP는 패킷이 전송 중에 손실되더라도 재전송하지 않으며, 패킷이 도착한 순서도 보장하지 않음. 따라서 신뢰성이 중요한 통신에서는 적합하지 않지만, 속도가 중요한 통신에서는 선호됨

실무에서의 UDP 활용

  • VoIP(Voice over IP), 실시간 게임, 동영상 스트리밍과 같은 실시간 전송이 중요한 서비스에서 UDP가 사용됨. 이 경우 일부 데이터 손실이 발생하더라도, 서비스 품질에 큰 영향을 미치지 않음

3. ICMP (Internet Control Message Protocol)

  • ICMP는 네트워크 상태를 모니터링하고 오류를 보고하는 프로토콜로, 네트워크 진단 도구에서 많이 사용됨. ICMP는 데이터를 전송하는 프로토콜이 아니며, 네트워크의 상태를 점검하거나 문제를 보고하는 데 사용됨. Ping과 같은 도구는 ICMP를 사용해 네트워크 연결 상태를 확인함

ICMP의 주요 기능

1) Ping

  • Ping 명령어는 ICMP의 가장 대표적인 사용 예로, 네트워크 연결 상태를 확인하기 위해 사용됨. Echo Request 패킷을 전송하고, 이에 대한 Echo Reply 패킷을 받아 네트워크가 정상적으로 연결되어 있는지 확인할 수 있음. 네트워크 지연 시간이나 패킷 손실 여부를 확인하는 데 유용
    ping example.com

2) 네트워크 오류 보고

  • ICMP는 패킷이 네트워크 내에서 목적지에 도달할 수 없거나, 라우팅 경로에 문제가 생겼을 때 오류 메시지를 전송함. 예를 들어, ICMP Destination Unreachable 메시지는 특정 목적지에 패킷을 전송할 수 없음을 나타냄

3) Traceroute

  • Traceroute는 네트워크 경로를 추적하기 위해 ICMP를 사용함. 패킷이 목적지까지 도달하는 동안 거치는 라우터를 추적하여, 네트워크 경로의 문제를 진단할 수 있음

실무에서의 ICMP 활용

  • 네트워크 상태 점검
    • 네트워크 엔지니어들은 ICMP를 통해 서버의 상태나 네트워크 연결의 품질을 확인함. Ping을 통해 서버의 응답 여부와 지연 시간을 측정하고, Traceroute를 사용해 네트워크 경로의 문제를 파악

4. TCP, UDP, ICMP의 비교

특성TCPUDPICMP
연결 방식연결 지향적 (3-way Handshake)비연결성비연결성
신뢰성데이터 신뢰성 보장 (수신 확인 및 재전송)신뢰성 없음 (데이터 손실 가능)데이터 전송 프로토콜이 아님
속도상대적으로 느림빠름네트워크 상태 보고에 사용
주요 사용 예HTTP, FTP, 이메일 전송 등VoIP, 실시간 스트리밍, 온라인 게임Ping, Traceroute, 네트워크 진단

정리

  • TCP, UDP, ICMP는 네트워크 통신에서 각각 다른 목적과 특징을 가지고 있음. TCP신뢰성이 중요한 데이터 전송에 적합하며, UDP는 빠른 전송 속도가 필요한 실시간 통신에 적합함. ICMP는 네트워크 상태를 점검하고, 문제를 진단하는 데 사용됨
  • 네트워크 설계나 문제 해결 시, 각 프로토콜의 특성을 이해하고, 상황에 맞게 선택하는 것이 중요함. 실무 환경에서는 이러한 프로토콜을 적절히 사용하여 네트워크 성능을 최적화하고, 문제를 빠르게 해결할 수 있어야 함

0개의 댓글