2014년 8월 18일 월요일

도메인 네임 시스템(DNS)의 개관, 기능, 특징

DNS 개관, 역사, 표준

  • 초기 DNS의 개발과 계층 도메인으로의 이동
    • 1981년 9월 발표된 RFC 799, "Internet name domains"이 처음으로 이 개념을 도입
      • 실제로 도메인 자체보다는 도메인 간의 이메일 전송 방법을 다룸
      • 평면적인 도메인 구조를 가정하고 있으며 계층 구조는 향후에 개발될 가능성이 있다는 정도로만 언급
    • RFC 881, "Domain names plan and schedule"
      • 새로운 DNS 구현과 관련한 문제와 호스트 테이블 체계로부터의 전환방법을 다룸
    • RFC 882, "Domain names: Concepts and facilities"
      • DNS의 개념과 기능적 요소를 매우 자세히 설명
      • 네임 공간과 자원 레코드뿐 아니라 네임 서버와 변환기의 동작 방법에 대한 논의도 포함
    • RFC 883, "Domain names: Implementation specification"
      • DNS 메시징과 동작의 구체적인 핵심 내용을 다룸
  • DNS의 표준화와 초기 표준 정의
    • RFC 1032, "Domain Administrators Guide"
      • 도메인 운영에 필요한 관리 절차와 정책을 설명
    • RFC 1033, "Domain Administrators Operations Guide"
      • DNS의 분산 데이터베이스 각 부분을 관리하는 방법을 포함해 DNS 서버의 동작에 대한 기술적인 세부 사항을 제공
    • RFC 1034, "Domain Names - Concepts and Facilities"
      • RFC 882 대체
      • DNS의 소개와 개념적인 설명을 다룸
    • RFC 1035, "Domain Names - Implementation and Specification"
      • RFC 883의 개정판
      • 자원 레코드에 대한 정의, 메시지 유형, 마스터 파일 형식, 변환기와 네임 서버의 상세한 구현을 포함한 DNS의 동작 원리를 자세히 설명
  • DNS의 발전과 중요한 추가 표준들
    • RFC 1183, "New DNS RR Definitions"
      • 실험적인 자원 레코드 타임에 대해 정의
    • RFC 1794, "DNS Support for Load Balancing"
      • DNS 서버의 성능향상을 위한 부하 분산에 대해 다룸
    • RFC 1995, "Incremental Zone Transfer in DNS"
      • 효율성을 위해 일부 구역(zone)만을 2차 네임 서버로 전송하는 새로운 기능을 제안
    • RFC 1996, "A Mechanism for Prompt Notification of Zone Changes(DNS NOTIFY)"
      • 기본(중앙 관리) DNS 서버가 2차 서버에게 메인 데이터베이스의 새로운 변경 사항을 전달해줄 수 있는 DNS 메시지 타입을 추가함
    • RFC 2136, "Dynamic Updates in the Domain Name System(DNS UPDATE)"
      • 동적으로 DNS 데이터베이스의 자원 레코드를 변경하는 기술에 대해 다룸
      • Dynamic DNS라 불리기도 함
    • RFC 2181, "Clarifications to the DNS Specification"
      • RFC 1034와 1035에서 정의한 주요 DNS 표준과 관련한 여러 문제를 다룸
    • RFC 2308, "Negative Caching of DNS Queries(DNS NCACHE)
      • 네거티브 캐싱의 동작에 대해 설명
      • 더 이상 존재하지 않는 네임 정보를 서버가 좀더 효율적으로 유지하게 해주는 기능
  • 인터넷 프로토콜 버전 6으로의 DNS 적용

DNS의 설계 목표, 목적, 가정

  • DNS의 설계 목표와 목적
    • 전세계적인, 확장성 뛰어난, 그리고 일관성 있는네임 공간의 개발
    • 로컬 자원에 대한 로컬 제어
    • 병목 현상을 막기 위한 분산 설계
    • 응용 일반성
      • 광범위한 응용을 지원할 수 있도록 충분히 일반적이어야 한다.
      • 예를 들어 호스트 식별, 메일 전송 등과 같은 기능을 지원해야 한다.
    • 다양한 기본 프로토콜에 대한 지원
    • 하드웨어 일반성
  • DNS의 설계 상 가정
    • 데이터베이스 규모의 빠른 확대
    • 다양한 데이터 변경 속도
    • 위임 가능한 조직적 책임 구조
    • 네임 정보 접근의 상대적 중요성
    • 부재하는 정보에 대한 요청 다루기
    • 성능을 위한 캐싱 사용






TCP/IP 네임 체계 개관과 호스트 테이블 네임 체계 (51)

네임 체계의 문제, 개념, 기술 (50)

TCP 신뢰성과 흐름 제어 기능 (49)

TCP 메시지 포맷과 데이터 송신 (48)

TCP 기본 동작: 연결 수립, 관리와 종료 (47)

2014년 7월 30일 수요일

전송 제어 프로토콜(TCP) 원리와 일반 동작

TCP 데이터 취급과 처리
  • 애플리케이션 데이터 처리의 유연성 향상: TCP의 스트림 동작
    • TCP는 애플리케이션에서 오는 데이터를 스트림으로 간주한다
    • 그래서 TCP를 스트림 중심(stream-oriented) 프로토콜이라 한다.
    • 각 애플리케이션은 전송하고자 하는 데이터를 옥텟(바이트) 스트림으로 송신한다.
    • 즉, 애플리케이션은 데이터를 블록 크기에 맞추거나 스트림의 길이를 걱정할 필요가 없다.
    • 단지 TCP에 바이트를 "던져 주면" 된다.
  • TCP 데이터 패키징: 세그먼트
    • TCP 세그먼트
      • TCP는 애플리케이션에서 오는 스트림을 IP에서 보낼 수 있는 분리된 메시지로 나눈다. 이 메지시를 TCP 세그먼트라 함
    • TCP에서는 최대 세그먼트 크기(MSS)라는 인자가 크기를 제한한다.
      • MSS는 연결 수립 과정에서 결정된다.
    • TCP에서는 일단 연결이 수립되면 각 장비가 어떤 시간에든지 받을 수 있는 데이터의 크기를 상대방에게 알리도록 설계돼 있다.
      • 만약 크기가 MSS값보다 작다면 장비는 MSS보다 작은 세그먼트를 송신해야 한다.
  • TCP 데이터 식별: 순서 번호
    • TCP는 분리된 메시지가 아닌 개별 데이터 바이트를 다루기 때문에 데이터 송신과 추적 시스템을 구현하기 위해 바이트 수준의 식별 방법을 사용해야한다.
    • 이를 위해 TCP는 처리하는 각 바이트에 순서 번호를 할당한다.
  • 애플리케이션의 데이터 구분 필요
    • 애플리케이션은 TCP로 미리 패키징된 메시지가 아닌 바이트 스트림을 송신한다.
    • 그래서 각 애플리케이션은 한 데이터 요소가 어디에서 끝나고 어디에서 시작하는지를 결정하기 위한 고유한 방법을 사용해야 한다.

TCP 슬라이딩 윈도우 승인 체계
데이터 관리는 TCP의 다음 두 요구 사항을 충족시키기 위해 꼭 필요하다

  • 신뢰성
    • 송신한 데이터가 실제로 목적지에 도달한다는 것을 보장하고 만약 도달하지 않을 경우 그 사실을 탐지하여 재송신한다.
  • 데이터 흐름 제어
    • 데이터를 수신하는 장비가 처리할 수 있는 속도로 데이터 송신율을 관리한다.
이를 위해 TCP는 슬라이딩 윈도우 승인체계를 사용한다.

  • 신뢰할 수 없는 프로토콜의 문제: 피드백이 없음
    • IP와 같은 프로토콜에서는 메시지가 목적지에 도달하면 좋겠지만 만약 도달하지 못할 경우 아무도 그 사실을 알지 못한다.
  • 재전송을 사용하는 긍정 승인(PAR)을 통한 기본적인 신뢰성 제공
    • 통ㅅ니의 신뢰성을 보장하기 위한 기본적인 방법으로 장비가 메시지를 수신할 때마다 승인을 보내는 방법을 생각할 수 있다.
    • 만약 특정 시간 동안 승인이 오지 않을 경우 송신자는 메시지를 재전송할 수 있다.
    • 이 방법을 재전송을 사용하는 긍정 승인(PAR, positive acknowledgment with retransmission)이라 부른다.
    • 단점은 첫 메시지에 대한 승인을 받기 전까지 둘째 메시지를 보낼 수 없다는 것이다.
  • PAR 개선
    • 송신하는 각 메시지에 식별 정보를 추가하여 여러 메시지를 동시에 송신함으로써 기본 PAR 방법을 개선할 수 있다.
    • 그리고 송신 제한값을 사용하면 다른 장비가 데이터를 송신하는 비율을 제한하여 흐름 제어 기능도 제공할 수 있다.
  • TCP의 스트림 중심 슬라이딩 윈도우 승인 체계
      • 속도 저하 때문에 TCP는 바이트를 개별적으로 보내지 않고 세그먼트로 묶어서 보낸다.
    • TCP 전송 스트림의 개념적 구분(4가지)
      • 송신했고 승인이 완료된 바이트
      • 송신했지만 아직 승인되지 않은 바이트
      • 아직 송신하지 않았지만 수신자가 받을 준비를 마친 바이트
      • 아직 송신하지 않았고 수신자가 받을 준비가 안된 바이트
    • 순서 번호 할당과 동기화
      1. 송신했고 승인이 완료된 바이트는 1에서 31까지
      2. 송신했지만 아직 승인되지 않은 바이트는 32에서 45까지
      3. 아직 송신하지 않았지만 수신자가 받을 준비를 마친 바이트는 46에서 51
      4. 아직 송신하지 않았고 수신자가 받을 준비가 안된 바이트는 52에서 95
    • 송신 윈도우와 사용 가능 윈도우
      • 슬라이딩 윈도우 체계의 동작에서 핵심이 되는 것은 송신자가 승인받지 않은 데이터를 한 시점에 얼마나 가질 수 있도록 수신자가 허용하는지다.
      • 허용 가능한 승인받지 않은 데이터 수 - 윈도우(or 송신윈도우)
      • 윈도우
        • 송신자가 전송하도록 허용되어 있는 바이트 수를 결정
        • 범주 2와 범주 3에 속한 바이트 수의 합과 같다
        • 범주 3과 범주 4를 구분하는 지점은 스트림의 맨 처음 승인받지 않은 바이트 번호에 윈도우를 더해서 구할 수 있다.
    • 사용 가능 윈도우의 바이트를 송신한 뒤 TCP범주와 윈도우 크기 변화
    • 승인 처리와 송신 위도우 슬라이딩
      • TCP의 선택적 승인(selective acknowledgment)이라는 기능은 불연속적인 데이터 블록도 승인할 수 있도록 한다.
      • 특정 바이트 범위에 대한 승인을 받은 장비는 목적지 장비가 바이트들을 성공적으로 수신했다는 것을 인지할 수 있다.
      • 그래서 장비는 송신했지만 아직 승인되지 않은 바이트를 송신했고 승인이 완료된 바이트 범주로 이동시킬 수 있다.
      • 그러면 송신 윈도우는 오른쪽으로 이동하고 장비는 더 많은 데이터를 송신할 수 있다.
    • 빠진 승인 처리
      • TCP 승인은 누적되며 송신자에게 수신 장비가 순서 번호까지의 모든 바이트를 성공적으로 수신했다는 사실을 알린다.
      • 그래서 만약 수신 장비가 순서 번호가 뒤바뀐 바이트들을 받았따면 이전 바이트를 모두 수신하기 전까지는 승인을 보낼 수 없다.

TCP 포트, 연결, 연결 식별
  • 장비는 하나 이상의 장비에 있는 여러 프로세스로 많은 TCP 연결을 동시에 맺을 수 있다.
  • 연결이 맺어진 장비의 소켓 번호(연결의 종단이라고 부름)는 연결을 식별한다.
  • 각 종단은 장비의 IP 주소와 포트번호로 구성되기 때문에 클라이언트 IP 주소와 포트번호, 서버 IP 주소와 포트번호가 연결을 식별하게 된다.

TCP 범용 애플리케이션과 서버 포트 할당

포트 # 키워드 프로토콜 설명
20과 21 ftp-data/ftp 파일 전송 프로토콜(FTP)의 데이터와 제어 대형 파일을 송신하는 데 쓰이기 때문에 TCP에 매우 적합하다.
23 telnet 텔넷 프로토콜 대화형 세션 기반 프로토콜. TCP의 연결 기반 특성을 필요로 한다.
25 smtp 단순 메일 전송 프로토콜 명령을 교환하고 장비 간에 대형 파일을 보낼 수도 있다.
53 domain 도메일 네임 서버(DNS) UDP와 TCP를 모두 사용하는 프로토콜이다.
단순한 요청과 응답의 경우 DNS는 UDP를 사용한다.
대형 메시지(특히 구역 전달)의 경우에는 TCP를 사용한다.
70 gopher 고퍼 프로토콜 WWW로 대부분 대체된 메시징 프로토콜
80 http 하이퍼텍스트 전송 프로토콜 TCP 기반 메시징 프로토콜의 전통적인 예제
110 pop3 포스트 오피스 프로토콜(POP) 버전 3 이메일 메시지 수신 프로토콜로 TCP를 이용하여 명령과 데이터를 교환한다.
119 nntp 유즈넷 뉴스 전송 프로토콜 유즈넷 메시지를 전달하는 데 쓰인다. 이 메시지는 매우 길 수도 있다.
139 netbios-ssn NetBIOS 세션 서비스 세션 프로토콜로 UDP 보다는 TCP에 적합하다.
143 imap 인터넷 메시지 접근 프로토콜 또 다른 이메일 메시지 수신 프로토콜
179 bgp 경계 경로 프로토콜 RIP와 OSPF 같은 내부 라우팅 프로토콜은 UDP나 IP를 직접 사용하지만 BGP는 TCP 위에서 동작한다.
그래서 bGP는 원거리에 있는 장비와도 안정적으로 통신할 수 있다.
194 irc 인터넷 릴레이 채팅 IRC는 클라이언트와 서버 간의 지속적 연결에 기반한 대화형 프로토콜이라는 점에서 텔넷과 유사하다
2049 nfs 네트워크 파일 시스템 NFS는 원래 성능 문제로 UDP로 구현됐다. 하지만 NFS는 대형 파일을 전달해야 하며 UDP는 신뢰할 수 없는 프로토콜이기 때문에 NFS 개발자들은 TCP 버전을 새로 개발했다. 최신 버전의 NFS는 오직 TCP만을 사용한다.
6000-6063 TCP x11 X 윈도우 그래픽 시스템에 쓰인다. 다수의 세션을 위한 다수의 포트가 예약돼 있다.









2014년 6월 9일 월요일

TCP 개요, 기능, 특성

TCP 개요, 역사, 표준

  • TCP 역사
    • ARPAnet
      • 1970년대 초창기의 인터넷은 ARPAnet이라고 불리는 작은 연구 인터네트워크에 불과
      • ARPA(또는 DARPA)는 미국 국방부 고등 연구 계획국(United States Defense Advanced Research Projects Agency)의 약자
      • 이 네트워크는 호스트가 서로 연결할 수 있도록 하는 기술인 네트워크 제어 프로토콜(NCP, Network Control Protocol)을 사용
    • 초창기 TCP
      • RFC 375로 전송 제어 프로그램(Transmission Control Program)이라 불림
      • 기본적으로 애플리케이션이 인터네트워크에서 동작하기 위해 필요한 모든 것을 책임짐
      • 초창기 TCP는 오늘날의 TCP와 IP 기능을 모두 가지고 있음
    • TCP와 IP의 분리
      • 4계층 기능은 전송 제어 프로토콜(Transmission Control Protocol)
      • 3계층은 인터넷 프로토콜로 분리
      • TCP 버전 4에서 확정 -> 그러므로 IP의 첫 버전도 "버전 4"로 명명
      • 1981년 9월 RFC 793 "Transmission Control Protocol"은 TCP 버전 4를 정의했으며 현재까지 유효한 표준으로 쓰이고 있음
  • TCP 동작 개요
    • TCP/IP 프로토콜 슈트의 핵심 전송 계층 프로토콜은 전송 제어 프로토콜(TCP)이다.
    • TCP는 연결형이고, 승인을 제공하며, 신뢰할 수 있는 다양한 기능을 갖춘 프로토콜로 안정적이지 않은 인터넷 프로토콜(IP) 위에서 애플리케이션이 안정적으로 데이터를 송신하는 방법을 제공한다.
    • TCP는 애플리케이션이 데이터를 바이트 스트림으로 보낼 수 있도록 하며 그 바이트 스트림을 적절한 크기의 세그먼트로 자동 패키징한다.
    • 그리고 TCP의 특수 슬라이딩 윈도우 체계는 수신자가 모든 데이터를 수신하고, 필요할 경우 재전송을 하며, 상대방의 송신 속도를 조절할 수 있는 흐름 제어 기능을 제공한다.
  • TCP 표준
    • RFC 793은 TCP를 정의하는 표준이지만 근래의 TCP가 동작하는 모든 세부 사항을 기술하지는 않음
  • 보조 TCP 표준
RFC 이름 설명
813 Window and Acknowledgment Strategy in TCP TCP 슬라이딩 윈도우 승인 시스템과 그로 인해 발생할 수 있는 문제, 해결 방법을 설명한다.
879 The TCP Maximum Segment Size and Related Topics TCP 메시지 크기를 제어하는 중요한 최대 세그먼트 크기(MSS) 인자를 설명하고 이 인자를 IP 데이터그램 크기와 연관시킨다.
896 Congestion Control in IP/TCP Internetworks 혼잡 문제를 다루며 TCP를 이용해 그 문제를 해결하는 방법을 설명한다. 제목에 나온 프로토콜 이름이 거꾸로(IP/TCP) 적혀 있다는 것에 주목하자.
1122 Requirements for Internet Hosts - Communication Layers 호스트에서 TCP를 구현하는 중요한 세부 사항을 설명한다.
1146 TCP Alternate Checksum Options TCP 장비가 기존과는 다른 체크섬 계산법을 사용하도록 하는 방법을 명시한다.
1323 TCP Extensions for High Performance 고속 링크를 위한 TCP 확장과 새로운 TCP 옵션을 정의한다.
2018 TCP Selective Acknowledgment Options TCP 장비가 특정 세그먼트만을 재전송하도록 선택하는 기능을 설명한다.
2581 TCP Congestion Control TCP 네트워크에서 혼잡을 제어하는 데 사용하는 4가지 알고리즘인 느린 시작, 혼잡 회피, 빠른 재전송, 빠른 회복을 설명한다.
2988 Computing TCP's Retransmission Timer 장비가 데이터를 재전송하기 전에 승인 메시지를 기다리는 시간을 정의하는 TCP 재전송 타이머를 설정하는 문제를 다룬다.


TCP 기능

  • TCP가 수행하는 기능
    • 주소지정/다중화
      • 여러 프로세스에서 온 데이터를 다중화하여 하위 네트워크 계층 프로토콜로 송신되도록 하는 것은 TCP의 중요한 임무다
      • 동시에 이들 상위 계층 애플리케이션은 TCP 포트를 통해 식별된다.
    • 연결 수립, 유지, 종료
      • TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공한다.
      • 연결이 수립되면 TCP는 연결을 유지하고 혹시 발생할 지 모르는 문제를 처리하기 위한 방법이 있다.
      • 장비가 TCP 연결로 할 일을 마치면 그 연결을 종료하기 위한 특수한 절차도 수행된다.
    • 데이터 처리와 패키징
      • 애플리케이션이 상위 계층에서 데이터를 송신할 수 있는 방법을 제공한다.
      • 이 데이터는 메시지로 패키징되고 목적지 TCP 소프트웨어로 전달된다.
    • 데이터 전송
      • 송신 장비의 TCP 구현은 패키징된 데이터를 다른 장비의 TCP 프로세스로 전달할 책임이 있다.
    • 신뢰성과 전송 품질 서비스 제공
      • 애플리케이션이 데이터를 신뢰할 수 있게 송신할 수 있도록 여러 서비스와 기능을 제공한다.
    • 흐름 제어와 혼잡 회피 기능 제공
      • 두 장비 간의 데이터 흐름을 제어하고 관리할 수 있도록 한다.
      • 두 장비 간 통신에서 발생할 수 있는 혼잡을 처리하는 기능도 포함한다.
  • TCP가 수행하지 않는 기능
    • 애플리케이션 사용 명시 안함
      • 전송 프로토콜만을 정의하므로 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시하지 않는다.
    • 보안 제공 안함
      • 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공하지 않음
    • 메시지 경계 유지 안함
      • TCP는 데이터를 분리된 메시지가 아닌 연속된 스트림으로 송신
      • 한 메시지가 어디에서 끝나고 다음 메시지는 어디에서 시작되는지를 명시하는 것은 애플리케이션에게 달려있음
    • 통신 보장 안함
      • TCP는 승인을 받지 않는 전송을 탐지하고 필요할 경우 재전송
      • 어떤 문제가 통신을 방해할 경우  TCP는 계속 재전송을 시도함


TCP 특성

  • 연결형
    • TCP는 장비가 데이터를 송신하기 전에 먼저 연결을 수립할 것을 요구
  • 양방향
    • 일단 연결이 수립되면 TCP 장비는 누가 연결을 초기화했는지에 관계없이 데이터를 양방향으로 송수신함
  • 다중 연결과 종단 식별
    • 연결된 두 장비가 사용하는 소켓 쌍은 TCP 연결의 종단을 식별
  • 신뢰성
    • TCP는 모든 데이터가 목적지에 도달할 수 있도록 송신, 수신한 데이터를 추적하기 때문에 TCP 통신은 신뢰성이 있다.
  • 승인
    • 신뢰성을 제공하는 데 핵심이 되는 특성은 TCP가 모든 전송에 대한 승인 메시지를 보낸다는 것이다.
  • 스트림 기반
    • TCP는 애플리케이션이 연속적인 데이터 스트림을 송신할 수 있도록 한다.
    • 애플리케이션은 이 스트림을 블록으로 나누는 것을 걱정할 필요가 없다. TCP가 알아서 해준다.
  • 구조화되지 않은 데이터
    • TCP의 스트림 기반 특성때문에 애플리케이션은 메시지간 구별하는 방법을 제공해야 한다.
  • 데이터 흐름 관리
    • TCP는 데이터가 일정한 속도로 평탄하게 흐르고, 전송 경로 중 발생하는 문제를 처리할 수 있도록 연결을 관리한다.

견고성 원칙
"자신이 수행하는 작업은 보수적으로, 다른 사람에게서 무언가를 받을 때는 관대하게"















TCP/IP 사용자 데이터그램 프로토콜(UDP)

UDP 개요, 역사, 표준
사용자 데이터그램 프로토콜(UDP, User Datagram Protocol)은 전송 계층에서 신뢰성, 승인, 흐름 제어 기능을 필요로 하지 않는 애플리케이션을 위해 개발됐다. UDP는 단순하고 빠르게 설계됐고 전송 계층 주소지정(UDP 포트), 선택적인 체크섬 기능을 제외하면 거의 아무 것도 제공하지 않는다.

UDP 동작

  • UDP가 하는 일
    1. 상위 계층 데이터 전송
    2. UDP 메시지 캡슐화
    3. 메시지를 IP로 전달함
  • UDP가 하지 않는 일
    • 데이터를 송신하기 전에 연결을 수립하는 것
    • 데이터를 수신했다는 것을 알리는 승인을 송신하는 것
    • 메시지가 목적지에 도달할 것이라고 보장하는 것
    • 손실 메시지를 탐지하여 재전송하는 것
    • 데이터가 송신한 순서대로 수신되는 것
    • 장비 간의 혼잡이나 흐름을 처리하는 방법을 제공하는 것

UDP 메시지 포맷


  • 출발지 포트
      • 2바이트
    • 출발지 장비에서 UDP 메시지를 생성한 프로세스의 16비트 포트번호
    • 이것은 클라이언트가 서버에게 데이터를 송신할 때 사용한 임시 클라이언트 포트번호, 또는 서버가 클라이언트에게 응답을 보낼 때 사용한 유명/등록 서버 포트를 의미
  • 목적지 포트
      • 2바이트
    • 목적지 장비에서 UDP 메시지를 수신하는 프로세스의 16비트 포트번호
    • 이것은 클라이언트 요청이 도달할 유명/등록 서버 포트, 또는 서버의 응답이 도달할 임시 클라이언트 포트번호를 의미
  • 길이
      • 2바이트
    • 헤더와 데이터 필드를 포함한 전체 UDP 데이터그램의 길이
  • 체크섬
      • 2바이트
    • 전체 UDP 데이터그램과 특수 가상 헤더 필드에 대해 계산되는 선택적인 체크섬
  • 데이터
      • 가변적
    • UDP로 송신할 캡슐화된 상위 계층 메시지


UDP 가상 헤더 포맷

  • 가상 헤더의 전체 길이는 11바이트다. 이 뒤에 1바이트의 0이 붙어 구성된 12바이트가 실제 UDP 메시지 앞에 붙는다.
  • 이 가상 헤더와 실제 UDP 메시지 전체에 대하여 계산된 체크섬 값이 UDP 헤더의 체크섬 필드에 채워진다.
  • 가상 헤더는 이 계산에만 쓰이고 버려지며 실제로 송신되지는 않는다.






2014년 5월 28일 수요일

TCP와 UDP 주소지정: 포트와 소켓

TCP/IP 프로세스, 다중화,
 클라이언트/서버 애플리케이션 역할
  • 다중화와 역다중화
    • TCP/IP는 여러 애플리케이션이 한 장비의 동일한 IP 소프트웨어를 사용하여 동시에 송수신을 할 수 있도록 설계됐다.
    • 이를 위해서는 여러 출처에서 온 데이터를 다중화하여 IP 계층으로 전달해야 한다.
    • 그리고 IP 데이터그램 스트림을 수신할 때에도 그것을 역다중화하여 각 애플리케이션 소프트웨어 인스턴스에게 적절한 데이터를 제공해야 한다.
  • TCP/IP 클라이언트 프로세스와 서버 프로세스


TCP/IP 포트: TCP/UDP 주소지정
  • 포트를 이용한 다중화와 역다중화 - 포트 이용
  • 출발지 포트와 목적지 포트번호
    • UDP와 TCP 메시지에는 두 개의 필드가 있다
      • 출발지 포트
      • 목적지 포트
    • TCP와 UDP 포트번호는 길이가 16비트다
      • 0에서 65,535까지의 값을 가질 수 있다
    • UDP와 TCP가 동일한 범위의 포트를 사용
      • UDP 포트번호 77이 가리키는 애플리케이션 프로세스는 TCP 포트번호 77이  가리키는 것과 다를 수 있다.
    • TCP/IP 전송 계층 주소지정은 TCP와 UDP 포트(port)를 통해 이뤄진다. 특정 IP 장비에서 각 포트번호는 특정 소프트웨어 프로세스를 식별한다.
  • 데이터그램 송신과 수신에서 포트 사용 요약
    • TCP/IP의 애플리케이션 프로세스 다중화와 역다중화는 IP의 프로토콜 필드와 UDP/TCP의 출발지 포트/목적 포트 필드를 통해 구현된다.
    • 송신 시에 프로토콜 필드는 TCP 또는 UDP 중 사용된 것으로 설정되며 포트번호는 송신/수신 소프트웨어 프로세스를 가리키도록 설정된다.
    • 데이터그램을 수신하는 장비는 프로토콜 필드를 보고 TCP와 UDP 중 어떤 것이 쓰였는지 판단하고, 목적지 포트번호가 가리키는 소프트웨어로 데이터를 전달한다.

TCP/IP 애플리케이션 할당과 서버 포트 범위

  • 예약 포트번호
    • 클라이언트 장비가 TCP/IP 서버에 좀더 쉽게 연결을 수립할 수 있도록 하기 위해, 널리 쓰이는 애플리케이션의 서버 프로세스느느 예약된 포트번호를 사용한다.
    • 클라이언트는 기본적으로 그 예약 포트번호를 사용하도록 미리 설정돼 있다.
  • TCP/UDP 포트번호 범위 (IANA에서 관리)
    • 유명(권한) 포트번호(0에서 1023까지)
    • 등록(사용자) 포트번호(1024에서 49151까지)
    • 사설/동적 포트번호(49152에서 65535까지)


TCP/IP 클라이언트 (임시) 포트와 사용할 클라이언트/서버 애플리케이션 포트

  • 대부분의 TCP/IP 클라이언트/서버 통신에서 클라이언트는 랜덤 임시 포트번호를 사용하여 서버 IP 주소의 예약 포트번호로 요청을 송신한다.
  • 서버는 요청의 출발지 주소로 응답을 돌려 보낸다.

TCP/IP 소켓과 소켓 쌍: 프로세스와 연결 식별
  • 장비의 TCP/IP 애플리케이션을 전체적으로 식별하는 것은 IP 주소와 포트번호의 조합인 소켓이다.
  • 각 장비는 특정 시간에 여러 활성화된 TCP 연결을 가질 수 있다. 각 연결은 클라이언트 소켓과 서버 소켓의 조합(클라이언트 IP와 주소, 서버 IP와 주소)으로 유일하게 식별된다.

범용 TCP/IP 애플리케이션과 유명/등록 포트번호
포트# TCP/UDP 키워드 프로토콜 약어 애플리케이션 또는 프로토콜 이름/주석
7 TCP + UDP echo - 에코 프로토콜
9 TCP + UDP discard - 디스카드 프로토콜
11 TCP + UDP systat - 활성 사용자 프로토콜
13 TCP + UDP daytime - 데이타임 프로토콜
17 TCP + UDP qotd QOTD 오늘의 문장 프로토콜
19 TCP + UDP chargen - 문자 생성기 프로토콜
20 TCP ftp-data FTP(데이터) 파일 전송 프로토콜(기본 데이터 포트)
21 TCP ftp FTP(컨트롤) 파일 전송 프로토콜(제어/명령)
23 TCP telnet - 텔넷 프로토콜
25 TCP smtp SMTP 단순 메일 전송 프로토콜
37 TCP + UDP time - 타임 프로토콜
43 TCP nicname - 후이즈 프로토콜(Nicname이라고도 함)
53 TCP + UDP domain DNS 도메인 네임 서버(도메인 네임 시스템)
67 UDP bootps BOOTP/DHCP 부트스트랩 프로토콜/동적 호스트 설정 프로토콜(서버)
68 UDP bootpc BOOTP/DHCP 부트스트랩 프로토콜/동적 호스트 설정 프로토콜(클라이언트)
69 UDP tftp TFTP 간이 파일 전송 프로토콜
70 TCP gopher - 고퍼 프로토콜
79 TCP finger - 핑거 사용자 정보 프로토콜
80 TCP http HTTP 하이퍼텍스트 전송 프로토콜(월드와이드웹)
110 TCP pop3 POP 포스트 오피스 프로토콜(버전3)
119 TCP nntp NNTP 유즈넷 뉴스 전송 프로토콜
123 UDP ntp NTP 네트워크 타임 프로토콜
137 TCP + UDP netbios-ns - NetBIOS(네임 서비스)
138 UDP netbiosdgm - NetBIOS(데이터그램 서비스)
139 TCP netbios-ssn - NetBIOS(세션 서비스)
143 TCP imap IMAP 인터넷 메시지 접근 프로토콜
161 UDP snmp SNMP 단순 네트워크 관리 프로토콜
162 UDP snmptrap SNMP 단순 네트워크 관리 프로토콜(트랩)
179 TCP bgp BGP 경계 경로 프로토콜
194 TCP irc IRC 인터넷 릴레이 채팅
443 TCP https HTTP over SSL SSL 위에서 동작하는 HTTP
500 UDP isakmp IKE IPsec 인터넷 키 교환
520 UDP router RIP 라우팅 정보 프로토콜(RIP-1과 RIP-2)
521 UDP ripng RIPng 라우팅 정보 프로토콜-차세대 버전
1512 TCP + UDP wins WINS 마이크로소프트 윈도우 인터넷 네이밍 서비스
1701 UDP l2tp L2TP 2계층 터널링 프로토콜
1723 TCP pptp PPTP 점대점 터널링 프로토콜
2049 TCP + UDP nfs NFS 네트워크 파일 시스템
6000-6063 TCP x11 x11 X 윈도우 시스템





2014년 4월 22일 화요일

TCP와 UDP 개요와 비교

TCP/IP 전송 계층의 두 프로토콜 요구사항

  • 전송 제어 프로토콜(TCP)
    • TCP는 기능이 풍부하고, 연결형이며, 신뢰할 수 있는 TCP/IP 애플리케이션을 위한 전송 계층 프로토콜이다.
    • TCP는 여러 소프트웨어 애플리케이션이 동시에 단일 IP 주소를 사용할 수 있도록 하는 전송 계층 주소지정 방법을 제공하며 한 쌍의 장비가 가상 연결을 수립하고 양방향으로 데이터를 전달할 수 있도록 한다.
    • 전송은 승인받지 않은 패킷을 탐지하여 자동으로 재전송하는 특수한 슬라이딩 윈도우(sliding window) 시스템으로 관리된다.
    • 그리고 TCP는 장비간의 흐름 관리, 기타 특수 상황을 처리하기 위한 추가 기능도 제공한다.
  • 사용자 데이터그램 프로토콜(UDP)
    • UDP는 매우 단순한 전송 프로토콜로 TCP와 유사한 전송 계층 주소지정 방법을 제공하지만, 다른 기능은 거의 제공하지 않는다.
    • UDP는 애플리케이션이 IP에 접근할 수 있도록 하는 래퍼 프로토콜에 가깝다.
    • UDP에서는 연결이 수립되지 않고, 전송도 신뢰할 수 없으며, 데이터가 손실될 수 있다.

TCP와 UDP 애플리케이션

  • TCP 애플리케이션
    • 대부분의 애플리케이션은 TCP가 제공하는 신뢰성과 여러 서비스를 필요로 하며, TCP로 인해 생기는 약간의 부하로 인한 성능 저하에 신경 쓰지 않는다.
    • 하이퍼텍스트 전송 프로토콜(HTTP), 파일 전송 프로토콜(FTP), 단순 메일 전송 프로토콜(SMTP) 등이 있다.
  • UDP 애플리케이션
    • 데이터 일부가 손실되는 것이 그리 중요치 않은 애플리케이션(ex: 비디오나 멀티미디어 스트리밍)에 적합하다.

UDP와 TCP 비교 요약

특성/설명 UDP TCP
일반 설명 단순하고, 빠르며, 애플리케이션이 네트워크 계층에 접근할 수 있도록 하는 인터페이스만 제공할 뿐 다른 것은 거의 하지 않음 애플리케이션이 네트워크 계층 문제를 걱정하지 않고 데이터를 안정적으로 송신할 수 있도록 하는, 풍부한 기능의 프로토콜
프로토콜 연결 수립 비연결형. 연결 수립이 없이 데이터를 송신함 연결형. 전송 전에 연결을 먼저 맺어야 한다.
애플리케이션의 데이터 입력 인터페이스 메시지 기반임. 애플리케이션은 데이터를 별도의 패키지로 송신한다. 스티림 기반임. 애플리케이션은 특정한 구조 없이 데이터를 송신한다.
신뢰성과 승인 신뢰성이 없음. 승인이 없는 최선 노력 전송 방식 메시지 전송을 신뢰할 수 있음. 모든 데이터에 대한 승인이 있음
재전송 수행하지 않음. 애플리케이션은 손실 데이터를 탐지하고 필요할 경우 재전송해야 함 모든 데이터 전송을 관리하며, 손실된 데이터는 자동으로 재전송함
데이터 흐름 관리 기능 없음 슬라이딩 윈도우를 이용한 흐름 제어를 함. 윈도우 크기를 적절히 조정하고, 혼잡 회피 알고리즘을 사용함
부하 매우 낮음 낮지만 UDP 보다는 높음
전송 속도 매우 빠름 빠르지만 UDP 만큼은 아님
적합한 데이터 양 소형에서 중형 데이터(최대 수백 바이트) 소형에서 초대형 데이터까지(최대 수 기가 바이트)
프로토콜을 사용하는 애플리케이션의 유형 데이터의 완전성보다 전달 속도가 중요하고, 소량의 데이터를 송신하고, 멀티캐스트/브로트캐스트를 사용하는 애플리케이션 신뢰할 수 있는 방법으로 데이터를 송신해야 하는 대부분의 프로토콜과 애플리케이션. 대부분의 파일/메시지 전송 프로토콜을 포함함
유명 애플리케이션과 프로토콜 멀티미디어 애플리케이션, DNS, BOOTP, DHCP, TFTP, SNMP, RIP, NFS(초기버전) FTP, Telnet, SMTP, DNS, HTTP, POP, NNTP, IMAP, BGP, IRC, NFS(나중버전)

기타 라우팅 프로토콜 (41)

경계 경로 프로토콜(BGP/BGP-4) (40)

최단 경로 우선 프로토콜(OSPF) (39)

라우팅 정보 프로토콜(RIP, RIP-2, RIPNG) (38)

주요 라우팅 프로토콜 개념 (37)

IPv6 주변 발견(ND) 프로토콜 (36)

ICMPv6 정보 제공 메시지 유형과 포맷 (35)

ICMPv6 오류 메시지 유형과 포맷 (34)

ICMPv4 정보 제공 메시지 유형과 포맷 (33)

ICMPv4 오류 메시지 유형과 포맷 (32)

ICMP 개념과 일반 동작

인터넷 제어 프로토콜(ICMP, Internet Control Message Protocol)은 네트워킹 세계에서 진가를 인정받지 못하는 '일꾼' 중의 하나다.
원래 몇 가지 에러 상황을 보고하기 위해 설계된 ICMP 메시지는 이제 다양한 영역의 에러 보고, 피드백, 테스팅 기능을 구현하는 데 쓰인다.

ICMP 개요, 역사, 버전, 표준
  • TCP/IP에서 인터네트워크 계층의 진단, 테스트, 에러 보고 기능은 인터넷 제어 메시지 프로토콜(ICMP)에 의해 수행된다.
  • ICMP는 IP의 비서 역할을 한다.
  • 최초 ICMP 버전인 ICMPv4는 IPv4에 쓰였고 새 버전인 ICMPv6는 IPv6에 쓰인다.
ICMP 메시지를 정의하는 ICMP 이외의 인터넷 표준
정의한 메시지 유형의 ICMP 버전 RFC 번호 이름 정의한 ICMP 메시지 유형
ICMPv4 950 Internet Standard Subnetting Procedure 주소 마스크 요청, 주소 마스크 응답
1256 ICMP Router Discovery Messages 라우터 광고, 라우터 정보 요청
1393 Traceroute Using an IP Option 경로 추적
1812 Requirements for IP Version 4 Routers 목적지 접근 불가 메시지의 세 가지 새로운 코드(하위 유형)을 정의함
ICMPv6 2461 Neighbor Discovery for IP Version 6(IPv6) 라우터 광고, 라우터 정보 요청, 주변 정보 광고, 주변 정보 요청, 리다이렉트
2894 Router Renumbering for IPv6 라우터 주소 재지정


ICMP 일반 동작
  • ICMP 메시지 전달 서비스
    • ICMP는 다른 TCP/IP 프로토콜과는 달리 특정한 작업을 수행하지 않는다
    • ICMP는 다양한 기능을 구현하는 데 쓰이는 다양한 제어 메시지를 송수신하는 방법을 정의한다
    • ICMP는 일반적으로 IP 메시지 전송에 대한 피드백을 제공하는 데 쓰인다
  • ICMP 에러 보고는 데이터그램 원본으로만 송신 가능
    • IP 데이터그램의 문제로 인해 발생한 ICMP 에러 보고 메시지는 오직 최초 송신 장비에게만 전달될 수 있다
    • IP 데이터그램의 헤더에는 오직 최초 송신 장비의 주소만 들어 있기 때문에 중간 장비는 ICMP 메시지의 수신자가 될 수 없다

ICMP 메시지 클래스, 유형, 코드

  • ICMP 메시지 클래스
    • 오류 메시지
      • 이들 메시지는 어떤 에러가 발생했다는 것을 출발지 장비에게 알릴 때 쓰인다
      • 이것은 일반적으로 어떤 행위에 의한 응답으로 생성된다
      • 에러는 보통 데이터그램의 구조나 컨텐츠, 또는 데이터그램 라우팅 도중 발생한 인터네트워크상의 문제와 연관돼 있다
    • 정보 제공 (또는 요청) 메시지
      • 이들 메시지는 장비가 정보를 교환하고, 특정 IP 관련 기능을 구현하고, 테스트를 수행하도록 하는 데 쓰인다
      • 정보 제공 메시지는 애플리케이션에 의해, 또는 다른 장비에게 정보를 주기 위해 주기적으로 생성된다
    • ICMP 메시지는 문제 상황을 보고하는데 쓰이는 오류 메시지와 진단, 테스트, 기타 목적에 쓰이는 정보 제공 메시지로 나뉜다
  • ICMP 메시지 유형
    • ICMPv4와 ICMPv6는 각각 최대 256개의 메시지 유형이 정의될 수 있다
    • 각 메시지의 헤더에 포함된 유형 필드는 ICMP 메시지의 종류를 지정한다
    • ICMPv4에서 유형값과 메시지 유형에는 아무 연관 관계가 없다
    • 반면 ICMPv6에서는 오류 메시지의 유형값이 0에서 127까지고, 정보 제공 메시지는 1에서 255까지의 값을 갖는다
  • ICMP 메시지 코드
    • ICMP는 8비트로 된 코드 필드를 통해 각 메시지 유형 내에서 좀더 세부적으로 메시지를 분류한다
  • ICMP 메시지 클래스와 유형 요약
메시지 클래스 유형값 메시지 이름 메시지 유형 설명 요약 RFC 번호
ICMPv4 오류 메시지 3 목적지 접근 불가 데이터그램을 목적지로 전달할 수 없다는 것을 나타낸다. 코드값은 에러의 원인에 대한 좀더 구체적인 정보를 제공한다. 792
4 송신 속도 낮춤 데이터그램을 너무 많이 수신하는 IP 장비가 송신 장비에게 송신율을 낮추라고 요구할 때 쓰인다. 792
5 리다이렉트 라우터가 호스트에게 데이터그램 송신을 위한 더 좋은 경로를 알릴 수 있도록 한다. 792
11 시간 초과 TTL 필드가 만료하여 데이터그램이 전송 중 버려질 때 송신된다. 792
12 인자 문제 데이터그램을 전달하는 도중 사소한 문제를 나타낸다. 792
ICMPv4 정보 제공 메시지(1/2) 0 에코 응답 에코 요청 메시지에 대한 응답으로 전송된다. 연결을 테스트 하는 데 쓰인다. 792
8 에코 요청 장비가 인터네트워크의 다른 장비와 연결성을 테스트하는 데 쓰인다. 792
9 라우터 광고 라우터가 호스트에게 자신의 존재와 기능을 알리는 데 쓰인다. 1256
10 라우터 정보 요청 호스트가 다른 라우터에게 라우터 광고를 요청할 때 쓰인다. 1256
13 타임스탬프 요청 장비가 다른 장비에게 전파 시간 계산과 클럭 동기화를 위해 타임스탬프 정보를 요청할 때 쓰인다. 792
14 타임스탬프 응답 타임스탬프 요청에 대한 응답으로 송신되며 시간 계산과 클럭 동기화 정보를 제공한다. 792
15 정보 요청 원래 다른 장비에게 설정 정보를 요청할 때 쓰였다. 지금은 쓰이지 않는다. 792
ICMPv4 정보 제공 메시지(2/2) 16 정보 응답 정보 요청 메시지에 대한 응답으로, 설정 정보를 제공할 때 쓰였다. 지금은 쓰이지 않는다. 792
17 주소 마스크 요청 장비에게 주소 마스크 송신을 요청할 때 쓰인다. 950
18 주소 마스크 응답 주소 마스크 요청에 대한 응답으로, 서브넷 마스크를 담고 있다. 950
30 경로 추적 향상된 기능의 경로 추적 유틸리티를 실험하는 데 쓰인다. 1393
ICMPv6 오류 메시지 1 목적지 접근 불가 데이터그램을 목적지로 전달할 수 없다는 것을 나타낸다. 코드값은 그 이유에 대한 좀더 자세한 정보를 제공한다. 2463
2 패킷 크기 초과 데이터그램이 경로의 다음 홉의 최대 전송 단위(MTU)보다 커서 더 이상 데이터그램을 전달할 수 없을 때 송신된다. 이 메시지는 IPv4가 아닌 IPv6에서만 필요하다. 왜냐하면 IPv4에서는 라우터가 크기가 큰 메시지를 단편화할 수 있지만 IPv6는 그렇게 할 수 없기 때문이다. 2463
3 시간 초과 Hop Limit 필드가 0으로 감소되어서 데이터그램을 전달할 수 없다는 것을 나타낸다. 2463
4 인자 문제 데이터그램을 전달하는 도중 발생한 사소한 문제를 나타낸다. 2463
ICMPv6정보 제공 메시지 128 에코 요청 장비가 인터네트워크의 다른 장비와 연결성을 테스트하는 데 쓰인다. 2463
129 에코응답 에코 요청 메시지에 대한 응답으로 전송된다. 연결을 테스트하는 데 쓰인다. 2463
133 라우터 정보 요청 호스트가 다른 라우터에게 라우터 광고를 요청할 때 쓰인다. 2461
134 라우터 광고 라우터가 로컬 네트워크의 호스트에게 자신의 존재와 기능을 알리는 데 쓰인다. 2461
135 주변 정보 요청 장비가 다른 장비의 2계층 주소를 요청하고, 자신의 주소를 알리는 데 쓰인다. 2461
136 주변 정보 광고 호스트에 관한 정보를 네트워크의 다른 장비에게 알리는 데 쓰인다. 2461
137 리다이렉트 호스트가 데이터그램의 전달 방향을 네트워크의 바로 옆에 있는 호스트나 라우터로 변경하도록 한다. 2461
138 라우터 주소 재지정 라우터 주소 재지정에 쓰이는 정보를 전달한다. 2894


ICMP 메시지 생성과 처리 관습, 규칙

  • ICMP 메시지 응답의 한계
    • 과다한 ICMP 메시지를 네트워크로 송신하는 것을 막기 위해 언제, 어떻게 ICMP를 생성하는지에 대한 규칙이 존재한다.
    • 이들 대부분은 특정 상황에 의하여 대량의 ICMP 오류 메시지가 생성되는 것을 막도록 설계됐다.
  • ICMP 메시지 처리 관습
    • ICMP 메시지를 수신한 장비는 그 메시지 유형이 특정한 응답을 필수적으로 요구하지 않는 한 별다른 행동을 취할 필요가 없다.
    • 특히, 장비는 ICMP 오류 메시지를 수신했을 경우 특정한 작업을 반드시 할 필요는 없다.

ICMP 일반 메시지 포맷과 데이터 갭슐화

  • ICMP 일반 메시지 포맷
필드이름 크기(바이트) 설명
유형 1 ICMP 메시지 유형을 식별한다. ICMPv6의 경우 0에서 127까지의 값은 오류 메시지를, 128에서 255까지의 값은 정보 제공 메시지를 나타낸다.
코드 1 각 ICMP 메시지 유형 내에서의 하위 유형을 식별한다. 이 필드는 크기가 1바이트이기 때문에 각 메시지 유형별로 256개의 하위 유형을 정의할 수 있다.
체크섬 2 16비트 체크섬 필드로 IPv4의 IP 헤더 체크섬과 유사한 방법으로 계산된다. 이 필드는 전체 ICMP 멧지를 위한 에러 탐지 기능을 제공한다. ICMPv6에서는 체크섬 계산을 위해 가상의 IPv6 헤더 필드가 앞에 붙는다는 사실을 알아두자. 이것은 TCP에서의 체크섬 계산법과 유사하다.
메시지본문/데이터 가변적 각 메시지 유형을 구현하는 데 쓰이는 구체적인 필드를 포함한다. 이것은 메시지의 유일부분이다.
  • ICMP 오류 메시지에 포함된 원본 데이터그램
    • ICMPv4 오류 메시지
      • 각 오류 메시지는 IP 헤더 전체와 페이로드의 처음 8 바이트를 포함한다.
    • ICMPv6 오류 메시지
      • 각 오류 메시지는 크기(IP 헤더 캡슐화 포함)가 최소 IPv6 MTU인 1,280바이트를 초과하지 않는 범위에서 가능한 한 많은 양의 IPv6 데이터그램을 포함한다.
    • 각 ICMP 메시지는 그 메시지 유형에 유일한 데이터를 포함하지만, 모든 메시지는 일반 ICMP 메시지 포맷 구조를 갖는다. ICMP 오류 메시지는 항상 에러를 유발시킨 원본 IP 데이터그램의 일부를 메시지 본문에 포함시킨다.
  • ICMP 데이터 캡슐화
    • ICMP 메시지는 포매팅된 다음, 다른 여느 IP 메시지와 같이 IP 데이터그램으로 캡슐화된다.

2014년 2월 19일 수요일

인터넷 프로토콜 이동성 지원(모바일 IP)

모바일 IP 개요, 역사와 개발 동기
  • TCP/IP에서 이동 장비 문제
    • 네트워크 ID와 호스트의 IP 주소가 서로 결합되어 있기 때문에 지금과 같은 IP에서 이동 장비가 선택할 수 있는 방은 두가지 뿐
      • IP 주소 변경
        • 이동한 네트워크의 네트워크 ID를 가지도록 호스트의 IP 주소를 변경한다.
      • IP 라우팅과 주소 간의 연결 끊기
        • 네트워크 ID에 따라 데이터그램을 전달하는 것이 아니라 전체 주소를 보고 데이터그램을 전송하도록 장비에 대한 라우팅 방식을 바꾼다.
    • 문제점
      • IP 네트워크는 IP 주소 기반으로 라우팅하기 때문에 이동 장비를 지원할 때 문제가 생긴다
      • 장비의 IP 주소가 장비가 있는 네트워크와 결합해있기 때문에 이동 장비를 지원하는 것이 어렵다
      • 장비가 네트워크를 이동했을 때 이제까지의 라우팅 방법으로는 이동 장비의 옛날 주소로 이동 장비에게데이터를 보내 전달 할 수 없다
      • IP 주소 전체로 라우팅 한다던가, 매번 IP 주소를 바꾸는 것은 문제를 더 키울 뿐이다.
  • 해결책: 모바일 IP
    • 기존 장비 주소를 사용하는 중단 없는 장비 이동성 지원
      • 이동 장비가 물리 네트워크를 바꾸거나 다른곳으로 가더라도 원래 IP를 계속 사용할 수 있다.
    • 새로운 주소 지정 방식이나 라우팅 수정 불필요
      • IP의 주소 지정 방식이나 라우팅을 그대로 유지한다
      • 예전과 같은 방식으로 장비에게 IP 주소를 할당한다
      • IP 주소 전체를 사용하는 라우팅 방식 등으로의 라우팅 방식 변경도 없다
    • 상호 작용
      • 모바일 IP 장비는 모바일 IP가 어떻게 동작하는지 모르는 기존 IP 장비와 통신할 수 있다
    • 계층 투명성
      • 모바일 IP에서 일어난 변경 사항은 네트워크 계층에만 국한된다
      • 전송 계층 등의 상위 계층과 애플리케이션은 일반적인 IPv4를 사용한다
      • 노드가 이동해도 사용 중이던 연결은 유지된다.
    • 하드웨어 변경 최소화
      • 이동 장비의 소프트웨어와 이동 장비가 사용할 라우터는 모바일 IP에 맞추어 바뀌어야 한다
      • 홈(home)과 외부(foreign) 네트워크 사이에 놓인 라우터와 같은 그 이외의 장비들은 바뀔 필요가 없다
    • 확장성
      • 장비가 어떤 네트워크로 이동해도 모바일 IP로 지원할 수 있고 이동 장비가 많아져도 괜찮다
      • 모바일 IP에서 허용하는 장비의 이동 반경은 매우 크기 때문에 런던에서 노트북을 사용하다가 호주나 브라질로 옮긴다 하더라도 여전히 잘 동작한다
    • 보안
      • 모바일 IP는 메시지를 리다이렉트(redirect)하며, 불법 노드가 문제를 일으키지 못하도록 인증 과정을 거치도록 한다
  • 모바일 IP의 한계
    • 모바일 IP는 1초에 1번 이상 네트워크를 바꾸지 않을 것이라는 가정하에 설계됨
    • 고정 IP를 갖는 장비를 대상으로 함
      • 장비는 자신의 홈 네트워크와 원래 IP 주소를 알아야 하기 때문에 DHCP 를 통해 IP를 동적으로 얻는 장비는 모바일 IP를 사용하기 힘들다

모바일 IP 개념과 일반적인 동작 방식

  • 모바일 IP 장비 역할
    • 이동장비
      • 네트워크 간을 이동하는 장비
    • 홈 에이전트(Home Agent)
      • 홈 네트워크의 라우터로 이동 장비가 받아야 할 데이터그램을 대신 받아 이동 장비에게 전달한다. 그 이외에도 필요한 여러 기능을 구현해야 한다.
    • 외부 에이전트(Foreign Agent)
      • 이동 장비가 현재 사용하고 있는 네트워크 라우터이다.
      • 이동 장비를 위해 새로운 홈 네트워크의 역할을 수행한다
      • 기존 라우터와 거의 동일하지만 모바일 IP 기능을 가진다
      • 동작 방식에 따라 홈 에이전트가 전달한 데이터그램을 받아서 이동 장비에게 전달하기도 한다
      • 모바일 IP 동작을 위해 이동 정보를 공유할 수도 있다
      • 어떤 모바일 IP 구현에서는 외부 에이전트가 필요 없지만 대부분의 경우 프로토콜에 필수적이다
  • 모바일 IP는 TCP/IP에 편지 전달 시스템과 유사한 시스템을 만드는 방법으로 동작한다.
    • 이동 장비의 홈 네트워크에 있는 라우터는 이동 장비의 홈 에이전트이고 이동 장비의 현재 네트워크에 있는 라우터는 외부 에이전트이다.
    • 홈 에이전트는 이동 장비의 원래 IP 주소로 도착한 데이터그램을 이동 장비의 현재 위치로 전달한다.
    • 이동 장비에게 직접 전달하거나 혹은 외부 에이전트로 전달하는 간접 방식을 택할 수 있다.
    • 홈 에이전트와 외부 에이전트는 모바일 IP가 동작하기 위해 필요한 설치 과정과 다양한 통신 방식에 대한 책임을 진다.
  • 모바일 IP 기능
    • 모바일 IP는 설치과정에서 필요한 특별한 기능과 데이터그램 전달을 관리하는 기능을 정의하고 있다
      1. 에이전트 통신
        • 이동 장비는 에이전트 발견 과정을 통해 로컬 네트워크의 에이전트를 발견한다
        • 장비는 에이전트가 보내는 에이전트 광고 메시지를 듣고 자신이 어디에 있는지 알아낸다
        • 만약 에이전트 광고를 못 들었다면 에이전트 요청 메시지를 전송한다.
      2. 네트워크 위치 결정
        • 이동 장비는 에이전트 발견 메시지 내용을 기반으로 자신이 홈 네트워크에 있는지 외부 네트워크에 있는지 판단한다.
    • 장비가 외부 네트워크에 있다고 가정하면 다음 과정으로 진행
      1. CoA(Care-of-Address) 획득
        • 이동 장비는 CoA라고 부르는 임시 주소를 얻는다
        • CoA는 에이전트 광고 메시지나 다른 방법을 통해 얻을 수 있다
        • 이 주소는 목적지로 데이터그램을 전달할 때 이외에는 사용하지 않음
      2. 에이전트 등록
        • 이동장비는 홈 에이전트에게 자신이 외부 네트워크에 있다고 알리고 홈 에이전트에 등록하여 자신에게 오는 데이터그램을 홈 에이전트가 전달해 달라고 요청
        • 이 장비와 홈 에이전트가 등록 과정을 직접 처리할 수도 있고 외부 에이전트가 중개자로 개입할 수도 있음
      3. 데이터그램 전달
        • 홈 에이전트는 이동 장비에게 온 데이터그램을 받아 실제 이동 장비의 위치로 전달
        • CoA의 종류에 따라 노드에게 직접 전달할 수도 있고 외부 에이전트에게 전송을 부탁할 수도 있다.

모바일 IP 주소: 홈 주소와 CoA

  • 모바일 IP 기능을 갖춘 노트북은 두 개의 주소를 가진다
    • 홈 주소
      • 이동 장비에게 할당된 정상적인 고정 IP 주소이다
      • 홈 네트워크에서 장비가 사용하는 주소이고 데이터그램을 이동 장비에게 보낼 때 사용
    • CoA(Care-Of Address)
      • 임시 주소로 이동 장비가 홈 네트워크 외부로 움직였을 때 사용
      • 일반적인 32비트 IP 주소와 동일하지만 모바일 IP에서만 사용하며 IP 데이터그램을 전달하거나 관리 기능을 실행할 때만 사용
      • 더 높은 계층에서는 CoA를 사용하지 않고 일반 IP 장비도 데이터그램을 생성할 때 CoA를 사용하지 않음
  • CoA는 홈 에이전트가 데이터그램을 전달하는 방법에 따라 두 가지 유형으로 나뉜다.
    • 외부 에이전트 CoA
    • 공존 CoA
    • 모바일 IP에서 각 이동 장비는 외부 네트워크에서 사용할 임시 CoA를 사용한다.
    • 공존 CoA는 이동 장비에 직접 할당된 주소이기 때문에 전달되는 데이터그램은 노드에게 직접 전송된다
    • 이와 달리 외부 에이전트 CoA를 사용하면 이동 장비는 사실 외부 에이전트의 IP 주소를 사용하게 된다
    • 따라서 데이터그램은 외부 에이전트에게 전달되며 외부 에이전트가 마지막으로 이동 장비에게 데이터그램을 전달한다.
  • CoA 유형에 따른 장점과 단점
    • 모바일 IP에서 공존 CoA는 유연하다는 장점이 있지만 각 장비가 외부 네트워크에서도 유일한 IP 주소를 가져야 하는 단점을 가진다
    • 외부 에이전트 CoA는 외부 네트워크에 있는 많은 이동 장비가 각자 다른 IP 주소를 가질 필요가 없다는 장점이 있다

모바일 IP 에이전트 발견

  • 에이전트 발견 과정
    • 에이전트/노드 통신
    • 현재 위치 발견
    • CoA 할당
  • 에이전트 광고와 에이전트 요청 메시지
    • 에이전트 광고
      • 모바일 IP 에이전트오 활동할 수 있는 라우터가 정기적으로 전송한다
      • 이 메시지는 모바일 IP 관련 정보를 담은 하나 이상의 확장을 포함하는 일반적인 라우터 광고 메시지로 구성된다
    • 에이전트 요청
      • 모바일 IP 장비가 로컬 에이전트에게 에이전트 광고 메시지를 보내달라고 요청한다.
  • 에이전트 요청 메시지 포맷
    • 라우터 요청 메시지와 같다
  • 에이전트 광고 메시지 포맷
      • ICMP 라우터 광고 메시지로 시작
    • 이동 에이전트 광고(Mobility Agent Advertisement) 확장
      • 에이전트가 모바일 IP 기능을 갖추었다는 것을 알리는 기본 확장이다
    • 접두사 길이(Prefix-Length) 확장
      • 에이전트 광고 메시지의 앞 부분에 있는 라우터 주소(Router Address 필드)의 접두사 길이를 알리는 옵션 확장이다
      • 접두사 길이란 주소 내 네트워크 ID의 비트 수이므로 이 확장은 라우터 주소의 네트워크 ID를 알린다
    • 1바이트 패딩(One-Byte Padding) 확장
      • ICMP 메시지 구현을 쉽게 하기 위해 메시지의 길이는 짝수여야 하므로 1 바이트 패딩이 필요하다. 이 필드는 모두 0으로 된 1바이트 이다.
모바일 IP 에이전트 발견은 이동 장비가 자신의 위치를 판단하고 홈이나 외부 에이전트와의 관계를 유지하기 위한 과정이다. 에이전트의 기능을 알리기 위해 에이전트 기능이 있는 라우터는 라우터 광고 메시지를 수정한 에이전트 광고 메시지를 정기적으로 전송한다. 광고를 전송해달라고 요청하기 위해 이동 장비가 라우터 요청 메시지와 동일한 에이전트 요청 메시지를 전송할 수 있다.

모바일 IP 이동 에이전트 광고 확장 포맷

모바일 IP 홈 에이전트 등록과 등록 메시지

  • 홈 에이전트 등록(Home agent registration, 또는 등록(registration)
    • 이동장비가 에이전트 발견을 끝내면 자신이 홈 네트워크에 있는지 외부 네트워크에 있는지 알 수 있다
    • 외부 네트워크에 있다면 모바일 IP를 동작시켜야 한다
    • 홈 에이전트와 통신을 하면서 필요한 정보와 지시를 주고받는다
  • 이동 장비 등록 이벤트
    • 등록 이동
      • 장비가 외부 네트워크에 도착하면 등록을 시작한다
    • 등록 해제
      • 다시 홈 네트워크로 돌아오면 전달을 취소한다
    • 재등록
      • 외부 네트워크에서 다른 외부 네트워크로 이동하거나 CoA가 바뀌면 이동 장비는 홈 에이전트에게 알려 등록을 수정한다.
  • 등록 요청과 등록 응답 메시지
    • 등록하는 과정에서 메시지 두 가지가 새로 정의됐다
    • 두 메시지는 ICMP 메시지가 아니며 UDP를 사용한다
    • 등록은 다른 모바일 IP 통신과 달리 더 높은 계층에서 일어난다
    • 에이전트는 잘 알려진 UDP 434 포트에서 등록 요청을 기다리고, 모바일 노드가 사용한 임시 포트로 응답을 돌려 보낸다
  • 등록 과정 (CoA의 종류에 따라 두가지로 나뉨)
    • 직접 등록 방식
      1. 이동 장비가 등록 요청을 홈 에이전트에게 보냄
      2. 홈 에이전트는 이동 장비에게 등록 응답을 보냄
    • 외부 에이전트가 홈 에이전트와 이동장비 사이에서 메시지를 실어 나르는 좀 더 복잡한 과정
      1. 이동 장비가 등록 요청을 외부 에이전트에게 보냄
      2. 외부 에이전트가 등록 요청을 처리하여 홈 에이전트에게 보냄
      3. 홈 에이전트는 외부 에이전트에게 등록 응답을 보냄
      4. 외부 에이전트가 등록 응답을 받아 처리하고 이동 장비에게 전송
  • 등록 요청 메시지 포맷
필드명 크기(바이트) 설명
유형 1 등록 메시지 유형을 식별한다. 요청일 경우 1이다
플래그 1 이동 장비가 홈 에이전트에게 요청하는 것을 여러 가지 정보 플래그로 나타낸다.
수명 2 이동 장비가 이번 등록에 대해 요청하는 등록 수명을 초 단위로 나타낸다
홈 주소 4 이동 장비가 홈 네트워크에서 사용했던 홈(정상) IP 주소. 요청이 홈 에이전트로 전달되는 방식에 관계없이 이동 장비를 유일하게 식별할 수 있도록 한다
홈 에이전트 4 이동 장비의 홈 에이전트로 동작할 장비의 IP 주소
CoA 4 이동 장비의 홈 에이전트로 동작할 장비의 IP 주소
식별 8 등록 요청을 고유하게 식별하는 64비트 번호로 응답과 요청을 한 쌍으로 묶기 위해 사용한다. 재생 공격에 대응하기 위해서 필요하다
확장 가변 요청을 인증하기 위해 필요한 확장 필드
  • 등록 응답 메시지 포맷
필드명 크기(바이트) 설명
유형 1 등록 메시지 유형을 식별한다
코드 1 등록 요청에 대한 결과를 알린다. 0이라면 등록이 허용됐다는 것을, 1이라면 동시 바인딩을 요청했지만 지원하지 않는다는 것을 나타낸다. 등록을 거부하려면 거절의 이유를 알리기 위해 다양한 이유 코드를 사용한다. 홈 에이전트와 외부 에이전트 모두 요청을 거절할 수 있다
수명 2 등록을 허용했다면 등록이 만료되기 전까지의 수명을 초단위로 나타낸다. 이동 장비가 요청한 것과 다른 값일 수 있다.
홈주소 4 이동 장비가 홈 네트워크에서 사용했던 홈(정상) IP 주소. 외부 에이전트가 다양한 이동 장비를 지원하고 있을 때라도 요청을 보낸 이동 장비를 식별할 수 있도록 한다.
홈에이전트 4 이동 장비의 홈 에이전트로 동작할 장비의 IP 주소
식별 8 등록 요청을 고유하게 식별하는 64비트 번호로 요청의 식별 필드와 일치하는 값을 가진다
확장 가변 응답을 인증하기 위해 필요한 확장 필드.


모바일 IP 데이터 캡슐화와 터널링

  • 일반적인 모바일 IP 터널링
    • 외부 에이전트 CoA
      • 외부 에이전트에서 터널리 끝난다
      • 캡슐화된 메시지를 홈 에이전트에서 받아 외부 IP 헤더를 벗겨내고 원래 데이터그램을 이동 장비에게 전달한다
      • 외부 에이전트와 이동 장비는 같은 로컬 네트워크에 있고, 이동 장비는 그 네트워크에서 사용할 수 있는 IP 주소가 없기 때문에 외부 에이전트는 데이터 링크 계층을 통해 데이터를 이동 장비로 직접 전송한다
    • 공존 CoA 주소
      • 이동 장비에서 터널이 끝나고 이동 장비가 캡슐화 헤더를 벗겨낸다
  • 모바일 IP 역터널링
    • 역터널링이라는 홉션 기능은 네트워크가 외부 IP 주소를 사용하는 데이터그램을 인터넷으로 전달하지 않는 등의 특별한 경우에 사용된다
    • 역터널링을 사용하면 이동 장비는 데이터그램을 직접 전송하지 않으며 모든 전송은 홈 에이전트와의 터널을 통해 이루어진다

모바일 IP와 TCP/IP 주소 결정 프로토콜


모바일 IP 효율


모바일 IP 보안 문제









2014년 1월 15일 수요일

IP Security(IPsec) 프로토콜

개요
원본 인터넷 프로토콜(IP)의 약점 중 하나는 데이터그램의 인증과 프라이버시 보호 기능을 제공하는 범용 방법이 없다는 것이다.
IP 데이터그램은 알려지지 않은 네트워크 사이에서 두 장비 간에 라우팅이 되어야 하기 때문에, 그 안에 있는 정보를 가로채고 수정하는 공격에 취약하다.
중요 애플리케이션이 인터넷을 점점 많이 사용하게 되면서, IP 보안의 개선을 위한 방법이 필요했다.
이를 위해 개발된 것이 IP Security 또는 IPsec라고 불리는 프로토콜 모음이다.
  • IPsec 서비스와 기능 개요
      • IPsec는 하나의 프로토콜이 아니라 IP 네트워크를 위한 완전한 보안 솔루션을 제공하는 서비스와 프로토콜 모음
    • 프라이버시 보호를 위한 사용자 데이터 암호화
    • 메시지의 무결성을 인증하여 중간에서 변조되지 않았음을 보장
    • 재생(replay) 공격과 같은 특정 종류의 보안 공격으로부터 보호
    • 장비가 자신의 보안 요구에 맞는 보안 알고리즘과 키를 협상할 수 있도록 함
    • 서로 다른 네트워크 요구를 만족시키기 위한 두 보안 모드
      • 터널(tunnel)과 전송(transport)
  • IPsec 표준
RFC번호 이름 설명
2401 Security Architecture for the Internet Protocol 주 IPsec 문서로 IPsec 기술의 구조와 일반 동작, 여러 구성 요소가 어떻게 쓰이는지를 보여준다.
2402 IP Suthentication Header 데이터 무결성과 원본 검증을 보장하는 데 쓰이는 IPsec 인증 세더(AH) 프로토콜을 정의한다.
2403 The Use of HMAC-MD5-96 within ESP and AH AH와 보안 페이로드 캡슐화(ESP) 프로토콜에서 사용하는 암호화 알고리즘인 Message Digest 5(MD5), HMAC 변종을 설명한다.
2404 The Use of HMAC-SHA-1-96 within ESP and AH AH와 ESP에서 사용하는 암호화 알고리즘인 Secure Hash Algorithm 1(SHA-1), HMAC 변종을 설명한다.
2406 IP Encapsulating Security Payload(ESP) 기밀성을 위해 데이터를 암호화하는 IPsec ESP 프로토콜을 설명한다.
2408 Internet Security Association and Key Management Protocol(ISAKMP) 키를 교환하고 보안 연관을 협상하는 방법을 정의한다.
2409 The Internet Key Exchange(IKE) 두 장비간 안전한 통신을 위해 보안 연관을 협상하고 키를 교환하는 데 쓰이는 IKE 프로토콜을 설명한다. IKE는 ISAKMP와 OAKLEY에 기반을 두고 있다.
2412 The OAKLEY Key Determination Protocol 키 교환을 위한 범용 프로토콜을 설명한다.


IPsec 일반 동작, 구성 요소, 프로토콜
  • IPsec는 TCP/IP 프로토콜과 애플리케이션이 사용할 수 있도록 IP 계층에서 보안 서비스를 제공한다.
    • 상대방이 이해할 수 있는 형태로 데이터를 보내는데 사용할 보안 프로토콜에 동의해야 한다.
    • 데이터를 인코딩할 때 사용할 구체적인 암호화 알고리즘을 결정해야 한다.
    • 암호로 인코딩된 데이터를 푸는 데 쓰이는 키를 교환해야 한다.
    • 이러한 배경 작업을 완료하면, 각 장비는 협상한 프로토콜, 방법, 키를 이용하여 데이터를 인코딩하고 네트워크로 송신할 수 있다.
  • IPsec 핵심 프로토콜
    • IPsec 인증 헤어(AH)
      • IPsec를 위한 인증 서비스를 제공한다.
      • 메시지의 송신자로 표현된 장비가 실제로 그 메시지를 송신했다는 것을 수신자가 검증할 수 있도록 한다.
      • 중간 경로에 있는 장비들이 데이터그램의 어떤 데이터도 변경하지 않았다는 것을 수신자가 검증할 수 있도록 한다.
      • 허가받지 않는 사용자가 메시지를 캡쳐한 뒤 나중에 재송신하는 재생 공격(replay attack)에 대한 보호 기능도 제공한다.
    • 보안 페이로드 캡슐화(ESP)
      • AH는 데이터그램 데이터의 무결성은 보장하지만 프라이버시는 보장하지 않음
      • 데이터그램의 정보를 "아는 사람만 볼 수 있도록" 하려면 ESP를 이용하여 암호화 해야 함
IPsec 프로토콜과 구성 요소 개요


  • IPsec 보조 구성 요소
    • 암호화/해싱 알고리즘
      • IPsec에서 널리 쓰이는 알고리즘이 Message Digest 5(MD5)와 Secure Hash Algorithm 1(SHA-1)이다.
    • 보안 정책, 보안 연과, 관리 방법
    • 키 교환 프레임워크와 방법
      • 두 장비가 암호화된 정보를 교환하기 위한 방법으로 인터넷 키 교환(IKE, Internet Key Exchange)을 제공

IPsec 구조와 구현 방법
    • 설계상 고려 사항
      • 종단 호스트 구현
      • 라우터 구현
  • 통합 구조
    • IPsec의 프로토콜과 기능을 IP 자체에 직접 통합하고 싶을 것
    • IPv6는 IPsec를 지원하도록 설계됨
    • IPv4는 현실적으로 실용적이지 않음
  • 스택 삽입(BITS, bump in the stack) 구조
    • IPsec는 IP와 데이터 링크 계층 사이에서의 별도 구조 계층으로 존재
    • 장점 : 어떤 IP 장비에서도 IPsec를 적용할 수 있다.
    • 단점 : 통합구조에 비해 TCP/IP 스택에서 해야 할 일이 늘어남
    • 일반적으로 IPv4 호스트에서 쓰임
  • 라인 삽입(BITW, bump in the wire) 구조
    • 기존의 라우터와 라우터 사이에 IPsec 장비를 끼워 넣어 구성

IPsec 모드: 전송과 터널
  • 전송 모드
    • 전송 계층에서 IP로 내려온 메시지를 보호함
    • AH, 혹은 AH와 ESP의 조합에 의해 처리되며 적절한 헤더가 전송(UDP 또는 TCP)헤더 앞에 붙는다. 그리고 그 앞에 IP 헤더가 붙는다.
  • 터널 모드
    • IP 헤더가 이미 추가된 완전히 캡슐화된 IP 데이터그램을 보호하는 데 쓰임
    • IPsec 헤더는 원본 IP 헤더의 앞에 붙으며 새로운 IP 헤더가 다시 이 IPsec 헤더 앞에 붙음
  • 전송 모드와 터널 모드 비교
    • 전송 모드
      • IP 헤더, IPsec 헤더(AH, 혹은 AH와 ESP의 조합), IP 페이로드(전송계층 헤더 포함)
    • 터널 모드
      • 새 IP 헤더, IPsec 헤더(AH, 혹은 AH와 ESP 조합), 기존 IP 헤더, IP 페이로드
IPsec 전송모드와 터널모드 비교

IPsec 보안 구성 요소

  • 보안 정책, 보안 연관, 관련 데이터베이스
    • 보안 정책, 보안 정책 데이터베이스
      • 보안 정책은 IPsec 구현에 내장된 규칙이다.
      • 보안 정책은 장비가 수신하는 서로 다른 데이터그램을 어떻게 처리할 지 지시한다.
      • 보안 정책은 보안을 어떻게 제공할지에 대한 전반적인 지침을 기술하며 필요할 경우 구체적인 지침까지도 제시한다.
      • 장비의 보안 정책은 장비의 보안 정책 데이터베이스(SPD, security policy database)에 저장되어 있다.
    • 보안 연관과 보안 연관 데이터베이스
      • 보안 연관(SA, security association)은 한 장비와 다른 장비 사이에 맺은 특정한 종류의 보안 연결을 설명하는 보안 정보다.
      • 장비의 보안 연관은 보안 연관 데이터베이스(SAD, security association database)에 포함된다.
  • 선택자
    • 장비가 특정 데이터그램에 어떤 보안 정책이나 SA를 사용할지를 결정하는 방법
    • SA가 자신이 적용될 데이터그램을 선택하기 위한 규칙 모음
  • 보안 연관 트리플과 보안 인자 색인
    • 보안 인자 색인
      • 서로 연결된 장비의 특정 SA를 유일하게 식별하기 위해 선택된 32비트 숫자
      • SPI는 AH 또는 ESP 데이터그램에 내장되며 각 보안 데이터그램을 SA와 연결시킨다
      • SPI는 메시지 수신자가 데이터그램에 어떤 SA가 적용되는지 파악하는데 쓰인다
    • IP 목적지 주소
      • SA가 수립된 장비의 주소
    • 보안 프로토콜 식별자
      • 이 연관이 AH를 위한 것인지, ESP를 위한 것인지를 지정한다.
      • 만약 장비에서 AH와 ESP 둘 다 사용하고 있다면, 각각 별도의 SA를 이용해야 한다.

IPsec 인증 헤더(AH)


    • AH 헤더는 메시지의 무결성을 보장하지만 메시지를 암호화하지는 않는다.
    • AH는 인증은 제공하지만 프라이버시는 제공하지 않는다. 이것은 ESP의 몫이다.
  • AH 데이터그램 위치와 연결
    • IPv6 AH위치와 연결
      • IPv6에서, AH는 확장 헤더로 IP 데이터그램에 삽입됨
      • IPv6의 일반적인 확장 헤더 연결 규칙을 그대로 따름
      • 전송모드에서, AH는 주 IP 헤더 안에 위치하며 최종 목적지에 대한 옵션을 포함하는 목적지 옵션 헤더 앞에, ESP 헤더가 있을 경우 그 앞에 나타남
      • 터널모드에서, AH는 터널링되는 원본 데이터그램을 캡슐화하는 새 IP 데이터그램의 확장 헤더로 나타남
    • IPv4 AH 위치와 연결
      • IPv4 데이터그램에서 프로토콜 필드는 데이터그램이 운반하는 상위 계층 프로토콜(보통 TCP 또는 UDP)을 지정
      • 그래서 이 필드는 다음 헤더(IP 페이로드의 맨 앞)를 가리킴
      • AH는 이 값을 가져와 다음 헤더 필드에 넣고, IP 프로토콜 필드에 AH 자체에 대한 프로토콜값(10진수로 51)을 넣음
      • 이렇게 하면 IP 헤더는 AH를, AH는 IP 데이터그램이 예전에 가리키던 것을 가리킴
  • AH 포맷
필드 이름 크기
(바이트)
설명
다음 헤더 1 AH 다음에 오는 헤더의 프로토콜 번호를 담고 있다. 헤더를 서로 연결하는 데 쓰인다.
페이로드 길이 1 이름과는 달리 이 필드는 페이로드가 아니라 인증 헤더 자체의 길이를 측정한다. 이 길이는 32비트 단위로 측정되며 IPv6에서 헤더 길이를 계산하는 일반적인 방법과 유사하게, 2를 뺀 값으로 표현된다.
예약됨 2 쓰이지 않는다. 0으로 설정된다.
SPI 4 32비트 값으로 목적지 주소와 보안 프로토콜 유형(물론 여기서는 AH)과 함께 이 데이터그램에 쓰이는 보안 연관(SA)을 식별한다.
순서 번호 4 두 장비간 SA가 구성될 때 0으로 초기화되는 카운터 필드이다. 이 필드는 그 SA를 사용하여 데이터그램이 송신될 때마다 증가한다. 이 필드는 특정 SA 내에서의 각 데이터그램을 유일하게 식별하며 캡쳐한 데이터그램을 재전송하는 것을 방지함으로써 재생 공격으로부터 IPsec를 방어하는 데 쓰인다.
인증 데이터 가변적 AH 프로토콜이 수행하는 해싱 알고리즘의 계산 결과인 무결성 검사값(ICV)을 포함한다.

IPsec AH를 포함하는 IPv4 데이터그램 포맷 IPsec 인증 헤더(AH) 포맷

    • 인증 데이터 필드의 크기는 서로 다른 데이터그램 길이와 해싱 알고리즘을 지원하기 위해 가변적으로 설정되어 있음
    • 인증 데이터 필드의 길이는 32비트의 배수가 되어야 하고 전체 헤더도 32비트의 배수(IPv4의 경우) 또는 64비트의 배수(IPv6의 경우)여야 하기 때문에 필드에 패딩이 추가될 수 있음

IPsec 보안 페이로드 캡슐화(ESP)
    • Encapsulating Security Payload 프로토콜
    • IP 데이터그램을 암호화하여 프라이버시를 보장
  • ESP 필드
    • ESP 헤더
      • SPI와 순서 번호(Sequence Number)라는 두 필드를 포함하며 암호화된 데이터 앞에 온다
    • ESP 트레일러
      • 암호화된 데이터 뒤에 위치
      • 패딩과 패딩 길이 필드를 이용해 암호화된 데이터를 32비트 경계에 맞춘다
      • ESP의 다음 헤더 필드도 포함
    • ESP 인증 데이터
      • AH 프로토콜과 유사한 방식으로 계산되는 ICV를 포함
      • ESP의 선택적인 인증 기능이 적용될 때 쓰임
  • ESP 동작과 필드 사용
    1. 헤더 계산과 위치
      • IPv6
        • ESP 헤더 필드는 확장 헤더로 IP 데이터그램에 삽입됨
        • IPv6의 일반적인 확장헤더 연결 규칙을 그대로 따름
        • 전송모드에서, 최종 목적지에 대한 옵션을 포함하는 목적지 옵션 헤더 전에, 그 밖의 모든 확장 헤더 뒤에
        • 터널모드에서, 터널링되는 원본 데이터그램을 캡슐화하는 새 IP 데이터그램의 확장 헤더로 나타남
      • IPv4
        • ESP 헤더는 일반 IPv4 헤더 뒤에 위치
        • 전송모드에서, 원본 데이터그램의 IP 헤더 뒤
        • 터널모드에서, 원본 데이터그램을 캡슐화하는 새 IP 데이터그램의IP 헤더 뒤
    2. 트레일러 계산과 위치
      • ESP 트레일러 필드가 암호화될 데이터 뒤에 붙으면 ESP는 암호화를 수행
    3. ESP 인증 필드 계산과 위치
      • 선택적인 ESP 인증 기능이 쓰일 경우에는 전체 ESP 데이터그램에 대한 계산이 이루어진다
  • ESP 인증 필드 계산과 위치
IPsec ESP를 사용하는 IPv6 데이터그램 포맷

IPsec ESP를 사용하는 IPv4 데이터그램 포맷


  • ESP 포맷
구간 필드 이름 크기
(바이트)
설명
ESP 헤더 SPI 4 32비트값으로, 목적지 주소와 보안 프로토콜 유형과 함께 이 데이터그램에 쓰이는 보안 연관(SA)을 식별한다.
순서 번호 4 두 장비간 SA가 구성될 때 0으로 초기화되는 카운터 필드이다. 이 필드는 그 SA를 사용하여 데이터그램이 송신될 때마다 증가한다. 이 필드는 재생 공격으로부터 IPsec를 방어하는 데 쓰인다.
페이로드 페이로드 가변적 암호화된 페이로드 데이터로 상위 계층 데이터 메시지 또는 캡슐화된 IP 데이터그램으로 구성된다. 이 필드는 일부 암호화 방법에서 필요로 하는 초기화 벡터 같은 지원 정보를 포함할 수도 있다.
ESP트레일러 패딩 가변적
(0에서 255)
암호화 또는 정렬을 위해 추가적인 패딩 바이트가 포함된다.
패딩 길이 1 위 패딩 필드의 파이트 수
다음 헤더 1 데이터그램에서 다음 헤더의 프로토콜 번호를 포함한다. 헤더를 연결하는 데 쓰인다.
ESP인증 데이터 가변적 선택적인 ESP 인증 알고리즘을 적용하여 계산한 ICV를 포함한다.
IPsec 보안 페이로드 캡슐화(ESP) 포맷

IPsec ESP 포맷

IPsec 인터넷 키 교환(IKE)

  • IKE 개요
      • IKE의 목적은 장비가 안전한 통신을 위해 필요로 하는 정보를 교환하도록 하는 것
      • IKE는 3개의 다른 프로토콜 기능을 결합하고 보완하기 때문에 혼성 프로토콜로 간주됨
    • ISAKMP(Internet Security Association and Key Management Protocol)
        • 암호화 키와 보안 연관 정보를 교환하기 위한 구조를 제공
      • OAKLEY
        • 다양한 키 교호나 모드를 정의하여, 키 교환을 위한 구체적인 방법을 설명
        • IKE 키교환 절차 대부분은 OAKLEY에 기반을 두고 있음
      • SKEME
        • OAKLEY와는 다른 키 교환 방법을 설명
        • IKE는 SKEME의 일부 기능(공개 키 암호화와 만료된 SA의 고속 재수립 포함)을 이용
  • IKE 동작
      • IKE는 OAKLEY나 SKEME를 엄격히 구현한 것이 아니라 양 쪽에서 일부 기능을 가져와 ISAKMP라는 고유한 방법을 만듦
    • ISAKMP 단계 1
      • 1단계는 두 장비가 이후에 정보를 어덯게 안전하게 교환할지에 동의하는 준비 단계다
      • 두 장비는 협상을 통해 ISAKMP 자체를 위한 SA인 ISAKMP SA를 생성한다
    • ISAKMP 단계 2
      • 1단계에서 수립한 ISAKMP SA를 이용하여 기타 보안 프로토콜을 위한 SA를 생성
      • 보통, 여기에서 AH와 ESP 프로토콜을 위한 "진짜" SA의 인자를 협상한다.
    • 1단계에서 협상한 ISAKMP SA는 이후 협상에 쓰이는 다음과 같은 속성을 포함한다.
      • DES(Data Encryption Standard) 같은 암호화 알고리즘
      • 해시 알고리즘(AH나 ESP에서 사용하는 MD5 또는 SHA)
      • 인증 방법(미리 공유한 키를 통한 인증 등)
      • 디피-헬만(Diffie-Hellman) 그룹

2014년 1월 7일 화요일

IP 네트워크 주소 변환(NAT) 프로토콜

IP NAT 개요

    • IPv4의 주소 공간 고갈, IP 주소 비용 증가, 보안 우려의 증가
    • IP 네트워크 주소 변환(IP NAT 또는 NAT, IP Network Address Translation)은 기관이 사설 주소를 사용한 네트워크를 구성하면서도 공중 인터넷과 통신할 수 있도록 하는 기술이다. NAT를 지원하는 라우터는 사설 주소를 공인 주소로, 또는 역으로 필요에 따라 변환한다. 이것은 여러 장비가 소수의 공인 IP 주소를 공유할 수 있는 등 여러 장점이 있지만 몇 가지 단점도 있다.
  • IP NAT의 장점
    • 공인 IP 주소 공유
    • 쉬운 확장
    • 로컬 통제력 강화
    • 인터넷 서비스 제공자(ISP) 선택의 유연성
    • 보안 강화
    • 투명함(대부분)
  • IP NAT의 단점
    • 복잡성
    • 공인 주소 부족으로 인한 문제
    • 특정 애플리케이션과의 호환성 문제
    • 보안 프로토콜 문제
    • 클라이언트 접근 지원 미비
    • 성능 감소

IP NAT 주소 용어
  • 내부 주소
    • 기관의 사설 네트워크에서 NAT를 사용하는 장비는 내부 네트워크에 위치해 있다고 표현한다.
    • 로컬 네트워크의 장비를 가리키는 모든 주소를 내부 주소(inside address)라고 부른다.
  • 외부 주소
    • 공중 인터넷(즉 로컬 네트워크 외부에 있는 모든 것)은 외부 네트워크에 있다고 간주된다.
    • 공중 인터넷에 있는 장비를 가리키는 주소를 외부 주소(outside address)라고 부른다.
  • 로컬 주소
    • 내부 또는 외부 주소를 가리키는가에 관계 없이 내부 네트워크의 데이터그램에 나타나는 주소를 의미
  • 전역 주소
    • 내부 또는 외부 주소를 가리키는가에 관계 없이 외부 네트워크의 데이터그램에 나타나는 주소를 의미

  • 내부 로컬 주소
    • 로컬 네트워크 장비 주소로 일반적인 로컬 장비 주소 지정 방법으로 표현됨
    • 예로 10.0.0.0 사설 블록을 사용하는 네트워크의 클라이언트에 10.0.0.207이라는 주소를 할당했다면 이것은 내부 로컬 주소임
  • 내부 전역 주소
    • 이것은 전역의, 공중 네트워크에서 라우팅 가능한 IP 주소로 내부 장비를 외부 세계에 표현하는 데 쓰임
    • NAT 구성에서, 내부 전역 주소는 NAT 라우터에서 사용할 수 있도록 기관에 할당된 공인 IP 주소를 의미
  • 외부 전역 주소
    • 공중 인터넷에서 참조하는 외부(공중 인터넷) 장비의 주소
    • 일반적인 공인 IP 주소를 의미
  • 외부 로컬 주소
    • 로컬 네트워크에서 참조하는 외부 장비의 주소

  • 내부 장비 표현
    • 내부 로컬 주소는 보통의 원래 주소
    • 내부 전역 주소는 내부 장비를 외부 네트워크에 표현하기 위한 변환된 주소
  • 외부 장비 표현
    • 외부 전역 주소는 보통의 원래 주소
    • 외부 로컬 주소는 외부 장비를 내부 네트워크에 표현하기 위한 변환된 주소

IP NAT 정적 주소 매핑과 동적 주소 매핑

    • 라우터의 NAT 소프트웨어는 변환 방법을 지시하는 변환 테이블을 관리
  • 정적 매핑
    • 내부 도는 외부 장비의 전역 표현과 로컬 표현 사이에 정의된 영구적이고, 고정된 관계를 의미
    • 예) 내부 로컬 주소가 10.0.0.207인 장비가 항상 내부 전역 주소로 194.54.21.10을 사용하게 할 때 정적 매핑을 사용
  • 동적 매핑
    • 전역과 로컬 주소 표현은 NAT 라우터에서 필요할 때마다 즉시 생성되며 사용이 끝나면 버려짐

IP NAT 단방향 (전통적/아웃바운드) 동작

  • 순서와 데이터그램 출발지 주소 목적지 주소

  1. 내부 클라이언트가 요청을 생성하여 NAT 라우터에게 송신
    • 내부 로컬 : 10.0.0.207 (클라이언트 내부 IP)
    • 외부 로컬 : 204.51.16.12 (대상 서버IP)
  2. NAT 라우터는 출발지 주소를 변환한 뒤 외부 서버에게 송신
    • 내부 전역 : 194.54.21.11 (라우터 외부 IP)
    • 외부 전역 : 204.51.1612 (대상 서버IP)
  3. 외부 서버가 응답을 생성하고 NAT 라우터에게 회신
    • 외부 전역 : 204.51.16.12 (대상 서버 IP)
    • 내부 전역 : 194.54.21.11 (라우터 외부 IP)
  4. NAT 라우터는 목적지 주소를 변환하고 데이터그램을 내부 틀라이언트에게 전달
    • 외부 로컬 : 204.51.16.12 (대상 서버 IP)
    • 내부 로컬 : 10.0.0.207 (클라이언트 내부 IP)

  • 전통적 NAT는 오직 이러한 유형의 아웃바운드 트랜잭션(내부 네트워크의 장비에서 시작됨)만을 지원한다.
  • 그래서 공중 인터넷에서 내부 사설 IP를 갖는 서버로 요청을 보내는 경우를 처리하지 못한다.

IP NAT 양방향 (Two-Way/인바운드) 동작
  • DNS를 사용한다.
  1. 외부 장비는 접근하고자 하는 내부 네트워크 장비의 이름을 이용해 DNS 요청을 전송한다. 예를 들어 그 이름을 www.ilinenat.com이라 하자
  2. 내부 네트워크를 위한 DNS 서버는 www.ilikenat.com 이름을 해당 장비의 내부 로컬 주소로 변환한다.
  3. 이 내부 로컬 주소는 NAT로 전달되며 NAT는 이것을 이용해 외부에서 접근하고자 하는 서버의 내부 로컬 주소와 내부 전역 주소를 매핑한다. 이 매핑 정보는 NAT 라우터의 변환 테이블에 저장된다.
  4. DNS 서버는 외부 장비에게 응답할 때 내부 장비의 내부 로컬 (사설) 주소가 아니라 이전 단계에서 매핑한 내부 전역 (공인) 주소를 알려준다.


  • 양방향 (two-way/인바운드) NAT의 동작 순서와 데이터그램 출발지/목적지 주소
  1. 외부 클라이언트가 요청을 생성하여 NAT 라우터에게 송신
    • 외부 전역 : 204.51.16.12
    • 내부 전역 : 194.54.21.6
  2. NAT 라우터가 목적지 주소를 변환하고 내부 서버에 송신
    • 외부 로컬 : 204.51.16.12
    • 내부 로컬 : 10.0.0.207
  3. 내부 서버가 응답을 생성하고 NAT 라우터에게 송신
    • 내부 로컬 : 10.0.0.207
    • 외부 로컬 : 204.51.16.12
  4. NAT 라우터가 출발지 주소를 변환하고 데이터그램을 외부 클라이언트로 라우팅함
    • 내부 전역 : 194.54.21.6
    • 외부 전역 : 204.51.16.12


IP NAT 포트 기반 (과부하) 동작

  • 일반 NAT의 개선된 버전으로 사설 네트워크의 다수의 호스트가 동시에 하나의 내부 전역 주소를 공유할 수 있도록 한다.
  • 이것은 TCP와 UDP 메시지에서 사용하는 포트 번호를 변경하는 방식으로 동작한다.
  • NAT 라우터는 외부로 나가는 요청의 출발지 주소와 포트를 내부 로컬에서 내부 전역 형태로 변환한다.
  • 그리고 응답의 목적지 조수와 포트를 내부 전역에서 내부 로컬 형태로 변환한다.
  • 외부 로컬과 외부 전역 주소는 요청과 응답에서 동일하다.


IP NAT 중복/2회 NAT 동작

  • 내부 네트워크에서 사용하는 주소와 외부 네트워크에서 사용하는 주소가 겹칠 경우
    • 사설 네트워크와 사설 네트워크 간의 연결
    • 사설 네트워크에 공인 주소를 부적절하게 할당
    • 공인 주소 할당의 유효 기간 만료
  • 2회 NAT에서는 외부 로컬 주소와 외부 전역 주소가 다를 수 있다.

IP NAT 호환성 문제와 특수 처리 요구사항


  • TCP와 UDP 체크섬 재계산
    • 헤더의 IP 주소를 변경한다는 것은 IP 헤더의 체크섬을 다시 계산해야 한다는 것을 의미
  • ICMP 조작
    • NAT는 IP 헤더와 매우 직접적으로 연관되어 있고, IP는 "보조" 프로토콜인 ICMP와 밀접히 연관되어 있기 때문에 NAT는 특정 ICMP 메시지를 검사하여 그 안에 포함된 주소를 변경할 필요가 있다.
  • IP 주소를 내장하는 애플리케이션
    • FTP와 같은 애플리케이션
  • 포트 변환에서의 추가적 문제
    • PAT가 쓰일 때, 주소에 해당됐던 이전 문제들이 포트에도 해달되기 때문에
  • 주소나 포트 번호 변경에 의한 파급 효과
  • IPsec에서의 문제

IPv6 데이터그램 크기, 단편화, 재조합과 라우팅 (27)

IPv6 데이터그램 크기와 단편화

IPv6 데이터그램 캡슐화와 포맷 (26)

IPv6 데이터그램 개요와 일반적인 구조