모든 공통 네트워크 프로토콜 설명

네트워크 프로토콜: 핵심 개념과 다양한 유형

네트워크 프로토콜은 네트워크 상에서 장치들이 상호 작용하고 데이터를 교환하는 데 필요한 규칙들의 모음입니다. 간단히 말해, 서로 다른 장치들이 네트워크를 통해 ‘대화’할 수 있도록 해주는 일종의 언어와 같습니다.

사람들이 서로 소통할 때 특정 규칙과 절차를 따르는 것과 마찬가지로, 네트워크 프로토콜은 데이터 패킷의 구조, 장치 식별 방식, 오류 처리 및 충돌 해결 방법 등을 규정합니다.

네트워크 프로토콜은 크게 통신, 보안, 관리 세 가지 주요 범주로 나눌 수 있습니다.

1. 통신 프로토콜

통신 프로토콜은 네트워크 장치 간의 데이터 및 정보 교환을 담당합니다. 데이터의 형식, 전송 및 수신 방법을 정의하여 원활한 통신을 보장합니다. 대표적인 예로 HTTP/HTTPS, FTP, TCP 및 UDP 등이 있습니다.

2. 보안 프로토콜

보안 프로토콜은 네트워크를 통해 전송되는 데이터의 기밀성과 무결성을 보호하는 데 중점을 둡니다. 암호화 기술을 사용하여 통신 채널을 안전하게 설정하고 데이터가 무단 액세스나 변조로부터 안전하게 보호되도록 합니다.

예시로는 암호화에 사용되는 SSL/TLS, 보안 원격 액세스를 위한 SSH, 그리고 SMTPS 및 POP3S와 같은 보안 이메일 프로토콜이 있습니다.

3. 관리 프로토콜

관리 프로토콜은 네트워크 장치 및 자원의 관리, 모니터링 및 제어를 수행합니다. 네트워크 관리자가 효율적으로 네트워크를 구성하고 문제를 해결하는 데 도움을 줍니다.

DHCP(동적 IP 주소 할당), SNMP(네트워크 장치 관리), ICMP(진단 목적), 그리고 BGP(라우팅 및 연결 정보) 등이 있습니다.

이제 각 범주별로 몇 가지 주요 프로토콜을 자세히 살펴보겠습니다.

주요 통신 프로토콜

HTTP

HTTP (Hypertext Transfer Protocol)는 웹 브라우저와 서버 간의 통신에 사용되는 핵심 프로토콜입니다.

애플리케이션 계층 프로토콜로서, 사용자가 웹 브라우저에 URL을 입력하고 엔터 키를 누르면 HTTP 요청이 웹 서버로 전송됩니다. 서버는 요청을 처리한 후 요청된 웹 페이지, 이미지, 비디오 등의 정보가 포함된 HTTP 응답을 다시 보냅니다.

HTTP는 상태 비저장 프로토콜입니다. 즉, 각 요청은 독립적인 트랜잭션으로 처리되며, 서버는 이전 요청에 대한 정보를 유지하지 않습니다. 이러한 단순성이 HTTP의 광범위한 사용에 기여했습니다.

HTTP는 GET(데이터 가져오기), POST(데이터 전송), PUT(리소스 업데이트), DELETE(리소스 삭제)와 같은 다양한 요청 방법을 정의합니다. 이러한 방법을 통해 클라이언트는 서버에서 수행하고자 하는 작업의 유형을 지정할 수 있습니다.

HTTP 응답은 요청의 결과를 나타내는 상태 코드를 포함합니다. 예를 들어, 200은 성공, 404는 요청한 리소스를 찾을 수 없음을 의미합니다.

HTTP는 여러 버전을 거쳐 발전해왔으며, HTTP/1.1은 오랫동안 가장 널리 사용되었고, HTTP/2와 HTTP/3(QUIC)은 성능 향상을 위해 개발되었습니다.

HTTPS

HTTPS (Hypertext Transfer Protocol Secure)는 HTTP의 확장 버전으로, 컴퓨터 네트워크를 통한 보안 통신을 제공합니다.

SSL/TLS와 같은 암호화 프로토콜을 사용하여 브라우저와 웹 서버 간에 교환되는 데이터를 암호화합니다. 이를 통해 데이터가 가로채지거나 조작되더라도 읽거나 해독하기 어려워집니다.

HTTPS는 서버 인증을 포함합니다. 브라우저가 HTTPS를 통해 웹사이트에 연결하면, 웹사이트는 신뢰할 수 있는 CA(인증 기관)에서 발급한 디지털 인증서를 제공합니다. 이 인증서는 웹사이트의 신원을 확인하여 클라이언트가 악의적인 서버가 아닌 의도한 서버에 연결되어 있음을 보장합니다.

HTTPS를 사용하는 웹사이트는 URL 시작 부분에 “https://”가 표시됩니다. 이 접두사는 해당 웹사이트가 보안 연결을 사용하고 있음을 나타냅니다.

HTTPS는 포트 443을 사용하며, HTTP는 포트 80을 사용합니다. 이를 통해 웹 서버는 보안 및 비보안 연결을 구분할 수 있습니다.

Google과 같은 검색 엔진은 검색 순위에서 HTTPS를 사용하는 웹사이트를 우선적으로 처리합니다. 보안되지 않은 HTTP 연결을 통해 제공되는 보안 HTTPS 웹페이지의 콘텐츠는 브라우저에서 “혼합 콘텐츠”로 경고를 표시할 수 있습니다.

웹사이트용 SSL 인증서에 대한 자세한 내용은 이 페이지를 참고하세요.

FTP

FTP (File Transfer Protocol)는 컴퓨터 네트워크에서 클라이언트와 서버 간에 파일을 전송하기 위한 표준 네트워크 프로토콜입니다.

FTP는 클라이언트-서버 모델에서 작동하며, 클라이언트는 파일을 요청하고 전송하기 위해 서버에 연결합니다.

FTP는 포트 21을 제어 연결에 사용하며, 데이터 전송에 추가 포트를 사용합니다. 활성 모드와 수동 모드 두 가지 방식으로 작동합니다.

활성 모드는 서버가 클라이언트에게 연결을 시도하는 방식이며, 수동 모드는 클라이언트가 서버에 연결하는 방식입니다. 수동 모드는 방화벽이나 NAT 장치 뒤에 있는 클라이언트와 서버 간의 연결에 유용합니다.

FTP는 서버의 파일에 접근하기 위해 일반적으로 사용자 인증을 필요로 합니다. 사용자는 사용자 이름과 비밀번호를 제공해야 합니다. 일부 FTP 서버는 익명 접속을 지원하여 사용자가 일반 사용자 이름으로 로그인하고 이메일 주소를 비밀번호로 사용할 수 있도록 합니다.

FTP는 ASCII 모드와 바이너리 모드 두 가지 데이터 전송 모드를 지원하며, 각각 텍스트 파일과 바이너리 파일 전송에 사용됩니다.

기존 FTP는 사용자 이름과 비밀번호를 포함한 데이터를 암호화하지 않고 전송하기 때문에 보안에 취약합니다. SFTP(보안 FTP)와 FTPS(SSL/TLS를 통한 FTP)가 더 안전한 대안으로 사용됩니다.

SFTP와 FTPS에 대한 자세한 내용은 이 페이지를 참고하세요.

TCP

TCP (Transmission Control Protocol)는 IP 프로토콜 스위트의 핵심 전송 계층 프로토콜 중 하나입니다. IP 네트워크에서 장치 간의 안정적이고 순서 있는 데이터 전송을 제공합니다.

TCP는 데이터 전송 전에 송신자와 수신자 간에 연결을 설정합니다. 연결 설정에는 3-way handshake (SYN, SYN-ACK, ACK)와 데이터 교환 후 연결 종료 프로세스가 포함됩니다.

TCP는 전이중 통신을 지원하여 데이터가 양방향으로 동시에 전송될 수 있도록 합니다.

TCP는 네트워크 혼잡을 방지하기 위해 네트워크 상태를 모니터링하고 전송 속도를 조정합니다.

또한 데이터 손상을 감지하고 수정하는 오류 검사 메커니즘을 포함합니다. 손상된 데이터 세그먼트는 재전송됩니다.

TCP는 포트 번호를 사용하여 장치의 특정 서비스나 애플리케이션을 식별하고 데이터를 올바른 애플리케이션으로 라우팅합니다.

TCP 연결의 수신자는 데이터 세그먼트 수신 확인을 위해 승인(ACK)을 보냅니다. 송신자는 특정 시간 내에 ACK를 받지 못하면 데이터 세그먼트를 재전송합니다.

TCP는 송신자와 수신자 모두에서 연결 상태 정보를 유지하여 데이터 세그먼트의 순서를 추적하고 연결을 관리합니다.

IP

IP (Internet Protocol)는 인터넷을 포함한 컴퓨터 네트워크에서 통신 및 데이터 교환을 가능하게 하는 핵심 프로토콜입니다. 네트워크 장치를 식별하기 위해 숫자 주소 체계를 사용합니다. 이러한 숫자 주소를 IP 주소라고 하며, IPv4 또는 IPv6일 수 있습니다.

IPv4 주소는 일반적으로 4개의 십진수 집합(예: 192.168.1.1)으로 표시되며, IPv6 주소는 더 길고 16진수 표기법을 사용합니다.

IP는 서로 다른 네트워크에 있는 장치 간에 데이터 패킷을 라우팅합니다. 라우터 및 스위치는 IP 주소를 기반으로 패킷을 목적지로 전달합니다.

IP는 패킷 교환을 사용합니다. 즉, 데이터를 전송하기 위해 더 작은 패킷으로 나눕니다. 각 패킷에는 라우터가 전달 결정을 내릴 수 있도록 하는 출발지 및 목적지 IP 주소가 포함됩니다.

IP는 연결 없는 프로토콜로 간주됩니다. 데이터 전송 전에 송신자와 수신자 간에 전용 연결을 설정하지 않습니다. 각 패킷은 독립적으로 처리되며 목적지에 도달하기 위해 다른 경로를 사용할 수 있습니다.

UDP

UDP (User Datagram Protocol)는 연결을 설정하지 않고 데이터를 네트워크를 통해 보내는 방법을 제공하는 연결 없는 경량 프로토콜입니다.

TCP와 달리 UDP는 데이터 전송 전에 연결을 설정하지 않고 데이터를 데이터그램으로 패키징하여 목적지로 보냅니다.

UDP는 데이터 전달을 보장하지 않으며 오류 감지 및 수정을 위한 메커니즘을 구현하지 않습니다. 패킷 손실이나 순서가 맞지 않는 도착을 처리하는 것은 애플리케이션 계층에 달려 있습니다.

UDP는 흐름 제어, 오류 수정 또는 승인과 같은 기능이 없기 때문에 TCP보다 오버헤드가 적어 속도가 빠르지만 안정성이 떨어집니다. 또한 정체 제어 메커니즘이 없어 네트워크를 UDP 트래픽으로 넘치게 할 수 있습니다.

UDP는 보장된 전달보다 낮은 대기 시간과 빠른 데이터 전송이 중요한 실시간 오디오 및 비디오 스트리밍, 온라인 게임, DNS 및 일부 IoT 애플리케이션 등에 사용됩니다.

UDP는 멀티플렉싱 기능을 제공하여 여러 애플리케이션이 포트 번호를 사용하여 데이터 스트림을 구분할 수 있습니다.

UDP를 이해하기 위한 간단한 예시를 들어보겠습니다. 시끄러운 놀이터에서 친구에게 메시지를 전달하고 싶다고 가정해 봅시다. 공을 사용하여 메시지를 전달하는 것은 UDP와 유사합니다.

  • 종이에 메시지를 적고 공에 감습니다.
  • 친구 쪽으로 공을 던집니다. 친구가 공을 잡았는지 확인하지 않고 그냥 던집니다.
  • 공이 친구에게 닿았지만, 시끄러운 환경 때문에 공을 놓칠 수도 있고 순서대로 도착하지 않을 수도 있습니다.
  • 친구가 메시지를 읽으면 전달된 것이지만, 확인 방법이 없으므로 놓칠 수도 있습니다.

이 예에서 공은 연결을 설정하지 않고 데이터를 보내는 UDP 프로토콜을 나타냅니다. 공을 던지는 것은 UDP가 전달을 보장하지 않는 것을 나타내며, 공을 놓칠 가능성은 UDP의 신뢰성 부족을 나타냅니다. 메시지를 읽는 친구는 UDP를 통해 데이터를 처리하는 애플리케이션과 같습니다.

주요 보안 프로토콜

SSH

SSH (Secure Shell)는 보안되지 않은 네트워크를 통해 클라이언트와 서버 간의 보안 통신에 사용되는 네트워크 프로토콜입니다. 높은 보안 수준으로 명령줄 인터페이스를 통해 장치에 원격으로 액세스하고 관리하는 방법을 제공합니다.

SSH는 암호화 기술을 사용하여 클라이언트와 서버를 인증합니다. 올바른 서버에 연결되었는지 확인하고 서버가 액세스 권한을 부여하기 전에 사용자 신원을 확인합니다.

SSH 연결을 통해 전송되는 모든 데이터는 암호화되므로 제3자가 데이터를 도청하기 어렵습니다.

SSH는 키 쌍을 사용하여 인증합니다. 키 쌍은 공개 키와 개인 키로 구성되며, 공개 키는 서버와 공유하고 개인 키는 비밀로 유지됩니다.

SSH 서버에 연결되면 클라이언트는 개인 키를 사용하여 신원을 증명합니다. 기존 사용자 이름과 비밀번호 인증도 지원하지만 보안상의 이유로 권장되지 않습니다.

SSH는 기본적으로 포트 22를 사용하지만 보안상의 이유로 변경될 수 있습니다. 포트 번호를 변경하면 자동화된 공격을 줄이는 데 도움이 될 수 있습니다.

SSH는 일반적으로 원격 서버 관리, 파일 전송(SCP 및 SFTP) 및 원격 명령줄 인터페이스에 대한 보안 액세스에 사용됩니다. Unix 계열 운영 체제에서 널리 사용되며 Windows에서도 다양한 소프트웨어 솔루션을 통해 사용할 수 있습니다.

SMTP

SMTP (Simple Mail Transfer Protocol)는 클라이언트 또는 이메일 서버에서 수신자 측 이메일 서버로 이메일 메시지를 전송하는 표준 프로토콜입니다.

SMTP는 이메일 통신의 기본 부분이며 IMAP/POP3와 같은 다른 이메일 프로토콜과 함께 작동하여 이메일 메시지 전송, 수신 및 저장을 포함한 전체 이메일 수명주기를 활성화합니다.

이메일 클라이언트에서 이메일을 작성하고 “보내기”를 클릭하면 SMTP를 사용하여 이메일 공급자의 서버로 메시지를 중계합니다.

SMTP는 암호화되지 않은 통신에 포트 25를 사용하고 암호화된 통신에는 포트 587(STARTTLS 사용)을 사용합니다. 포트 465는 암호화된 SMTP 통신에도 사용되었지만 덜 일반적입니다.

많은 SMTP 서버에서는 무단 사용을 방지하기 위해 이메일 전송 시 인증을 요구합니다. 사용자 이름 및 비밀번호와 같은 인증 방법 또는 OAuth와 같은 더 안전한 방법을 사용합니다.

SMTP 서버는 릴레이로 사용되어 클라이언트에서 보내는 이메일을 수락하고 수신자의 이메일 서버로 전달합니다. TLS 또는 SSL을 통한 암호화를 사용하여 통신을 보호합니다.

주요 관리 프로토콜

POP3

POP3 (Post Office Protocol version 3)는 메일 서버에서 이메일 클라이언트 애플리케이션으로 이메일 메시지를 가져오는 데 사용되는 이메일 검색 프로토콜입니다.

POP3는 “저장 후 전달” 방식으로 작동합니다. 서버에서 이메일을 가져온 다음 클라이언트 장치에 복사본을 저장하고 서버에서 삭제합니다.

일부 이메일 클라이언트는 서버에 이메일 사본을 남겨둘 수 있지만 기본 동작은 아닙니다. POP3는 암호화되지 않은 통신에 포트 110을 사용하고 포트 995는 보안 통신에 사용됩니다.

POP3는 상태 비저장 프로토콜입니다. 이미 다운로드한 이메일을 추적하지 않으며, 서버에 연결할 때마다 읽지 않은 모든 메시지를 검색합니다. 여러 장치에서 이메일에 접근하면 동기화 문제가 발생할 수 있습니다.

POP3는 주로 받은 편지함에서 이메일을 검색하도록 설계되었으며, 서버의 다른 폴더에서 이메일 검색을 지원하지 않을 수 있습니다.

POP3는 서버와 클라이언트 간에 이메일 폴더를 동기화하지 않으므로 한 장치에서 수행된 작업이 다른 장치에 반영되지 않습니다.

보안을 강화하기 위해 보안 버전의 POP3(POP3S 또는 SSL/TLS를 통한 POP3)를 사용하는 것이 좋습니다.

POP3는 IMAP에 비해 오늘날 덜 일반적으로 사용됩니다. IMAP는 폴더 동기화와 같은 고급 기능을 제공하고 여러 장치에서 동일한 사서함을 보다 효과적으로 관리할 수 있습니다.

BGP

BGP (Border Gateway Protocol)는 자율 시스템 (AS) 간에 라우팅 및 연결 정보를 교환하기 위해 네트워킹에 사용되는 표준화된 외부 게이트웨이 프로토콜입니다.

자율 시스템은 인터넷에 공통 라우팅 정책을 제공하는 단일 조직의 제어하에 있는 IP 네트워크 및 라우터의 모음입니다.

BGP는 경로 벡터 프로토콜입니다. 데이터 패킷이 목적지에 도달하기 위해 사용하는 경로(AS 목록)를 추적합니다. BGP 라우터는 정책 및 경로 속성을 기반으로 라우팅 결정을 내립니다.

BGP는 데이터가 여러 조직이나 ISP가 운영하는 여러 네트워크를 통과할 때 최적의 경로를 결정하는 데 사용됩니다.

또한 경로 집계를 지원하여 여러 IP 접두사를 단일 경로 알림으로 요약하여 글로벌 라우팅 테이블의 크기를 줄입니다.

BGP 프로토콜은 라우팅 루프를 방지하기 위해 AS 경로 속성과 분할 수평 규칙을 사용합니다.

BGP는 공용 인터넷과 사설 네트워크 모두에서 사용됩니다. 공용 인터넷에서는 ISP와 대규모 네트워크 간에 라우팅 정보를 교환하는 데 사용되며, 개인 네트워크에서는 내부 라우팅과 경계 라우터를 통한 인터넷 연결에 사용됩니다.

DHCP

DHCP (Dynamic Host Configuration Protocol)는 TCP/IP 네트워크에서 장치에 IP 주소 및 기타 네트워크 구성 설정을 자동으로 할당하는 데 사용됩니다.

DHCP 프로세스는 일반적으로 다음과 같은 네 가지 주요 단계를 포함합니다.

DHCP 검색: 장치가 네트워크에 연결되면 DHCP Discover 브로드캐스트 메시지를 보내 사용 가능한 DHCP 서버를 찾습니다.

DHCP 제공: 네트워크의 DHCP 서버는 DHCP 제안을 통해 DHCP Discover 메시지에 응답합니다. 각 서버는 IP 주소 및 관련 구성 옵션을 제공합니다.

DHCP 요청: 장치는 DHCP 제안 중 하나를 선택하고 제공된 IP 주소를 요청하는 메시지를 선택된 서버에 보냅니다.

DHCP 승인: DHCP 서버는 IP 주소 할당을 확인하는 DHCP 승인 메시지를 보내 요청을 승인합니다.

간단한 예시를 통해 DHCP 작동 방식을 이해해 봅시다. 홈 Wi-Fi 네트워크가 있고 각 장치의 네트워크 설정을 수동으로 설정하지 않고도 장치(휴대폰, 노트북 등)를 연결하고 싶다고 가정해 보세요. DHCP가 다음과 같이 작동합니다.

  • 스마트폰이 홈 Wi-Fi 네트워크에 연결되었다고 가정해 보겠습니다.
  • 스마트폰은 DHCP Discover 메시지를 보내 “안녕하세요, 나 처음 왔어요. IP 주소와 네트워크 세부 정보를 알려주세요.”라고 요청합니다.
  • DHCP 서버 역할을 하는 Wi-Fi 라우터가 응답하여 사용 가능한 IP 주소와 서브넷 마스크, 기본 게이트웨이, DNS 서버 등의 정보를 제공합니다.
  • 스마트폰은 이 정보를 수신하고 제공된 IP 주소 및 네트워크 설정을 자동으로 설정합니다.

이제 스마트폰은 인터넷을 사용하고 홈 네트워크의 다른 장치와 통신할 준비가 되었습니다.

ICMP

ICMP (Internet Control Message Protocol)는 IP 프로토콜 스위트에서 네트워크 연결을 활성화하고 네트워크 작동 상태에 대한 피드백을 제공하기 위해 사용되는 네트워크 계층 프로토콜입니다.

ICMP는 주로 IP 패킷 처리와 관련된 오류 보고 및 진단 정보를 제공하는 데 사용됩니다. 예를 들어, 라우터가 IP 패킷을 전달하는 동안 문제가 발생하면 ICMP 오류 메시지를 생성하고 패킷 소스로 다시 보냅니다.

일반적인 ICMP 오류 메시지에는 “대상에 연결할 수 없음”, “시간 초과”, “매개변수 문제”가 있습니다.

ICMP의 가장 잘 알려진 용도 중 하나는 호스트 연결성을 확인하는 데 사용되는 “ping” 명령입니다. ping 명령은 ICMP 에코 요청 메시지를 대상 호스트로 보내고, 호스트에 연결할 수 있으면 ICMP 에코 응답 메시지로 응답합니다.

ICMP는 PMTU (경로 최대 전송 단위) 검색에도 사용됩니다. PMTU는 경로를 따라 단편화 없이 전송할 수 있는 IP 패킷의 최대 크기입니다.

“조각화 필요” 및 “패킷이 너무 큼”과 같은 ICMP 메시지는 단편화를 방지하고 데이터 전송을 최적화하기 위해 특정 경로에 대한 적절한 MTU를 결정하는 데 사용됩니다.

또한 이러한 메시지를 사용하여 패킷이 소스에서 대상으로 이동한 후 다시 돌아오는 데 걸리는 시간을 추적할 수 있습니다. “시간 초과” 메시지가 이 목적에 사용됩니다.

SNMP

SNMP (Simple Network Management Protocol)는 네트워크 장치 및 시스템을 관리하고 모니터링하기 위한 애플리케이션 계층 프로토콜입니다.

SNMP는 관리자-에이전트 모델을 사용하여 작동합니다. 두 가지 주요 구성 요소가 있습니다.

SNMP 관리자: 관리자는 SNMP 에이전트로부터 정보를 요청하고 수집하며, 에이전트에 대한 구성 매개변수를 설정할 수 있습니다.

SNMP 에이전트: 에이전트는 네트워크 장치에서 실행되는 소프트웨어 모듈 또는 프로세스입니다. 장치의 구성 및 성능에 대한 정보를 저장하고 SNMP 관리자의 요청에 응답합니다.

MIB (Management Information Base)는 네트워크 장치에서 관리되는 객체의 구조와 구성을 정의하는 계층적 데이터베이스입니다. 이는 SNMP 관리자와 에이전트 모두에 대한 참조 역할을 하여 데이터 상호 이해를 가능하게 합니다.

널리 사용되는 SNMP 버전에는 세 가지가 있습니다.

SNMPv1: 원래 버전의 SNMP이며, 인증에 커뮤니티 문자열을 사용합니다. 보안 기능이 부족하여 보안 수준이 낮습니다.

SNMPv2c: 추가 데이터 유형 지원 및 향상된 오류 처리를 통해 SNMPv1보다 개선되었습니다.

SNMPv3: 암호화, 인증 및 액세스 제어를 제공하는 가장 안전한 SNMP 버전입니다.

SNMP는 대역폭 활용도 모니터링, 장치 가동 시간 추적, 네트워크 장치 원격 구성, 시스템 오류 또는 임계값 위반과 같은 특정 이벤트 발생 시 경고를 수신하는 다양한 네트워크 관리 작업에 사용됩니다.

결론 ✍️

이 기사가 다양한 네트워크 프로토콜을 배우는 데 유익했기를 바랍니다. 네트워크 분할에 대한 내용도 참고해 보세요.