본문 바로가기

CISA & CISSP/SIS 정보보전문가 study

TCP/IP 란?

Chapter 1. Introduction to TCP/IP Basics

  • 개 요
    - TCP/IP를 기반으로 하여 물리적 구성, 라우팅, Application의 상호연관성을 이해
     
  • TCP/IP Features
    - 특정 하드웨어나 운용체제에 의존하지 않는 Open Protocol
    - 물리적 네트워크에 독립적
    - 전세계에 유일한 주소체계를 사용
    - 표준화되어 있으며, 널리 사용됨
     
  • TCP/IP Protocol Architecture

Application Layer

 

User
Process

User
 Process

 

                       ↕                  ↕

Transport Layer

TCP

UDP

 

                                 ↕        ↕

Internet Layer

ICMP

 IP

ARP

RARP

 

                                      ↕              ↕             ↕

Datalink Layer

Hardware interface(Ethernet,FDDI,SLIP,PPP)

  • TCP/IP Protocol Suite 특징
    - TCP(Transmission Control Protocol)
       * 연결지향 프로토콜
       * 사용자프로세스에 신회성있는 Full-duples,Byte stream service를 지원
       * 대부분의 인터넷 응용들은 TCP를 사용

    - UDP(User Data Protocol)
       * 비연결 프로토콜
       * UDP datagram의 목적지 도달을 보장 못함

    - ICMP(Internet Control Message Protocol)
       * 호스트와 게이트웨이간의 에러 및 제어정보를 제어

    - IP(Internet Protocol)
       * TCP,UDP 및 ICMP를 위한 패킷 전달 서비스를 제공
       * 경로 설정

    - ARP(Address Resolution Protocol)
       * IP주소를 Hardware 주소로 매핑

    - RARP(Reverse ARP)
       * Hardware주소를 IP주소로 매핑
     
  • Network - 컴퓨터의 연결에 단일의 전송기술을 이용한 시스템.
     
  • Internet - network에 연결된 컴퓨터들 사이의 traffic전달, router를 통해 연결된 일련의 network들.
     
  • Internet의 역사
    - Arpanet
    - 1969년 군사용으로 시작
    - ETHERNET 표준(1985년, IEEE 802.3발표)
    - TCP/IP기반의 internetworking 활성화
     

Chapter 2. Link Layer

  • TCP/IP layering
    - OSI 7-layer 모델과 TCP/IP layer모델의 비교
    OSI model
    TCP/IP model

    What to Cover?

    Application

    Application

    SMTP

    FTP

    TFTP

    DNS

    HTTP

     .......

    BOOTP

    Presentation
    Session
    Transport
    Transport

    TCP

    UDP

    Network
    Internet

    IGMP

    ICMP

    IP

    Routing Protocol


    ARP

    RARP

    Data Link
    (SDLC,HDLC,PPP,
    Frame-relay,etcs)
    Network Interface

     IEEE 802.2

    Ethernet

    FDDI

    IEEE 802.5

    IEEE 802.3

    Physical
    (RS-232C,V.35,
    HSSI,etcs)
    Physical
  • OSI Model Layer 기능
    - OSI 7 Layer 개념도

    - Physical Layer : 물리적 매체를 통해 비트 흐름을  데이터 링크층으로 전송
       * 물리적인 매체의 형태는 트위스트페어 케이블,동축케이블,광섬유,무선통신등

    - Data Link Layer : 정보의 비트를 그룹으로 전송
       * 전송되거나 전송받는 비트는 프레임이라는 논리적 단위로 모아진다.
       * LAN상의 프레임 : 토큰링,이더넷 프레임,FDDI 프레임 등
       * WAN상의 프레임 : SLIP,PPP,X.25 또는 ATM 셀 프레임이나 또다른 WAN유형(예,CISCO HDLC) 등
       * 전송 오류를 최초 처리계층이며, 오류제어 필드는 오류탐지에 사용되는 하드웨어 생성 Checksum임.
          LAN에서는 32bit CRC checksum사용,WAN에서는 16bit CRC checksum 사용(전송부담감소)

    - Network layer :  노드간 스위치와 라우터 정보 전송
       * 라우터는 일률적인 네트워크 주소지정 메카니즘을 포함하고 있는 네트워크계층 헤더를 검토.
       * 라우터는 스위치 역할을 하는 장치이며 패킷을 발송할 다음 목적지를 결정.

    - Transport Layer : 말단 장치간 데이터 무결성,오류복구 마지막 계층
       * 3개의 하위계층은 서브넷을 구성하며, 3개의 상위 계층은 노드의 네트워킹 소프트웨어에서 구현
       * 운반서비스 접속점(TSAP=Transport Services Access Point)를 통해 논리적 연결을 책임진다.
          즉,TCP/IP의 포트번호 역할과 유사하다.

    - Session Layer : 검사점 설정,활동관리
       * 네트워크를 통해 호스토에 로그인하는 사용자 또는 파일을 전송할 목적으로 설정

    - Presentation Layer : 데이터 표시를 제공
       * ASCII,EBCDIC등 숫자를 통한 데이터 표시방법을 제공

    - Application Layer : 응용프로그램별 서비스(API)
       * 열기,닫기,읽기,쓰기,파일 공유 등 원격 파일 서비스를 제공하기 위한 프로토콜
       * API : 응용프로그램 사용자가 네트워크 응용프로그램을 작성하는데 사용할 수 있는 프로그래밍 라이브러리.

  • OSI Model횡단(peer-to-peer)
    - 데이터가 로컬의 세션층에서 각 계층의 프로토콜 제어정보(헤더/트레일러)를 달고 내려와 remote의 상위층으로
       횡단되며 프로토콜 제어정보(헤더/트레일러)는 각 Layer를 지날 때마다 제거된다.

    - 실제 운용에서는 이러한 절차를 볼 수 없으나 대체로 물리층과 데이터링크층 프로토콜엔티티는 하드웨어로 구성
       되고 네트워크계층 이상의 프로토콜엔티티는 소프트웨어와 하드웨어의 혼합인 Firmware를 사용하여 구현한다.

    -  OSI모델은 이해하기 쉬운 통신의 개념적 광경을 제공할 뿐 실무에서는 잘 정의되어 있지 않다.
     


     
  • Internetworking 구성장비
    - Internetworking : 네트워크 구성이 로컬 연결로만 구성되어 있는 경우는 거의 없으며, remote의 독립된 network
                               가 서로 연결되어 구성된 복합네트워크를 internetwork이라고 하며,이를 구성하는 장비,기술,
                               비용을 총칭하여 internetworking이라고 함.

    - Cable/Connector

    사용 Media

    Connector

    Segment길이

    속도(bps)

    Application

    비고

     Fiber Optic

     MIC

     2km

    100M

     FDDI

    연결장비를 통해 100km까지 구성가능

     UTP Cable

     RJ-45

     100m

    10M
    100M

    10BASE-T
    100BASE-TX


    IEEE 802.3u,Category5

     STP Cable

     RJ-45

     100m

    16M

    Token-Ring

    RJ-11은 전화기용

     Thick Ethernet

     AUI

     500m

    10M

    10Base-5

    각 장비는 2.5m마다 설치 가능

     Thin Ethernet

     BNC

     200m

    10M

    10Base-2

    보통 TV,Video에 사용

    - Terminator : 선로의 data를 되돌리지 않고 끝에서 폐기처리(10Base-5에서 사용) 하기위해 종단에 50Ω의 저항
                            을 부착, 이때 선로 중간저항은 25Ω
    - Tranceiver(MAU:Multistation Access Unit) : 노드와 선로, 허브를 연결하는 기능/10Base-5

    - Repeater : 신호의 증폭 및 재생
       * Noise도 증폭되므로 연속사용하는데 한계를 가지고 있기 때문에 거의 사용하지 않으며 HUB가 기능수행

    - HUB : Repeater의 기본기능 보강,접속을 집중시키는 기능(Repeater + Concentrater)
       * Dummy Hub : 말 그대로 멍청한 허브,트래픽을 선별하지 못하고 모든 포트로 전송함. 들어오는데로 보내기
                              때문에 Collision이 많이 발생한다.

       * Intelligent Hub : 기능은 Dummy와 유사하나, IP address를 가질 수 있으며 SNMP(Simple Network Managemt
                                 Protocol)기능을 가지고 있음.

       * Switching Hub
         Switch기능 즉, Traffic 선별기능을 가지고 있다. Ethernet protocol 특성상 가장 문제가 되는 것은 collision 현상
         이다.  충돌이 발생하는 이유는 Ethernet에서 ARP/RARP기능을 수행하며 모든 Client로 Frame을 보내고 해당되
         는 Client는 응답을하고 나머지 Client는 폐기하기 때문이다.
         그러나 스위칭허브는 각 포트별로 접속되어 있는 client의 MAC address table을 가지고 있으므로 A라는 주소가
         들어오면 정해진 포트로만 전송하므로 collision은 거의 발생하지 않는다.

    - Bridge
       * 두 개의 network만을 연결,패킷을 전송한다. Routing기능 없음.
       * 제한적인 프로토콜 : Filtering, Forwarding, Buffering
       * 물리계층, 링크계층 기능 수행

    - Router
       * 여러개의 독립된 network를 연결, 패킷 전송
       * 투명성(Transparency) 프로토콜 : Routing
       * 물리,링크,네트워크 계층 기능 수행.

    - Fast Ethernet Switch
       * 일반 허브는 10Mbps 속도로 여러포트를 공유하지만 Fast Switch는 한port당 100M제공(Dedicated Bandwidth)
       * VLAN(IEEE 802.10) 구성이 가능

    - Cisco Switching Hub(Catalyst 5000기준)
       * Catalyst5000은 command방식이며 Router의 IOS와는 약간 다름/Catalyst 2920XL은 Router Command와유사)
       * Auto sensing기능이므로 별도 설정없이 사용이 가능하고 VLAN설정시 Configration이용 Routing등을 설정.
       * 라우터의 show  ip route와 같은 show  cam이 있으며  CAM table에 MAC address를 기록.
         CAM(Content Addressable Table)

  • MAC(Media Access Control) : 초기에는 Xerox가 할당했지만 지금은 IEEE에서 $5,000에 할당
    - 구조
       * NIC(Network Interface Card)의 ROM에 구워져 있다.

    24bit

    24bit

    Vendor code

    Serial Number

    AB . CD . EF

    12 . 34 . 56

    I/G

    U/L

    22bit

     

      * Vendor Code를 OUI(Organizationally Unique Identifier)라고도 한다.
       -I/G = Individual(0) / Group address(1)      - U/L = Universally(0) / Locally address (1)

  •  Data Encapsulation

    Application Layer

     

     

     

     

    Data

     

     

     

    Data구조: -TCP: stream -UDP: message  

    Transport Layer

     

     

     

    TCP Header
    20bytes

    Data

     

     

     

    Data구조: -TCP:segment -UDP:packet    

    Internet  Layer

     

     

    IP Header
    20bytes

    Data

     

     

     

    Data구조: -IP Datagram                        

    Network Access Layer

     

    Ethernet Header
    14bytes

    Data(46~1500bytes)

    Ethernet Trailer
    4bytes

     

        Data구조 : Ethernet Frame

  • IEEE802.3과 Ethernet의 계층 비교
    - RFC규정
      * Ethernet : RFC894
      * IEEE802.3 : RFC1024
    - Suite비교

    상위 계층 프로토콜

    LLC - IEEE 802.2


    MAC

    MAC

    IEEE802.3

    DIX 2.0 Ethernet

  • Ethernet Encapsulation (RFC 894) : CISCO Router Ethernet Port의 Ethernet port type은 ARPA
    preamble
    DA
    SA
    frame 
    type
    data in frame
    FCS
    8 bytes
    6 bytes
    6 bytes
    2 bytes
    46 - 1500 bytes
    4 bytes
    <--------------header------------>
     
     
     
     
     
     
    type
    IP datagram
     
     
     
     
    0800
    46 - 1500 bytes
     
     
     
     
     
    type
    ARP request/reply
    PAD
     
     
     
     
     
    0806
    28 bytes
    18 bytes
     
     
     
     
     
     
    type
    RARP request/reply
    PAD
     
     
     
     
     
    8035
    28 bytes
    18 bytes
     
     
    -Preamble : bit동기와 frame 경계 기능 [1010 1010 1010 1010 1010 1010 1010 1011]
       * 10Mbps에서 6.4㎲의 지속시간을 갖는데 수신스테이션의 동기화와 프레임 수신을 준비
       * 비트 동기를 위한 것인데 수신되는 비트열로부터 송신측과 동일한  수신클럭을 추출할 수 있도록 1과 0이 반복
          되는 비트열로 구성된다.
    - DA, SA: MAC address 즉, 하드웨어 주소이다.
       * DA영역의 첫byte의 최하위 bit 값이 1이면 특정그룹 수신측에게 동시에 전달되는 multicast 주소이다
    - frame type을 Ether type이라고도 하며 상위계층 프로토콜의 종류를 표시.
       * 802.3에서는 length field로 사용, 두종류의 frame을 호환성있게 한 시스템에서 처리하기위해 EtherType은
          0x0600 이상의 값을 사용한다. 즉, 0600미만이면 802.3의 length feild이고 이상이면 Ethernet의 Ethertype
       * frame type 예 (RFC 1700)
    Ethertype code
    Protocol

    Ethertype code

     Protocol

    0000 - 05dc

     IEEE 802.3 길이영역

    0600

     XNS PLP

    0800

     internet IP version 4

    0805

     CCITT X.25

    0806

     ARP

    8137

     Netware IPX

    8035

     RARP

    6559

     Frame Relay

  • IEEE 802.2/802.3 Encapsulation (RFC 1042) : CISCO Router Ethernet Port의 Ethernet port type은 SNAP
     
    ← 802.3 MAC →
    ← 802.2 LLC →
    ←802.2 SNAP→

     Data

    FCS

    preamble

    SFD

    DA
    SA
    length
    DSAP
    SSAP
    Cntl
    OUI
    frame 
    type
    data in frame
    CRC
    7

    1

    6
    6
    2
    1
    1
    1
    3
    2
    38 ~ 1492
    4
    header
           
     
     
     
     
             
    type
    IP datagram
     
     
     
     
             
    0800
    38 ~ 1492 bytes
     
     
     
     
     
             
    type
    ARP request/reply
    PAD
     
     
     
     
     
             
    0806
    28 bytes
    10 bytes
     
     
     
     
     
     
             
    type
    RARP request/reply
    PAD
     
     
     
     
     
             
    8035
    28 bytes
    10 bytes
     
     


    - Preamble : bit동기와 frame 경계 기능을 수행하는 7byte [1010 1010 1010 1010 1010 1010 1010]
       * 10Mbps에서 5.6㎲의 지속시간을 갖는데 수신스테이션의 동기화와 프레임 수신을 준비

    - SFD(Start Frame Delimiter(구분자)): [1010 1011]
       * IEEE 802.3 preamble + SFD = Ethernet Preamble
       * SFD이후부터 바이트 단위로 조합되어 있음을 수신측에 알리는 바이트 단위의 동기를 위한 것일 뿐 아니라
          SFD다음 바이트 열이 프레임의 시작임을 알리는 프레임 단위의 동기화를 위한 것이다.
    - Preamble과 SFD는 모두 MAC controller chip에서 만들어 지며, Preamble 및 SFD 전송중에 충돌이 발생하면
       이영역의 송신을 완료한 다음 32bit의 jam신호를 송신하고 전송을 중지한다.
    - Length : LLC의 byte수

    - DSAP(Destination Subnet Access Point): 개별 또는 그룹 필드를 나타냄. IP의 경우 16진 코드 AA로 예약
       * I/G + 7bit     I/G = Individual / Group  Destination SAP
                                        (0)          (1)
    - SSAP(Source Subnet Access Point) : 범용/지역 필드.즉, 주소가 전체용인지 지역용인지 구분. 16진 AA예약.
       * C/R + 7bit   C/R = Command / Response Source SAP
                                        (0)           (1)

    - 규정된 SAP의 예

    SAP

    Protocol

    SAP

    Protocol

    06

    IP

    aa

    IEEE SNAP

    42

    BDPU

    e0

    Netware IPX

    7e

    X.25PLP

    f0

    NetBIOS

    80

    XNS

    ff

    Global SAP

    - LLC: Logical Link Control
       * 어느 특정한 MAC에 제한받지 않기 때문에 IP같은 상위 layer protocol이 LAN media에 관계없이 동작  

    - SNAP: Sub-Network Access Protocol
       * DSAP과 SSAp의 값이 모두 0xAA인 경우 SNAP의 5byte 길이의 추가정보가 사용되어 상위 계층 프로토콜의
         종류를 표시하는 Ethertype의 기능을 수행 (5byte인 이유는 LLC헤더의 전체 길이를 4의 배수로 맞추어 CPU가
         처리하기 용이하도록 한것임)

    - OUI: Organizationally Unique Identifier, 장비생산업체의 고유번호. MAC address의 앞 3 bytes

    - Control : X.25의 HDLC frame에서 control과 유사

    - DA가 모두 1이면 broadcast

    _ FCS(Frame Check Sequence)
       * address,유형 및 데이터 필드에 대한 32bit 주기적 반복 책섬(CRC) 수행/전송오류 탐지

  • Ethernet과 IEEE 802.2/802.3은 서로 호환성이 있다.
    - length가 0과 1500(0x05DC) 사이이면 IEEE802.x의 data의 길이이고, 그 이상이면 ethernet의 frame type이다.
    - length가 0과 1500(0x05DC) 사이이고 802.2 LLC의 DSAP, SSAP, Cntl이 각각 AA, AA, 03이면 반드시 이어서    802.2 SNAP이 따라온다. 반면에 AA, AA, 03이 아니면 바로 data가 온다.
     
  • IPX의 역다중화방법(Encapsulation 호환성의 예 :Novell의 IPX 경우)
    - Ethernet frame type
    DA
    SA
    Ethertype
    8137
    IPX (up to 1500)
     
    - IEEE802.2 frame type(802.2 LLC의 경우)
    DA
    SA
    length
    field
    DSAP
    (e0)
    SSAP
    (e0)
    control
    (0x03)
    IPX data
     * Netrware 전용 Dsap인 0xe0를 사용한 것으로 Newware v4.0에서 기본적으로 사용

    - IEEE802.2 frame type(802.2 SNAP의 경우)
    DA
    SA
    length
    field
    DSAP
    (aa)
    SSAP
    (aa)
    control
    (03)
    SNAP
    (0,0,0,81,37)
    IPX data
     *주로 AppleT!alk를 지원하기 위해 사용한다

    - IEEE802.3 frame type(Novell의 IPX의 경우)
    DA
    SA
    length

    field
    IPX with 0xffff header field
     * Netware 4.0이 나오기 전까지 사용하던 방식으로 LLC의 SAP을 구분할 필요가 없다는 관점에서 IPX header의 첫번째
       2byte를 0xFFFF로 설정한 IPX frame을 사용한 것임. 이값은 LLC의 DSAP과 SSAP영역이 각각 0xFF인 것으로 해석
     * DSAP=0xFF라는 의미는 global DSAP으로 특정 상위계층을 지정하지 않을 때 사용토록 규정하고 있다.

     - Netware frame format
       
  • CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식
    - 각 노드는 선로에 트래픽의 흐름(Carrier)이 있는지를 탐지(Sense)하다가
    - 트래픽이 없는 경우 누구라도(Multiple) 데이터를 전송하기 위하여 선로을 이용(Access)할 수 있으며,
    - 만일 두 대 이상의 노드가 동시에 데이터를 전송하면 충돌(Collision)이 일어나며,
    - 이렇게 충돌된 데이터는 폐기되고 전송한 노드는 나머지 노드에게 충돌 사실을 통지(Detection)하여
    - random한 시간이 지난 후에 전송을 다시 시작하는 방식

    - 동작방법
       * 선로는 하나의 노드만이 사용가능(여러노드가 동시에 사용불가)
       * a,b,c,d노드가 있을 때 a에서 d로 data를 보낼 경우 a는 선로에 broadcating 하며 b와 c는 data의 MAC주소를
         보고 폐기처분하며 d는 data를 수신한다.
       * 한편 a가 선로의 상태가 free로 판단하여 d에게 data를 보낼 때  이와 동시에 d도 선로를 free하다고 판단하여
         data를 보내면 어느 중간지점에서 충돌이 발생하며, 이때 a와 d는 선로에 JAM신호를 전송한다.
       * JAM신호를 수신한 노드(a,d포함)는 임의의 대기시간(Backoff algorithm)을 수행후 전송을 재개한다.
     
  • SLIP (Seial Line IP)
    - serial line상에서 IP를 지원하기 위한 기술
    - RS-232를 이용
    - SLIP의 frame생성 규칙
      * IP datagram을 0xc0라는 특정문자로 시작하고 끝낸다.
      * IP datagram전송중 0xc0를 만나면 0xdb, 0xdc로 바꾼다.
      * IP datagram정송중 0xdb를 만나면 0xdb, 0xdd로 바꾼다.
    - 상대방의 IP address를 반드시 알아야 한다.
    - IP외에는 다른 protocol사용 불가.
    - checksum이 없다.

     
  • PPP (Point-to-Point Protocol)
    - SLIP의 문제점 보완
      * 다양한 protocol지원(IP, IPX, ...)
      * checksum으로 CRC
    - PPP절차
      * 최초 LCP(link control protocol)로서 link에서 사용될 선택항목을 설정
      * NCP(network control protocol)로 network layer protocol 선택 및 구성
      * data전송
    - PPP frame format
    flag
    7E
    addr
    FF
    control
    03
    protocol
    information
    CRC
    flag
    7E
    1 byte
    1 byte
    1 byte
    2 bytes
    0 ~ 1500 bytes
    2 bytes
    1 byte
     
         
    0021
    IP datagram
       
     
         
    C021
    link control data
       
     
         
    8021
    network control data
       

  • MTU (Maximum Transmission Unit)
    - physical frame으로 전송되는 datagram크기의 상한값
    - MTU보다 큰 datagram을 쪼개진다(fragmentation)
    - max frame size는 preamble을 뺀 크기
    - IEEE 802.3의 MTU
      1518(max frame size) - 18(link layer header + CRC) - 8(LLC + SNAP) = 1,492 bytes
    network종류
    MTU(bytes)

     비   고

     ATM

    9,180    

     

     hyperchannel

      65,535    

     

     16Mbps token ring(IBM)

      17,914    

     실제 크기는 토큰보유시간에 좌우(4,440~17,940까지)

     4Mbps token ring(IEEE 802.5)

      4,464    

     

     FDDI

      4,352    

     

     ethernet

     1,500    

     

     IEEE 802.3/802.2

     1,492    

     

     IEEE 802.4

    8,166    

     

     X.25

     576    

     DDN 표준 X.25를 통한 ARPANET MTU 1,007
     공공 데이터망의 경우 조정에의해 증가시킬 수 있다.

     PPP

     1,500    

     



Chapter 3. IP (Internet Protocol)

  • 관련표준
    - IP : RFC791(1981)
  • IP Packet Format
     
  • 개요 및 특징
    - TCP/IP의 가장 기본적인 프로토콜로서 TCP,UDP,ICMP,IGMP등의 데이터들이 IP를 이용해 전송.
    - Internet에 연결된 모든 컴퓨터는 독립적인 주소를 가짐.
    - address format은 dotted decimal notation
       각각의 host는 4 바이트(32-bit) 정수 주소와 각각의 숫자 사이는 dot(.)로 구분
    - Network number는 NIC(Network Infomation Center)에서 관리/부여한다.
    - Best effort(Connection-less)
       Hop by Hop으로 이동. 즉, 전체경로를 아는 것이 아니라 다음 이동 노드만 안다.
    - 서로 다른 특성을 가진(MTU Size등)  network의 연결
    - IP의 역할 : network간 routing / network내 addressing
     
  • 주요 기능
    - addressing
    - segmentation
    - packet timeout
    - ToS(Type of Service)
     
  • Address Class

    - Class A :  첫 byte는
    0 ~ 127 (1.0.0.1 ~ 126.255.255.254)

     
         
    - Class B : 첫 byte는 128 ~ 191 (128.0.0.1 ~ 191.255.255.254)
     


    - Class C : 첫 byte는 192 - 223
    (192.0.0.1 ~ 223.255.255.254)
     

    - Class D : 첫 byte는 224 - 239 (224.0.0.1 ~ 239.255.255.254)
                     1110 + multicast address (class D는 multicast backbone(M-bone)에서 사용)
     
    * Class D의 고정IP 주소

    주   소

    내         용

    224.0.0.1

     all systems on this subnet

    224.0.0.2

     all routers on this subnet

    224.0.1.1

     NTP

    224.0.0.9

     RIP-2

    224.0.1.2

     SGI dogfight appication

    224.0.0.4

     all DVMRP(Distance Vector Routing Protocol) router

          - Class E : 첫바이트는 240 -255 (240.0.0.1 ~ 255.255.255.254)
                 11110 + reversed for future use

  • Addressing rules
    - internet address의 network부분을 정의하기 위해 사용되는 bit가 모두 '0'으로 setting되어서는 안됨. 모두 '0'
       으로 setting된 경우 자신이 속해있는 네트워크로 해석한다. 즉, host id가 모두 0이면 host가 포함된 망을 표시
    - internet address의 Host부분을 정의하기 위해 사용되는 Bit가 모두 '1'로 setting되어서는 안됨.  모두 '1'로
       setting된 Address는 그 Network상의 모든 Host를 의미하기 때문이다.  ( 예를 들어 164.124.255.255는
       164.124Networkt상의 모든 Host를 의미:IP address가 모두 1이면 broadcast)
  • Special IP address (RFC 1700)
    net ID
    host ID
    주소 type
    목        적
    all - 0s
    all - 0s

    this computer

    host가 망의 IP를 모를 경우

    network
    all - 0s

    network

    하나의 network를 지정

    network
    all - 1s

    directed broadcast

    특정 network에 broadcast

    all - 1s
    all - 1s

    limited broadcast

    local network에 broadcast

    127
    any

    loopback

    testing

  •  LoopBack IP주소를 이용한 TCP/IP 소프트웨어 설치 확인방법
    - Class A의 127은 Loopback 기능을 위해 부여된 것으로 이것은 High Level Protocol에 의해 Network 127
       Address로 보내진 Datagram은 송신프로세스-송신버퍼-수신버퍼-수신프로세스로  Loopback된다.
       실제 Ethernet을 통해 송신되는 것이 아니라 시스템의 IP입력 Queue에 저장시켜 IP수신 처리부에서 처리되도록
       되어 있으며 수신주소가 같은 시스템주소도 마찬가지이다. 수신주소가 Broadcast나 Multicast인 경우에도 역시
       동일 시스템의 IP입력 Queue에 저장된다.
       PING명령을 통한 특수목적 IP 기능을 이용하여 TCP/IP 소프트웨어가 제대로 설치되어 있는지 확인할 수 있다.
    - Telnet과 FTP서버의 사용권한 검사
       telnet 127.0.0.1
       ftp 127.0.0.1
     
  •  Subnet Mask 개요
    - Subnet이란 하나의 큰 네트워크를 작은 네트워크로 분리하는데 사용
    - Subnet은 host number를 이용하여 구성(즉, 해당 네트워크에 속할 수 있는 Host의 최대수는 감소)
    - Subnet은 local에서만 적용
    - 모든 IP Address에는 필연적으로 Mask가 뒤따른다.
    - Mask는 보통 Network와 Host를 구분하는데 사용
    - Mask의 등록은 Network bit와 subnet bit는 모두 1, Host bit는 모두 0
     
  • Subnet에 대한 차이점
    - Subnetting을 안하면 보통 IP Address에 대한 이용율이 극히 저조해진다.
    - Subnetting을 하면 Network을 다양하게 설계할 수 있다.
     
  • Subnet의 구조
    -
    C class를 전부 사용할 경우:  202.218.126.0    255.255.255.0 
     
    - C class를 64개씩 나누었을 경우 202.218.126.0 255.255.255.192

        

  • C Class host address를 subnet했을 때 network수와 host수

Host Address 8bit

Subnet값

Network수

Host수

1

0

0

0

0

0

0

0

128

2

128

1

1

0

0

0

0

0

0

192

4

64

1

1

1

0

0

0

0

0

224

8

32

1

1

1

1

0

0

0

0

240

16

16

1

1

1

1

1

0

0

0

248

32

8

1

1

1

1

1

1

0

0

252

64

4

1

1

1

1

1

1

1

0

254

128

2

1

1

1

1

1

1

1

1

255

158

0

   7

   6

   5

   4

    3

    2

     1

    0

 

2

2

2

2

2

2

2

2

  • Notation for Prefix Length(mask에 대한 새로운 표현방법)
    -Class A

    prefix length = 8

    host

     표시예)  10.0.0.0/8          -> 10.0.0.0 255.0.0.0

    -Class B

    prefix length = 16

    host

    표시예) 172.16.0.0/16      -> 172.16.0.0 255.255.0.0

    - Class C

    prefix length = 24

    host

    표시예) 192.168.10.0/24   -> 192.168.10.0 255.255.255.0

    - Subnet Mask에 대한 표현
       * 10.1.0.0/16     ->  10.1.0.0 255.255.0.0
       * 172.16.10.0/24  -> 172.16.10.0 255.255.255.0
       * 192.168.10.96/26 -> 192.168.10.96 255.255.255.192
    - Subnet을 하기위해 prefix가 늘어나는 방향은 오른쪽이며  class의 기본 prefix는 /8, /16, /24

  • Route Summaruzation & CIDR (Classless Inter-Domain Routing)
    - 라우팅 정보의 경감
    - Route aggregation or Supernetting이라고 불리기도 한다.
    - 연속적인 IP Address block을 한 개의 route로 집약함
    - Route Summaruzation : OSPF, EIGRP,RIP2에서 적용가능
    - CIDR : BGP4사용
     
  • Supernetting 사전지식
    - 최대 연속적인 하나의 IP address block은 0~255까지 256개의 짝수개로 구성됨.
    - 중간 block을 suppernetting 수행할 때 block의 첫 IP address의 바로 전 IP address가
       짝수개로 분류 되었는지 확인
    - 2의 n승(乘) 형태로 Supernetting 수행
     
  • 방법
    - Supernetting 수행은 prefix가 줄어드는 왼쪽방향

     prefix                        host

       ← prefix length ←

  • Supernetting 예
     

    172 .

    16 .

    168 .

    0

     

    10101

    000

    172 .

    16 .

    169 .

    0

     

    10101

    001

    172 .

    16 .

    170 .

    0

     

    10101

    010

    172 .

    16 .

    171 .

    0

     

    10101

    011

    172 .

    16 .

    172 .

    0

     

    10101

    100

    172 .

    16 .

    173 .

    0

     

    10101

    101

    172 .

    16 .

    174 .

    0

     

    10101

    110

    172.

    16 .

    175 .

    0

     

    10101

    111

    - IP address    172.16. 10101 0000.0
    - Netmask       255.255. 11111 000.0
    - Supernetting 172.16.168.0/21
     

  • VLSM(Variable Length Subnet Mask)
    - IP address를 효과적으로 이용. 즉, IP address 1개를 가지고 subnet을 다양하게 구성
    - 라우팅 프로토콜 종류에 따라 제한이 있음 : OSPF,EIGRP,RIP2에서는 적용 가능.
    - 예) C class 1개로 subnetting시  mask를 128(1) 64(2)로 할당하는 경우를 말한다.
       즉,126개의 host수용용 네트워크 1개와 62개의 Host를 수용하는 네트워크 2개를 만들 수 있다.

       
  • IP header format
     

     

     

    0

    4

    8

    16                                    31

    W
    o
    r
    d
    s

    1

    version
    4-bit
    header length
    4-bit
    TOS(type of service)
    8-bit
    total length in bytes
    16-bit

    2

    identification
    16-bit
    flags
    3-bit
    fragment offset
    13-bit

    3

    TTL(time to live)
    8-bit
    protocol
    8-bit
    header checksum
    16-bit

    4

    source IP address
    32-bit

    5

    destinaiton IP address
    32-bit

    6

    options
     
    data been hear
    - version: IP의 version, 현재 4
    - header length: 32-bit word의 개수. 일반적으로 5
    - TOS(Time Of Service): 서비스의 특성(신뢰,긴급,지연등)에 대해 언급한 필드로 거의 사용하지 않음
    • 3 bits: precedence field(요즘은 무시)
    • 4 bits: type of service
      1 _ _ _ : minimize delay
      _ 1 _ _ : maximize throughput
      _ _ 1 _ : maximize reliabilty
      _ _ _ 1 : minimize monetary
    • 1 bit: unused field, must be 0
    • 최근 TCP/IP 관련 장비들은 TOS를 지원하지 않는다.
    - total length:ip datagram의 값을 나타낸다,이 값을 사용하여 IP데이타그램의 데이터 사작부분을 알 수 있다.
       
    IP header + data
         
    - identification: datagram에 unique번호를 지정, 호스트에서 보내는 데이터그램 각각을 식별하기 위해서
                          데이터그램마다 유일한 값을 설정하는데 보통 데이터그램이 전송될 때마다 하나씩 증가한다.
    - flags: packet분할시 사용되는 flag
      * bit 0: resrved, must be zero
      * bit 1: (DF) 0 = may fragment, 1 = don't fragment
      * bit 2: (MF) 0 = last fragment, 1 = more fragment
      * 010 don't fragment (Dbit)
      * 001 more fragment (Mbit)
    - TTL: datagram이 network상에서 얼마동안 존재할 수 있는가를 나타낸다.
      * router가 datagram의 header를 처리할 때마다 1씩 감소
      * 0이 되면 source로 error message전송
      * datagram은 network상에서 영원히 떠돌 수 없다.

    - protocol 예

       0 : reserved     1 : ICMP        6 : TCP  
       8 : EGP          9 : IGRP       14 : telnet
      17 : UDP         88 : EIGRP      89 : OSPF
       
  • IP Header를 sniffer로 분석한 화면
     
  • Direct Delivery
    - 같은 network상에서 packet 전달, router를 통한 연결을 포함하지 않는다.
     
  • Indirect Delivery
    - router로 연결된 network 사이의 전송
    - router는 destination network를 향해 datagram 전송
     
  • Default Router
    - routing table에 없는 destination은 이 router로 보낸다.
     
  • Host Forwarding
    - 특별한 destination에 특정 router를 지정
    - 제어와 보안이 목적
  • Header checksum
    - IP 헤더에 대해서만 checksum 계산을 하는데 헤더에 연결되는 데이터 부분에 대해서는 계산하지 않는다.
      이는 상의계층의 ICMP,IGMP,TCP,UTP 모두가 자신의 헤더에 checksum을 갖고 있으며, 이 checksum이
      각각의 헤더와 데이터 부분을 포함하여 계산하기 때문이다


Chapter 4 ARP(Address Resolution Protocol)

  • 관련 표준
    - RFC 826
  • 물리적 네트워크에서 두 개의 노드는 서로 physical address를 알아야만 통신이 가능하다. Ethernet address 48bits는 제조업체에서 지정되어 생산되며 중복되지 않는다.
  • 자료를 전송하려 하는 상대방의 IP address는 알고 MAC address는 모를 경우 이 protocol을 이용한다.
  • 두 개의 operation이 존재
    -
    Request: Hardware address를 요청(모든 노드로 전송되지만 router에 의해서는 전송되지 않는 recall)
    -
    Reply: Destination이 hardware address를 전송  
  • ARP packet format

ethernet DA

6
ethernet SA

6
frame type

2
ethernet header
hardware type

2
protocol type

2
hard size

1
protocol size

1
operation
 code

2
sender ethernet address
6
sender IP
address
4
target ethernet address
6
target IP address

4
28 bytes ARP request/reply

crc


4

FCS

  • ARP packet format 설명
    - Ethernet DA(destination address) : MAC address, 모두 1이면 broadcast
    - Ethernet SA(source address) : MAC address
    - Frame type : 연속되는 data의 type을 지정 
                         ARP request/reply = 0x0806 
                         RARP request/reply = 0x8035
    - Hardware type : hardware address의 type, (Ethernet=1, IEEE802.3=6, Localtalk=11, Frame-relay=15)
    - Protocol type : mappin g되는 protocol address의 type 
                             IP addr = 0x0800
    - Hardware addr size :hardware address의 byte size를 기술  (ethernet=6)
    - Protocol addr size :protocol address의 byte size를 기술  (ethernet=4)
    - Operation : ARP request=1, ARP request=2,  RARP request=3, RARP request=4
    - Senser Ethernet/IP address : 송신측 hardware/IP주소. ARP reply packet의 경우, 질의했던 통신국의 IP주소
    - Target Ethernet/IP address : 수신측 hardware/IP주소. ARP request frame의 경우, Target IP주소 영역에 질의
       할 통신국의 IP주소가 수록되며, Target Ethernet영역은 비어 있다.

  • ARP request packet을 sniffer로 분석한 화면

     
  • ARP reply packet을 snniffer로 분석한 화면

     
  • ARP Features
    - 통신비용을 절감하기 위해 ARP를 사용하는 HOST는 최근 처리된 Internet-to-Ethetnet Mapping을 cache에
       보관하여 ARP를 반복하여 사죵하지 않도록한다. 이때 점검 커지는 cache를 유지하기 위해 일정기간 사용되지
       않는 entry를 제거한다.
    - 부가적인 Network traffic은 packet내에 Internet-to-Ethernet binding을 포함한 ARP Request의 initiator를
       갖음으로 해서 피할 수 있고, 따라서 Recipient는 이 mapping을  cache에 추가할 수 있다. 초기 ARP를 받고
       sender의 Internet-to-Ethernet mapping을 알아내 cache에 저장한다.
    - 새 Host가 Neteork에 나타나거나 기존 Host의 OS가 Reboot될 수 있다. 모든 device는 새 노드가 첫 번째 ARP
       request를 broadcast할 때 그 Internet-to-Ethernet을 빨리 인식하여 cache에 저장한다. 새 노드의 mapping은
       모든 device의 cache에 저장된다.
    - ARP의 기능은 logical internet address를 대응되는 physical hardware address로 변환.
    - ARP는 broadcase(all=1)로 모든 host를 call하는
    request 후 send host의 IP address와 그에 대응되는 hardware    address를 보내는 reply로 구성.

  •  ARP cache
    - ARP의 효과적인 운영을 위해 host는 ARP cache를 유지, 운영.
    - 이 cache는 최군에 mapping된 IP와 hardware address를 관리.
    - 일정시간(15분을 기본값으로 사용)이 지나면 cache내의 내용 소멸.
    - ARP cache table

    프토코콜 종류(IP)

    프로토콜주소 (IP주소)

    하드웨어주소

    인터페이스번호

    타임 스템프

     

     

     

     

     

  • ARP 실행 예 
     

    - ARP cache가 비어있음을 확인하고,  pweb.dacom.net서버에 접속한 다음 끊어 보았다.
    - Sender  Ethernet address와 IP영역에 바로 문의 했던 그 IP주소가 실려있다. Target Ethernet과 IP주소 영역은
       의미가 없음을 알 수 있다.
     
  • proxy ARP
    Subnet을 인식하지 못하는 호스트와 subnet을 인식하는 다른 호스트가 공존할 수 있도록 하기위해 broadcast
    전송 네트워크에 사용된다.
    proxy ARP는 router가 한쪽 편에 있는 host request에 대해 다른 편의 host를 대신하여 응답.
    ARP를 요청한 host의 destination의 host와 같은 segment에 없으면 일단 router가 자신의 MAC address를
    대신 전송한다.
     
  • gratuitous ARP
    어떤 host가 자기 자신의 IP address에 대해 ARP request를 송신. 여기에 대한 답이 오면 자기 자신과 같은 IP
    address를 누군가 쓰고 있는 것이므로 IP address의 중복사용을 막는다.

     
  • ARP 요청이 수신되었을 때 Packet 처리절차
    ①나는 ARP request packet의 hardware종류를 알고 있는가?         Yes면 다음으로 No이면 삭제.
    ②ARP request packet의 하드웨어길이(HLen)을 검사한다.(생략할 수도 있다)
    ③나는 ARP request packet의 프로토콜을 처리할 수 있는가?         Yes면 다음으로 No이면 삭제.
    ④ARP request packet의 프로토콜길이(PLen)을 검사한다.(생략할 수도 있다)
    ⑤ARP처리를 제어하기 위해 Merge_flag를 false로 설정한다.
    ⑥ARP cache에 (프로토콜종류,송신자 프로토콜 주소)가 있는가?   이미 있으면 항목의 송신자 하드웨어 주소
       필드를 패킷의 새 정보로 갱신하고 Merge_flag를 true로 설정한다.  아니면 다음으로 단계로 넘어간다.
    ⑦나의 주소가 대상 IP주소 필드의 것과 같은가?     Yes면 다음으로 No이면 삭제.
    ⑧Merge_flag가 false인지 확인한다. Merge_flag가 false이면 (프로토콜 종류,송신자 프로토콜 주소,송신자
       하드웨어 주소)를 변환테이블에 추가한다..
    ⑨작동(operation code) 필드에 ARP요청으로 나타나는가?        Yes면 다음으로 No이면 삭제.
    ⑩하드웨어 필드와 프로토콜 필드를 맞바꾸어 지역 하드웨어와 프로토콜 주소를 송신자 필드에 넣는다
       작동 필드를 ARP reply(응답)으로 설정한다. 패킷 요청을 수신한 것과 같은 하드웨어의 (새)대상 하드웨어
       주소에 보낸다.
       * 순서는 1)ARP packet의 출발지 주소와 대상주소필드를 맞바꾼다.
                   2)작동필드를 ARP응답으로 설정한다
                   3)ARP packet을 다시 송신자에게 보낸다.

       
  • IP주소와 MAC address의 관계

                ----------|--------- --------|----------
               pc2                     B        E1         Router              E0        A                   pc1


    - address예시

     구     분

    pc1

    Router E0

    Router E1

    pc2

    MAC address

    M1

    M2

    M3

    M4

    IP address

    T1

    T2

    T3

    T4

    - pc1에서 pc2로 패킷을 보낸 경우 A에서 본 패킷 구조

    Destination MAC

    Source MAC

    Destination IP

    Source IP

    Data

    M2

    M1

    T4

    T1

    111000111000

    - pc1에서 pc2로 패킷을 보낸 경우 B에서 본 패킷 구조

    Destination MAC

    Source MAC

    Destination IP

    Source IP

    Data

    M4

    M3

    T4

    T1

    111000111000

  • ARP관련 오류 및 Broadcast storm
    - 단말의 IP주소가 중복된 경우

                                                          (그림 A)
                                                         Host Server IP 211.32.55.66
                                                                               (cache 211.32.55.70=PC1)
             ARP request① ARP reply  
                                                                  
                           PC1  IP 211.32.55.70                   PC2  IP 211.32.55.70
                           (cache 211.32.55.66=Host)

     1) PC1번과 Host간 연결 설정후 상태에서 Host Server의 ARP cache에는 PC1번의 정보인 IP 211.32.55.70=PC1
        이 기록되어 있고 단말의 ARP cache는 Host server IP인 211.32.55.66=Host의 정보가 기억되어 있다.
       * 그림A 의 ①②의 과정이 수행된 상태
     2) 또 다른 단말인 PC2가 동일한 IP 주소인 211.32.55.70을 사용하는 경우 PC1의 연결이 끊어질 수 있다.
         즉, PC1에서 Host server와 데이터 전송중, 동일 IP주소인 PC2의 ARP request packet에 의해 Host의 cache
         내용이 211.32.55.70=PC2로 변경되어 버린다.
       * 그림B 의  ③④의 과정이 수행된 상태
     3) 이를 모르는 PC1 이 Host에 TCP 데이터를 송신하면, Host는 이에대한 TCP응답을 PC2로 보내면 PC2는 데이터
         를 폐기하게 된다.
     4) PC1은 ACK time시간내에 TCP ACK가 도착하지 않아 연결을 종료하고 다시 ARP request를 보내게 되면 이같은
        현상은 계속 반복되게 되게 된다.
       
                                                          (그림 B)
                                                         Host Server IP 211.32.55.66
                                                                               (cache 211.32.55.70=PC2)
                                               ARP reply④   ③ARP request
                                                                  
                           PC1  IP 211.32.55.70                   PC2  IP 211.32.55.70
                           (cache 211.32.55.66=Host)         (cache 211.32.55.66=Host)



    - 단말과 서버의 IP주소가 같은 경우

                                                          (그림 C)
                                                          Host Server IP 211.32.55.66
                             ARP request   
                                       ARP request       
                           PC1  IP 211.32.55.70                   PC2  IP 211.32.55.66
                   

      * 단말 PC1 이 Host server와의 접속을 위해 ARP request를 송신할 때, 엉뚱하게 다른 단말 PC2의 주소를
        응답받을 수 있기 때문에 이 경우 연결시도가 실패한다.
       (물론 서버로부터 정상응답을 받을 수도 있는데. 이때는 정상적인 연결이 됨)
      * PC2의 전원이 꺼지면 PC1은 항상 서버와의 연결에 성공한다.
      * 이처럼 연결이 되다가, 안 되다가 하는 문제는 대부분 기존장비의 IP주소를 불법으로 도용해서 사용하기 때문에
        발생하는 경우가 많다.

    - ARP Broadcast storm
     * 브릿지로 연결된 망에서 전체적인 정전이 발생한 다음, 시스템이 다시 활성화되는  경우에는 모든 시스템의 ARP
       cache가 비게되므로 ARP 트래픽의 발생이 급증한다.(ARP packet은 Bridge를 모두 통과하기 때문).

     * 이처럼 전체 망에 ARP packet이 증가하여 망의 성능을 일시적으로 저하시키는 현상을 Broadcast storm이라 함.

     *  

Chapter 5 RARP(Reverse Address Resolution Protocol)

 

  • 관련표준
    - RFC 903
  • 자료를 전송하려 하는 상대방 혹은, 자신의 MAC address는 알고 IP address는 모를 경우 이 protocol을 이용한다.
  • Disk가 없는 경우 host는 tcp/ip를 사용, 자신의 IP주소를 찾기 위해 서버와 접속해서 IP address를 얻어온다.
  • Host가 자신의 IP address를 알게 되면, 메모리에 저장한다.
  • RARP는 반드시 하나 이상의 서버가 있어야 하며, 같은 segment내에 있어야 한다.
  • Router를 통새 다른 network로 forwarding되지 않는다.(밖으로 나가지 않는다.)
     
  • RARP packet format (Arp와 동일하다)

     
    ethernet DA

    6
    ethernet SA

    6
    frame type

    2
    ethernet header
    hardware type

    2
    protocol type

    2
    hard size

    1
    protocol size

    1
    operation
     code

    2
    sender ethernet address
    6
    sender IP
    address
    4
    target ethernet address
    6
    target IP address

    4
    28 bytes ARP request/reply

    crc


    4

    FCS

    hardware type: RARP request/reply = 0x8035
    operation: RARP request = 3, reply = 4

 

  • RARP operation
    디스크가 없는 노드가 서버로부터 Internet adress를 받기위해 사용하는 protocol을 RARP라고 하였다.
    이 protocol은 ARP protocol을 번역하여 만든 것으로 ARP와 동일한  message format을 사용하며 ARP message
    처럼 RARP message는 Ethernet frame의 data부분에 encapsulate되어 한 노드에서 다른 노드로 전송된다.
  • RARP storm
    하드웨어 링크 결함 때문에 또는 RARP 서버가 종료되어 RArp 서버를 사용할 수 없으면 RARP client는 boot할 수
    없게 된다. 이때 RARP client는 RARP broadcast request를 계속 보내게 된다. 동시에 RARP broadcast request
    client가 많으면, 네트워크 통신량의 부하가 커지면 생기는 현상이다.
     

 Chapter 6 ICMP(Internet Control Message Protocol)

  • 관련 RFCs
    - RFC792 : 인터넷 제어 메시지 프로토콜
    - RFC950 : 인터넷 표준 서브넷화 절차
    - RFC1812 : IPv4 라우터 요구사항 :유형 13,14,15에 수록
    - RFC1122 : 인터넷 호스트요구사항-통신계층
    - RFC1256 : ICMP 라우터 발견 발견 메시지
    - RFC1191 : 경로 MTU발견
     
  • Router가 경로설정을 할 수 없는 경우나 data를 전달할 수 없는 경우가 발생됐을 때, router는 network상의 문제를 피하거나 복구하도록 source host에 ICMP를 이용해 통보한다.
  • Router와 host간의 제어 또는 오류정보를 서로 통신하는 방식을 설명한다.
  • ICMP서비스 종류
    - 반향 : IP노드의 진단도구
    - 목적지 미도달 : 목적지 IP 노드에 도달하지 않았다는 것을 나타내기위해 사용
    - 출발지 억제 : 출발지 집중문제를 나타내기 위해 사용
    - 재지정 : 대체 경로를 알리기 위해 라우터에 사용
    - 시간 초과 : IP header TTL field 값의 만료를 나타내기 위해 사용
    - 매개변수 문제 : IP datagram문제를 나타내기 위해 사용
    - 타임 스템프 : 인터넷에서 시간을 재기 위해 사용
    -주소 마스크 : 네트워크의 서브넷 마스크 정보를 입수하기 위해 사용
     
  • Type code

    Type

    ICMP message

    Type

    ICMP message

    0

     반향 응답

    13

     타임스템프 요청

    3

     목적지 미도달

    14

     타임스탬프 응답

    4

     출발지 억제

    15

     정보 요청

    5

     재지정

    16

     정보 응답

    8

     반향 응답

    17

     주소마스크 요청

    11

     시간 초과

    18

     주소마스크 응답

    12

     비지능적 매개변수(IP)

     

     

  • ICMP format

IP header
20 bytes
ICMP message
n bytes
 
type
1 byte
code
1 byte
checksum
2 byte
type과 코드에 관련된 내용들
m bytes
IP datagram

  • ICMP format 설명
    - type : message를 구별
    - code : message유형에 대한 추가정보
    - hecksum : ICMP message에 대한 checksum
    - message : type과 code에 연관된 내용
  • iCMP echo frame을 sniffer로 본 화면
  • ICMP echo reply를 sniffer로 본 화면
     
  • 정상적으로 echo reply가 이루어 졌을 때 win98 명령어창에서 확인되는 화면
    - 정상인 경우
    - 비정상인 경우 : 장애발생
  • Destination Unreachable Message

type(3)
1 byte
code(0-15)
1 byte
checksum
2 bytes
unused (must be 0)
4 bytes
IP header + fist 64 bits of original IP datagram data
 

    - type
      3
    - code
      0 = network unreachable  
           * IP 목적지 주소에 지정된 네트워크가 없을 때(라우터에서만 생성,경로설정 실패)
      1 = host unreachable  
           * 데이터그램이 라우터에서는 성공적으로 전달되었지만 마지막 라우터가 호스트와 통신 불가
           * 발생이유 : 호스트종료,구성오류,IP설정오류,(목적지네트워크에 직접 연결하는 라우터에서 생성)
      2 = protocol unreachable
           * 데이터그램이 목적지 호스트에 도착했지만 IP데이터그램이 운반하고 IP헤더의 프로토콜 필드로
              식별된 상위 프로토콜을 사용할 수 없다는 뜻
           * TCP/IP 호스트에서 구현되는 공통의 상위 프로토콜은 TCP,UDP,OSPF임.
           * IP header의 프로토콜 ID를 이용해 사용가능여부를 확인하여 문제를 해결할 수 있다.
      3 = port unreachable
           * 지정된 운반계층 프로토콜(TCP,UDP)이 데이터그램을 개별화할 수 없고 송신자에게 알릴 수 있는
              다른 프로토콜 메커니즘을 가지고 있지 않을 경우 생성(ex: 서버의 데몬등)
      4 = fragmentation needed but DF bit set
           * 네트워크 인터페이스의 MTU size가 datagram의 크기보다 작기 때문에 datagram을 발생해야 하는
             라우터가 생성.그러나 datagram IP header에 DF flag가 1로 설정되면 라우터는 datagram DF할수 없다
           * DF flag는 TFTP 파일전송을 수행하는 디스크없는 WS이 시스템 부트 메시지 다운로드를 위해 1로 설정
      5 = source router failed
           * IP출발지 경로 옵션을 사용하는 IP datagram에 대해 라우터에서 생성,  라우터는 datagram삭제
      6 = destination network unknown
           * 라우터가 경로 설정표에서 목적지 네트워크를 알 수 없다는 것을 탐지 했을 때 생성.
      7 = destination host unknown
           * 라우터가 네트워크 인터페이스에 있는 데이터링크층 소프트웨어를 통해 목적지 호스트가 없다는 것을
              탐지 했을 때 라우터에서 생성
      8 = source host isolated(not used)
           * 라우터가 나머지 네트워크에서 호스트가 격리된 것을 탐지하면 생성, RFC1812에서 사용못하도록 함.
      9 = destination network administratively prohibited
            * 목적지 네트워크와의 통신이 관리상 금지됨.
      10 = destination host administratively prohibited
            * 목적지 호스트와의 통신이 관리상 금지됨
      11 = network unreachable for TOS
            * 라우터에서 경로 설정테이블의 경로가 요청한 ToS값 또는 기본 ToS와 일치할 수 없기 때문에
               datagram을 발송할 수 없을 경우 생성
      12 = host unreachable for TOS
            * 목적지 호스트에 도달할 수 없을 경우(code 11과 유사)
      13 = communication administratively prohibited by filtering
            * 통신 방화벽 때문에 관리상 금지됨.
      14 = host precedence violation
            * 호스트 우선권 위반(송신자 호스트에 대한 첫 번째 홉 라우터가 생성)
      15 = precedence cutoff in effect
            * 우선권 효력이 차단됨(라우터에서 우선권을 낮게 보낸 datagram을 삭제하고 송신자에게 보낸 MSG)
  • Time Exceeded Message

type(11)
1 byte
code(0/1)
1 byte
checksum
2 bytes
unused (must be 0)
4 bytes
IP header + fist 64 bits of original IP datagram data
 

    - type
      11
    - code
      0 = time to live(TTL) equals 0 during transit
      1 = time to live(TTL) equals 0 during reassembly

 

  • Source Quench Message
    중간에 있는 router의 buffer가 꽉 차서 더이상 자료를 받을 수 없을 때 자료를 보내는 source host에 보내는 message.

type(4)
1 byte
code(0)
1 byte
checksum
2 bytes
unused (must be 0)
4 bytes
IP header + fist 64 bits of original IP datagram data
 

    - type
      4
    - code
      0
       

type(5)
1 byte
code(0-3)
1 byte
checksum
2 bytes
router IP address that should be used
4 bytes
IP header + fist 64 bits of original IP datagram data
 

    - type
      5
    - code
      0 = redirect for networks
      1 = redirect for host
      2 = redirect for type of service and network
      3 = redirect for type of service and host

type(0/8)
1 byte
code(0)
1 byte
checksum
2 bytes
identifier
2 bytes
sequence number
2 bytes
optional data
 

    - type
      0 = echo reply (ping reply)
      8 = echo request (ping request)
    - code
      0

  

Chapter 7 ping & traceroute

  • ping
    - Chapter 6의
    Echo Request and Echo Reply Message를 참조.
    - 다른 host와의 접속여부 시험.
    - ICMP echo request message(8)를 host에 보내고
    - ICMP echo reply(0)로 응답.
    - Round-trip Time(RTT)을 측정.
  • ping message

type(0/8)
1 byte
code(0)
1 byte
checksum
2 bytes
identifier
2 bytes
sequence number
2 bytes
optional data
 
 

  • identifier field set함으로써 응답시 보낸 것에 대한 올바른 답인지 확인.
  • sequence number는 0부터 시작하여 증가. 응답되는 packet에 복사된다.
  • 일반적으로 ping이 되지 않으면 telnet, ftp 불가능. 즉, telnet은 되지 않아도 ping은 가능하다.
  •  PING 명령을 이용한 장애진단방법
    PING 유틸리티를 이용하여 네트웍에 이는 다른 디바이스에게 문의하여 IP 디바이스가 작동중인지 패킷이 그 디바
    이스에 도달하는데 얼마나 걸리는지를 결정할 수 있다. 이 유틸리티는 IP 디바이스간에 연결이 제대로 이루어지지
    않음으로써 문제가 발생할 경우 첫단계로 사용할 수 있는 유틸리티이다. PING 유틸리티는 네트웍에서 테스트를
    수행하기 위하여 Internet Control Message Protocol(ICMP) 에코 패킷을 사용한다.

    - PING 유틸리티를 올리기 위하여 다음과 같은 구문을 사용한다:

      PING [-t] [-a] [-n count] [-l size] [-f] [-I TTL] [-v TOS] [-r count] [-s count] [[-j host-list]
              [-k host-list]] [-w timeout] destination-list


    -파라미터에 대한 설명은 다음과 같다:

      -t : 이 파라미터는 호스트를 연속적으로 핑할 경우 사용한다. (네트웍에 과부하가 걸지지 않도록 주의한다.)
            이 테스트를 멈추려면 C를 누른다.

      -a : 이 파라미터를 이용하여 주소를 호스트 이름으로 풀어낸다.

      -ncount : 이 파라미터는 에코 요구를 몇 개 보낼지 결정하기 위하여 사용한다.

      -lsize : 이 파라미터는 핑 패킷의 크기를 결정하기 위하여 사용한다.

      -f : 이 파라미터는 패킷에 Don’t Fragment flag를 설정하기 위하여 사용한다. 이 플래그는 패킷이 목적 디바이스에
            완전히 전달되도록 보장한다. 만일 이 플래그가 설정되어 있다면 라우터는 더 작은 패킷을 지언하는 매체를
            통과하기 위하여 조각으로 나뉠 수 없다. 만일 라우터에 그러한 매체가 포함되어 있다면 라우터는 그 패킷을
            버리고 송신자에게 ICMP 목적지에 도달할 수 없음을 통보한다.

      -iTTL : 이 파라미터는 Time To Live(TTL) 플래그를 설정하기 위하여 사용하며, 이는 패킷이 통과할 수 있는 라우터
                (홉)의 개수를 나타낸다. 돌아다니는 ICMP 에코 패팃의 거리를 제한하려면 TTL에 작은 값을 주어야 한다.

      -vTOS : 이 파라미터는 Type Of Service(TOS) 플래그를 설정하기 위하여 사용한다. 만일 네트웍이 TOS를 지원
                   하도록 구성되어 있다면 그러한 연결을 테스트하기 위하여 PING 유틸리티가 특정 유형의 서비스를 사용
                   하도록 할 수 있다.

      -rcount : 이 파라미터는 목적 IP 디바이스에 이르는 홉 개수를 기록하기 위하여 사용한다.

      -scount : 이 파라미터는 홉에 시간도장을 찍기 위하여 사용한다.

      -jhost-list : 이 파라미터는 호스트 목록을 따라 소스 경로를 테스트하기 위하여 사용한다. 이 테스트는 패밋이
                       목적지에 도달하기 위하여 반드시 거쳐야 하는 특정 디바이스를 지정한다. 이 테스트는 정확한 경로를
                       지정하지는 않으며 다른 디바이스가 포함될 수도 있다.

      -khost-list : 이 파라미터는 호스트-목록에 따라 정확한 소스 경로를 테스트하기 위하여 사용한다. 이 테스트는
                        패킷이 목적지에 도달하기 위하여 반드시 거쳐야 하는 모든 디바이스를 지정한다. 패킷은 다른
                        디바이스를 통과할 수 없다.

      -wtimeout : 이 파라미터는 타임아웃을 밀리초(milliseconds)로 설정하기 위하여 사용한다. 타임아웃은 IP 디바
                        이스가 응답을 얼마나 오래 기다릴 것인지 결정한다.

    * 만일 디바이스가 네트웍 통신에 문제가 있다면 DOS 프롬프트에서 다음의 명령을 입력한다:   PING 127.0.0.1
      127.0.0.1이란 주소는 loopback 주소이다. 이 명령이 입력되면 디바이스는 자신의 TCP/IP 스택을 핑한다.
      만일 디바이스가 자신의 TCP/IP 스택을 볼 수 없다면, 그 디바이스는 네트웍에서 통신할 수 없다.

  • ping명령어를 이용한 장애분석 사례
    - 정상인 경우


    - 비정상인 경우(회선/network장애)
     
  • traceroute
    경로상에 있는 각 라우터에 ICMP echo 메시지를 보내어 이에대한 응답을 확인함으로써, 경로상의 라우터의 존재
    및 지연시간을 검사해보는 것이다.

    - host에서 다른 host로의 datagram의 흐름(route)을 표시.
    - ICMP와 IP header내의 TTL(time to live)를 이용.
    - traceroute에 사용되는 ICMP는 type 11의 Time Exceeded Message, type 3의 Port Unreachable Message.

    1. traceroute가 IP datagram을 destination에 전송할 때

      - TTL = 1
      - UDP port number를 30,000이상으로 지정
    2. 최초 router
      - TTL = 1이므로, datagram을 폐기
      - ICMP는 Time Exceeded Message를 source로 전송
    3. traceroute
      - ICMP를 응답한 router를 알아낸 후
      - TTL = 2로 바꾸어 destination으로 재전송
      - 이런 식으로 계속 진행
    4. destination에서 TTL = 1로써 전송완료
      - ICMP는 UDP port number로 Port Unreachable을 전송
    5. traceroute는 마지막으로
      - destination router IP도 전송받음
    6. traceroute message화면
      - 매번 IP datagram을 같은 TTL로 3회 전송, 이에 대응되는 RTT를 보여준다.
      - RTT는 5초가 지나면 *(asterisk)로 보여준다.

       

Chapter 8 IP Routing - Static Routing

  • Routing mechanism (IP가 routing table을 찾는 순서)
    1. 일치하는 host address
    2. 일치하는 network address
    3. default route 경로
     
  • Routing policy
    - 최상의 경로를 어떻게 선택하여 routing table에 적느냐를 결정하는 규칙
     
  • Direct route
    - destination IP address + link layer/Hardware MAC address
     
  • Indirect route
    - destination IP address + router MAC address
    - destinaiton이 해당 network segment에 없을 때.
     
  • Building Routing Table
    • Routing table에 정보를 써 넣는 방법에 따라
      - manual entry: initialization file
      - dynamically: 작동중인 interface를 통해
    • Routing table정보산출 방법에 따라
      - static routing: booting 시 결정. 아주 단순하지만 network topology변화에 융통성이 부족하다.
      - dynamic routing: 프로그램에 의해 자동으로 update. 부가적인 protocol을 요구하지만, network변화 및 고장에도 작업이 가능.
       
  • Routing table의 내용
    - destination host IP address or network address(net ID)
    - router IP
    - default router
    - subnet mask
    - router의 상태(up/down)
    - destinaiton까지의 거리(hop 수)
    - direct/indirect route여부
    - 경로로 보내지는 packet 수
    - redirect여부
    - 사용되는 protocol 표시(ex. ethernet, fddi...)
    - 최근 update후 변경한 시간(aging term)
     
  • ICMP Redirect Error Message
    - host는 IP datagram을 R1(host의 default router)으로 송신
    - R1은 이 IP datagram이 R2를 거치면 자신을 거쳐 가는 것보다 목적지까지 더 빨리 갈 수 있다고 판단하여 R1은 IP datagram을 R2로 보내고, host에 ICMP Redirect Error Message를 송신한다.
    - host의 routing table을 변경한다.
    - 이후의 IP datagram은 R1대신에 R2로 송신된다.
 

Chapter 9 IP Routing - Dynamic Routing

  •   Dynamic Routing
    - 인접한 router들간에 자신이 연결된 network상태에 대한 정보교환
    - Routing policy 추가
      1) multiple경로, 보다 나은 경로를 선택
      * static routing은 multiple경로가 되지 않는다.
      2) 최상의 경로가 down시 즉시 다른 경로를 선택
       
  • Autonomous System
    - internet은 AS(Autonomous System)의 모임으로 구성
    - 한 조직이 다른 AS와 통신하기 위해서는 유일한 AS번호를 InterNIC으로부터 할당받아야 한다.
    - AS들간의 network(EGP; Exterior Gateway Protocol): GGP, EGP, BGP
    - AS내의 network(IGP; Interior Gateway Protocol): HELLO, RIP, OSPF, IGRP, EIGRP, IS-IS
     
  • Routing Metrics
    1) Vector-Distance Protocol
      - 구현이 용이
      - 경로설정을 위해 end-to-end hop count사용
      - 개선된 기능은 weighted hop counts설정으로 지원
        high-speed lan의 weight = 1
        low-speed lan의 weight = 10
      - 대표적인 protocol로 RIP과 IGRP 등이 있다.
      - Vector-Distance Algorithm
        1) metrics값을 기초로 전체적인 경로 결정
        2) 각각의 router로부터 next hop routing table과 거리등에 대한 정보 수신
        3) router들은 주기적으로 topology정보를 broadcast
        4) 다른 router들은 이들 정보를 기초로 routing table을 update

        * 주기적으로 정보가 교환되므로 router가 많은 network에서는 회선에 부하를 줄 수 있어 좋지 않다.
        * RIP는 60초마다, IGRP는 90초마다 자기와 연결된 network정보를 인접한 router에게 전달한다.
         

    2) Link-State
      - 구현이 복잡
      - 전체 cost는 시작점부터 각path에 대한 link의 합, 이를 토대로 traffic을 전달하는데 최상의 path선택.
      - 주기적으로 정보교환하는 것이 아니라 router의 추가, 삭제 등 topology가 변화됐을 때만 정보교환한다. 모든 path에 대해 재계산(dynamic route)
      - OSPF와 IS-IS 등이 대표적인 protocol
      - Link-State Algorithm
        Shortest Path First(SPF)와 같은 개념.
        한 node에서 다른 node로 가는 가장 짧은 길을 계산.
        Djikstra's algorithm 적용: 단일 source로부터 모든 목적지에 대한 최단경로를 계산
         
  • RIP (Routing Information Protocol)
    - simple distance vector routing algorithm
    - total metrics = hop cost의 합, 제일 작은 값 선택
    - 간단하고 사용하기 편하다. 간단한 topology로 구성된 network에 적합
    - RIP message는 UDP datagram을 통해 전달, UDP port 520 사용
     
    IP header
    20 bytes
    UDP header
    8 bytes
    RIP message
     
    UDP datagram
    (RIP message size; UDP header 포함, 512 bytes)
    IP datagram
    - RIP message format
     
    command(1-6)
    1 byte
    version(1)
    1 byte
    (must be zero)
    2 bytes
     20 bytes
    address family(2)
    2 bytes
    (must be zero)
    2 bytes
    32-bit IP address
    4 bytes
    (must be zero)
    4 bytes
    (must be zero)
    4 bytes
    metric(1 - 16)
    4 bytes
    ~ 20 * 24 bytes
     
    위의 20 bytes와 똑같은 format으로 24개 더 경로를 지정가능
    - command
      1 = request
      2 = reply
      3 = trace on(not used)
      4 = trace off(not used)
      5 = reserved
      6 = reserved
    - version
      1, (RIP2 = 2)
    - address family
      IP address = 2
       
    - 복잡한 network에 적용시 문제점 발생
      * maximum metric = 15, 16은 접속불가
      * LAN의 속도를 고려하지 않아 무조건 한 hop의 cost = 1. 즉, FDDI가 dial-up보다 훨씬 빠름에도 불구하고 모두
         cost = 1
      * 30초마다 정보가 교환되므로 network붕괴 후 복구에 많은 시간 소요.
      * traffic의 load balancing불가
      * routing table경로 변경 후 특정 경로의 down으로 loop되는 현상이 생길 수 있다.
      *subnet mask를 지원하지 않는다.

    - 더이상 경로를 사용할 수 없는 경우
      * 목적지로 가기 위해 경유되는 router가 사용될 수 없음을 통지, 즉 hop count = 16
      * 목적지 경로상의 router로부터 3분 동안 추가정보를 받지 못하는 경우, 경유되는 router의 hop count = 16으로
         mark. 2분 내에 복구되지 않으면 routing table에서 삭제.

    - RIP의 문제점 해결
      *triggered update : router가 경로값(metric)의 변경시마다 즉시 통보
      * hold down : 일정시간 동안 metric=16 (unreachable destination)에 대해서는 새로운 경로로 update하지 않음.
      * split horizon : router A에서 router D를 거쳐 Network N으로 가는 경로에서 D와 N사이에 link down이 발생했을
         때 loop가 발생할 수 있다. 이를 해결하기 위해 D가 A에게 보낸 link down에 관한 정보를 A가 다시 D에게 보내지
         않는다.
      * poisoned reverse : 위와 같은 경우가 발생했을 때 router A는 next hop에 있는 router D에게 router D 이후의
         경로(N)에 대해 metric = 16으로 정보를 보낸다.
     

  • RIP2
    - RIP의 문제점 보완
    - subnet mask 지원
     
  • IGRP (Internet Gateway Routing Protocol)
    - CISCO 장비의 protocol
    - Vector-Distance Protocol의 하나
    - 각 경로마다 많은 인수를 취해 공식을 이용해 경로 계산(metrics값 계산)
      * Delay
        . 단위는 10 microsecond
        . network상에서 load가 없을 때 1bit가 목적지에 도달하는 데 걸리는 시간
      * Bandwidth : path상의 가장 작은 bandwidth(kbit/sec)
      * Load : path의 bandwidth에서 현재 사용되고 있는 비율(0 - 255), 255=100%
      * Reliability : 손상되지 않고 도착한 datagram의 비율(0 - 255), 255=100%
      * MTU
       . path상의 모든 link를 통해 전달될 수 있는 가장 큰 MTU

       . 다른 AS번호 사이의 routing도 지원
       . Layer 3의 IP datagram을 통해 전달(protocol type = 09)
       . RIP과 마친가지로 주기적으로 broadcasting
       . subnet mask 지원 않음
     

  • EIGRP (Enhanced Gateway Routing Protocol)
    - CISCO 장비의 protocol
    - subnet mask지원
    - IGRP와 같은 metrics공식 이용
    - Layer 3의 IP datagram을 통해 전달(protocol type = 88)
     
  • OSPF (Open Shortest Path First)
    - link-state path와 distance metric이용
      * map을 제작하고
      * 이 map으로부터 path를 만들고
      * path마다 값을 지정
      * 최적의 path를 선택

    - multicast사용
    - subnet mask, supernet mask 지원
    - Area Routing

    - router는 자기가 속해있는 area에 관해서만 topology와 metric에 대한 자세한 정보를 파악
    - 한 area 안에 있는 모든 OSPF router는 동일한 routing database를 유지
    - backbone과 각 area는
    border router로 연결
    - 다른 backbone의 area와 연결하는 router는 boundary router
     

  • EGP (Exterior Gateway Protocol)
    - AS가 사용하는 간단한 protocol
    - AS로 이웃해있는 EGP router는 접근할 수 있는 network정보를 교환
    - Layer 3의 IP datagram을 통해 전달(protocol type = 8)
     
  • BGP (Border Gateway Protocol)
    - EGP를 대체해 가장 널리 사용
    - TCP well-known port 179사용
    - TCP connection을 유지하면서 필요시 router update정보 교환
    - 주기적으로 30초마다 상대방이 살아있는지 Keep-alive message교환
    - Internal BGP connectoin: AS 안에서의 연결
    - External BGP connection: 다른 AS간의 연결
     

  IP Routing별 비교

 구   분
IGP
EGP
HELLO
RIP1
RIP2
IGRP
EIGRP
OSPF
IS-IS
EGP
BGP
vector-distance
O
O
O
O
 
 
 
 
 
link-state
 
 
 
 
 
O
O
 
 
기타
 
 
 
 
hybrid routing
 
 
 
path vector
metric값
delay
hop count
hop count
delay, bandwidth, load, reliability, MTU
cost
 
 
cost path
routing update
 
30초
30
90
on change
 
 
 
 
subnet 지원
 
 
O
 
O
O
 
 
 
OSI지원
 
 
 
 
 
 
O
 
 
network 규모
 
중, 대
중, 대
router 20개정도
 
 
internet연동
service provider사용
표준
not used
O
O
CISCO
CISCO
O
O
not used
O
protocol
 
UDP
UDP
IP
IP
IP
 
 
TCP
CIDR(supernet)
 
 
 
 
O
O
 
 
O

 

Chapter 10 UDP (User Datagram Protocol)

  • transport layer protocol
  • no reliability
    - datagram을 보내고 끝. transmission control하지 않는다.
    - retransmit에 의한 duplication발생. duplication data처리는 application에서 진행
    - simple query and response
  • TFTP,DNS,NFS,SNMP,RIP,WHOD(UNIX서버의 데몬조회)등
  • UDP datagram
     
    IP header
    20 bytes
    UDP hader
    8 bytes
    UDP data
     
    UDP datagram
    IP datagram

    - UDP header
     

    source port
    2 bytes
    destinaiton ports
    2 bytes
    length
    2 bytes
    checksum
    2 bytes
    - source port, destination port: 통신 접점으로서 인식하기 위한 port number
    - length: UDP header + data, minimum = 8 bytes
     

  • well-known port
    - 0 ~ 1023
    - testing, debuggin 용으로 정의된 port
    • 예를 들어,
    • echo = 7: user datagram을 sender에게 재전송
    • discard = 9: user datagram을 폐기
    • daytime = 13: 접속한 host의 현재 날짜와 시간을 ascii format으로 제공
    • quote = 17: quote of the day를 제공(fortune, wisdom, 명언 등)
    • name server = 53: domain name server
    • BOOTPs = 67: bootstrap 구성을 위한 server port
    • BOOTPs = 68: bootstrap 구성을 위한 client port
    • TFTP = 69
    • HTTP = 80
  • socket interface
    - socket 생성
    • sockmain = socket(pf, type, protocol)
      • pf: protocol family
        PF_UNIX : UNIX system internal protocols
        PF_INET : ARPA Internet protocols
      • type
        SOCK_STREAM : TCP
        SOCK_DGRAM : UDP

     

Chapter 11. BOOTP (BOOTstrap Protocol)

  • RARP: IP address를 알기 원하는 diskless system이 boot시 IP address를 알기 원하는 방법
  • RARP의 문제점
    - IP address만을 전송
    - link layer protocol
    - router에 의해 forwarding되지 않으므로 모든 physical network마다 RARP serverk가 필요, 즉 같은 segment 안에서만 가능
     
  • diskless system이 boot시 IP를 포함한 system configuration을 설정하는 방법
  • UDP와 TFTP를 이용
  • BOOTP packet format
     
    IP header
    20 bytes
    UDP header
    8 bytes
    BOOTP request/reply
    300 bytes
     
    UDP datagram
    IP datagram

     
    300 bytes
    Opcode
    1 byte
    harware type
    1byte
    hardware address length
    1 byte
    hop count
    1 byte
    transaction ID
    4 bytes
    number of seconds
    2 bytes
    unused
    2 bytes
    client IP address
    4 bytes
    your IP address
    4 bytes
    server IP address
    4 bytes
    gateway IP address
    4 bytes
    client hardware address
    16 bytes
    server hostname
    64 bytes
    boot filename
    128 bytes
    vendor specific information
    64 bytes

    - Opcode: 1=request, 2=reply
    - hardware type: 1=ethernet
    - hardware address length: 6=ethernet
    - hop count: client에서 0으로 set(최초 = 0)
    - transaction ID: random unique number. client set, server return. client는 request=response확인
    - number of second: client가 bootstrap을 시도한 시간을 set(최초=0)
    - client IP address: client가 자기자신의 IP address 를 알면 set, 모르면 0.0.0.0로 set
    - your IP address: client IP address가 0이면 server가 IP address를 채운다.
    - server IP address: server에 의해 채워진다.
    - gateway IP address: proxy server를 사용할 경우 proxy server의 router IP address를 지정
    - client hardware address: client는 반드시 set. ethernet header의 MAC address와 동일
    - boot filename: client는 일반적인 boot filename 기술. server는 reply시 boot file의 실제경로 제공
    - vendor specific information: 추가적인 information
     

  • 최초 client가 server로 request시
    1. link layer broadcast
    2. IP header내의 source IP address = 0.0.0.0, destination IP address = 255.255.255.255로 set
  • BOOTP port number
    • client port는 67에서 server port 68로 자료를 요청한다.
    • client에 필요한 subnet mask, default router, DNS 등은 server port 69번으로 TFTP를 통해 client로 download

 

Chapter 12. DHCP (Dynamic Host Configuration Protocol)

  • DHCP Protocol구성요소
    - IP주소 및 다른 TCP/IP 매개변수를 할당하기 위한 mechanism
    - Host전용 정보를 조정하고 송신하기 위한 protocol
  • DHCP 주소할당 방법
    - 수동할당 : DHCP client의 IP주소를 DHCP서버의 네트워크 관리자가 수동으로 설정
    - 자동할당 : 처음 DHCP서버에 접속할 때 IP주소를 할당, 이방법을 이용하여 할당한 IP주소는 영구적으로
                       DHCP client에 할당되며 또 다른 DHCP client에는 재활용할 수 없다.
    - 동적할당 : IP주소를 일시적으로 DHCP client에 할당,IP주소 자동 재활용
  • DHCP동적할당시 장점
    - 사용자가 TCP/IP 설정을 따로 해주지 않아도 되어서, 관리가 용이.
    - 한 정보가 모든 클라이언트에 적용되므로, 네트워크 문제 발생시 추적하기가 보다 쉽다.
    - DHCP 기능을 다른 서브넷상에도 적용할려면 라우터가 반드시 DHCP Relay Agent 역할을 수행.
    - 관리하는 호스트 수가 많아지게 된다면 서버의 과부하 발생.

  • BOOTP의 능력을 확장한 bootstrap protocol
  • DHCP packet format (BOOTP와 아주 유사)
     
    IP header
    20 bytes
    UDP header
    8 bytes
    DHCP message
    548 bytes
     
    UDP datagram
    IP datagram

     
    548 bytes
    Opcode
    1=request, 2=reply
    1 byte
    harware type
    1=ethernet
    1byte
    hardware address length
    6=ethernet
    1 byte
    hop count

    1 byte

    transaction ID
    4 bytes
    number of seconds
    2 bytes
    flags
    2 bytes
    client IP address
    4 bytes
    your IP address
    4 bytes
    server IP address
    4 bytes
    gateway IP address
    4 bytes
    client hardware address
    16 bytes
    server hostname
    64 bytes
    boot filename
    128 bytes
    options
    312 bytes
  • DHCP server는 BOOTP request에 대해 reply하도록 program
     
  • DHCP동작원리


    DHCP Client

    IP Lease  Request
    IP Lease Offer

    IP Lease Selection

    IP Lease      
    Acknowledgment

         
    DHCP Server

    • IP Lease Request
      클라이언트에서 시스템 시작시 서버에서 할당받지 못하는 TCP/IP 부분을 초기화한다. 아직 IP 주소가 설정된 것이 아니고 , DHCP 서버와 통신할 수 있게 Null IP 주소를 할당하게 되는 것이다. 다음에 DHCP 서버의 위치와 IP 주소 정보에 대한 요청을 브로드캐스트한다. 브로드캐스트하는 이유는 자신의 IP 주소가 없고 또 DHCP 서버의 주소도 모르기 때문이다..
      이 Lease Request를 DHCPDISCOVER 메시지 형태로 보낸다. 메시지의 패킷의 원본, 목적지 주소를 살펴 보면 원본 주소는 0.0.0.0을 사용하고 목적지 주소는 255.255.255.255를 사용한다. 그 정보와 함께 자신의 MAC 주소와 호스트 이름을 포함해서 보낸다.

      - DHCPDISCOVER 메시지 사용
       
        * TCP/IP가 DHCP 클라이언트로부터 처음 초기화된 경우
        * 클라이언트에서 특정 IP 주소를 요청했으나 해당 DHCP 서버가 리스를 놓쳤기 때문에 거부된 경우
        * 클라이언트에서 이전에 IP주소를 리스했으나, 해당 리스를 Release하고 새 리스가 필요한 경우
    • IP Lease Offer
      이제 Request 메시지를 받은 DHCP 서버는 (만약 복수개의 서버가 있다면 모든 서버가 메시지를 받게 된다.) DHCPDISCOVER에 대한 응답을 DHCPOFFER 메시지로 응답해 주게 된다.
      - 메시지 주용내용은
        * 클라이언트의 하드웨어 주소
        * 자신의 IP Pool 범위 내에서 제공할 IP 주소
        * 서브넷 마스크
        * Lease 기간
        * 서버 식별자(DHCP 서버 IP주소)
      이 메시지 역시 브로드 캐스트를 사용하는데, 이유는 앞서와 마찬가지로 아직 클라이언트에 IP 주소가 할당되지 않았기 때문이며, DHCP 클라이언트는 서버들로부터 받은 DHCPOFFER 메시지 중에서 가장 처음으로 도착한 메시지를 선택하게 된다.
      만약, DHCP 클라이언트가 DHCPOFFER 메시지를 받지 못했다면 DHCPDISCOVER 메시지를 세번(각각 9초 , 13초,16초의 간격으로 0부터 1,000msec까지 중 임의로 시간을 더할 수 있음) 다시 브로드캐스트한다. 네번째 요청 이후에도 제안을 받지 못했을 때는 클라이언트는 5분마다 다시 시도하게 된다.
    • IP Lease Selection
      클라이언트가 받은 여러 개의 DHCPOFFER 메시지 중에서, 가장 처음 도착한 메시지를 채택. 서버에게 DHCPREQUEST로 응답하게 되는데, 이때도 브로드캐스트 방식을 사용한다. 그 이유는 모든 DHCP 서버에게 알려야, IP가 중복 할당되는 점을 방지할 수 있기 때문이다. DHCPREQUEST 메시지에는 서버의 서버 식별자(IP주소)가 들어 있고, 클라이언트가 쓰게 될 IP 주소가 적혀 있다
    • IP Lease Acknowledgment
      DHCPREQUEST 메시지를 받은 DHCP서버는 클라이언트에게 DHCPACK 메시지 형식으로 긍정 응답을 브로드캐스트한다. 아직 클라이언트에 IP주소가 할당된 것이 아니기 때문에 브로드캐스트 방식을 쓰는 것이며, 이제 DHCP 클라이언트에서 긍정 응답을 받을 때, TCP/IP가 초기화되고 바인딩된 DHCP 클라이언트로서 간주된다. 바인딩후 TCP/IP를 이용하여 통신할 수 있다.
      클라이언트에 IP 주소와 서브넷 마스크, 기타 IP 주소 정보가 기록되는 레지스트리 위치는 다음 위치에 존재한다.

      HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\adapter\Parameters\Tcpip

      만약, 이 응답이 성공되지 않는다면 DHCPNACK이 브로드캐스팅 되든데, 다음과 같은 경우에 부정 응답이 발송된다.
      - 클라이언트가 이전에 리스했던 IP주소를 리스하려 했으나 이미 사용중이어서 더 이상 사용할 수 없을 경우
      - 클라이언트가 성공되지 않은 긍정 응답을 받을 때는, IP Lease Request 과정부터 다시 시작한다.

    •  IP 대여기간 갱신
      이렇게 DHCP를 이용 TCP/IP 설정이 초기화되면, 대여 기간까지 설정이 유지 하지만, 그동안 이 대여기간을 갱신하기 위한 시도가 이루어 진다.

      -처음 갱신 시도시
      처음으로 갱신을 시도하는 때는 대여 기간의 50%가 남았을 때다. 해당 클라이언트는 주소를 할당받은 서버에게 DHCPREQUEST 메시지를 직접 보낸다. 서버가 이 메시지를 성공적으로 수신한다면 클라이언트에게 성공의 긍정 응답(DHCPACK)에 새로운 대여 기간과 갱신된 구성 파라미터를 함께 보낸다. 이 메시지를 받은 클라이언트는 이제 자신의 구성을 갱신하게 되는 것이다.
      만약, 클라이언트가 DHCPREQUEST를 보냈지만, 서버가 꺼져 있다거나, 어떤 문제가 발생해서 서버가 이를 수신하지 않았다면, 해당 클라이언트는 요청이 갱신되지 않았다는 메시지를 받게 된다. 그래도 50%의 기간이 남았기 때문에 TCP/IP설정을 유지하는 것입니다.

      - 연속으로 갱신 시도
      이렇게 처음으로 갱신을 시도했으나 실패했을 경우, 나머지 기간의 50%, 즉 총 대여기간의 87.5%가 만료될 때 사용할 수 있는 DHCP 서버와 연결하여 갱신을 시도하게 된다. 클라이언트는 DHCPREQUEST 메시지를 브로드캐스트하고, DHCP 서버에서 DHCPACK 메시지나 DHCPNACK 메시지로 응답할 수 있다.
      대여기간이 만료되거나 DHCPNACK 메시지를 받은 경우에는 DHCP 클라이언트는 즉시 IP 주소 사용을 중단해야 하고, 다시 IP 주소를 얻기 위해 처음부터 4단계의 과정을 거쳐야 한다.

      - 클라이언트 재시작시
      DHCP 클라이언트가 재시작할 경우를 보면, 이때는 해당 클라이언트가 원래 DHCP 서버에게 자신이 사용하고 있던 IP 주소를 갱신하려 한다. DHCPREQUEST 메시지에 자신이 사용하던 IP 주소를 적어서 보내고, 서버에서 이에 응답하면 그 주소를 계속 사용할 수 있게 되는 것이다. 만약 갱신을 못한다면 마찬가지로 대여 기간동안 만큼만 IP를 사용하게 된다
       

 

Chapter 13. TFTP (Trivial File Transfer Protocol)

  • workstation or X-terminal 등 diskless system에서 사용
  • UDP datagram을 통해 전송, server port 69 사용
  • 512 byte단위로 data block을 전송
    - 마지막 block < 523 bytes
    - 만약 마지막 block = 512이면 다음 datagram은 header(4-octat)만 전송
  • TFTP format
     
    IP header
    20 bytes
    UDP header
    8 bytes
    TFTP message
    <= 516 bytes
     
    UDP datagram
    IP datagram

    - read request(RRQ)

    opcode = 1
    2 bytes
    filename
    n bytes(string)
    0
    1 byte
    mode
    n bytes(string)
    0
    1 byte

    - write request(WRQ)

    opcode = 2
    2 bytes
    filename
    n bytes(string)
    0
    1 byte
    mode
    n bytes(string)
    0
    1 byte

    - data(DATA)

    opcode = 3
    2 bytes
    block number
    2 bytes
    data
    <= 512 bytes

    - acknowledgement(ACK)

    opcode = 4
    2 bytes
    block number
    2 bytes

    - error(ERROR)

    opcode = 5
    2 bytes
    error code
    2 bytes
    error message
    n bytes(string)
    0
    1 bytes

  • client read request
    - reader: port 선택, RRQ를 port 69에 전송
    - responder: port 선택, block 1전송
    - reader: ACK + block number 1 전송
    - responder: block 2전송
    - reader: ACK + block number 2 전송
    . . . . . .
    - responder: 마지막 block 전송
    - reader: ACK + block number # 전송
    (위의 마지막 block = 512 bytes면 server, client는 각각 opcode, block number만 교환)
     
  • client write request
    - writer: client는 WRQ를 server의 port 69를 통해 전송, filename과 mode 확정
    - server: port준비 후 ACK + block number = 0 전송
    - writer: 최초 512 bytes 전송, block number = 1.
    (이후는 RRQ와 같다.)

 

Chapter 14. TCP (Transmission Control Protocol)

  • 관련RFCs
    - RFC 792(STD 7) : Transmission Control Protocol
  • 특징
    - 기본 데이터 전송 : 연속적인 옥텟의 흐름을 각 방향으로 전송
    - 신뢰성 : PAR(적극적 수신 통지 재전송)체계 사용,TCP packet header checksum field를 통해 손상복구
    - 흐름 제어 : TCP sliding windows을 이용한 흐름제어
       * sliding window mechanism : 채널을 데이터로 가득 채우고 receive Ack를 기다리다가 경험하는 지연시간을
          최소한으로 줄이는 것
       * window size 1일 때                                                  * window size 3일때
       

    - 다중화 : 한 라우터의 많은 프로세스가 TCP 서비스를 동시에 사용할 수 있다.
    - 연결 : establishing a connection & closing a connection 참조
    - 우선권과 보안
     
  • connection-oriented protocol
  • transport layer protocol(layer 4)
  • WWW, telnet, ftp, mail 등.
  • full duplex,byte stream 서비스 지원
  • application ports(UDP와 같다)
    - well-known port: 0 ~ 1023
    - discard = 9: discard user datagram
    - FTP-data = 20: FTP data 전송 port
    - FTP = 21: FTP dialog port
    - telnet = 23
    - SMTP = 25: Simple Mail Transfer Protocol port
    - HTTP = 80
    - POP3 = 110: PC mail 검색 서비스 port
    - NNTP = 119: Network News access port
     
  • TCP segment
     
    IP header
    20 bytes
    TCP header
    20 bytes
    TCP data
     
    TCP segment
    IP datagram
  • TCP header format
     
    TCP header
    source port
    2 bytes
    destination port
    2 bytes
    sequence number
    4 bytes
    acknowledgement number
    4 bytes
    header length(4-bit)
    reserved(6-bit)
    flags(6-bit)
    widow size
    2 bytes
    TCP checksum
    2 bytes
    urgent point
    2 bytes
     
    options (if any)
     
    data (if any)

    - flags(URG, ACK, PSH, RST, SYN, FIN)

    • URG = 1: if urgent data(break or interrupt)
    • ACK = 1: all segment, but initial SYN segment 일 때는 0
    • PSH = 1: immediately delivery
    • RST = 1: error 감지, session abort할 경우
    • SYN = 1: connection setup
    • FIN = 1: 정상적인 close 진행
  • establishing a connection

     

  • data transfer example
    - client: SYN, seq_no=1000
    - server: SYN, ACK, seq_no=3000, ack_no=1001
    - client: ACK, seq_no=1001, ack_no=3001 (connection established)

    - client: PSH, seq_no=1001, ack_no=3001, len=100
    - server: ACK, seq_no=3001, ack_no=1101 (simplex)

    - server: PSH, seq_no=3001, ack_no=1101, len=100
    - client: PSH, ACK, seq_no=1101, ack_no=3101, len=100
    - server: ACK, seq_no=3101, ack_no=1201 (full duplex)
     

  • closing a connection

 

Chapter 15. TELNET

  • 다양한 형태의 terminal type을 emulate(Unix, VAX/VMS, IBM mainframe)
  • port 23 사용
  • NVT (Network Virtual Terminal)
    - telnet의 표준 interface
    - 양단의 가상 device를 연결, 이 NVT 상에서 실제 사용할 terminal 계획
    - client가 먼저 terminal type을 계획하고, 다음에 server가 지원하는 형태
  • NVT code
    • data
      - 7-bit USASCII
      - high-order bit = 0
      - printable code 95개(letter, number, symbol, etc)
      - ASCII control character 33개(BS, LF, FF, CR, etc)
    • command
      - control function (interrupt process;Ctrl-C, synchronize, etc)
      - synch signal: data mark command를 urgent data로 전송하며, holding된 경우 모든 data를 제거
      - control command (
      control functionsynch signal로 구현)
        IAC(Interrupt as Command; 255), IP(244), GA(249)
         

 

Chapter 16. FTP

  • file 전송에 관한 internet 표준
  • server에 logon 할 수 있는 계정 혹은 anonymous 계정 필요
  • 서로 다른 종류의 host, OS, file structure, character set 상황에서도 실행가능
  • control connection
    • port 21 사용
    • IP의   TOS는 minimize delay로 설정
  • data connection
    • port 20 사용
    • client-server간에 매번 file이 전송될 때마다 설정
    • IP의  TOS는 maximize throughput으로 설정

 

Chapter 17. APPLICATION FLOW

 

Chapter 18. IP version 6

  • IP v4의 등장 이후 network system 규모의 변화
  • address 공간 부족으로 새로운 version 출현
  • address size = 128-bit(16 bytes)
  • header format은 전반적으로 새롭고 호환성 없다.
  • extension header: 새로운 networking 기능 제공
  • audio and video지원: flow labels and QoS 지원
  • IPv6 header format
     
    version
    4-bit
    priority
    4-bit
    flow label
    3 bytes
    payload length
    2 bytes
    next header
    1 byte
    hop limit
    1 byte
    source address
    16 bytes
    destination address
    16 bytes
  • IPv6 address 표기법
    - dotted hexadecinal notation or colon hex
      104.230.140.100.0.0.0.0.0.0.0.5.150.10.255.255
      68E6:8C64:0:0:0:5:96A:FFFF
    - zero compression 기법(한 address에 한번만)
      68E6:8C64::5:96A:FFFF
    - IPv4 dotted 10진 표기법을 IPv6의 맨 마지막에 쓰는 혼용법
      68E6:8C64:0:0:0:5:150.10.255.255
    - 혼용 zero compression기법