[Network] 계층 별 프로토콜(1)

인터넷 통신의 기반인 FTP, 이메일, ICMP 프로토콜의 원리를 알아봅니다. 파일 전송부터 네트워크 오류 진단까지, 각 기술이 통신 문제를 어떻게 해결하는지 핵심만 설명합니다.

[Network] 계층 별 프로토콜(1)
Photo by Jordan Harrison / Unsplash

개요

각 계층별 프로토콜의 특징 대해 조사하였습니다.

Notion Image

https://wikidocs.net/275243

1. FTP (File Transfer Protocol)

FTP(File Transfer Protocol)는 네트워크 파일 전송을 위한 표준 프로토콜

  • 클라이언트 서버 모델
  • TCP 21번 포트를 사용
  • 파일 업로드, 다운로드, 디렉토리 탐색 등 가능
  • 기가바이트 파일에 대해 효율적인 고성능 데이터 전송 가능

FTP의 특징

  • 클라이언트 서버 구조
  • FTP 2개의 구조적인 연결을 수행
    • 제어 채널 + 데이터 채널로 각각 21, 20번 포트 사용
      • 안정성: 파일 전송 중에 문제가 생겨도 제어 연결은 살아있어서 다시 시도 가능
      • 효율성: 큰 파일 전송할 때 명령어 채널의 혼잡 방지
      • 유연성: 여러 데이터 전송을 동시 전송도 가능(조건부)

제어/데이터 채널의 특징

  • 제어 채널 (Control Channel)
    • 명령어만 송수신(LIST, GET, PUT, CD 등)
    • 지속적인 연결 상태 유지
    • 21번 포트 사용
    • 디렉토리 탐색, 파일 목록 조회, 사용자 인증 수행
      • 사용자 인증 - 아이디 / 비밀번호 기반
      • USER, PASS - 사용자 이름/비밀번호
      • CWD- 디렉토리 변경
      • RETR- 서버에 파일 저장
      • DELE- 서버에 파일 삭제
    • 명령어는 ASCII 모드로 전송됨
  • 데이터 채널 (Data Channel)
    • 실제 파일/디렉토리 데이터 전송
    • 20번 포트 사용
    • 데이터 전송할 때만 임시 연결 후 해제
      • 대용량 파일 전송 시 사용

그 외 특징

  • Active / Passive 모드에 따라 포트가 달라질 수 있으니 주의
    • NAT, 방화벽 뒤로 접근할 수 없어 문제가 생김
  • Active: 서버 → 클라이언트 (서버가 먼저 연결)
    • 데이터/제어 포트 고정 20, 21
    • 방화벽, NAT를 통한 통신시 보안, 연결 문제가 생김
  • Passive: 클라이언트 → 서버 (클라이언트가 먼저 연결)
    • 제어 포트 고정 21, 데이터 포트 유동적
  • 응답 코드(참고)
    • 긍정적 회신: 1XX 예비 회신, 2XX 완료 회신, 3XX 중간 회신
    • 부정적 회신: 4XX 일시적 완료 회신, 5XX 영구적 완료 회신

1.6 FTP 보안과 한계

FTP의 보안과 한계

  • 보안 문제 특징
    • 사용자명/비밀번호가 평문으로 전송
    • 파일 내용이 암호화없이 전송
    • 정보 유출 가능성 높음

SFTP의 등장

  • SSH의 개념을 확장해서 만듬
  • SSH 기반 클라이언트가 모든 연결을 시작 → NAT/방화벽 문제 해결

대안적인 방안 HTTP/HTTPS

  • 단일 연결과 압축, HTTP/2, HTTP/3 방식으로 전송 성능이 지속적으로 개선됨

2. 이메일 프로토콜

이메일은 수집, 전달, 저장을 하는 프로토콜이 분리됨

  • MTA(Mail Transfer Agent) - 메일 서버 간 전송 담당 (우체국 → 우체국)
  • MUA(Mail User Agent) - 이메일 작성 도구(Gmail)
    • MTA로 발신 or MDA로 수신시 중간에서 사용
  • MDA (Mail Delivery Agent) - 최종 메일함에 저장 (우체국 → 우편함)
    • 받은 메일을 메일함에 저장
    • 사용자가 메일을 읽으러 올 때 전달

이메일을 전송, 수신 할 때 수행하는 프로토콜도 각각 다름

SMTP (Simple Mail Transfer Protocol)

  • 이메일 전송 전문
    • 유저의 이메일을 서버로 보낼 때 사용
    • 서버(MTA)끼리 통신시 사용
  • 25, 587, 465 포트 사용
    • 25 → 암호화없음 - 서버간 통신
    • 465 → SMTP 암호화
    • 587 → 현대 SMTP(25번 포트 필터 가능)
  • SMTP 명령어
    • HELO/EHLO - 서버 연결 및 인사
    • MAIL FROM - 발신자 지정
    • RCPT TO - 수신자 지정
    • DATA - 메일 본문
    • QUIT - 연결 종료

메일 수신 프로토콜은 2가지 존재

  • 직접 다운로드받아 가져오거나 서버에 복사해두고 보기만 수행
    • POP3 / IMAP

POP3 (Post Office Protocol v3)

  • 직접 다운로드 받아 가져오는 방식
  • 110번 평문 통신 포트와 995의 암호화 통신 포트
  • 장점
    • 메일을 로컬에 다운로드하여 인터넷 없이도 확인 가능
    • 네트워크 불안정한 상황에서 유리
    • 서버 부담을 감소시킬 수 있음
  • 단점
    • 다운받고 삭제되어 한 기기에서만 확인 가능
    • 읽음/안읽음 상태, 폴더 구성 등이 동기화 어려움
  • 최신 클라이언트는 삭제 옵션 지원
    • 다운로드 즉시 삭제
    • 일정 기간 보관과 서버에 복사본 저장

IMAP (Internet Message Access Protocol)

  • 서버에 원본을 두고 복사본을 활용하는 방식 → 읽기 전용
  • 143번 평문 통신 포트와 993의 암호화 통신 포트
  • 장점
    • 읽음/안읽음, 삭제, 이동 등의 상태가 실시간 동기화
    • 헤더, 본문 등 효율적인 데이터 전송 → 본문만 선별적 다운로드
    • 대용량 메일도 빠른 확인 가능
    • 여러 기기간 상태 동기화
  • 단점
    • 오프라인에서는 캐싱된 부분만 확인 가능
    • 서버 용량 제한이 제한됨
    • 메일 열 때마다 다운로드 필요와 네트워크 성능 의존성

이메일 보안(참고)

  • SSL/TLS를 통해 암호화하는 2가지 방식 존재
    • Implicit SSL: 처음부터 암호화된 연결 (포트 465, 993, 995)
    • STARTTLS: 일반 연결 후 암호화로 업그레이드 (포트 587, 143)
  • SMTP AUTH 인증
    • SMTP 서버에서 메일 발송 시 사용자 인증을 요구하는 메커니즘
    • 무단 릴레이(Spam Relay) 방지
      • MUA → MTA로 전송시 무단 전송 방지
      • 메일 서버를 권한없이 악용하는 것 방지
  • SPF, DKIM, DMARC
    • SPF (Sender Policy Framework)
      • 특정 도메인에서 메일을 보낼 수 있는 IP 범위를 지정(DNS 기반)
      • 발신자 도메인 위조 방지
    • DKIM (DomainKeys Identified Mail)
      • 발신 서버에서 메일에 서명을 추가하고 수신 서버에서 검증
      • 내용 변조 여부 확인
    • DMARC (Domain-based Message Authentication)
      • SPF와 DKIM 기반 종합 인증 정책
      • 인증 실패 시 메일 처리 방법 지정 (거부, 격리, 허용)
      • 위조 메일 리포트 수신 가능

3. ICMP (Internet Control Message Protocol)

ICMP는 인터넷에서 오류 보고와 진단을 담당하는 핵심 프로토콜

ICMP 기본 개념

  • Best Effort(최선형 전송)만 제공하는 IP 프로토콜
    • 패킷이 도달했는지 확인하지않음
    • 전송 중 오류를 확인할 수 없음
    • 네트워크 상태 정보를 제공하지 않음
  • 프로토콜을 보조하기 위한 ICMP 프로토콜
    • 패킷 전송 실패시 오류 메시지 전송
    • 네트워크 경로 문제 진단
    • 네트워크 상태 모니터링

ICMP 특징

  • 네트워크 계층(3계층)에 위치
    • IP 패킷 내부에 캡슐화
    • 전송 계층 프로토콜 지원
      • 3계층에서 발생한 문제를 4계층에게 알려주어 적절한 오류 처리 수행(메시지 전달)
  • 대표적인 ICMP 오류 보고 & 기능
    • 오류 보고: Destination Unreachable, Time Exceeded
      • Destination Unreachable
        • 네트워크/호스트 부재, 방화벽 차단, 경로 없음 등
        • 목적지로 가는 길이 없을 때 발생한다.
      • Time Exceeded
        • TTL(Time to Live)의 값이 0이되어 폐기됨
        • 패킷이 라우터를 지날때마다 1씩 감소. 무한 루프 방지를 위해 0이되면 Time Exceeded 처리를 함
    • 진단 기능: Echo Request/Reply (ping), Traceroute(라우터 홉 추적)
    • 경로 최적화: Redirect 메시지로 더 나은 경로 안내
      • Redirect
        • 경로 최적화 힌트를 제공함
        • 현재 패킷은 정상적으로 전달하며 다음 패킷의 처리를 결정
    • 네트워크 관리: 네트워크 상태 모니터링
  • 메시지를 다음과 같이 해석할 수 있음
    • Network Unreachable → 인터넷 끊김
    • Host Unreachable → 서버 다운
    • Port Unreachable → 웹서버만 중단
  • 활용 명령어
    • ping: ICMP Echo Request/Reply를 이용한 연결성 테스트
      • 빠른 확인에 용이함
    • traceroute: TTL 값을 이용해 경로상의 모든 라우터를 단계별로 발견
      • 어디서 막히는지 파악함 → 여기서 TTL은 시간이 아닌 홉수
    • mtr (My Traceroute): 실시간 traceroute + 통계
      • 실시간 모니터링으로 손실률, 지연시간 표시
      • 상태 변화 관찰 및 시각적 보고서 제공

ICMP 보안 고려사항

ICMP는 네트워크 상태를 진단하기 위해 가장 좋은 도구이지만 동시에 악용될 수 있음

  • 대량의 Ping 공격(Smurf Attack)
    • 공격자의 브로드캐스트 패킷 1개 → 100대가 피해자에게 응답 요청 공격하는 방식
  • ICMP를 완전히 차단하긴 어려움
    • Fragmentation Needed → 인터넷 동작에 필수(대용량 파일 처리)
  • 방화벽을 통해 제어 필요(예시)
    • 외부 → 내부 Echo Request 차단
    • 내부 → 외부 Echo Request 허용
    • 내부 ↔ 내부 모든 ICMP 방식 허용

ICMP를 많이 활용했으나 보안상의 이유로 운영 환경에서는 Load Balacner와 모니터링 서비스를 구성하는 추세