MinUk.Dev
컴퓨터통신 - minuk dev wiki

컴퓨터통신

created : Fri, 15 Oct 2021 23:07:20 +0900
modified : Sun, 12 Dec 2021 19:40:50 +0900

컴퓨터에서 의미란? 데이터

  • 문자 (디지털데이터)
  • 음성 (아날로그 데이터) => 실제로는 디지털화 시켜서 사용
  • 컴퓨터 기반 기기에서 모든 의미는 디지털 데이터로 표현되어야 한다. 따라서 의미교환이란 디지털 데이터를 교환한다는 것이다.

데이터 전달/교환이란? 신호송수신

  • 0/1은 추상적인 표시이다.:
    • 0/1로 추상화했다고 해서 실제로 전달하는 매체가 디지털이라는 것이 아니다. 약속을 한다면 아날로그를 쓰더라도 디지털데이터를 전달하는 데에는 문제가 없다.
  • 0/1을 유선/무선을 통해 전달하려면 신호화가 필요하다.
  • 신호는 디지털 신호/아날로그 신호가 존재한다.
  • 매체: 신호를 전달하는 물체. 예) 공중, 케이블
  • 유선(구리선, 광케이블), 무선(전파):
    • 매체에 따라 디지털이 잘 전송되지 않는다.
    • 무선에서는 특히 아날로그를 선택해서 전달한다.

직접 신호 교환의 한계: 스위칭

  • 통신 상대방과 직접 신호교환을 할 것인가?:
    • 블루투스 스피커
    • 대부분은 기지국/공유가와 신호를 교환한다.
    • 직접적으로 신호를 교환하는 것은 특수한 경우이고, 오히려 간접적으로 교환하는 것이 보편적이다.
  • 거리가 멀다면 결국에는 중계기를 설치할 수 밖에 없다.
  • 연결할 수 있는 규모 - 스위치:
    • 통신자간 수많은 기기들(라우터 등)을 통해 통신하며, 이때 수많은 기기들을 망(Network)라고 한다.
  • 컴퓨터 통신을 하기 위해서는 망을 거치는 것이 필수적이다.
  • 직접 통신의 한계:
    • 물리적 한계(거리에 따라 세기가 감소하는 등) : 중간에 있는 기기들이 이를 극복하기 위해서 중계를 해주어야한다.
    • 통신의 용이성(통신자가 바뀌어도 전달 가능) : 중간에 있는 기기들은 스위칭, 라우팅 등을 통해 올바른 목적지를 향해 데이터를 보내주는 것이다.

서로 다른 통신망 연결: 이질성 극복

  • 통신하는 양쪽의 통신망이 서로 다를 수 있다.:
    • 기술, 관리, 정책 측면에서
  • 극복방법 필요:
    • 네트워크 간의 네트워크(internet)이 필요하다. Internet

컴퓨터 통신 기술 재정의

  • 컴퓨터 기반 기기를 통한 의미 교환
  • = 컴퓨터 기반 응용들을 통한 의미교환 (컴퓨터 기반 응용들의 의미 교환)
  • = 컴퓨터 기반 응용들의 디지털데이터 교환
  • = 컴퓨터 기반 응용들의 디지털데이터를 담고 있는 신호 교환
  • = 컴퓨터 기반 응용들의 디지털데이터를 담고 있는 신호를, 필요에 따라서 중계기, 스위치를 경유하면서 교환
  • = 컴퓨터 기반 기기/응용들이 필요에 따라서 중계기/스위치를 경유하면서, 디지털데이터를 담고있는 신호를 교환해서 의미를 교환하는 것

네트위크를 보는 관점: 관심사항에 따른 관점

  • 네트워크 사용자: 통신 응용이 필요로 하는 서비스:
    • 즉, 보낸 메시지가 오류 없이 어떤 정해진 시간 안에 전달되는 것을 보장하는 서비스
  • 네트워크 설계자: 효과적인 설계:
    • 즉, 네트워크 자원들이 효율적으로 이용되며 각각의 사용자에게 공평하게 할당되는 설계
  • 네트워크 제공자: 운영 및 관리가 용이한 시스템:
    • 즉, 통신 장애가 쉽게 분산되며, 사용량에 따른 요금 부과가 용이한 시스템

컴퓨터 통신/네트워크 분야

  • 컴퓨터공학 전공자의 시각:
    • 컴퓨터 통신 응용의 개발:
      • 통신 응용들의 사례 및 발전 추세
      • (통신의 기본 개념 + 컴퓨터 통신 시스템 동작원리) 필요
    • 컴퓨터 통신 시스템의 이해 및 개발:
      • 개발 과정, 관리측면에서 컴퓨터 전문가가 필요하다.

1장 기본개념

  • 요구사항:

    • 네트워크가 제공해야 하는 것
    • 네트워크에 대한 기능적 정의
  • 네트워크 구조:

    • 네트워크를 만드는 방법
    • 체계적인 접근이 필수
  • 성능:

    • 네트워크 비교/평가 기준 (성능의 기준)
    • 빠른 네트워크란?
  • 노드(node):

    • 단말(terminal), 호스트(host)
    • 스위치(switch), 라우터(router)

연결(Connectivity)

  • 통신 첫단계 - 통신 주체를 연결하는 것
  • 따라서, 통망이 해야하는 제1업무 : 연결
  • 통신주체 :
    • 전화기 등 단말기(terminal)
    • 일반화하여 통신 응용
    • 실제로 통신 응용에서 고려하면 어렵기 때문에 단말기로 가정
  • 점대점 연결(Point-to-Point):
    • 가장 간단한 네트워크
    • 불특정 다수와 연결해야하는데, 현실성이 떨어진다.
  • 다중 접근(multiple access):
    • 직접연결의 특성을 살리면서 사용하려는 것
    • 링크 1개를 사용해서 여러개가 공유하는 것
    • 장점 : 비용
    • 단점 : 사용성

간접 연결: Switched Networking

  • 간접 연결(Indirect Connectivity): Switched Network
  • 스위칭 네트워크(Switching Network)
  • 인터네트워크(internetworks) : Network of Networks

간접 연결방법 : 스위칭 정책

  • 회선 스위칭(circuit switching): 전화네트워크:
    • 스위치가 사전에 output link에 전용(dedicated) 회선(용량) 확보
    • 비트스트림을 중단/간섭 없이 송/수신(흘려보냄)
    • 기본적으로 point-to-point 연결
  • 패킷 스위치(packet switching) : 인터넷/우편:
    • 데이터를 묶음으로 전송: 패킷
    • 스위치의 동작: store-and-forward
    • 장점 : Bursty Traffic
  • 컴퓨터 통신에 적합한 것은?:
    • 사용자 입장 vs 네트워크입장
    • bursty traffic에 적합한 것은?

어드레싱(Addressing) 및 라우팅(Routing)

  • 상대방을 지정, 즉, ID 지정
  • 주소(address) : 노드를 식별하는 바이트열:
    • 대개 유일하다
  • 참고: 라우팅:
    • 목적지 노드를 향해 메시지를 어떻게 포워딩할지를 주소에 입각해서 결정하는 직업
  • 주소의 종류(즉, 연결 형태):
    • 유니캐스트(unicast): 특정노드를 가정
    • 방송/브로드캐스트(broadcast) : 네트워크의 모든 노드
    • 멀티캐스트(multicase) : 네트워크의 일부 노드 집합을 지정

비용 효율적인 자원 공유(Resource Sharing)

  • 여러 사용자들의 네트워크 자원(노드 및 링크)을 공유하도록 하여야한다.
  • 통신용어로는, 다중화(Multiplexing) 지원
  • 흔히 사용되는 다중화 선택:
    • 시분할 다중화(Time-Deivision Multiplexing : TDM)
    • 주파수 분할 다중화(Frequency-Division Multiplexing:FDM)
    • 코드 분할 다중화(Code-Division Multiplexing: CDM)

Multiplexing

  • link = physical
  • channel = logical

주파수분할 다중화(Frequency Division Multiplexing)

  • 주파수 사이에 틈(gap)이 있어야한다.

시분할 다중화(Time-Division Multiplexing)

  • 동기식(Synchronous) 시분할 다중화

다중화: FDM and TDM

  • Frequency Division Multiplexing
  • Time Division Multiplexing

통계적 다중화(Statistical Multiplexing)

  • 시분할 방법의 일종: 고정 분할이 아닌 요구에 따른 분할(On-demand):
    • 비동기식 다중화
  • Demux key/select?
  • 항상 좋은가?

통계적 다중화와 패킷스위칭

  • 통계적 다중화는 링크를 공유하는 방법
  • 패킷 스위칭은 노드가 목적지를 향해 데이터를 전달하는 방법
  • 패킷 스위칭: 패킷 단위로 링크 사용을 재스케줄링:
    • 패킷스위칭의 결과, 링크로 (거의) 통계적 다중화
    • 링크에서 통계적 다중화를 하려면, 노드에서는 패킷스위칭 필요
  • 다른 출발지/소스(source)로부터의 패킷들이 링크에서 섞이게 됨.
  • 링크로 나가기 위해 경쟁하는 패킷들을 저장: 버퍼링(buffering):
    • 서로간 독립적으로 동작시키기 위해서 경쟁상태에서 buffering이 이를 가능케함.
  • 패킷은 FIFO로 처리되거나, 기타 다른 방식으로 처리
  • 버퍼 오버플로우(overflow)를 혼잡(congestion)이라 부름.:
    • 혼잡은 전파되는 경향이 있음.

통신 서비스 제공

  • 통신의 주체는 응용프로그램
  • 따라서, 네트워크는 응용프로그램이 원할히 통신할 수 있는 기능을 제공:
    • 통신 기술을 기반으로 응용프로그램이 요구하는 기능을 구현/제공
    • Network Transparency : 실제 통신과정과 상관 없이, Host 간 연결을 투명하게, 추상화되도록 하는것
    • 즉, 호스트 간의 연결을 프로세스 간의 통신 형태로 변환
  • 네트워크는 프로세스와 프로세스 간의 채널을 지원한다.

통신 서비스: 통신 장애극복

  • 네트워크가 정상적으로 동작하지 않는 경우:
    • 비트 수준 오류(전자가 간섭/방해)
    • 패킷 수준 오류(혼잡)
    • 링크/노드 고장
    • 메시지의 지연
    • 메시지의 순서가 바뀌어 전달(out-of-order)
    • 제삼자의 도청

프로토콜 (Protocol)

  • 통신에 사용되는 약속:
    • 예) 수신호, 언어
    • 양쪽이 같아야함. 즉, 반드시 대칭 관
  • 다양한 컴퓨터 통신 시스템/응용:
    • 프로토콜의 복잡화
    • 불명확한 해석
    • 변경 등 관리의 어려움
    • 새로운 프로토콜이 필요할 때마다 반복
  • 복잡성을 해결하는 구조적인 기법이 필요

계층화 (Layering)

  • 복잡한 문제를 한번에 풀 수 없다.:
    • 복잡한 내용/문제를 숨겨서 문서를 단순화 -> 추상화(abstraction)
    • 추상화된 문제/내용의 해결 -> 추상화를 recursive하게 적용
  • 추상화는 자연스럽게 계층화를 유도한다.
  • 각 계층은 하나의 기능을 하는 부품/개체로서 다른 프로토콜에서 재사용 가능

프로토콜 계층/개체

  • 프로토콜 계층/개체:
    • (전체) 프로토콜을 구성하는 계층, 즉, 프로토콜의 구성요소
    • 자체도 프로토콜이라고 부름
  • 각 프로토콜 개체는 두 개의 다른 인터페이스를 갖는다.:
    • 서비스 인터페이스(service interface) : 해당 프로토콜의 작업을 정의
    • 동료 인터페이스(peer-to-peer interface): 동료간에 교환되는 메시지를 정의
    • 대부분의 구현은 procedure signiture이다.
    • 상위 계층에서 줘야하는 parameter를 알려주어야하기 때문이다.

(전체) 프로토콜 정의: 프로토콜 그래프

  • 프로토콜 그래프 (또는 프로토콜 스택):

    • 프로토콜 모음(collection)과 그들 사의의 의존관계(dependency)
    • 동료 간의 통신은 대개 간접적으로 이루어진다.:
      • 실제 통신은 하위 계층을 사용하여 (즉, 위임하여) 이루어진다.
      • 하드웨어 수준에서만 동료간이 직접적임
  • 하위 프로토콜 공유:

    • 다중화(Multiplexing) 및 역다중화(Demultiplexing) - demux key

(계층적) 프로토콜: 동작원칙

  • 포장/캡슐화 (Encapsulation):
    • 헤더(Header)
    • 바디(Body)

추상화/계층화 개념 정리

  • 추상화 : 기능이 있다고 가정하자
  • 계층화 : 여러 계층으로 나누어 각 계층이 해당 기능을 담당한다

표준구조 (Standard Architectures)

  • Open System Interconnect (OSI) Architecture:
    • International Standards Organization (ISO)
    • International Telecommuications Union(ITU) : formerly CCITT
    • 참조 모델(Reference Model): 통신 문제를 나누어 생각하는 틀

7계층(기능) 정의

  • Application 7 응용 계층: 응용 자체와 관련된 사항만
  • Presentation 6 표현 계층 : 데이터 표현 방법과 관련된 사항
  • Session 5 세선 계층 : 대화 패턴과 관련된 사항 담당
  • Trasnport 4 트랜스포트 계층: 통신 응용 사이의 신뢰성 있는 메시지 교환
  • Network 3 네트워크 계층 : 네트워크를 통해 연결된 호스트(단말) 사이의 데이터(패킷) 교환
  • Link 2 링크계층 : 하나의 링크로 연결된 노드 사이의 비트 묶음(프레임) 교환
  • Pysical 1 물리 계층: 물리적인 신호 교환과 관련된 사항 담당

인터넷(Internet) 구조

  • Internet Engineering Task Force (IETF)

  • 5,6 계층은 탈락

  • Internet Protocol (IP)는 3-4 계층 사이에 존재하며, 서로 다른 네트워크를 연결하지만 3계층에 가까움

  • 성능상의 문제

  • OSI(7계층) 모델 : 컴퓨터 네트워크 설계/구현 및 구조 체계 표준이지만, 실제 구현과 동일하지 않고, 문제 인식/ 설계의 참조모델로서 사용한다.

  • 각 계층 설명:

    1. 물리 계층 : 직접 연결된 노드 사이의 비트 전송
    2. 링크 계층 : 직접 연결 노드 사이 프레임(비트 묶음) 전송
    3. 네트워크 계층 : 스위치로 간접연결 된 호스트 사이의 패킷 전성
    4. 트랜스포트 계층 : 종단간(end-to-end) 신뢰성 있는 전송

성능(Performance) : 대역폭

  • 대역폭(Bandwidth) – 처리량/처리속도(throughput):
    • 단위 시간 당 전송될 수 있는 데이터의 양:
      • 예) 10Mbps (bits-per-second)
    • 링크 간 대 종단간
    • 표기 방법:
      • KB - 2^10 bytes
      • Mbps - 10^6 bits per second
    • 대역폭은 비트 폭(bit width)과 관련이 있다.:
      • 속도가 높아지면 비트폭이 작아진다. 즉, 비트 사이가 좁아진다.

성능: 소요 시간 / 지연 시간

  • 소요시간(Latency) / 지연시간(Delay)
  • A지점에서 B지점으로 메시지를 송신하는 데 걸리는 시간:
    • 예: 24 milliseconds(ms)
  • 때로 왕복지연시간(round-trip time:RTT)이 중요할 수 있다.
  • 시간 소요 항목:
    • 소요시간 : Propagation(고정항목, 상수) + Transmit(보내는 양에 따라 변화) + Queue (변수 항목) (+ 스위칭 시간)
    • Propagation (전파지연시간) = Distance / Speed of Light
    • Transmit (전송 시간) = Size / Bandwidth
  • 광속(Speed of light) - 전파의 속도
  • 직접 링크에서는 큐잉 지연(queueing delay)은 없음.

Timing of Circuit Switching

  • 아무리 빨라도 받는데에 시간 소요가 있음(Propagation Delay)
  • Address를 다 보내는 동안은 Node 1도 Node 2에게 전송하지 못하고 기다려야한다
  • circuit switch는 데이터를 보내기 전에 충발지로부터 도착지까지 적어도 한번은 갔다와야된다. : RTT = 2 * total 전파 지연 시간
  • circuit switch에서 초기 연결시간이 있다는 것

Timing of Packet Switching

  • Store and Forward -> 동시에 일어나는게 아니라 store를 다하고 forward한다.
  • processing and queueing delay 시간이 필요함.

Packet Segmentation: Pipelining

  • Circuit Switch의 data와 비슷한 모습이 된다.

성능 (Performance)

  • 대역폭과 소요시간의 상대적 중요성:

    • 작은 메시지(예: 1byte) : 소요시간 중요
      • 1ms vs 100ms dominates 1Mbps vs 100Mbps
    • 큰 메시지 (예: 25MB) : 대역폭 중요:
      • 1Mbps vs 100Mbps dominates 1ms vs 100ms
  • 무한대 대역폭:

    • 총 소요시간이 중요:
      • Throughput : Tansfer Size / Transfer Time (전송완료시간)
      • Transfer Time = RTT + (1 / Bandwidth) x TransferSize
    • 1-MB file to 1-Gbps link as 1-KB packet to 1-Mbps link
    • 데이터도 같이 증가
    • 대역폭이 증가해서 소요시간이 더 중요해지거나 싶지만 주고 받는 데이터의 양도 증가했다. 따라 여전히 대역폭과 소요시간 두개의 다 중요하다.

지연시간 x 대역폭 (Delay x Bandwidth Product)

  • “in flight” or “in the pipe” 데이터양
  • 비트로 나타내는 링크의 길이(bit length):
    • 링크의 부피
    • 대역폭이 반영된 지연시간
  • 예: 100ms x 45Mbps = 560 KB

Frames

  • 대역폭을 키운다고 바로 사용하는 것이 아닌 대역폭을 활용하기 위해 크기를 조절해야한다.

통신 성능을 높이는 방법?

  • 처리량(대역폭)을 높이는 방법

  • 소요시간(지연시간)을 줄이는 방법

  • 두 방법이 같은 것은 아님:

    • 대역폭을 높이면, 소요시간이 일부개선
    • 그러나 소요시간은 다른 요소 포함.
    • 또한, 데이터양이 적으면 대역폭 확장은 효과 미미
  • 실제 생활 문제로 대체하여 이해:

    • 두 지점 사이에 탑승자/물류 이송의 성능 문제

대역폭을 높이는 방법?

  • 한번에 보내는 양을 높인다.:
    • 데이터를 신호화하는 작업의 효율 증대
  • 보내는 속도를 높인다.:
    • 고주파 채널을 사용한다.
  • 채널을 넓힌다.:
    • 넓은 대역 채널을 사용한다
    • 여러 통신 채널을 병렬 사용

소요시간을 줄이는 방법?

  • 신호(전파, 광파)의 속도를 높일수는 없다.
  • 지역처리를 높여서 실질적인 거리를 줄인다.
  • 트래픽을 조절해서 큐잉 대기 시간을 줄인다.

2장. 데이터 링크 네트워크 (Data-Link Network)

데이터링크 계층

  • OSI 7계층의 1,2 계층은 무엇을 담당?:
    • 하나의 링크로 연결된 두 노드 사이의 비트 묶음(프레임) 교환
  • 하나의 링크로 연결된 두 노드:
    • 점대점 연결 네트워크: 가장 간단한 네트워크
    • 일반적인 네트워크 구성의 기본 block

하드웨어 구성요소: 노드(Nodes)

  • 단말/호스트, 스위치/라우터
  • 범용(프로그래밍할 수 있는) 컴퓨터로 구성된다고 가정:
    • 예) PC
  • 때때로 특수한 목적의 하드웨어로 대체되기도 한다.
  • 유한 메모리(제한된 버퍼공간을 의미)
  • 네트워크 어뎁터(or NIC:Network Interface Cache)fㅡㄹ 통해서 네트워크에 연결
  • 프로세서는 빠르고, 메모리는 느림
  • 데이터(신호) 전달을 위한 물리적 매체, 예) 케이블, 공기
  • Wired vs Wireless
  • 전송모드:
    • Simplex, Half-duplex, Full-duplex
  • 링크는 논리적 통로:
    • 하나의 케이블에 여러링크. 예)ADSL

모듈레이션: 데이터의 신호화

  • 데이터를 링크, 즉, 물리적 매체를 통해서 전달하기 위해서
  • 인코딩/모듈레이션(Modulation) : data -> signal
  • 수신 쪽에서는 반대작업(Demodulation) : signal-> data
  • 모뎀(Modem)
  • 신호의종류 : 전자기파 스펙트럼:
    • 주파수, 파장

전자기 스펙트럼과 매체 특성

  • 저주파일수록 전송 특성이 좋다. (장애물을 잘 통과한다)
  • 저주파는 고속의 데이터 전송에 한계가 존재한다.:
    • 통신속도(대역폭)과 비트폭(length)
  • 통신의 발전: 저주파 -> 고주파

사용가능한 유선 링크의 종류

  • Category 5 twisted pair : 흔히 말하는 UTP 케이블, 10~100Mbps, 100m
  • 50-ohm coax (ThinNet) : 10~100Mbps, 200m (동축케이블)
  • 75-ohm coax (ThickNet) : 10~100Mbps, 500m (동축케이블)
  • Multimode filter : 100Mbps, 2km (광케이블)
  • Single-mode filter : 100~2400Mbps, 40km (광케이블)
  • 전화회사로부터 선을 임대하는 경우:
    • ISDN : 64kbps
    • T1 : 1544 Mpbs
    • T3 : 44736 Mbps
    • STS-1 : 51840 Mbps
    • STS-3 : 155250 Mbps
    • STS-12 : 622080 Mbps
    • STS-24 : 1.244160 Gpbs
    • STS-48 : 2.488320 Gpbs

광케이블 : Optical Fiber

  • Index of reflection = Speed of vaccum/Speed in medium Modes
  • 집(사용자)와 인터넷공급자 사이를 마지막으로 연결하는 링크
  • 사용자가 선택해서 사용하는 링크이므로 중요
  • 과거 : 모뎀을 통한 음성전화 링크
  • xDSL(Digital Subscriber Loop) : 음성과 data를 FDM 방식으로 동시에:
    • ADSL
    • VDSL
  • Cable Modem: asymmetric, shared bandwidth
  • 장점 : 고정된 링크가 없음:
    • 이동성 지원
    • 즉시 사용가능
  • 단점 : 공중으로 퍼져나감:
    • 고주파 vs 저주파
    • 인접한 링크 사이에 간섭이 일어날 수 있음:
      • 전화 사용에 규재가 필요 - 라이센스 제도
    • Multipath problem

이동 통신(Cellular Network)

  • 기지국 <-> 단말기:
    • 셀 : 하나의 기지국이 관할하는 지역
    • 한드오프(hand-off) 문제
  • 기술발전:
    • AMPS => PCS(GSM/CDMA) => W-CDMA => 4세대 이동통신 => 5G
    • Overlapping circular cells, Idealized hexagonal netowrk, Microcells within a network

고정 무선 통신(Wireless Field linked)

  • 무선 고속 전용링크
  • 무선 가입자망:
    • 소수의 이용자를 위해서, 선깔기는 아쉬울때 사용. 안태나에 지향성을 부과해서 공간을 분할한다.

위성통신(Satellite system)

  • 정지궤도 방송/전화 -> 대부분 고정식
  • 정지궤도 데이터(VSAT)
  • 저궤도 전화 : 양방향 원할, 이동가능 (셀이 작아지고, 많은 양의 위성이 필요하다.)
  • 위성방송/DMB : 위성은 단순히 스위치, 중계만 하도록 사용했다. 지연시간 등의 속도적 문제점은 있을 수 있지만, 위성을 재활용해서 지상에서 업데이트가 가능하다는 장점이 있다.

단거리 무선통신(Short Range)

  • Public (licensefree) band 이용
  • 적외선통신
  • 무선 LAN - IEEE 802.11
  • Bluethooth
  • ZigBee/IEEE 802.15.4

인코딩

인코딩(Encoding)

  • 신호(Signal)는 물리적 매체를 통해 전달된다.:
    • 디지털 신호, 아날로그 신호
  • 데이터는 디지털 데이터만 취급:
    • 아날로그 데이터는 디지털 데이터를 변환
  • 문제: 발신지에서 목적지로 보내려는 이전 데이터를 전달될 수 있는 신호로 인코딩 해야함.
  • 보다 일반적인 용어로는 변조(Modulation)이라고 한다.

디지털 전송(Transmission)

  • 신호 중계방법:
    • 아날로그 전송:
      • 신호를 단순 증폭만 한다.
      • 즉, 앰프(Amplifier)를 사용한다.
    • 디지털 전송:
      • 신호에서 데이터를 복원하여 다시 신호화:
        • 디지털 데이터를 담은 신호만 사용가능
      • 즉, 리피터(Repeater) 사용
    • 거의 모든 전송 방법이 디지털 전송 사용:
      • noise 제거
      • 기기비용, 부가기능 추가기능 등을 고려하여 사용

데이터 전송(Transmission)

  • 전송할 때 Analog를 Digital로 변환하여 보낸다.

Pulse Code Modulation

  • sampling의 주기를 줄이면, 손실을 줄일 수 있다. 즉, sampling 주기는 각 샘플을 얼마나 정확하게 저장할 것이냐를 의미한다.

PCM

  • Sampling Theorem:
    • Sampling rate = 2 * Highest Signal Frequency
  • 4 kHz Voice = 8 kHz sampling rate
  • Represent samples as pulses (PAM)
  • Quantize the samples (PCM)
  • 8 k samples/sec * 8 bits/ smaple = 64 kbps

변조 : Amplitude Modulation

  • 하나의 신호로 많은 비트를 보낼 수 없다.

  • 주파수 변조(Frequency Modulation), 위상 변조(Phase Modulation)

  • 이동통신의 속도가 2배 증가시킬려면?:

    • Shannon의 법칙
    • AM, FM, PSM을 동시에 적용한다.

디지털 전송(Transmission)

  • Analog Data, Digital Data
  • Digital Transmission
  • Modulation : Data -> A-Signal

Non-Return to Zero(NRZ)

  • 노드 내부의 데이터 표현과 일치(즉, 별도의 인코딩 필요 없음)
  • 문제점 : 1 또는 0이 연속되는 경우:
    • Low Signal(0)인 경우 수신자는 신호가 없는 것으로 오해할 수 있음
    • High Signal(1)인 경우 전류가 계속 흐르게되고, 기저 전압의 혼돈이 생김.
    • Clock 복구가 불가능:
      • 송신자와 수신자의 Clock이 맞지 않으면 잘못된 비트 인식
      • 수신자가 송신자의 Clock의 자신의 Clock을 맞추는 작업

NRZI and Manchester

  • Non-return to Zero Inverted(NRZI):
    • 1을 인코딩할 경우 현재의 신호로부터 중앙지점에서 전이(mid transition)을 하고, 0을 인코딩할 경우 현재의 신호 상태를 유지함:
      • 연속되는 1 문제를 해결하는 방법
  • Manchester:
    • 0 : uptransition, 1: down transition
    • NRZ 방식으로 인코딩 데이터와 클럭을 베타적 논리합(XOR)을 시켜서 바꾼다.:
      • 50% 효율 문제

4B/5B

  • 아이디어:
    • 데이터를 매 4bits 마다 5-bit의 코드로 인코드한다. 이 5-bit 코드는 앞에 1개, 뒤에는 2개까지의 0이 나오도록 제한하여 선택된 코드이다. (따라서, 0이 4개 이상 연속되게 나올 수 없다.)
    • 5-bit 코드는 NRZI 인코딩을 이용해서 전송된다.
    • 효율을 80% 달성한다.

프레이밍(Framing)

  • 데이터를 끝없이 보낼수는 없음(특히, 패킷 네트워크에서는)
  • 문제:
    • 비트(bit)들의 연속을 하나의 묶음(frame)으로 자르는 것
    • 수신 쪽이 프레임을 인식할 수 있도록 묶는 것
    • 프레임의 처음과 끝 인식
  • 전형적으로 네트워크 어뎁터에서 구현된다.
  • 어뎁터는 호스트메모리로부터 프레임을 넣고 가져옴.

바이트 중심 프로토콜(Byte-Oriented Protocol)

  • 보초 방법(Sentinel Approach):
    • BICYNC
    • IMP-IMP, PPP
    • 문제점 : 프레임의 데이터부에서 ETX 문자가 나올 경우
    • 해결 : 확장문자(escaping character) 사용:
      • BICSYNC의 경우 DLE 문자를 ETX문자를 앞에 부착
      • IMP-IMP의 경우에는 DLE 문자 앞에 DLE문자를 부착
  • 바이트 수 방법(Byte Counting Approach) - DDCMP:
    • 문제: 개수(count) 합이 잘못된 경우(training error)
    • 해결 : 순회 중복검사(CRC)가 실패하므로 오류 검출

비트 중심 프로토콜 (Bit-Oriented Protocol)

  • HDLC : High-level Data Link Control (also SDLC and PPP):
    • 특별한 bit-sequence를 프레임의 앞과 뒤에 붙여서 프레임을 구현(01111110)
  • 비트 삽입(bit stuffing):
    • 송신자 : 메시지의 중간에 연속되는 5개의 1이 나오면 0을 생성함.
    • 수신자 : 1을 연속해서 5개 받았을 때, 다음 비트를 본다.:
      • 다음 비트가 0이라면 그 비트를 삭제한다.
      • 다음 비트가 10이라면 프레임의 끝
      • 다음 비트가 11이라면 오류

오류 검출 코드(Error Detecting Code)

  • 데이터 영역 안에 오류가 있는지 없는지를 알아내는 부가 데이터
  • 예):
    • 크기면에서 EDC « data : 오류가 없는 경우 단순 부하이므로
    • 효율면에서, 오류 검출율이 높아야함
    • 비용면에서, f() 연산에 시간이 적게 소모되어야함.

오류 검출율

  • EDC가 완벽하게 오류를 검출할 수 있을까?
  • 검출 실패 : 시스템 integrity 상실
  • 매우 높은 오류 검출율 + 중복 오류 검사

2차원 패리티(Two-Demsional Parity)

인터넷 체크섬 알고리즘(Internet Checksum Algorithm)

  • 아이디어 : 메시지를 16-bit의 정수의 연속으로 간주하고, 각 정수들을 16-bit 1의 보수 연산을 사용하여 모두 더한다. 그리고 그 결과 값의 1의 보수를 얻는다.
u_short cksum(u_short *buf, count)
{
  register u_long sum = 0;
  while (count --) {
    sum += *buf;
    if (sum & 0xFFFF0000) {
      /* carry occured, so wrap around */
      sum &= 0xFFFF;
      sum ++;
    }
  }
  return ~(sum & 0xFFFF);
}

순회 중복 검사9Cyclic Redundancy Check: CRC)

  • 더하기보다 복잡한 나누기 사용 : 나머지 오류 검출코드로 전송

  • 갯수로 사용될 송수신 사이에 약속된 비트 패턴: C

  • 보낼 메시지 : M

  • 오류 검출을 위해 추가되는 정보 : F(즉, EDC)

  • 송신쪽:

    • (M || F) % C == 0 이 되도록 F를 설정, 즉 (F에 나머를 넣어서) 전체 프레임이 C로 나누어 떨어지도록 함.
    • (M || F)를 전송
    • 예) C=1101, M=10011010 이면, F=101 생성, 10011010101 전송
  • 수신쪽:

    • 수신된 메시지 전체를 C로 나누어서:
      • 나누어 떨어지지 않으면 오류 발생
      • 나누어 떨어지면 오류가 없는 것으로 간주
  • 성능:

    • 오류검출율:
      • 비트 C의 선택이 좌우
      • 수학적 분석에 의해 잘 잡으면 32bit 코드 사용하면, 1500bytes 이상의 데이터에 대해서도 99.99의 검출율
    • 연산속도:
      • 전송 속도보다 늦으면 곤란하기 때문에 네트워크 카드내에서 하드웨어적으로 처리
    • 빠른 연산과 분석을 위해서 xor로 구현

Error Pattern: E(X)

  • 전송하는 프레임 : P(X)
  • 수신하는 프레임 : P’(X)
  • 전송 중 발생한 오류를 프레임에 대응되는 형태로 나타내면 : E(X)
  • 관계:
    • P(X) xor P’X() = E(X)
  • 주의:
    • E(X) 값을 구하는 것이 목적이 아님
    • 오류가 없었다면, E(X) = 0 이고, P(X)=P’(X)라는 사실

CRC에 대해 간단히 설명하시오

  • 전송되는 데이터의 오류 여부확인을 위해 부가되어 보내지는 오류 검출 코드
  • 송신자가 계산해서 추가, 수신자가 이를 확인
  • 오류 검출율이 매우 높고, 하드웨어 구현이 가능해서 거의 모든 링크 전송에서 사용

복구 : 개요

  • 오류에 의해 변질된 프레임의 복구
  • 오류 수정 코드(Error Correction Codes: ECC):
    • 순방향 수정(Forward Error Correction :FEC)
  • 자동반복 요청(Automatic Repeat reQuest: ARQ): 재전송:
    • ACK와 타임아웃(Acknowledgements and Timeouts)
    • 역방향 수정(Backward Error Correction)
  • 참고 : 오류 중에는 프레임 자체가 성립하지 않는 framing error 도 있음:
    • 이 경우 수신 쪽이 frame 수신 여부를 인식하지 못함.(frame loss)

오류 수정 코드(Error Correcting Codes)

  • Forward Error Correction(FEC)
  • 재전송이 용이하지 않는 경우 유용:
    • 전화 같은 실시간 통신, 재전송이 의미가 없는 경우

재전송을 통한 오류 복구

  • 타임아웃, 재전송용 버퍼처리 등 필요
  • 어뎁터에서 단독으로 처리하는데 한계
  • 2계측이 제공해야하는 기능이지만, 노느 내의 소프트웨어로 처리한다.

ARQ

  • 응답(ACK) 및 타임아웃
  • 순서번호(Seq):
    • ACK의 분실 경우 중복 데이터 문제 발생:
      • 순서번호 필요
      • 수신된 중복 data는 무시한다.
      • 반드시 ACK을 전송한다
  • Automatic Repeat Request(ARQ):
    • Error detection
    • Acknowledgement
    • Retransmission after timeout
    • Negative acknowledgement (optional)

Stop and Wait : Tming 분석

  • Utilization of Link = (frame size / bit rate) / (distance / speed of signal) = frame size / (distance x bit rate)
  • 문제점 : 파이프를 꽉 채운채로 유지하지 못함.

슬라이딩 윈도우

  • 아이디어 : 송신자가 ACK를 받기 전에 여러 프레임을 전송할 수 있도록 한다.
  • ACK를 받지 않은 상태에서 보내지는 프레임(outstanding frame)이 복수로 늘어난다. 그 수는 제한된다.(window size):
    • 모두 오류 제어 대상, 순서 번호 필요
    • stop & wait는 sliding window의 window size가 1인 경우
  • 각각의 프레임에 대해서는 ARQ, 즉 ACK/timeout & retransmission
    • ACK #n의 의미를 일관성 있도록 정의해서 사용
  • 즉, 효율 높은 오류제어: 버퍼링보다는 오류제어가 핵심이다.

Sliding Window Protocol의 성능

  • $U(Utilization) \propto N, 1/t_{prop}, t_{frame}$
  • 윈도우 크기(N)이 충분히 크면, 효율이 증가한다.
  • 즉, ACK가 돌아올 때까지 윈도우가 모두 소진되지 않으면 기다리는 시간 없이 100% 통신이 가능하다.

슬라이딩 윈도우의 오류 복구

  • 복수의 outstanding frame 중 어느 프레임에서도 오류 발생 가능:
    • 따라서 모든 프레임은 개별적으로 재전송준비가 되어야한다.
  • 오류 처리 정책:
    • Go-Back-N : 오류가 발생한 지점부터 새출발
    • Selective - Repeat : 오류가 발생한 프레임만 재전송

Go-Back-N (구현) 옵션

  • Go-Back-N에는 여러가지 옵션이 가능하다.
  • 수신 쪽에서 out-of-order 프레임을 어떻게 처리하는가에 따라서:
    • ACK를 보낼 것인가?
    • 저장을 할 것인가?
  • 저장 안하고 ACK도 보내지 않는다. -> stop & wait
  • 저장하고 ACK는 안보낸다. -> 이를 가정하고 설명한다.
  • 저장 안하고 ACK를 보낸다. -> 중복 ACK
  • 저장하고 ACK도 보낸다. -> 중복 ACK
  • 송신 쪽은 동일하게 동작:
    • 각 outstanding 프레임에 대해:
      • 재전송 버퍼에 저장 : 타임아웃 설정
    • 오류 발생 인지 이후 : 모든 outstanding frame을 동시 전송? 각 frame의 timeout에 전송
  • 어떤 옵션으로 구현되어도 연동가능, 즉 오류 복구 가능

오류처리 정책 : Go-Back-N 재검토

  • 오류가 발생한 N부터 다시 출발(N이하를 무조건 다시 보낸다는 의미가 아님)
  • 핵심 : ACK는 “~까지 잘받았다"는 의미의 누적(cumulative) ACK 사용
  • 수신쪽에서의 버퍼링은 수신자가 독립적으로 결정:
    • 버퍼링 안해도 된다.

오류처리 정책 : Selective Repeat

  • 필요조건:
    • 수신쪽은 out-of-order 프레임 수신. 버퍼링 필수
    • 수신쪽이 정확한 수신 상황ㅈ 정보를 송신 쪽에 알려주어야 함.
    • ~는 잘 받았다는 개별(individual)/선택(selective) ACK 필수

Sliding Window 세부사항

  • Sliding Window는 오류 제어 프로토콜:
    • 각각의 outstanding frame에 대해 기본적으로 ARQ수행
    • 복수 개의 outstanding frame 처리를 위해 buffering 추가
  • (Go-Back-N, Selective-Repeat) 선택은 송신자의 결정:
    • 송신자의 재전송 방법 : 수신자의 buffering은 별도문제
    • Sending Buffer : 필수 (재전송)
    • Receiving Buffer:
      • Selective-Repeat : 필수 (out-of-order 프레임 반드시 저장)
      • Go-Back-N : 성능 향상을 위한 option
    • 수신자가 out-of-order를 저장한다고 Selective Repeat은 아님
  • 송신자가 Selective-Repeat을 하기 위해서는 수신 상황 정보가 필요:
    • 수신 쪽에서 송신 쪽으로 selective/individual ACK를 보내야한다. 송신쪽에서 Selective Repeat 가능

프로토콜의 구현

  • 오류제어 이전까지는 Adaptor(NIC)에서 하드웨어로 구현
  • 오류제어는 소프트웨어로 구현되는 첫 프로토콜
  • 송수신 양쪽에서 보는 것은 이론적 설명에서만 실제론:
    • 송수신이 각각 독립적으로 동작
    • 프로토콜의 동작에 대해서 확실한 이해 필요
    • 특히, 비정상 상황에 대해서
  • 난이도:
    • Concurrent and distributed program

슬라이딩윈도우(GoBackN) 세부알고리즘

  • 송신자:
    • 각 프레임에서 순서번호를 할당(SeqNum) : 각 outstanding frame의 ID
    • 세 개의 상태 변수를 유지:
      • 송신창 - send window size(SWS)
      • 마지막으로 받은 ACK 의 프레임 번호 - last acknowledgement received (LAR)
      • 마지막으로 보낸 프레임 - last frame sent (LFS)
    • 다음 항등식(invariant)을 유지 : LFS - LAR + 1 <= SWS
    • 상위 계층에서 전송 요청을 받으면, 1) LFS를 증가시키고 (LFS 증가가 불가능하면 wait), 2) 타임아웃을 설정한 뒤, 3) 프레임을 전송
    • ACK를 받으면 1) 타임아웃을 해지하고, 2) LAR을 증가시키며, 3) 이에 따라 새로 창이 열리며 전송이 가능
    • 타임아웃이 걸리면 1) 타임아웃을 설정한 뒤, 2) 프레임을 재전송
    • SWS만큼의 프레임은 버퍼에 유지 – 재전송에 필요
  • 수신자:
    • Out-of-order 프레임을 저장하는 GoBackN 알고리즘
    • 세 개의 상태 변수를 유지:
      • 수신창 - receive window size(RWS)
      • 받아들일 수 있는 마지막 프레임 - last frame acceptable (LFA)
      • 수신 예상 프레임 - next frame expected (NFE)
    • 항등식(invariant)을 유지: LFA - NFE + 1 <= RWS
    • SeqNum의 프레임이 도착하면:
      • If NFE <= SeqNum <= NFA -> 받아들임(accept):
        • 중간에 빈 곳 없는 연속되는 데이터는 상위 계층으로 deliver
      • If (SeqNum < NF) or (SeqNum > NFA) -> 버림 (discard):
        • SeqNum < NFE 는 ACK 전송 필요
      • 누적 ACK(cumulative ACK)를 보낸다. (NFE 값으로)

순서 번호 공간 (Sequence Number Space)

  • 순서번호는 오류제어에서 필수
  • 프레임 헤더의 필드는 한정된 공간 (많이 사용할 수록 overhead 증가): 결국 일정한 숫자에서 순서번호는 순환되며 사용
  • 순서번호공간 : 가능한 순서번호 구간:
    • 예 : 4-bit 필드 => [0..15]
  • 문제 : 순서번호 필드를 얼마로 잡아야 안전하겠는가?:
    • 반대로, 주어진 순서번호 공간에서 최대 outstanding 프레임, 즉, 송신자 기준 WindowSize는 얼마까지 늘릴 수 있나?
  • 순서 번호 공간은 현재 전송 중인 프레임의 수보다 커야한다.:
    • 어떤 프레임이 오류 및 재전송의 대상이 될지 모르므로, outstanding Frame 각각은 서로 다른 SeqNum를 갖고 있어야한다.
  • outstanding 프레임의 최대 수 = SendingWindowSize(SWS)
  • 따라서, 순서번호공간 크기 > SWS
  • 하지만 단순히, SWS <= 순서번호공간에서는 다른 문제가 생긴다.:
    • 순서가 순환되었음에도 수신자가 이를 인지하지 못하고 새로운 데이터를 재전송된 데이터라고 판단하는 문제
  • 결론 : SWS < 순서번호 공간 / 2:
    • 즉, WindowSize는 최대로 보낼 수 있는 outstanding 프레임의 수이고 이는 순서번호공간의 반보다 작아야한다.
    • 정확하게는 SWS < (MaxSeqNum + 1) / 2
  • 직관적으로 설명하면, SeqNum는 순서 번호 공간의 1/2 사이를 오고간다.

동시 논리 채널(Concurrent Logical Channels)

  • 하나의 점대점(point-to-point) 링크를 통해 여러 개의 논리적 채널을 동시/다중 송신함.
  • 각각의 논리적 채널은 정지 대기(stop-and-wait)방식으로 운영된다.
  • 각 지상 링크에 대해서 8개의 논리적 채널을 유지한다.
  • 각 프레임의 헤더에는 3-bit 채널 번호와 1-bit 순서 번호, 총 4비트가 포함되어 있으며, 이는 슬라이딩 윈도우 프로토콜가 8개의 송신창을 유지하는데 필요한 것과 같다.
  • 신뢰성 문제를 흐름제어(flow control)와 프레임 순서(frame order) 문제와 분리:
    • Sliding Window Protocol은 all-in-one approach이기에, 오류 문제, 버퍼링 문제, 순서 문제를 한번에 처리하여 복잡하다.

Sliding Window 구현

  • 목적:
    • 통신 알고리즘이 어떻게 구현되는가에 대한 궁금증 해결 (계층 구조는 어떻게 구현되는가?)
    • 슬라이딩 윈도우 알고리즘 구현을 통한 확실한 이해
  • 어디서, 즉, 시스템의 어느 단계에서, 동작하는 프로그램인가?:
    • 프레임 하나 하나의 송수신은 NIC(Network Interface Card)이 담당
    • 슬라이딩 윈도우는 바로 그 위에서 동작 -> 디바이스 드라이버
  • 프로토콜 내부동작의 실체는?:
    • 계층구조에 따라, 헤더 정보를 써넣고, 읽고 처리하는 것이 기본
    • 담당 기능에 따라 세부 동작이 정해짐 (슬라이딩 윈도우 - 오류 제어)
typedef u_char SwpSeqno;
typedef struct {
  SwpSeqno SeqNum; /* sequence number of this packet */
  SwpSeqno AckNum; /* allows window sizes of up to 128 */
  u_char   flags;  /* up to 16 bits worth of flags */
} SWPHdr;

typedef struct {
  /* sender side state; */
  SwpSeqno    LAR;      /* seqno of last ACK received */
  SwpSeqno    LFS;      /* last frame sent */
  Semaphore   sendWindowNotFull;
  SWPHdr      hdr;      /* pre-initialized header */
  struct txq_slot {
    Event   timeout;    /* event associated with send-timeout */
    Msg     msg;
  } sendQ[SWS];

  /* receiver side state: */
  SWPSeqno    NFE;      /* seqno of next frame expected */
  struct rxq_slot {
    int     recieved; /* is msg valid? */
    Msg     msg;
  } recvQ[RWS];
} SwpState;

static XkHandle
sendSWP(SwpState *state, Msg *frame)
{
  struct sendQ_slot *slot;
  hbuf[HLEN];
  /* wait for send window to open */
  semWait(&state->sendWindowNotFull);
  state->hdr.SeqNum = ++state->LFS;
  slot = &state->sendQ[state->hdr.SeqNum % SWS];
  store_swp_hdr(state->hdr, hbuf);
  msgAddHdr(frame, hbuf, HLEN);
  msgSaveCopy(&slot->msg, frame);
  slot->timeout = evSchedule(swpTimeout, slot, SWP_SEND_TIMEOUT);
  return send(LINK, frame);
}

static int
deliverSWP(SwpState *state, Msg *frame)
{
  hbuf = msgStripHdr(frame, HLEN);
  load_swp_hdr(&hdr, hbuf);
  if (hdr.Flags & FLAG_ACK_VALID)
  {
    /* received an acknowledgment --- do SENDER-side */
    if (swpInWindow (hdr.AckNum, state->LAR+1, state->LFS))
    {
      do
      {
        struct sendQ_slot *slot;
        slot = &state->sendQ[++state->LAR % SWS];
        evCancel(slot->timeout);
        msgDestroy(&slot->msg);
        semSignal(&state->sendWindowNotFull);
      } while (state->stateLAR != hdr.AckNum);
    }
  }
  // 송신 쪽, timeout 처리는 생략
  if (hdr->Flags & FLAG_HAS_DATA)
  {
    struct recvQ_slot *slot;
    /* received data packet -- do RECEIVER-side */
    slot = &state->recvQ[hdr.SeqNum & RWS];
    if (!swpInWindow(hdr.SeqNum, state->NFE, state->NFE + RWS - 1))
    {
      /* drop the message */
      return SUCCESS;
    }
    msgSaveCopy(&slot->msg, frame);
    slot->received = TRUE;
    if (hdr.SeqNum == state->NFE)
    {
       Msg m;
       while (slot->received)
       {
         deliver(HLP, &slot->msg);
         msgDestroy(&slot->msg);
         slot->received = FALSE;
         slot = &state->recvQ[++state->NFE % RWS];
       }
       /* send ACK; */
       prepare_ack(&m, state->NFE);
       send(LINK, &m);
       msgDestroy(&m);
    }
    return SUCCESS;
  }
}

이더넷 (Ethernet) 개요

  • LAN(Local Area Networks)의 대명사
  • 역사:
    • skip
  • CSMA/CD:
    • Carrier Sense : 반송 신호 감지
    • Multiple access : 다중 접근
    • Collision detection : 충돌 검출
  • 버스 토폴로지: 다중 접근 연결
  • 문제 : 공유 매체에 공평하게 접근할 수 있는 분산(distributed) 알고리즘:
    • 즉, 매체접근 (MAC: Medium Access Contorol) 필요

물리적 특성 (버스 토폴로지)

  • 고전적 이더넷 (Classicial Ethernet) : Thick-net:
    • 현재는 거의 사용하지 않지만, 이더넷 동작을 이해하기 위해서 알 필요가 있다.
    • 최대 세그먼트 500m
    • transceiver taps은 적어도 2.5m 떨어져야함.
    • 중계기(repeaters)로 여러 개의 세그먼트를 연결
    • 두 노드 사이에서 중계기가 4개를 초과하여 있을 수 없다.:
      • 총 길이 : 2500m
    • 호스트의 최대 개수는 1024개
    • 10Base5라고도 불림(10 Mbps, 500m)

10BaseT Network

  • 대안 기술:
    • 10Base2 (thin-net) : 200m : 데이지 체인(daisy-chain) 형태
    • 10BaseT (twisted-pair): 100m : 성형(star configuration)

프레임 형식(Frame Format)

  • 주소 (Addresses) : MAC 주소:
    • 각각의 어댑터에 유일한 48-bit 유니캐스트 주소가 할당됨
    • 브로드캐스트(Broadcast) : 모든 비트가 1
    • 멀티캐스트(Multicast) : 첫 비트가 1
  • 어댑터는 모든 프레임을 수신: 다음 경우에 받아들임 (즉, 호스트로 보냄):
    • 주소항이 자신의 유니캐스트 주소인 프레임
    • 브로드캐스트 주소로 지정된 프레임
    • 수신하도록 프로그램된 멀티캐스트 주소로 지정된 프레임
    • 무차별 모드(promiscuous mode)일 때는 모든 프레임

전송 알고리즘(Transmitter Algorithm)

  • 다중 매체접근제어(MAC) : 기본적으로, 경쟁 방식:
    • 즉, 제어방식, 예약방식이 아님
  • CS: carrier sense:
    • 전송 전에 회선의 상태를 확인
  • 회선이 유휴(idle) 상태이면:
    • 즉시 전송
    • 메시지 사이즈의 상한선은 1500 바이트
    • 연속해서 프레임을 보낼 때는 $9.6 \mu s$를 기다려야함.
  • 회선이 사용중이라면:
    • 유휴 상태가 될 때까지 대기하였다가 즉시 전송
    • 1-persistent라 불림 (p-persistent의 특정 형태)

전송 알고리즘 : 충돌(Collision)

  • CD(Collision Detection) : 전송 중에도 회선 점검:
    • 최소 얼마 동안 감지해야 확실한 충돌감지:
      • 최악의 충돌 시나리오 - 51.2 $\mu s$
    • 51.2 $\mu s$ 전에 전송이 끝나면?:
      • 수신자 위치에 따라 충돌 없는 수신도 발생 가능. 즉, 충돌 여부가 확실하지 않음.
      • 따라서, 10Mbps 기준, 전송 최소 프레임의 길이는 512bit, 즉, 64 바이트
  • 충돌(collision)이 생긴다면:
    • 잼(jam) 신호를 발송하고, 프레임 전송을 멈춤
    • 지연시간(delay)을 가진 후 재시도:
      • 첫번째: (0, 51.2) 중 택일
      • 두번째 : (0, 1 * 51.2, 2 * 51.2, 3 * 51.2) 중에서 택일
      • N번째 : rnadomly select k * 51.2, k=0..2^n -1
      • 여러번 시도 후에 포기(일반적으로 16번)
    • 지수 백오프(exponential backoff)

CDMA/CD 평가

  • 여러 MAC 정책을 평가하는데에 있어서, 적절한 지표:
    • 확장성 등
  • 충돌에 소모되는 총 비용은 무엇의 함수:
  • 1-persistent 정책 : Detecting 계속해서 하다가 아무도 안보낸다 싶으면 바로 전송
  • CD를 하지 않는다면? CD로 얻게되는 이익은 어디서 나오는 것인가: 충돌을 감지해서 충돌 발생시 소모되는 비용을 감소시킨다.
  • 충돌이 감지된 후 1-persistent인가? : 지수적 백오프(exponential backoff)로 전송하기 때문에 1-persistent가 아니다.
  • CDMA/CD가 유요한 환경은? : Bursty Traffic이 발생하는 곳. (평소에는 충돌 가능성이 낮은)

이론과 실제

  • 10-200 개의 호스트
  • 길이는 1500m보다 짧다. (RTT의 경우 51$\mu$ 보다는 5$\mu$에 가깝다)
  • 패킷의 길이는 bimodal distribution을 따른다. (최대 크기인 1500에 가깝거나, 아주 짧은 80에 가까운 값들이 많은 분포)
  • 상위 수준의 흐름제어(flow control)와 호스트 성닝이 부하를 제한한다.
  • 권장사항:
    • 과부화를 피할 것(최대 30%의 효율)
    • 컨트롤러(controller)를 정확하게 구현
    • 큰 패킷을 사용

이더넷 확장

  • 속도:
    • FastEthernet, Gigabit Ethernet 등
  • 스위칭 기능:
    • Repeater 대신 Bridge:
      • 각 세그먼트가 독립적으로 사용가능하도록
    • Multiport Bridge(= LAN Switch)
    • Switched Ethernet:
      • HUB에 Switch로 동작
      • 각 호스트는 대역폭을 점유해서 사용가능

토큰링

  • 토큰링 네트워크(Token Ring Networks):
    • PRONET: 10Mbps와 80Mbps 링
    • IBM: 4Mbps 토큰링
    • 16Mbps IEEE 802.5/토큰링
    • 100Mbps Fiber Distributed Data Interface(FDDI)
    • 현재는 많이 사용되지 않지만, 이더넷의 반대 정책으로 유명

토큰링의 연결

  • relay를 이용한 bypass
  • 다중 접속 장치:
    • 외부에서 보면 HUB와 유사

토큰링 MAC 기본 개념

  • 프레임은 한 방향으로 돈다.:
    • upstream to downstream
  • 특별한 비트 패턴(token)이 링을 회전한다.
  • 전송하기 전에 토큰을 획득해야 함
  • 전송을 마치면 토큰 방출(release)
  • 프레임이 되돌아 오면 프레임을 제거
  • 지국들은 라운드 로빈(round-robin) 서비스를 받게 됨

매체 접근 제어 세부사항

  • 1 비트 버퍼 + 모니터(monitor) 지국
  • 토큰 보유 시간 제한
  • 전송 우선순위 지원:
    • 예약 비트
    • 우선순위 복구
  • 토큰 방출:
    • 즉시 방출
    • 지연 방출

토큰링 관리

  • 모니터 지국 : 링의 정상적 동작을 감시/유지:
    • 토큰의 회전을 감시; 문제 발생시 재생성
    • 변질/orphan 프레임의 제거
    • Dead station의 검출
  • 모니터 지국의 선출:
    • 모너티로부터 announce가 없을 경우
    • 감지한 노드가 claim frame 발송
    • 자신이 보낸 claim frame을 받으면 => 링의 모든 노드 인정 => 모니터 지국으로 동작
    • 동률 규정 : high address wins

프레임 형식

  • 식별자 (delimiter):
    • illegal Manchester Coding
  • 접근 제어(Access Control):
    • 프레임 우선순위, 예약 우선순위
  • 프레임 제어(Frame Control):
    • 상위 계층 프로토콜에 대한 역다중화 키
  • 프레임 상태(Frame status):
    • A bit: 수신자가 송신자에게로 ACK
    • C bit: 수신자가 프레임을 copy했음

무선(Wireless) LANs

  • IEEE 802.11
  • 대역폭:
    • 1 or 2 Mbps: 11M(802.11b), 54M(802.11g/a), 300M(802.11n), 1G+(802.11ac)
  • 물리적 매체:
    • 확산 스펙트럼(spread spectrum) radio : 2.4GHz, 5GHz
    • 발산 적외선 (diffused infrared) : 10m
  • infrastructure mode:
    • wireless host communicates with base station
    • base station = access point(AP)
    • Basic Service Set(BSS):
      • wireless hosts
      • access point (AP)
    • Ad hoc mode:
      • host only

확산 스펙트럼 (Spread Spectrum)

  • 개념:
    • 공용대역(public band) 사용을 위한 기술적 요구사항:
      • 다른 사용자를 지속적으로 방해하면 안된다.
      • 특정 주파수 대역만을 사용하면, 간섭/충돌이 지속되어서 다른 사용자와 동시 사용 불가능
  • 넓은 주파수 대역으로 확산해서 신호를 전송:
    • 간섭/충돌은 일시적, 동시 사용을 해도 통신 가능
    • 확산 사용 방식은 사용자별로 다르게
  • 원래, 신호 방해를 무산시키기 위한 군사용으로 설계
  • Code Division Multiplexing도 포함

확산 스펙트럼 예 : 블루투스

  • 주파수 호핑(Frequency Hopping):
    • 임의의 주파수 시퀀스로 전송
    • 송신자와 수신자는 다음을 공유:
      • Psudo random number generator
      • 초기값 (seed)
    • Bluetooth 사용
    • 초기 802.11은 79 x 1MHz-wide 주파수 대역을 사용

확산 스펙트럼 예 : 무선 LAN

  • 직접 시퀀스(Direct Sequence):
    • 각 비트에 대해, 해당 비트를 n개의 임의 비트와 XOR한 비트열을 전송
    • 송/수신자는 임의의 n비트 시퀀스를 알고 있음.:
      • n-bit chipping code
    • 802.11은 11-bit chipping code 사용

매체 접근

  • 다른 무선기기와의 주파수 공유 문제는 Spread Spectrum으로 해결
  • 같은 BSS, 또는 주변의 같은 802.11 기기 사이에서의 채널 사용문제는 여전히 해결 필요 => 접근 제어, 즉, MAC 필요
  • 기본적으로 이더넷과 유사
  • 단, 매체 특성 때문에:
    • 충돌 인식(Collision Detection)에 hidden node, exposed node라는 새로운 문제가 발생

IEEE 802.11: multiple access

  • avoid collisions : 2* nodes transmitting at same time
  • 802.11 : CSMA - sense before transmitting:
    • don’t collide with ongoing transmission by other node
  • 802.11 : no collision detection:
    • difficult to receive (sense collisions) when transmitting due to weak received signals(fading)
    • can’t sense all collisions in any case : hidden terminal, fading
    • goal : avoid collisions : CMSA/CA

충돌 회피(Collisions Avoidance)

  • MACAW (Multiple Access with Collision Avoidance for Wireless)
  • 송신자는 RequestToSend(RTS) frame을 전송
  • 수신자는 ClearToSend(CTS) frame을 전송
  • 다른 노드:
    • CTS를 들으면 : keep quite
    • RTS는 들리지만, CTS는 들리지 않는다면 : ok to transmit
  • 수신자는 프레임을 받은 후, ACK를 전송 (MAC 수준의 ACK):
    • 다른 노드들은 ACK가 전송될 때까지 기다린다.
  • 충돌 문제:
    • 두 개 이상의 노드가 RTS를 동시에 보낼 때
    • 충돌 인식 방법 없음 : 일정 시간 안에 CTS를 받지 못하면 충돌
    • exponential backoff
  • 충돌 비용 개선
  • RTS/CTS threashold:
    • 작은 프레임은 RTS/CTS 교환 없이 보내는 것이 유리

이동성(Mobility) 지원

  • Case 1 : ad hoc networking
  • Case 2 : access poitns (AP):
    • 고정 위치
    • 각 이동 노드는 하나의 AP와 연계

BSS 접속/가입 (이동 감지)

  • 스캐닝 (Scanning) : AP 선정 작업:
    • 이동 노드가 Probe frame 전송
    • Probe를 받은 모든 AP는 ProbeResponse frame 응답
    • 노드가 AP를 선택: AssociateRequest frame 전송
    • AP는 AssociationResponse frame을 응답
    • 새 AP가 이전 AP에게 유선 네트워크를 통해 이를 통보
  • 스캐닝 시점:
    • 능동적 : when join or move
    • 수동적 : AP가 주기적으로 Beacon frame을 전송
  • 이동 경우, 프레임 포워딩(forwarding) 문제는 별도

매체접근제어(MAC) 비교

  • 이더넷 : CSMA/CD
  • 토큰링 : Token Passing
  • 무선LAN : CSMA/CA
  • 충돌에 대비하는 방법 :
    • 이더넷 : 소모 비용 감소
    • 토큰링 : 충돌 감소
    • 무선 LAN : 소모 비용 감소
  • MAC Overhead : 토큰 방식은 오버헤드가 크다.

네트워크 어댑터

  • 데이터 링크 기능이 구현되는 곳:
    • 프레이밍(Framing)
    • 오류 검출(Error Detection)
    • 매체 접근 제어(Media Access Control)

호스트의 관점(제어)

  • 상태 제어 레지스터 (Control Status Register) (CSR):
    • 특정 메모리 주소로 사용가능
    • CPU는 읽고 쓸 수 있음
    • CPU는 어댑터에게 명령
    • 어댑터는 CPU에게 정보를 알려줌

호스트와 어댑터 사이에서의 프레임(데이터) 이동

  • 직접 메모리 접근(DMA)
  • 프로그램 I/O (PIO)

3장 패킷스위칭(Packet Switching)

확장성 있는 네트워크(Scalable Networks)

  • 교환기: 입력 포트에서 출력 포트로 패킷을 보냄. 출력 포트는 패킷 헤더의 목적지 주소에 기초해서 선택됨
  • 지리적으로 광범위한 네트워크 구성 가능
  • 많은 수의 호스트를 지원하는 네트워크 구성 가능
  • 기존 호스트들의 성능에 영향을 주지 않고새로운 호스트를 추가 가능(스위치 용량의 한도내에서)

데이터그램 (Datagrams)

  • 연결 설정 단계가 없음
  • 각각의 패킷은 독립적으로 포워드
  • 우편 시스템과 유사한 형태
  • 비연결성(connectionless) 모델
  • 각 스위치는 포워딩(라우팅) 테이블을 유지

가상회선 스위칭(Virtual Circuit Switching)

  • 명시적인 연결 설정 및 해지 과정
  • 이어지는 패킷 역시 같은 경로를 따라 전달
  • 전화와 유사한 형태
  • 연결성(connection-oriented)모델이라고도 불림
  • 각 스위치는 가상회선 테이블을 유지

가상회선 대 데이터그램

VC(가상회선)DG(데이터그램)
연결설정시간일반적으로 첫번째 데이터를 보내기 전에 연결 설정을 위한 왕복 지연시간(RTT)을 기다려야함. (해당 가상 회선에 대한 테이블 entry) 생성연결 설정을 위한 왕복 지연시간을 기다릴 필요가 없음; 호스트는 데이터가 준비가 되자마자 바로 보낼 수 있음
주소 오버헤드연결 요청에는 목적지의 완전한 주소를 포함하지만, 데이터 패킷에는 작은 식별자(identifier)만 포함하면 되므로 패킷 헤더의 오버헤드가 작다.매 패킷은 목적지의 완전한 주소를 가져야 하기 때문에, 패킷당 오버헤드가 연결성 모델보다 크다
패킷 포워딩 시간간단한 VC-ID 테이블 검색 => 빠른 시간에 가능(HW 처리도 가능)모든 주소에 대한 포워딩 테이블 검색 -> 늦어질 가능성 높음
장애극복스위치/링크가 고장나거나 비정상적으로 연결이 끊어지면, 새로운 연결을 설정해야 함 -> stateful패킷이 독립적으로 다루어지기 때문에 고장난 링크나 노드를 우회하여 라우팅 가능 -> stateless of soft state
자원 예약연결 설정시 자원 예약이 가능발신지 호스트는 네트워크가 패킷을 전달할 수 있는지, 또는 목적지 호스트가 동작 중인지도 알 수 없음

소스 라우팅(Source Routing)

  • 주소는 발신지로부터 목적지까지 경로의 포트번호를 포함하고 있음

스위치 성능

  • 스위치는 범용 워크스테이션으로 만들 수 있다
  • 총 대역폭(Aggregate bandwidth):
    • I/O 버스 대역폭의 1/2
    • 용량은 스위치에 연결된 모든 호스트에서 공유됨
    • 예: 800Mbps 버스는 100Mbps 포트 4개를 지원할 수 있음
  • 초당 처리할 수 있는 패킷 수:
    • 스위치의 패킷 처리 능력:
      • pps(packet per second)
    • 초당 15,000 - 100,000 패킷 정도
    • 예: 64-byte 패킷이라면:
      • 7.69-51.2Mbps을 의미함
    • 작은 패킷을 스위치하는 경우 성능 결정 요소

브리지 및 확장 LAN (Bridges and Extended LANs)

  • LAN의 물리적인 제한 + 트래픽 분리
  • 두개 또는 그 이상의 LAN들을 repeater/bridge를 이용하여 연결
  • 브리지에 의해서 연결된 LAN의 집합을 extended LAN(확장 LAN0이라고 함)
  • 확장 LAN이 보편화:
    • (LAN, extended LAN) => (LAN segment, LAN)

브리지(Bridge)의 동작

  • 동작: 수신(Accept) 및 포워딩(forward) : 스위치 => 필터링(filtering); 리피터와 차이
  • 여러 개의 포트를 가지는 브리지 => LAN 스위치
  • Level-2 (패킷 헤더를 붙이지 않음); (라우터와의 큰 차이점)

계층-2(Level-2) 연결

  • 브리지는 네트워크 주소를 갖지 않음:
    • 또, 별도의 헤더도 붙이지 않음
    • 네트워크 계층에서 보면, 브리지는 invisible; 즉, link component
    • 따라서, 브리지로 연결된 (확장)LAN 은 하나의 네트워크

학습 브리지(Learning Bridges)

  • 불필요할 때는 포워드를 하지 않음
  • 포워딩 테이블의 유지
  • 발신지 주소에 기초해서 테이블의 엔트리를 작성
  • 표는 성능 개선이 목적이므로 완벽할 필요 없다.
  • 브로드캐스트 프레임은 항상 포워드
  • Soft-state table

Switching Hub: traffic isolation

  • switch installation breaks subnet into LAN segments
  • switch filter packets:
    • same-LAN-segment frames not usually forwarded onto other LAN segments
    • segments become separate collision domains

브리지/LAN 스위치의 한계

  • 확장성이 없음:
    • 스패닝 트리 알고리즘은 확장성이 부족함
    • 브로드캐스팅도 확장성에 제약
    • => VLAN (Virtual LAN)
  • 이질성(heterogenity)을 허용하지 않음
  • 투명성에 주의; 즉, 노드에서 브리지는 보이지 않음

셀스위칭 (Cell Switching): ATM

개요

  • ATM(비동기 전송 모드)
  • 전화회사가 만든 패킷스위칭 네트워크 (극단적인 연결성 패킷 스위치)
  • 작은 고정길이 패킷:
    • cell이라고도 함 : 5-byte 헤더 + 48-byte 페이로드
  • Signalling(연결 설정) 프로토콜 : Q.2931
  • 한때, WAN과 LAN 환경에서 모두 사용 : 인터넷 대체 추진
  • 현재 LAN에서는 Switching Ethernet에 의해 퇴출
  • 보통 광케이블을 사용하는 장거리 연결에 사용:
    • SONET interface 카드를 이용
  • 현재는 인터넷의 아래 계층, 즉 이더넷 수준의 역할을 수행

Cells

  • 가변길이 대 고정 길이:
    • 최적의 고정길이는 없음:
      • 작다면 데이터에 비해 헤더가 차지하는 오버헤드가 크다
      • 크다면 작은 메시지에 대해서 효율이 낮다.
    • 고정 길이는 하드웨어로 스위치하는 것이 쉽다:
      • 보다 간단함
      • 병렬 처리가 가능
  • 작은 길이가 큐잉을 개선:
    • 링크를 스케쥴링하는데 보다 세밀한 선점(preemption)이 가능
  • 즉시 전달과 유사하게 동작

ATM 셀

  • 패킷화에 소요되는 시간(packetizing delay) : 가장 중요한 cell size 선택 이유
  • 셀로 음성을 전송하는 경우:
    • 전화는 delay에 민감: 음성 전송에 소요되는 총 지연시간은 500ms 이하이어야 함
    • 음성은 64Kbps로 디지탈 인코드를 함(8KHz를 8-bit로 샘플)
    • 셀을 전송하기 전에 셀을 채울 만큼의 샘플이 필요

셀 형식(Cell Format)

  • 호스트와 스위치 사이의 형식(host-to-swtich format)
  • GFC : Generic Flow Control
  • VCI : Virtual Circuit Identifier
  • VPI : Virtual Path Identifier
  • Type
  • CLP : Cell Loss Priority
  • HEC : Header Error Check

4장 인터네트워킹(Internetworking)

인터넷 서비스 모델

  • 인터네트워크:
    • 네트워크의 연속
    • Concatenation of Networks
  • 네트워크 계층 위에서 표준화:
    • 다양한 네트워크들을 링크로 간주해서 그대로 사용
    • 전역 주소 체계(Global Addressing Cheme) 필요
  • 프로토콜 스택

패킷 전달 서비스 모델

  • 전역 주소 체계 (Global Addressing Scheme)
  • 비연결성 (데이터그램-기반)
  • 최선 노력 전달 (신뢰성 없는 서비스):
    • 패킷이 상실될 수 있음
    • 패킷이 순서가 뒤바뀌어 올 수 있음
    • 중복된 패킷이 올 수 있음
    • 패킷이 오랜 시간 동안 지연될 수 있음
  • 단편화 및 재조립

IP 패킷 헤더 형식

  • 버전 Version : 4bit
  • Hlen(4) : Header Length
  • TOS(8) : 서비스의 종류, 일반적으로 사용되지 않음
  • Length(16) : 데이터그램 전체의 바이트 단위 길이
  • Ident(16) : 단편화(fragmentation)에 사용됨
  • Flags/Offset(16) : 단편화에 사용됨
  • TTL(8) : 데이터그램이 최대로 방문할 수 있는 홉의 수
  • Protocol(8) : 역다중화키
  • Checksum(16) : 헤더의 체크섬
  • DestAddr & SrcAddr(32) : 발신지 및 목적지 주소

단편화와 재조립(Fragmenation and Reassembly)

  • 각 네트워크는 나름대로의 MTU(Maximum Transmission Unit)을 가진다.
  • 방법:
    • 필요할 때만 분할(MTU < Datagram)
    • 발신지에서의 단편화는 지양 (cf. IPv6에서는 발신지에서 PathMTU)
    • 재단편화(refragmentation) 가능
    • 분할된 단편은 독립적인(self-contained) 데이터그램
    • 목적지까지 재조립을 미룸
    • 상실된 단편이 있으면 재조립 불가능

전역 주소(Global Addresses)

  • 특성:
    • 전역적으로 유일하다
    • 계층적(hierarchical): 네트워크 + 호스트:
      • 같은 네트워크에 있는 노드들의 네트워크 주소부분은 같아야한다.
  • Class:
    • A class : 0으로 시작, 초기 0을 제외 7비트가 네트워크 주소 (나머지 24 비트가 호스트부)
    • B class : 10으로 시작, 초기 10을 제외한 14비트가 네트워크 주소 (나머지 16비트가 호스트부)
    • C class : 110으로 시작, 초기 110을 제외한 21비트가 네트워크 주소(나머지 8비트가 호스트부)

데이터그램 포워딩 : IP의 실제 동작

  • 방법:
    • 모든 데이터그램은 목적지의 주소를 포함한다.
    • 데이터그램을 받은 IP는:
      • 목적지 네트워크가 직접 연결되어 있다면, 호스트로 직접 포워드 함.
      • 목적지 네트워크가 직접 연결되어 있지 않다면, 다른 라우터에게 포워드함
    • 포워딩 테이블은 네트워크 번호에 대한 다음 홉을 가리키고 있다.
    • 각 호스트는 디폴트 라우터를 가지고 있다.
    • 각 라우터는 포워딩 테이블을 유지

주소 번역(Address Translation)

  • 인터네트는 논리적(가상) 네트워크:
    • 계층 하위에 있는 물리적 네트워크/링크에게 전달을 위임
  • 위임할 때, IP 주소를 해당 물리적(physical) 주소로 변환해야 함.
  • 필요한 주소를 어떻게 알아내는가?:
    • 테이블 기반(IPv4)
    • IP 주소의 호스트 부분에 물리적 주소를 인코드 시켜서 넣어줌(IPv6)
  • ARP(Address Resolution Protocol):
    • IP주소와 물리적 주소가 바인딩되어 있는 테이블 구축 담당
    • IP주소가 테이블에 없다면 요청을 브로드캐스트
    • 해당 호스트는 자신의 물리적 주소를 보내줌
    • 오랫동안 사용되지 않은 엔트리는 없애준다.
    • 프로토콜 계층에서 2계층과 3계층 사이에 존재한다.

ARP 프로토콜

  • Request format:
    • HardwareType, ProtocolType, HLEN & PLEN, Operation, Source/Target Physcial/Protocol Addresses
  • 특징:
    • 테이블의 엔트리는 약 10분의 타임아웃
    • 요청에 대한 목적지에서는 발신지 주소로 테이블을 갱신
    • 엔트리가 이미 있다면 테이블을 갱신(+ 타임아웃 연장)

호스트 구성(Configuration) : DHCP

  • IP 주소 배정의 문제:
    • IP 주소는 네트워크의 구조를 반영하여야함
    • 즉, 같은 네트워크에 있는 다른 호스트들의 주소와 앞 부분이 같아야한다.
  • IP주소 이외에도 구성 정보가 필요하다(default router, name server)
  • 자동 구성 기능 필요 : DHCP(Dynamic Host Configuration Protocol)

DHCP 동작

  • DHCP 서버:
    • a pool of available address를 관리
    • 클라이언트의 요청에 대해 구성 정보를 제공
    • address lease도 가능
  • DHCP relay:
    • 구성 정보 요청을 서버로 relay
  • Server discovery:
    • DHCPDISCOVER 메시지를 브로드케스트

공유기

  • 하나의 인터넷 주소를 여러 호스트가 공유해서 사용한다는 말에서 유래
  • 대부분 wireless router 기능을 포함한다.
  • 인터넷 서비스 업체(ISP)는 인터넷 링크 연결을 제공하면서, 하나의 IP주소를 DHCP로 할당
  • 공유기는 내부 LAN의 여러 호스트들에게 인터넷 접근을 제공:
    • IP 패킷을 내외부로 전달: IP라우터
    • LAN 내부에서 사설 IP 주소 사용 지원 : DHCP 서버
    • 하나의 IP주소를 여러 호스트가 사용: NAT(Network Address Translation)
    • 유선 LAN 지원 : switch
    • 무선 LAN 지원 : AP(Access Point)
    • 보안 지원 : firewall(방화벽)

ICMP(Internet Control Message Protocol)

  • IP 동작을 보조하기 위한 제어 프로토콜:
    • IP 자체에 포함시키지 않고, 별도의 프로토콜 (out-of-band 기법)
  • 기능 면에서 보며,ㄴ IP의 동료(companion protocol)
  • 힌트 수준: 반드시 필요하지는 않음 => IP로 전송
  • 제어 작업 내용:
    • 응답(echo) - ping
    • 라우터의 변경(라우터에서 발신지로)
    • 목적지에 도착하는 것이 불가능:
      • 프로토콜, 포트, 호스트 등의 이유
    • TTL을 초과한 경우:
      • 데이터그램이 계속 네트워크 배회하는 일이 없음
    • 체크섬이 실패한 경우
    • 재조립을 실패한 경우
    • 단편화를 할 수 없는 경우

가상 네트워크(Virtual Networks)

  • 실제의 물리적 연결과 독립적으로 연결/구축되는 네트워크:
    • 물리적 네트워크 위에 떠있는 가상의 네트워크
  • VPN(Virtual Pivate Networks):
    • 전용선 대신 공용 네트워크를 이용하여 사설망 구축
    • IP 망을 통한 사설망 구축:
      • IP는 모든 노드가 서로 통신; connectivity 제어가 안됨
      • IP 터널링 기법

IP 터널링(IP Tunneling)

  • 임의의 네트워크 사이에 두고 있는 한쌍의 노드 사이를 연결하는 점대점 링크
  • 즉, 라우터 간의 가상 링크(virtual link)
  • 구현:
    • 링크 양 끝 노드를 발신지/목적지로 하여 IP encapsulation

터널링/가상 네트워크 사용이유

  • 보안:
    • 공용 네트워크 안에서 사설 링크 구현
    • 암호화와 함께 사용 가능
  • 특수 기능 구현:
    • 특수 기능을 가지는 가상 네트워크 구현
    • ex) 멀티캐스트 라우팅 기능을 가지는 라우터들의 네트워크 구축
  • 비 IP 패킷의 IP망을 통한 전달:
    • ex) IPv6 패킷의 전달

확장성 문제(Scalability Issues)

  • Flat vs hierarchical address
  • IP는 주소를 계층화하여 중간 라우터에서는 호스트 주소를 알 필요 없이 설계 되었으나 다음과 같은 문제가 발생한다:
    • 주소 공간의 비효율성:
      • 예 : 두 개의 호스트만을 가진 C클래스 네트워크
    • 너무 많은 수의 네트워크 개수:
      • 오늘날 인터넷은 수만개의 네트워크를 가지고 있다.
      • 라우팅 테이블의 크기에 확장성 문제가 발생하며, 이는 라우트 전달 프로토콜에서도 발생한다.

서브네팅(Subnetting)

  • 주소/라우팅 계층 구조에 따른 다른 단계를 추가시키는 기능
  • 서브넷 마스크(subnet mask)는 클래스의 가변적인 분할을 정의한다.
  • IP 주소에서 네트워크 주소를 떼어내는 방법이 변경되었다.:
    • 과거에는 IP의 초기 비트를 기준으로 네트워크 주소를 분리하였지만, 이제는 비트마스킹을 통해 처리한다.
  • 서브넷은 외부네트워크에서 보이지 않는다.

포워딩 알고리즘

  • 특징:
    • 대응되는 것을 찾을 수 없다면 디폴트 라우터를 사용
    • 서브넷 마스크에서 모든 1이 연속적일 필요는 없음
    • 하나의 물리적인 네트워크에 여러 개의 서브넷이 존재할 수 있음
    • 서브넷은 인터넷의 나머지 부분에서 보이지 않음

Classless 라우팅(CIDR)

  • 수퍼넷팅(Supernetting), CIDR(Classless Inter-Domain Routing)

  • 기본적으로, 기존 A,B,C class와 무관하게 필요한 만큼 할당

  • 단, 지역적으로 가까운 네트워크에 대해서 연속적이 네트워크 번호 묶음을 할당

  • 각 묶음(block)은 다음과 같은 쌍으로 표현 (first_network_address, count)

  • 현실적으로, 묶음(블록) 크기는 2의 제곱 형태로 제한:

    • 블록 사이즈를 알아내기 위해서 비트마스크를 사용(CIDR mask) => prefix 길이로 표현 가능
  • 결론: prefix 길이로 어느 자리에서나 네트워크 주소 경계를 정의

  • Classless 라우팅 : Aggregation (병합)

차세대 IP (Next Generation IP(IPv6))

  • 주요 기능:
    • 128-bit 주소
    • 멀티캐스트
    • 실시간 서비스(Real-time service) 대비
    • 인증 및 보안 (Authentication and security)
    • 자동 구성 (Autoconfiguration)
    • 종단간 단편화(End-to-end fragmentation)
    • 프로토콜 확장

IPv6 주소

  • Classless 주소/라우팅(CIDR과 유사)
  • 표기법:
    • 연속적인 0은 압축됨
    • IPv6은 IPv4 주소와 호환 가능
  • 주소 할당(네트워크 제공자 기반):
    • Aggregatable Global Unicast Addressing
    • Subnet / Classless 개념 모두 도입

IPv6 헤더

  • 40-바이트 기본 헤더
  • 확장 헤더:
    • 고정된 순서, 대부분 고정 길이
    • 단편화(fragmenation)
    • 소스 라우팅
    • 인증 및 보안
  • flow:
    • 같은 수준의 서비스로 처리되어야하는 패킷의 연속(sequence of packets)
  • FlowLabel: 단순 식별자

IP NextHeader

  • 상위 프로토콜 DemuxKey
  • optional header 유무/종료 표시 및 payload 시작점 표시

이통 호스트에 대한 라우팅

  • 문제:
    • IP 주소는 계층적; 주소에 네트워크 주소 부분 포함
    • 호스트가 이동하여 다른 네트워크에 접속되면, 패킷 전달 불가능
  • 접근 방법:
    • 새 IP 주소 할당 => 통신 중단; 서비스 중단
    • Mobile IP:
      • 호스트의 이동이 투명하도록
      • 기존 통신 소프트웨어 및 라우터에 변경 없이 이동 호스트 지원

Mobile IP

  • 구성 요소:
    • home address : 이동 호스트의 영구적인 IP 주소
    • Home Agent(HA) : 이동 호스트의 홈 네트워크에 있는 라우터
    • Foreign Agent(FA) : 이동 호스트가 접속되어 있는 외부 네트워크의 라우터
    • care-of-address(COA) : 이동 호스트에 대한 패킷을 보낼 주소; 대개 FA 주소
  • 구성 설정:
    1. HA와 FA는 주기적으로 자신의 존재를 홍보
    2. 이동 호스트는 HA의 주소 인식
    3. 이동 호스트가 어떤 외부 네트워크에 접속하면 => FA 인식; HA의 주소를 알림
    4. FA는 HA에게 care-of-address 통보

Mobile IP의 패킷 전달

  • 이동 호스트에서 송신하는 패킷의 전달:
    • IP 패킷 포워딩 과정에서 source address는 참조되는 않음.
    • 따라서, 기존과 동일(보안, 멀티캐스트 제외)
  • 이동 호스트로의 패킷 전달

세부 문제/기술

  • HA가 이동호스트로 향하는 패킷을 가로채는 방법: Proxy ARP
  • HA가 이동호스트로의 패킷을 FA에게 보내는 방법: 터널링
  • FA가 수신된 패킷을 이동호스트로 전달하는 방법 : IP 포워딩을 사용하지 않고, Hardware 주소로 직접
  • FA와 이동호스트가 동일한 경우 (Collocated COA):
    • FA가 없는 네트워크로 이동 등
    • 처리 간단; 단, 동적으로 IP 주소를 배정 받을 수 있어야 함.
  • 보안 문제:
    • 제3자가 FA를 자처하며, 이동호스트로의 패킷을 interception

경로 최적화

  • triangle routing problem
  • HA가 송신자에게:
    • binding update 메시지를 보내서
    • 이동호스트의 care-of-address를 알려줌
  • 송신자는:
    • Binding cache를 유지하면서
    • FA로 직접 터널링