본문 바로가기

Network/Theory

Chapter 5. Protocol

Chapter 5. Protocol

1. 각 계층별 PDU(Protocol Data Unit)

​ - Layer 1 : Signal(Bit)

 - Layer 2 : Frame

 - Layer 3 : Packet, Datagram

 - Layer 4 : Segment

 - Layer 5~7 : Data

 

2. Layer 2 Protocol
 - Ethernet
  · 가장 널리 쓰이는 근거리 통신망 Protocol
  · 18Mbps의 Data 전송률과 Bus Topology를 사용한다.
    ※ Bus Topology
      ›개방된 Cable에 Computer가 연결된 형태
    ※ Layer 2의 Data는 Frame이라 한다.

  · Ethernet의 Data 전송률
  ◦ 100Mbps
  ◦ 1000Mbps
  · Ethernet을 위한 접근방법
  ◦ CSMA/CD(Carrier Sense Multiple Access with Collision Detection)를 사용
  · Etherent Frame 구조

  ◦ Preamble(7Bytes)

   ▹ Ethernet MAC Frame의 첫 번째 Field로서 0과 1을 반복하는 7Byte로 이루어져 있다.
   ▹ 수신 System에게 Frame이 도착하는 것을 알려주는 역할을 한다.
   ▹ 수신 받는 System이 확인할 수는 없으며 실제로 물리층에 추가되어있어 공식적으로 Frame의 일부분은 아니다.
  ◦ SFD(Start of Frame Delimiter)(1Byte)
   ▹ 정상적인 Frame의 시작을 표시하는 Frame의 동기이다.
   ▹ 마지막 두 개의 Bit는 '11'로 수신 System에게 다음에 오는 Field가 목적지 주소임을 알려준다.
   ▹ 8Bit의 내용 : 10101011
  ◦ Destination MAC Address(6Bytes)
   ▹ Packet을 수신하는 목적지의 MAC Address
   ▹ Frame은 OSI 7 Layers의 Layer 2의 Data로 MAC Address를 참조한다.
  ◦ Source MAC Address(6Bytes)
   ▹ Packet을 송신한 System의 MAC Address
  ◦ Type/Length(2Bytes)
   ▹ 길이 또는 종류로 정의된 Field
   ▹ Length Field
    ▸ Field의 값이 1,518보다 작을 때의 Field
   ▹ Type Field
    ▸ Filed 값이 1,536보다 클 때의 Field
    ▸ 상위 계층의 Protocol Type을 의미한다.
   ▹ Type의 대표적인 값
    ▸  0600h : Xerox XNS IDP
    ▸  0800h : IP
    ▸  0805h : X.25
    ▸  0806h : ARP
    ▸  0836h RARP
  ◦ Data/Payload(46 ~ 1500Bytes)
   ▹ 상위 계층의 Protocol로부터 Encapsulation한 Data가 들어 있다.
   ▹ Data Field는 최소 46 ~ 1500Bytes의 크기를 가지고 있다.
   ▹ 상위 계층의 Packet의 길이가 최소 길이(46Byte)보다 작을 때는 끝에 Padding(0)으로 채워진다.
  ◦ FCS(Frame Check Sequence)(4Bytes)
   ▹ Destination MAC Address + Source MAC Address + Type/Length + Data/Payload의 영역을 계산해 Error를 판별하며 CRC를 이용한다.
   ▹ 송신측에서는 CRC를 추가해 보내고 수신측은 CRC를 확인해 Error가 확인된 Frame을 버린다.
    ※ CRC(Cyclic Redundancy Check)
      ›Error 검출 방법 중 한 가지이다.
      ›송신측의 Data로부터 다항식에 의해 추출된 결과를 여분의 FCS에 덧붙여 보내 수신측에서 동일한 방법으로 추출한 결과의 일치 여부로 오류를 검사하는 기술

  · CSMA/CD 충돌 기회 감소 방법
  ◦ CSMA는 Network 내의 Computer가 Packet을 전송하기 이전에 먼저 매체(Computer)에 귀를 기울일 것을 요구하고 있으며 '말하기 이전에 듣기(Listen Before Talk)' 원칙에 기반을 두도록 수정되었다.
  ◦ Listen Before Talk는 통신이 진행되기 전에 감지해 통신을 하는 것으로 이는 CSMA/CD의 충돌 방식이 완전히 대비될 수는 없으나 충돌 기회를 감소시킬 수 있는 역할을 한다.

 

3. Layer 3 Protocol
 - ARP(Address Resolution Protocol)
  · Network 내의 Computer가 다른 Computer의 MAC Address를 모를 때 IP 주소에 대응되는 MAC Address를 알아내는 Protocol
  · ARP Packet은 Data를 송수신하기 위한 Packet이 아니기 때문에 Packet 내에 Data가 할당되는 공간이 없다.
  · Data가 할당되는 공간 대신 목적지의 물리 주소가 Data 역할을 한다.
  · 간단하게 말해서 논리적 주소를 물리적 주소로 대응(Mapping)시키는 역할을 한다.
  · Ping Program(ping.exe)를 이용해 동작한다.
    ※ Layer 3의 Data는 Packet이라 한다.
  · 주소 변환방법
  ◦ Static Mapping(정적 대응)
   ▹ 관리자가 수동으로 ARP Table을 관리
  ◦ Dynamic Mapping(동적 대응)
   ▹ ARP
   ▹ RARP
  · ARP Packet 구조

  ◦ Hardware Type(2Byte)
   ▹ ARP가 수행되고 있는 Network 유형을 정의하는 역할을 한다.
   ▹ Physical Type of Hardware

    ▸  ​Ehternet(10Mb) 1

    ▸  ​IEEE 802 Networks 6

    ▸  ARCNET 7

    ▸  Frame-Relay 15

    ▸  Asynchronous Transfer Mode(ATM) 16

    ▸  ​HDLC 17

    ▸  ​Fiber Channel 18

    ▸  ​Asynchronous Transfer Mode(ATM) 19

    ▸  Serial Line 20
  ◦ Protocol Type(2Byte)
   ▹ 상위 Protocol을 정의하는 역할을 한다.
   ▹ Protocol Type of Ethernet
    ▸  0x0800
  ◦ Hardware Address Length(1Byte)
   ▹ 물리 주소의 길이를 Byte 단위로 정의하는 역할을 한다.
   ▹ Length of Ethernet
    ▸  MAC Address의 길이를 의미
    ▸  6Byte(48Bit)이기 때문에 6이 입력된다.
  ◦ Protocol Address Length(1Byte)
   ▹ 논리 주소의 길이를 Byte 단위로 정의하는 역할을 한다.
   ▹ Length of IPv4
    ▸  IPv4의 길이를 의미
    ▸  4Byte(32Bit)이기 때문에 4가 입력된다.
  ◦ Opcode(2Byte)
   ▹ Packet의 유형을 정의하는 역할을 한다. 

   ▹ Type of Packet
    ▸  ARP Request 1
    ▸  ARP Reply 2

    ▸  RARP Request 3

    ▸  RARP Reply 4

    ▸  DRARP Request 5

    ▸  DRARP Reply : 6

    ▸  DRARP Error : 7

    ▸  InARP Request 8

    ▸  InARP Reply 9

  ◦ Sender Hardware Address
   ▹ 송신자의 물리 주소를 나타내는 Field
   ▹ Value of Ethernet
    ▸  6Byte 값을 의미해 6이 입력된다.
  ◦ Sender Protocol Address
   ▹ 송신자의 논리 주소를 나타내는 Field
   ▹ Value of IPv4
    ▸  4Byte 값을 의미해 4가 입력된다.
  ◦ Target Hardware Address
   ▹ 목적지의 물리 주소를 나타내는 Field
   ▹ ARP Request의 경우 송신자가 목적지 System의 물리주소를 몰라 0으로 설정해 보낸다.
   ▹ Value of Ethernet
    ▸  6Byte 값을 의미해 6이 입력된다.
  ◦ Target Protocol Address
   ▹ 목적지의 논리 주소를 나타내는 Field
   ▹ Value of IPv4
    ▸  4Byte 값을 의미해 4가 입력된다.
  · ARP 동적 지점

  ◦ ping.exe가 실행 시 모든 값이 채워져 있으면 정상적으로 ping의 Request, Reply가 발생하지만 필요한 값이 없을 시 ARP가 발생한다.
  ◦ ARP의 요청(Request)
   ▹ ping.exe가 실행도중 Layer 2에서 Destination MAC Address Field에 값이 없을 시 발생한다.
   ▹ Request Packet이 발생 후 Reply Packet이 전송되며 전송 후 ARP Table에 ping.exe의 인자 값인 IP와 해당 IP에 대응되는 MAC Address가 입력된다.
 - IP(Internet Protocol)
  · Network Layer(Layer 3)의 핵심 Protocol로 TCP와 UDP는 모두 IP에서 Service를 제공한다.
  · TCP/UDP
  ◦ TCP : 연결형으로 상대방이 통신 준비가 됐음을 확인한 후 Packet을 전송한다.
  ◦ UDP : 비연결형으로 상대방이 통신 준비에 관계없이 Packet을 전송한다.
  · Transport Layer(Layer 4)의 Data 즉, Segment를 받아 인접해있는 Network가 요구하는 크기의 Packet으로 분할 전송한다.
  · IP Packet의 기능
  ◦ 논리적 주소(IP) 제공
  ◦ 경로(Path) 제공
  ◦ Data 분할 및 재조립
    ※ Data의 분할, 재조립만 할 수 있을 뿐 Data의 흐름 제어와 Data의 오류 제어 기능은 제공하지 않는다.
        Data의 흐름 제어와 Data의 오류 제어 기능 IP Packet이 전달되는 Protocol에서 제공한다.

  · IP Packet

  ◦ Version(4Bit)
   ▹ 현재 사용하는 IP의 Version 정보를 나타내는 Field이다.
   ▹ Type of IP
    ▸  IPv4 4
  ◦ Header Length(4Bit)
   ▹ Header의 크기를 나타내는 Field로 Field 값에 4를 곱한 값이 Header 전체 길이가 된다.
   ▹ IP Datagram의 경우 Header의 길이가 Option Field에 따라 달라질 수 있어 Header Length Field로 명시한다.
   ▹ Option이 없다면 전체 Header의 길이는 20Byte로 해당 Field의 값은 5가 된다.
   ▹ Option이 최대 길이라면 60Byte로 해당 Field의 값은 15가 된다.
  ◦ Type of Service
   ▹ Datagram이 Router에서 어떻게 처리되어야 하는지 정의하는 Field 이다.
   ▹ 각 Field의 역할
    ▸  Precedence : 우선순위 값
    ▸  Throughput / Reliability / Cost : TOS(Type Of Service) 설정 값
    ▸  Reserved : 예약 값
  ◦ Total Length(16Bit)
   ▹ Datagram의 전체 길이를 나타내는 Field이다.
   ▹ 16Bit이기 때문에 2¹⁶-1(65535)크기로 제한되어 있다.
   ▹ Ethernet의 경우 MTU(Maximum Transport Unit)으로 Packet 1개의 크기를 제한하고 있으며 MTU의 기본 값은 1500Byte로 설정되어 있다.
   ▹ IP Header의 길이는 가변적으로 유효한 Data 영역 부분에 대한 추출을 위해 필요하다.
   ▹ Ethernet의 경우 IP Header를 포함한 총 길이가 46Byte보다 짧은 경우 Ethernet의 Padding 영역을 강제로 삽입하며 Padding 영역은 0으로 채워진다.
  ◦ Identification(16Bit)
   ▹ Packet의 ID를 나타내는 Field이다.
   ▹ 연속된 Datagram을 전송했을 시 Identification 값은 연속적으로 증가한다.
   ▹ IP Datagram은 Network의 MTU 값에 의해 분할되는데 분할된 IP Packet을 재조립하는 과정에서 원본 Datagram을 파악하는 정보로 사용한다.
   ▹ Datagram이 단편화 즉, Packet으로 분할된 Datagram의 부분이 Memory 공간에 흩어지게 될 경우 Identification 값으로 알아보게 되며 모든 단편화된 Packet의 Identification 값이 복사된다.
  ◦ Flag(3Bit)
   ▹ 분할된 Packet의 마지막을 나타낼 수 있는 Field이다.
   ▹ 각 Bit별 역할
    ▸  첫 번째 Bit : 0으로 기록되며 사용되지 않는다.
    ▸  두 번째 Bit : 해당 Packet이 분할된 Packet 인지를 표현하며 값이 1일 경우 분할되지 않은 Packet(단일 Packet)을 의미
    ▸  세 번째 Bit : Datagram의 마지막 Packet을 표현하며 값이 0일 경우 마지막 단편이거나 단일 Packet을 의미한다.
  ◦ Fragmentation Offset(F.O)(13Bit)
   ▹ 분할된 Packet의 상대적 위치를 나타내는 Field이다.
   ▹ 2¹³-1(8191)로 8Byte보다 큰 값을 표현하지 못해 8Byte 단위로 표현한다.
  ◦ Time To Live(TTL)
   ▹ Network의 Line 상에 Packet이 체류할 수 있는 시간을 Hop Count로 나타내는 값을 가진 Field이다.
   ▹ Router를 1개를 지날 때마다 1씩 감소한다.
   ▹ 값이 클수록 통신 가능성이 높고 값이 작을수록 통신 가능성이 낮다.
  ◦ Protocol(8Bit)
   ▹ IP 계층의 Service를 사용하는 상위 Protocol을 정의하는 Field이다.
   ▹ 상위 Protocol별 값
    ▸  ICMP : 1
    ▸  IGMP : 2
    ▸  TCP 6
    ▸  UDP :17
    ▸  OSPF : 89
    ▸  IGRP 88
  ◦ Header Checksum(16Bit)
   ▹ Error 확인을 위한 Field이다.
  ◦ Source Address
   ▹ Packet을 송신한 System의 IP 주소를 나타내는 Field이다.
  ◦ Destination Address
   ▹ Packet을 수신하는 System의 IP 주소를 나타내는 Field이다.
  ◦ Option(Maximum : 40Byte)
   ▹ 표준 Header의 보안을 위한 기능, Record Route, Timestamp 등의 정보를 담기 위해 추가되는 항목을 담기위한 Field이다.
   ▹ Network 상태 Test, Debug 용도로 사용 가능하지만 일반적으로 많이 사용하지는 않는다.
 - ICMP(Internet Control Message Protocol)
  · IP의 단점을 보완하기 위해 설계된 Protocol이다
  · IP Protocol은 Error 발생 원인이나 진단 기능이 지원되지 않아 이를 보완하기 위해 같은 계층의 ICMP를 이용한다.
  · ICMP Packet의 구조

  ◦ Type(1Byte)
   ▹ Code Field와 함께 쓰이며 ICMP의 목적을 표현하는 Field로 어떠한 용도로 사용되는지를 나타낸다.
  ◦ Code(1Byte)
   ▹ ICMP Type의 세부 내용을 나타내며 Code Field와 Type Field를 조합해 ICMP Message의 목적과 용도를 나타낸다.
  ◦ Checksum(2Byte)
   ▹ ICMP Message의 이상 유무를 판단하는데 사용되는 Field이다.
  · ICMP Message의 종류

  ◦ Query(질의) Message
   ▹ 다른 Host로부터 특정 정보를 획득할 수 있게 하는 Message
   ▹ Network 문제를 진단 시 쓰이는 Message
   ▹ Query Message

    ▸  Echo Request and Reply(Type : 8/0)
     ▫  IP Host 진단에 사용하는 Message
     ▫  가장 일반적인 ICMP 유형
     ▫  ping.exe를 이용하여 Message를 작성한다.
    ▸  Timestamp Request and Reply
     ▫  두 System 간에 IP Datagram이 오고 가는데 필요한 왕복 시간을 결정하는 Message
    ▸  Address mask Request and Reply
     ▫  Host가 Router에게 Subnet Mask를 요청할 때 사용하는 Message
    ▸  Router Solicitation and Advertisement
     ▫  다른 Network의 Host에게 Data 전송 시 자신의 Network에 연결된 Router의 주소를 요청/광고하는 Message
    ▸  IPv6 위치 조회/응답
     ▫  IPv6를 이용하는 Host 간에 위치를 조회/응답 할 때 사용하는 Message
  ◦ Error Reporting(오류 보고) Message
   ▹ IP Packet 처리 도중 발생한 문제를 보고 하는 Message
   ▹ Error Message

    ▸  ICMP Error Message를 전달하는데 Datagram에 관한 Error Message는 생성하지 않는다.
    ▸  분할된 Datagram에서는 첫 번째 Datagram에만 Error를 생성한다.
    ▸  Multicast Address를 가진 Datagram은 Error Message를 생성하지 않는다.
    ▸  127.0.0.1(자신으로 가리키는 IP)와 0.0.0.0(IPv4 주소 전체 대역)과 같은 특수 주소를 목적지로 하는 Datagram은 Error Message가 생성되지 않는다.
    ▸  Destination Unreachable(Type : 3)
     ▫  Router가 Datagram의 경로를 찾을 시(Routing) 경로를 찾지 못할 경우의 Message
     ▫  Host가 Datagram을 전송할 수 없는 경우의 Message
     ▫  Network Unreachable(Code : 0)
      ▪  Router의 Routing Table에서 목적지 Network 경로를 찾지 못한 경우 발생하는 Message
      ▪  사용자가 Internet에서 Routing 할 수 없는 사설 주소에 연결한 경우 발생하는 Message
     ▫  Host Unreachable(Code : 1)
      ▪  IP Datagram이 최종 목적지 System에 전달되지 못했음을 의미하는 Message
      ▪  최종 단계의 Router가 목적지 System에 이르는 방법을 모르는 경우 발생하는 Message
    ▸  Source Quench(Type : 4)
     ▫  ICMP Message중 가장 단순한 Message
     ▫  송신 System이 목적지 System에서 처리하기에 너무 많은 Data를 전송할 시 송신 System의 Datagram 전송 속도를 줄일 것을 요구
    ▸  Redirect(Type : 5)
     ▫  Router가 최적 경로를 사용하지 않는 Host를 발견할 시 대체경로를 알려주는 Message
     ▫  같은 Subnet에 존재하여야 한다.
    ▸  Time Exceed for a Datagram(Type : 11)
     ▫  IP Header의 TTL 값이 만료 시 발생하는 Message
     ▫  Forwarding이나 Reassembling 작업이 너무 오래 걸려 보고하는 장비가 Data를 소멸 시킬 때 송신하는 Message
     ▫  Time to Live Exceed in Transit(Code : 0)
      ▪  IP Datagram이 최종 목적지에 도달되기 전 Datagram의 TTL 값이 0에 도착한 경우 송신 System에 보내지는 Message
      ▪  TTL 값은 Router 1개를 지날 때마다 1씩 감소되며 0이 되면 이 Message를 송신 System에 인접한 Router가 송신 System으로 보낸다.
     ▫  Time to Live Exceed in Reassembly(Code : 1)
      ▪  단편화된 Datagram을 목적지 System이 주어진 시간 안에 단편화된 Data 중 일부분을 분실해 모든 Data를 수신하지 못한 경우 해당 Datagram을 모두 소멸 시킨다는 Message
    ▸  Parameter Problem on a Datagram
     ▫  Datagram의 Header Error 발생 시 사용되는 Message
  · ICMP Message 별 Type & Code

 

'Network > Theory' 카테고리의 다른 글

Chapter 7. Router  (0) 2015.08.16
Chapter 6. Switch  (0) 2015.08.16
Chapter 4. IP Addressing & subnetting  (0) 2015.08.16
Chapter 3. Ethernet & Network Equipment  (0) 2015.08.16
Chapter 2. OSI 7 Layer & TCP-IP  (0) 2015.08.16