Back to Blog
네트워크링크 계층오류 검출MAC이더넷스위치VLAN

0x06. 링크 계층과 LAN

링크 계층의 소개, 오류 검출/정정 기술, 다중 접속 프로토콜, 스위치 LAN, 데이터 센터 네트워킹을 정리한다.

6.1 링크 계층 소개

링크 계층

노드

링크 계층 프로토콜을 실행하는 장치

e.g. 호스트, 라우터, 스위치, AP(access point, 7장에서 설명) 등

링크

통신 경로상의 인접한 노드들을 연결하는 통신 채널

데이터그램을 출발지 호스트에서 목적지 호스트로 이동시키기 위해서는 데이터그램을 종단 간 경로의 개별 링크들로 이동시켜야만 한다.

한 링크에서 전송 노드는 데이터그램을 링크 계층 프레임(link-layer frame)으로 캡슐화해서 링크로 전송한다.

위 그림에서는 6개의 링크를 거쳐간다.

6.1.1 링크 계층이 제공하는 서비스

  • 프레임화(framing)
    • 데이터그램을 링크상으로 전송하기 전에 링크 계층 프레임에 캡슐화한다.
    • 프레임은 데이터그램이 들어있는 데이터필드와 여러 개의 헤더 필드로 구성된다.
  • 링크 접속(link access)
    • 매체 접속 제어(medium access control, MAC) 프로토콜은 링크상으로 프레임을 전송하는 규칙을 명시한다.
    • 단일 송신자와 단일 수신자의 점대점 링크에서의 MAC은 단순하며, 링크가 사용되지 않을 때마다 프레임을 전송할 수 있다.
    • 하나의 브로드캐스트 링크를 여러 노드가 공요하는 경우, MAC 프로토콜은 여러 노드로부터의 프레임 전송을 조정한다.
  • 신뢰적 전달
    • TCP와 마찬가지로 확인 응답과 재전송을 통해 서비스를 제공한다.
    • TCP에서는 종단 간에 데이터를 재선송 하는 것과는 달리 링크 계층 프로토콜은 오류가 발생한 링크에서 오류를 정정한다.
    • 무선 링크와 같은 높은 오류율을 가진 링크에서 주로 사용되며, 낮은 비트 오류율을 가진 링크에서는 불필요한 오버헤드가 될 수 있어 대다수 유선 링크 계층 프로토콜은 제공하지 않는다.
  • 오류 검출과 정정
    • 신호의 약화나 전자기 잡음 때문에 전송된 프레임 비트를 반대로 오인할 수 있다.
    • 오류가 있는 데이터그램은 전달할 필요가 없으므로 대부분의 링크 계층 프로토콜은 오류를 검출하는 방법을 제공한다.
    • 송신 노드에서 오류 검출 비트를 설정하게 하고 수신 노드에서 오류 검사를 수행하게 함으로써 가능해진다.
    • 트랜스포트 계층과 네트워크 계층의 오류 검출보다 일반적으로 더 복잡하며, 하드웨어로 구현된다.
    • 오류 정정은 오류 검출과 비슷하지만 프레임의 어느 곳에서 오류가 발생했는지 정확하게 찾아낼 수 있다.

6.1.2 링크 계층이 구현되는 위치

호스트에서 대부분의 경우 링크 계층은 네트워크 인터페이스 컨트롤러(network interface controller, NIC)로 알려진 네트워크 어댑터(network adapter) 에 구현된다.

(라우터에서는 4장에서 봤듯이 라인 카드에 구현된다.)

네트워크 어댑터

컨트롤러(controller)

네트워크 어댑터의 중심에 있다.

링크 계층 서비스의 대다수가 구현되어있는 단일의 특수 용도 칩으로 하드웨어로 구현된다.

송신 측의 컨트롤러는 호스트 메모리에 저장된 데이터그램을 링크 계층 프레임으로 캡슐화한 후 링크 접속 프로토콜에 따라 이 프레임을 통신 링크상으로 전송한다.

수신 측의 컨트롤러는 프레임을 수신한 후 네트워크 계층 데이터그램을 추출한다.

CPU

일부 링크 계층 기능이 호스트 CPU에서 실행되는 소프트웨어에 구현되어 있다.

상위 레벨의 링크 계층 기능은 링크 계층 소프트웨어 구성요소에 구현되어 있다.

e.g. 링크 계층 주소 정보 조립, 컨트롤러 하드웨어 활성화, 컨트롤러로부터의 인터럽트, 오류 처리, 데이터그램 전달 등

즉, 링크 계층은 하드웨어와 소프트웨어의 조합이다.


6.2 오류 검출 및 정정 기술

오류 검출

비트 오류를 방지하기 위해 송신 노드에서 데이터 D오류 검출 정정 비트들(EDC)를 첨가한다.

송신되는 데이터 DEDC는 전송 도중 변경될 수 있다.

즉, 수신자는 변경의 가능성이 있는 비트로 오류 검출 여부를 확인하여야 한다.

오류 검출 및 정정 기술을 사용하더라도 여전히 미검출된 비트 오류(undetected bit error)가 있을 수 있다.

즉, 수신자는 잘못된 데이터그램을 네트워크 계층으로 전달할 수 있고, 프레임 헤더의 다른 필드의 내용이 잘못된 것을 모를 수도 있다.

따라서 오류를 감지하지 못할 확률이 낮은 기법을 선택해야한다. (대체로 확률이 낮을 수록 오버헤드가 크다.)

6.2.1 패리티 검사

단일 패리티 비트

패리티 비트

데이터 D가 d개의 비트를 갖고 있다고 가정하자.

짝수 패리티 기법에서는 단순히 D에 한개의 Parity bit를 추가하고, d+1개의 비트에서 1의 총개수가 짝수가 되도록 Parity bit 을 선택한다.

수신자는 수신된 d+1개의 bit에서 1의 개수가 짝수임을 확인한다.

(당연히 홀수라면 1의 개수를 홀수로 정한다.)

이 방법의 경우 홀수개의 비트 오류는 검출할 수 있지만 짝수개의 비트 오류는 검출할 수 없다.

측정에 의하면 오류는 종종 버스트(burst)의 형태로 몰려서 발생하기 때문에 위 방법은 50% 확률로 오류를 검출할 수 있다.

2차원 패리티

2차원 패리티 비트

데이터 D에 있는 d 비트들은 i개의 행과 j개의 열로 나뉜다.

나뉜 각각의 행과 열에 대해 하나의 패리티 값이 계산된다.

2차원 패리티 기법에서는 반전된 비트를 포함하는 열과 행에 대한 패리티에 오류가 생긴다.

따라서 수신자는 단일 비트의 오류 발생을 검출할 수 뿐만 아니라 열과 행의 인덱스 값을 통해 오류를 정정할 수도 있다.

또, 단일 패리티와는 달리 임의의 2개의 오류도 검출할 수 있다. (그러나 정정할 수 없다.)

순방향 오류 정정(forward error correction, FEC)

오류를 검출 및 정정하는 수신자의 능력을 FEC라고한다.

FEC 기술은 송신자에게 요구하는 재전송 횟수를 줄일 수 있다.

이를 통해 NAK 패킷을 수신하고 재전송된 패킷이 수신자로 되돌아가는 소요 시간이 왕복 지연 시간을 기다릴 필요가 없어진다.

6.2.2 체크섬 방법

d 비트들을 k 비트 정수처럼 다루어 이 k비트 정수들을 더해서 그 결괏값을 오류 검출 비트들로 사용한다.

체크섬 동작 과정

인터넷 체크섬(Internet checksum)

  1. 더한 값의 1의 보수가 인터넷 체크섬이 되며, 이것을 세그먼트 헤더에 넣어준다.
  2. 수신자는 수신 데이터 합의 1의 보수를 취한 후 그 결과가 모두 1인 비트로 구성되어 있는지 계산함으로써 체크섬을 검사한다.
  3. 그 결과가 모두 1인 비트로 구성되어 있는지 계산함으로써 체크섬을 검사한다.

체크섬 방법은 상대적으로 패킷 오버헤드가 적어 TCPUDP에서 사용된다. 그러나 순환 중복 검사(CRC)와 비교하면 오류면에서 취약하다.

TCPUDP에서 사용하는 이유는 TCPUDP는 소프트웨어로 구현되어 간단하고 빠른 오류 검출 기법이 필요한 반면 링크 계층은 네트워크 어댑터 안에 하드웨어로 구현되어 순환 중복 검사(CRC) 를 사용한다.

6.2.3 순환 중복 검사(CRC)

오늘날 컴퓨터 네트워크에서 널리 사용되는 오류 검출 기술은 순환 중복 검사(cyclic redundancy check, CRC) 코드 를 사용한다.

CRC 코드는 전송되는 비트열에 있는 0과 1 값을 계수로 갖는 다항식처럼 비트열을 생각할 수 있고, 또한 비트열에 적용되는 연산을 다항식 연산으로 이해하는 것이 가능하기 때문에 다항식 코드(polynomial code)로도 알려졌다.

CRC 동작 과정

CRC

  1. 먼저 송신자와 수신자는 G로 표기되는 생성자로 알려진 r+1 비트 패턴에 대해 합의한다. 이때 G의 최상위 비트는 1이어야 한다.
  2. 송신자는 D에 r개의 추가 비트 R을 선택해서 D 뒤에 덧붙인다.
    • 일반 이진 연산에서 2^k을 곱하는 것은 비트 패턴을 k개의 위치만큼 왼쪽으로 이동하는 것과 같다. 즉, 위 그림의 식을 통해 d+r 패턴을 만들 수 있다.
    • 만들어진 d+r 비트 패턴은 모듈로 2 연산을 이용하면 G로 정확히 나누어진다.
  3. 수신자는 d+r개의 수신 비트를 G로 나눈다. 만일 나머지가 0이 아니면 오류가 발생한 것이다.

모든 CRC 검사는 덧셈의 올림이나 뺄셈의 빌림이 없는 모듈로 2 연산을 사용한다.

즉, 이는 피연산자를 비트별로 XOR한 것과 같다.

e.g.

1011 XOR 0101 = 1110
1001 XOR 1101 = 0100

1011 - 0101 = 1110
1001 - 1101 = 0100

R을 계산하는 과정

먼저 다음과 같은 식을 만족하는 n이 있도록 하는 R을 구해야한다.

D x 2^r XOR R = nG

즉, D x 2^r XOR R을 나머지 없이 G로 나눌 수 있도록 R을 선택해야 한다. 이 식의 양쪽에 R을 XOR(즉, 올림 없는 모듈로 2 덧셈)하면 다음과 같다.

D x 2^r = nG XOR R

이 식은 D x 2^r 을 G로 나누면 나머지가 정확히 R이 되는 것을 뜻한다.

다시 말해, 다음 처럼 R을 계산할 수 있다.

R = 나머지 D x 2^r / G

e.g.

CRC e.g.

국제 표준으로는 8비트, 12비트, 16비트, 32비트의 생성자 G가 정의되어 있다.

각각의 CRC 표준은 r개 이하의 연속적인 비트 오류를 모두 검출할 수 있다.


6.3 다중 접속 링크와 프로토콜

두 종류의 네트워크 링크

  • 점대점 링크(point-to-point link)
    • 링크의 한쪽 끝에 한 송신자와 링크의 다른 쪽 끝에 한 수신자가 있다.
    • PPP(point-to-point protocol)HDLC(high-level data link control)이 여기에 속한다. (뒤에 다룬다.)
  • 브로드캐스트 링크(broadcast link)
    • 동일한 하나의 공유된 브로드캐스트 채널에 다수의 송신 노드 및 수신 노드가 연결된다.
    • 임의의 한 노드가 프레임을 전송하면 채널이 그 프레임을 브로드캐스트해서 다른 모든 노드가 그 프레임의 복사본을 수신하기 때문에 브로드캐스트 용어가 쓰인다.

다양한 다중 접속 채널

다중 접속 링크

다중 접속 문제(multiple access problem)

모든 노드가 프레임을 전송할 수 있으므로 2개 이상의 노드가 브로드캐스트 채널에서 직접 통신할 수 있고, 이런 일이 발생하면 모든 노드는 동시에 여러 개의 프레임을 받게 된다.

즉, 전송된 프레임들이 각 수신자에서 충돌하게 되고 어떤 수신 노드도 전송된 프레임의 의미를 파악할 수 없게 된다.

따라서 충돌에 관련된 모든 프레임은 손실되며, 다수의 노드가 빈번히 프레임을 전송하려 한다면 많이 충돌할 것이고 따라서 브로드캐스트 채널의 대역폭이 많이 낭비된다.

다중 접속 프로토콜(multiple access protocol)

초당 R 비트의 전송률을 갖는 브로드캐스트 채널에 대한 다중 접속 프로토콜은 다음과 같은 특성을 지니는 것이 바람직하다.

  1. 단 하나의 노드가 전송할 데이터가 있을 때는 그 노드가 R bps의 처리율을 갖는다.
  2. M개의 노드가 전송할 데이터가 있을 때는 각 노드가 R/M bps의 처리율을 갖는다.
    • 항상이 아니며 각 노드가 정의된 시간 동안 R/M의 평균 처리율을 가짐을 의미한다.
  3. 분산되어 있어 고장으로 인해 전체 시스템을 정지시킬 수 있는 마스터 노드가 없다.
  4. 단순해서 구현하는 데 비용이 적게 든다.

6.3.1 채널 분할 프로토콜

TDM FDM

시분할 다중화(time-division multiplexing, TDM)

채널이 N개 노드를 지원하고 채널 전송률이 R bps라고 하자.

TDM은 시간을 시간 프레임(time frame)으로 나누고 또한 각 시간 프레임을 N개의 시간 슬롯(time slot)으로 나눈다.

그 후 N개의 노드에게 시간 슬롯을 각각 할당한다.

노드는 전송할 패킷이 있을 때마다 TDM 프레임에서 자신에게 할당된 시간 슬롯 동안 패킷을 전송한다.

장점

  • 충돌을 제거할 수 있다.
  • 매우 공정하다.

단점

  • 전송할 패킷이 있는 노드가 단 하나인 경우에도 노드 전송률이 R/N으로 제한된다.
  • 노드가 전송 순서상 자신의 차례를 항상 기다려야 한다.

주파수 분할 다중화 (frequency-division multiplexing, FDM)

R bps의 채널을 R/N의 대역폭을 갖는 다른 주파수로 나눠서 각 주파수를 N개의 노드 중 하나에게 할당한다.

즉, 하나의 큰 R bps 채널로부터 N개의 R/N bps의 작은 채널을 만든다.

TDM과 같은 장단점을 갖는다.

코드 분할 다중 접속(code division multiple access, CDMA)

CDMA는 다른 코드를 각 노드에게 할당한다.

노드는 전송하는 데이터 비트들을 자신의 유일한 코드로 인코딩한다.

장점

  • CDMA 네트워크에서 코드들을 신중하게 선택하면 여러 노드들이 동시에 전송할 수 있다.
  • 다른 노드들에 의해 전송이 간섭되더라도 각 수신자들이 송신자의 인코딩된 데이터 비트를 정확하게 수신할 수 있다.

6.3.2 랜덤 접속 프로토콜

랜덤 접속 프로토콜에서 전송 노드는 항상 채널의 최대 전송률인 R bps로 전송한다.

충돌이 생기면 충돌과 관련된 각 노드는 프레임이 충돌 없이 전송될 때까지 자신의 프레임을 계속해서 재전송한다.

프레임이 충돌했을 때 즉시 재전송하지 않고, 랜덤 지연 시간 동안 기다린 후 재전송 한다.

즉, 출동했던 노드 중 하나는 다른 노드가 선택한 지연 시간보다 충분히 작은 지연시간을 선택함으로써 충돌 없이 자신의 프레임을 채널로 전송할 수 있다.

슬롯 알로하(slotted ALOHA)

슬롯 알로하

동작 과정

  1. 전송할 새 프레임이 있으면 다음 슬롯이 시작할 때까지 기다렸다가 그 슬롯에 전체 프레임을 전송한다.
  2. 만약, 충돌하지 않으면 노드는 성공적으로 자신의 프레임을 전송한 것이다. 따라서 그 프레임을 재전송할 필요가 없다.
  3. 만약 충돌하면, 노드는 그 슬롯이 끝나기 전에 충돌을 검출한다. 노드는 그 프레임이 충돌 없이 전송될 때까지 확률 p(0~1 사이)로 해당 프레임을 다음 슬롯들에서 재전송한다.
  4. 충돌하지 않을 때까지 3번 과정을 반복한다.

장점

  • 하나의 활성노드로 하여금 채널의 전속력 R로 계속해서 프레임을 전송할 수 있도록 허용한다.
  • 노드가 충돌을 감지하고 언제 재전송할지 각자 결정하므로 분산되어있다.
  • 매우 단순하다.

단점

  • 노드는 슬롯이 언제 시작하는지 동기화되어있어야 한다.
  • 활성 노드가 많이 있으면 일부 슬롯이 충돌로 인해 결과적으로 낭비 된다.
  • 모든 활성 노드가 확률적인 전송 정책 때문에 전송을 억제하는 경우 일부 슬롯이 비게 된다.

낭비되지 않는 슬롯은 정확히 한 노드만 전송하는 슬롯이고, 이 노드를 성공한 슬롯(successful slot)이라 한다.

효율성

노드가 N개가 있을 때 하나의 슬롯이 성공적인 슬롯일 확률은 노드들 중 한 노드만 전송하고 나머지 N-1 개의 노드는 전송하지 않는 확률이다.

노드가 전송할 확률이 p라하면 해당 노드가 성공할 확률은 p x (1-p)^(N-1) 이다.

노드가 N개 있으므로 임의의 한 노드가 성공할 확률은 N x p x (1-p)^(N-1) 이다.

최대의 효율을 구하기 위해서는 이 식을 최대화 하는 p를 구해야 한다.

활성 노드가 많은 경우의 최대 효율을 구하기 위해 N이 무한대가 될 때의 극한값을 취한다.

이렇게 계산하면 최대 효율은 p = 1/e = 0.37 임을 알 수있다.

즉, 많은 노드가 전송할 프레임이 많을 때 기껏해야 37%의 슬롯만 낭비되지 않는다.

알로하(ALOHA)

알로하

순수 알로하 프로토콜에서는 슬롯 개념이 없다.

동작 과정

  1. 프레임이 도착하면 노드는 즉시 프레임 전체를 브로드캐스트 채널로 전송한다.
  2. 만약 충돌하면, 노드는 확률 p로 즉시 재전송 한다.
  3. 즉시 재전송하지 않는 경우, 노드는 프레임 전송 시간 동안 기다린다.
  4. 기다리고 나서 확률 p로 전송하거나 아니면 1-p 확률로 또 다른 프레임 시간 동안 기다린다.

효율성

임의의 시점에 노드가 프레임을 전송할 확률은 p다.

시간 t0에 프레임 전송을 시작한다고 가정하자.

이 프레임이 성공적으로 전송되기 위해서는 [t0-1,t0] 동안 다른 노드들이 전송을 해서는 안된다. 만일 전송을 하게 되면 노드 i가 전송 시작 부분과 겹쳐 충돌하게 된다.

이 시간동안 다른 모든 노드가 전송을 시작하지 않을 확률은 (1-p)^(N-1) 이다.

마찬 가지로 노드 i가 전송하는 동안에 다른 노드가 전송을 시작해서는 안되고, 이 확률 또한, (1-p)^(N-1) 이다.

즉, 성공적으로 전송할 확률은 i가 전송 할 확률 p 를 포함해서 p x (1-p)^(2(N-1)) 이다. 슬롯 알로하처럼 극한값을 취하면 최대 효율은 p = 1/2e 로 슬롯 알로하의 절반이다.

즉, 순수 알로하는 완전히 분산되어 동기화하는 것을 안하는 대신, 효율성을 포기한다.

CSMA

위 두 프로토콜에서는 다른 노드가 전송하고 있건 말건 일단 보낸다.

즉, 충돌이 생기고 결과적으로 효율이 떨어진다.

이러한 충돌을 없애기 위한 규칙을 보자.

  • 캐리어 감지(carrier sensing)
    • 만일 다른 노드가 프레임을 채널로 전송하고 있는 경우, 노드는 임의의 짧은 시간 동안 전송 중단을 감지하면 프레임을 전송하기 시작한다.
  • 충돌 검출(collision detection)
    • 만일 다른 노드가 방해 프레임을 전송하고 있음을 검출하면, 자신의 전송을 중단하고 랜덤 시간 동안 기다린 후 유휴 시 감지 및 전송과정을 반복한다.

CSMA에서 충돌이 발생하는 경우

CSMA

  1. 시각 t0에 노드 B가 다른 노드가 아무도 전송하고 있지 않으므로 채널이 비어 있는 것으로 감지한다.
  2. B는 전송을 시작하고, 전송한 비트들이 브로드캐스트 매체를 따라 양방향으로 전송된다.
    • 시간이 경과함에 따라 아래쪽으로 전파되는 것은 B의 비트들이 실제로 브로드캐스트 매체로 전파할 때 0보다 큰 시간이 필요하다는 것을 의미한다.
  3. D가 t1 시점에 전송할 프레임이 생겼고, 노드 B가 t1에 전송을 하고 있음에도 불구하고, B에 의해 전송되는 비트들은 D에 도달하지 못했고, 따라서 D는 t1일 때 채널이 사용되지 않는 것으로 감지한다.
  4. D가 전송을 시작하고, 약간의 시간 후에 B가 전송한 비트와 D의 전송한 비트가 간섭을 일으키기 시작한다.

즉, 브로드캐스트 채널 종단 간의 채널 전파 지연(channel propagation delay)이 길수록 다른 노드에서 이미 시작된 전송을 캐리어 감지 노드가 감지할 수 없는 경우가 증가하기 때문에 채널 종단 간의 채널 전파 지연(channel propagation delay) 는 CSMA의 성능을 결정하는데 중요한 역할을 한다.

CSMA/CD

CSMA/CD

CSMA는 충돌 검출을 수행하지 않는 반면, CSMA/CD는 충돌 검출을 수행한 후 즉시 전송을 취소한다.

동작 과정

  1. 어댑터는 네트워크 계층으로부터 데이터그램을 받아서 링크 계층 프레임을 만든 후에 그 프레임을 어댑터 버퍼에 저장한다.
  2. 어댑터는 채널이 유휴(idle) 상태임을 감지하면 프레임 전송을 시작한다.
    • 만일 어댑터가 채널이 바쁜(busy) 상태임을 감지하면, 어떤 신호 에너지도 감지되지 않을 때까지 더 기다렸다가 프레임을 전송하기 시작한다.
  3. 전송하는 동안 어댑터는 브로드캐스트 채널을 사용하는 다른 어댑터로부터의 신호 에너지가 있는지 감시한다.
  4. 프레임 전체를 전송하는 동안 다른 어댑터로부터의 신호 에너지가 감지되지 않으면, 프레임 전송을 완료한다.
    • 감지되면 자신의 프레임 전송을 취소한다.
  5. 전송 취소 후 임의의 랜덤 시간만큼 기다린 후 2단계로 돌아간다.
    • 만일 랜덤 시간이 아니라 고정 시간이라면 동시에 프레임을 전송했을 때 똑같은 시간을 기다린 후 전송을 하므로 계속해서 충돌하게 된다.

랜덤 시간을 결정하는 알고리즘: 이진 지수적 백오프(binary exponential backoff)

충돌을 n번 경험한 프레임을 전송할 때 노드는 {0,1,2,,2^n - 1} 중에서 랜덤하게 K 값을 선택한 후 K x 비트 시간 만큼 기다린다.

이더넷의 경우 K x 512 비트 시간(이더넷으로 512 비트를 전송하는데 걸리는 시간 x K)가 되며 n의 최댓값을 10으로 제한한다.

즉, 충돌을 많이 경험할수록 K의 범위가 지수적으로 커지게 된다.

새 프레임을 준비할 때는 최근 발생한 충돌을 고려하지 않고 CSMA/CD를 수행하여 충돌을 경험한 노드보다 먼저 전송될 수도 있다.

효율성

d(prop) = 신호 에너지가 임의의  어댑터 사이에서 전파되는  걸리는 최대 시간
d(trans) = 최대 크기의 이더넷 프레임을 전송하는데 걸리는 시간

효율 = 1/(1+5d(prop)/d(trans))

전파 지연이 0이 되면 충돌한 노드는 채널을 장비하지 않고 즉시 취소하기 때문에 d(prop)이 0이되면 효율은 1에 근접한다.

d(trans)가 아주 크면 프레임이 채널을 한번 차지하면 아주 오랫동안 채널을 사용하기 때문에 효율은 1에 근접한다.

따라서 채널은 거의 모든 시간 동안 유용하게 쓰인다.

6.3.3 순번 프로토콜

다중 접속 프로토콜에서 요구되는 두가지 특성은 다음과 같다.

  1. 단 하나의 노드만이 활성이면 Rbps의 처리율을 갖는다.
  2. M개의 노드가 활성이면 각 노드가 거의 R/M bps의 처리율을 갖는다.

알로하와 CSMA 프로토콜은 첫번째 특성은 지니고 있으나 두 번째 특성은 없다.

이것이 순번 프로토콜(taking-turns protocol) 을 개발하게된 동기다.

폴링 프로토콜(polling protocol)

노드 중 하나를 마스터 노드로 지정한다.

마스터 노드는 각 노드를 라운드 로빈 방식으로 폴링한다.

특히, 마스터 노드는 먼저 노드 1에게 노드 1이 최대로 보낼 수 있는 프레임 수에 대한 메시지를 전송하고, 노드 1이 프레임을 전부 보낸 다음 다음 노드도 똑같이 수행하여 순환적으로 각 노드를 폴링하는 방식으로 이 과정을 계속한다.

장점

  • 빈슬롯을 제거할 수 있다.

단점

  • 폴링 지연이 있다.
    • 한 노드만 활성이면 활성 노드가 프레임을 최대 개수만큼 보낼 때마다 마스터 노드는 비활성 노드들을 차례로 폴링해야만한다.
  • 마스터 노드가 고장나면 전체 채널이 동작하지 못한다.

토큰 전달 프로토콜(token-passing protocol)

토큰(token) 이라고 알려진 작은 특수 목적 프레임이 정해진 순서대로 노드 간에 전달된다.

예를 들어, 노드 1은 항상 노드 2에 노드 2는 노드 3에 노드 N은 노드 1에 토큰을 전송한다.

노드가 토큰을 수신하면, 전송할 프레임이 있을 때만 토큰을 붙잡고, 그렇지 않으면 토큰을 전달한다.

프레임을 최대 개수까지 전송한 뒤 토큰을 다음 노드로 전달한다.

장점

  • 분산 방식으로 효율이 매우 높다

단점

  • 노드 하나가 실패하면 채널이 동작하지 않는다.
  • 노드가 토큰을 놓아주지 않으면, 토큰이 다시 돌 수 있도록 하는 회복 절차가 수행되어야 한다.

6.3.4 DOCSIS: 케이블 인터넷 접속을 위한 링크 계층 프로토콜

DOCSIS

DOCSIS(Data-over-Cable Service Interface Specificaitions)는 케이블 데이터 네트워크의 구조와 프로토콜들을 정의한다.

DOCSIS는 하향 및 상향 네트워크 세그먼트들을 다수의 주파수 채널로 나누기 위해 FDM을 사용한다.

각 상향 및 하향 채널은 브로드캐스트 채널이다.

하향 채널

각 하향 채널은 24~192 MHz 대역에 약 1.6 Gbps의 최대 처리율을 제공한다.

CMTS에 의해 하향 채널로 전송된 프레임은 그 채널을 통해 수신하는 모든 케이블 모뎀에 의해 수신된다. (하향 채널로 전송하는 CMTS가 하나이기 때문에 다중 접속 문제는 발생하지 않는다.)

CMTS는 하향 채널상으로 MAP 메시지로 알려진 제어 메시지를 보냄으로써 어떤 케이블 모뎀이 MAP 메시지에서 명시한 시간 간격 동안 어떤 미니슬롯(mini slot)으로 전송할 수 있는지 알려준다.

상향 채널

상향 채널은 6.4~96 MHz 대역에 약 1 Gps의 최대 상향 처리율을 제공한다.

다수의 케이블 모뎀이 CMTS로의 동일한 상향 채널(주파수)을 공유하여 충돌이 발생할 수 있다.

상향 채널은 TDM처럼 시간 간격으로 나뉘어 있고, 각 시간 간격은 케이블 모뎀이 CMTS로 전송할 수 있는 일련의 미니슬롯(mini slot)들로 구성되어 있다.

미니슬롯(mini slot) 이 케이블 모뎀마다 명시적으로 할당되어 있기 때문에 CMTS는 미니슬롯(mini slot) 동안은 충돌이 발생하지 않는 것을 확신할 수 있다.

미니슬롯(mini slot)에는 미니슬롯 요청(mini-slot-request) 프레임을 CMTS에게 전송하기 위한 특정 미니슬롯(mini slot) 들이 있다.

각 케이블 모뎀은 미니슬롯 요청(mini-slot-request) 프레임 을 CMTS에게 전송하여 어떤 케이블 모뎀이 전송할 데이터가 있는지 알 수 있다.

미니슬롯 요청(mini-slot-request) 프레임 은 랜덤 접속 방식으로 전송되기 때문에 충돌이 발생할 수 있다.

케이블 모뎀은 충돌 검출을 수행하지 않고, 요청된 할당에 대한 응답을 다음 하향 제어 메시지에서 수신하지 못한다면 미니슬롯 요청 프레임이 충돌됐다고 추청한다.

이렇게 추정한 케이블 모뎀은 재전송을 지연시키기 위해 이진 지수적 백오프를 사용한다.


6.4 스위치 근거리 네트워크

스위치 근거리 네트워크

스위치는 링크 계층에서 동작하기 때문에 링크 계층 프레임을 교환한다.

또한, 네트워크 계층 주소를 인식하지 않으며, 2계층 스위치들로 구성된 네트워크에서 경로를 결정하는 데 OSPF 같은 라우팅 알고리즘을 사용하지 않는다.

즉, IP 주소가 아닌 링크 계층 주소를 사용한다.

6.4.1 링크 계층 주소체계와 ARP

네트워크 계층 주소와 링크 계층 주소

네트워크 계층 주소 체계가 있는데도 링크 계층 주소를 갖는 이유

  1. 랜은 IP와 인터넷만을 위해서가 아니라 임의의 네트워크 계층 프로토콜을 위해 설계되었기 때문이다.
  2. 만일 어댑터가 MAC 주소 대신에 네트워크 계층 주소를 사용한다면, 네트워크 계층 주소를 어댑터 RAM에 저장하고 어댑터를 이동할 때마다 재구성해야 한다.

즉, 네트워크 구조에서 계층이 독립적인 구성요소가 되도록 하려면 각 계층은 자신만의 주소 기법을 가져야만 한다.

MAC 주소

MAC 주소

실제로 링크 계층 주소를 가진 것은 호스트나 라우터가 아닌 호스트나 라우터의 어댑터(네트워크 인터페이스)다.

즉, 다수의 네트워크 인터페이스를 갖고있으므로 여러 개의 링크 계층 주소를 갖게된다.

그러나 링크 계층 스위치는 호스트와 라우터 간에 데이터그램을 전달하는 일을 하기 때문에 호스트나 라우터를 연결해주는 인터페이스에 링크 계층 주소를 할당받지 않는다.

MAC 주소 표기법

MAC 주소는 링크 계층 주소로, 대부분의 랜의 경우 MAC 주소는 길이가 6바이트이며, 따라서 2^48개만큼의 사용 가능한 랜 주소가 있다.

위 그림처럼, 주로 각 바이트는 2개의 16진수로 표기된다.

본래 MAC 주소는 영구적으로 설계되었으나, 이제는 소프트웨어를 사용해서 어댑터의 MAC 주소를 변경할 수 있다.

IEEE가 MAC 주소 공간을 관리하여 모든 어댑터가 다른 주소를 갖게끔 한다.

즉, 어떤 회사가 어댑터를 제조하려면 2^24개의 주소로 이루어진 주소 영역을 구매 후 첫 24비트를 고정하고, 나머지 24비트는 회사로 하여금 각 어댑터에게 유일하게 부여하는 방식으로 2^24개 주소를 할당한다.

MAC 주소는 계층 구조가 아닌 평면 구조를 가지고, 위치가 변하더라도 바뀌지 않는다.

IP 주소가 마치 우편번호 처럼 쓰였다면 MAC주소는 주민등록번호처럼 사용되는 것이다.

MAC 주소를 활용한 어댑터의 송수신

  1. 송신 어댑터는 프레임에 목적지 어댑터의 MAC 주소를 넣고 랜상으로 전송한다.
    • 스위치는 종종 프레임을 자신의 모든 인터페이스로 브로드캐스트한다.
    • 즉, 자신을 목적지로 하지 않는 프레임을 수신할 수도 있다.
  2. 프레임을 수신한 어댑터는 프레임 안의 목적지 MAC 주소와 자신의 MAC 주소가 일치하는지 검사한다.
  3. 일치하면 데이터그램을 추출하여 프로토콜 스택의 위쪽으로 전달한다.
  4. 일치하지 않으면 폐기한다.

랜상의 다른 모든 어댑터가 자신이 전송한 프레임을 수신하고 처리하기를 원할 때 MAC 브로드캐스트 주소(broadcast address)를 넣는다.

이 주소는 모든 비트가 1로된 6바이트 주소이다.

ARP

ARP

네트워크 계층 주소와 링크 계층 주소가 있으므로 이들 주소 사이에 변환을 해주는 프로토콜을 ARP(Address Resolution Protocol) 이라고 한다.

ARP 모듈은 IP와 MAC 주소와 마찬가지로 인터페이스마다 존재한다.

위 그림에서 A에서 C로 데이터그램을 전송하려고 한다고 가정해보자.

데이터그램을 전송하기 위해 목적지 IP 뿐만 아니라 MAC 주소도 주어야만 랜이 적절하게 C로 전달할 수 있다.

송신 호스트 즉, A는 목적지 IP주소를 가진 호스트의 MAC 주소를 알아야하는데 이를 ARP가 해준다.

송신 호스트의 ARP 모듈은 입력값으로서 동일한 랜상의 임의의 IP 주소에 대해 대응되는 MAC 주소를 돌려준다.

이러한 면에서 DNS와 비슷한 면이 있다.

그러나 DNS는 인터넷의 임의의 장소에 있는 호스트의 호스트 네임을 해결하는 반면에, ARP는 동일한 서브넷상에 있는 호스트나 라우터 인터페이스의 IP 주소만을 해결한다.

ARP 동작 과정

각 호스트와 라우터는 자신의 메모리에 ARP 테이블(ARP table)을 갖고 있다.

이 테이블은 IP 주소와 MAC 주소 간의 매핑 정보를 포함하며, 테이블에서 각 매핑이 언제 삭제되는지를 나타내는 TTL(time-to-live) 값을 포함한다.

일반적으로 삭제 시간은 엔트리가 테이블에 들어간 후 20분이다.

테이블에 서브넷상의 모든 호스트와 라우터에 대한 엔트리를 갖고 있지 않아도 된다.

즉,데이터그램을 전송하려할 때, ARP 테이블에 목적지 노드에 대한 엔트리가 없을 수 있다.

다음 동작 과정을 보자.

  1. 송신 노드는 MAC 주소를 해결하기 위해 ARP 프로토콜을 사용하여 ARP 패킷이라는 특수 패킷을 어댑터에 보낸다.
    • ARP 패킷은 송수신 IP주소와 MAC 주소를 포함하는 필드를 가지며 질의 패킷과 응답 패킷 모두 같은 형식을 갖는다.
    • 질의 패킷의 목적은 해결하려는 IP주소에 대응되는 MAC 주소를 결정하기 위해 서브넷의 다른 모든 호스트와 라우터들에게 질의하는 것이다.
    • 질의 패킷은 브로드캐스트 프레임으로 전송된다.
  2. 어댑터는 ARP패킷을 링크 계층 프레임에 캡슐화하고, 목적지 주소를 MAC 브로드캐스트 주소(FF-FF-FF-FF-FF-FF)로 하여 패킷을 전송한다.
  3. 이 질의는 서브넷 상의 다른 모든 어댑터에 의해 수신되며, 브로드캐스트 주소 때문에 각 어댑터는 프레임에 들어있는 ARP 패킷을 자신의 ARP 모듈로 전달한다.
  4. ARP 모듈은 자신의 IP 주소가 ARP 패킷에 들어 있는 목적지 IP주소와 일치하는지 검사한다.
  5. 일치하는 노드는 요구된 매핑 정보가 포함된 응답 패킷을 돌려보낸다.
    • 질의 패킷은 브로드캐스트 프레임으로 전송되는 반면 응답 패킷은 표준 프레임으로 전송된다.
  6. 질의 호스트는 자신의 ARP 테이블을 갱신한다.

즉, 노드의 ARP 테이블(ARP table)플러그 플레이(plug-and-play)다. 즉, 관리자가 구성하지 않아도 자동으로 구축된다.

ARP는 링크 계층 주소도 포함하고, 네트워크 계층 주소도 포함하기 때문에 네트워크 계층과 링크 계층의 경계에 있는 프로토콜이다.

서브넷에 없는 노드로의 데이터그램 전송

서브넷 없는 노드로의 데이터그램 전송

위 그림에서 호스트 111.111.111.111이 호스트 222.222.222.222로 IP 데이터그램을 전송하려한다고 가정하자.

라우터는 2개의 IP 주소, 2개의 ARP 모듈, 2개의 어댑터(어댑터는 고유한 MAC 주소를 가지고 있으므로 MAC주소도 2개다.)를 가지고 있다.

송신 호스트는 적절한 목적지 MAC 주소와 IP 주소가 포함된 데이터그램을 자신의 어댑터로 전달해야한다.

만약, 송신 어댑터가 목적지 MAC 주소를 49-BD-D2-C7-56-2A 를 사용한다면 목적지 주소는 111.111.111.111 호스트가 포함된 서브넷에 있는 어떤 어댑터의 MAC 주소와도 일치하지 않으므로 서브넷에 있는 어떤 어댑터도 IP 데이터 그램을 자신의 네트워크 계층으로 전달하지 않는다.

즉, 데이터그램은 전달되지 않고 사라진다.

데이터그램이 전달되기 위해서는 라우터 인터페이스 111.111.111.110으로 전달해야만 한다. 따라서 이 프레임에 대한 적절한 MAC 주소는 라우터 인터페이스의 E6-E9-00-17-BB-4B 이다.

동작 과정

  1. 송신 호스트가 111.111.111.110 의 MAC 주소를 ARP를 사용하여 알게된다.
  2. MAC주소를 알게 되면 송신 호스트는 IP 목적지 주소가 222.222.222.222 를 포함하는 데이터그램을 알아낸 MAC 주소와 함께 서브넷으로 전송하고 서브넷의 라우터 어댑터는 MAC 주소가 일치하므로 네트워크 계층까지 전달한다.
  3. 라우터의 포워딩 테이블을 통해 라우터에게 데이터그램을 라우터 인터페이스 222.222.222.220 을 거쳐서 전달하도록 지시한다.
  4. 인터페이스는 데이터그램을 자신의 어댑터로 전달하고 어댑터는 데이터그램을 새 프레임에 캡슐화하여 그 프레임을 다른 서브넷으로 전달한다.
    • 여기서의 목적지 MAC 주소는 당연히 ARP를 통해 알게된다.

6.4.2 이더넷

오늘날 이더넷은 가장 우세한 랜 기술이다.

인터넷이 글로벌 네트워킹에 대한 것이라면, 이더넷은 근거리 네트워킹에 대한 것이다.

발전 과정

  • 1980년대
    • 이더넷 랜은 노드를 연결하기 위해 동축 버스를 사용했다.
    • 버스 토폴로지의 이더넷은 브로드캐스트 랜으로, 전송되는 모든 프레임은 버스에 연결된 모든 어댑터를 거치며 이들에 의해 처리된다.
  • 1990년대
    • 랜을 허브 기반의 스타 토폴로지를 사용하는 이더넷으로 대체
    • 꼬임쌍선을 사용해서 허브에 직접 연결된다.
    • 허브(hub)는 프레임이 아닌 각각의 비트에 대한 처리를 하는 물리 계층 장치다.
    • 허브(hub) 가 한 인터페이스로 비트를 수신하면 그 비트의 복사본을 다른 모든 인터페이스로 전송한다.
  • 2000년대 초반
    • 중앙의 허브가 스위치(switch)로 대체되었다.
    • 스위치(switch) 는 충돌 없는 장치일 뿐만 아니라 저장-후-전달 패킷 스위치이다.

이더넷 프레임 구조

이더넷 프레임

  • 데이터 필드(46~1500바이트)
    • 이 필드는 IP 데이터그램을 운반한다.
    • 1500바이트를 초과하면 호스트가 단편화해야한다는 것을 의미한다.
    • 46바이트보다 작으면 데이터 필드를 채워서 46바이트로 만들어야 한다. 채운 부분을 제거하기 위해 IP 데이터그램 헤더의 길이 필드를 사용한다.
  • 목적지 주소(6바이트)
    • 목적지 MAC주소가 들어간다.
  • 출발지 주소(6바이트)
    • 출발지 MAC주소가 들어간다.
  • 타입 필드(2바이트)
    • 네트워크 계층 프로토콜을 이더넷으로 하여금 다중화하도록 허용한다.
    • 즉, IP 이외의 네트워크 계층 프로토콜을 사용할 수 있게끔 한다.
  • 순환 중복 검사(CRC)(4바이트)
    • CRC 필드의 목적은 수신 어댑터가 프레임에 오류가 생겼는지 검출할 수 있게 한다.
  • 프리앰블(8바이트)
    • 이더넷 프레임은 8바이트의 프리앰블(preamble) 필드로 시작한다.
    • 프리앰블의 첫 7바이트는 10101010 값을 갖고 마지막 바이트는 10101011이다.
    • 프리엠블의 첫 7바이트는 수신 어댑터를 깨우고, 수신자의 클록을 송신자의 클록과 동기화하는 역할을 한다.
    • 송신 어댑터는 이더넷 랜 종류에 따라 원하는 속도로 프레임을 전송하려 하지만 송신 어댑터는 목적지 속도에 정확히 맞게 전달할 수 없으므로 수신 어댑터는 단순히 프리앰블의 첫 7바이트에 있는 비트들에 맞춤으로써 송신 어댑터의 클록에 맞출 수 있다.
    • 8번째 바이트의 마지막 두비트는 수신 어댑터에게 중요한 것이 오고 있음을 알려준다.

이더넷의 비연결형 서비스(connectionless service), 비신뢰적인 서비스

송신 어댑터는 데이터그램을 전송할 때 핸드셰이킹 하지 않고 이더넷 프레임에 캡슐화해서 랜으로 전송한다.

수신 어댑터는 CRC 검사를 통해 프레임을 검사하지만 이에 대한 확인 응답 혹은 부정 확인 응답을 보내지 않는다.

그저, 실패하면 폐기한다.

애플리케이션이 UDP 또는 TCP를 사용하는지에 따라 데이터그램의 손실을 알 수 있음이 결정된다.

UDP의 경우 알 수 없고, TCP는 확인 후 재전송하게 할 것이다.

즉, 이더넷은 전송하고 있는 데이터그램이 재전송인지 새로운 데이터그램인지 구분할 수 없다.

이더넷 기술

이더넷 기술

이더넷은 수년에 걸쳐 진화해왔으며, 오늘날의 이더넷은 동축케이블을 사용하는 초기 버스 토폴로지 설계와 상당히 다르다.

요즘은 노드가 꼬임쌍선이나 광섬유 케이블로 만들어진 점대점 세그먼트를 통해 스위치에 연결된다.

이더넷이 발전하여도, 프레임 형식은 그대로 유지되어 사용된다.

버스 토폴로지와 허브 기반의 스타 토폴로지의 이더넷 표준은 노드들이 동시에 전송하면 프레임 충돌이 발생하는 브로드캐스트 링크였다.

이 충돌을 처리하기 위해 CSMA/CD 프로토콜이 포함되었다.

현재 많이 사용하는 이더넷은 저장--전달 패킷 교환을 하는 스위치 기반의 스타 토폴로지인데, 여전히 MAC 프로토콜이 필요할까?

스위치 기반 이더넷 랜에는 충돌이 없어 MAC 프로토콜이 필요하지 않다.

6.4.3 링크 계층 스위치

스위치의 역할은 들어오는 링크 계층 프레임을 수신해서 출력 링크로 전달하는 것이다.

스위치는 그 자체가 서브넷의 호스트와 라우터들에게 투명하다.

즉, 호스트/라우터는 프레임을 스위치가 아닌 다른 호스트/라우터를 목적지로해서 랜상으로 보내며, 중간에 스위치가 프레임을 받아서 다른 노드에게 전달하는 것을 알지 못한다.

프레임이 스위치 출력 인터페이스들 중 하나에 도착하는 속도가 그 인터페이스의 링크 용량을 일시적으로 초과할 수 있다.

이 문제를 해결하기 위해, 스위치 출력 인터페이스는 버퍼를 갖고 있다.

포워딩과 필터링

  • 필터링(filtering)
    • 프레임을 인터페이스로 전달할지 또는 폐기(drop)할지 결정하는 스위치의 기능
    • 스위치 테이블(switch table)을 이용
  • 포워딩(forwarding)
    • 프레임이 전송될 인터페이스를 결정하고 프레임을 해당 인터페이스로 내보내는 기능
    • 스위치 테이블(switch table)을 이용
  • 스위치 테이블(switch table)
    • 랜상의 모든 호스트와 라우터는 아니지만 일부 노드에 대한 엔트리가 포함되어 있다.
    • 스위치 테이블 엔트리 구성
      • MAC 주소
      • MAC 주소로 가게 하는 스위치 인터페이스
      • 해당 엔트리가 만들어진 시점

스위치 테이블 엔트리의 동작

목적지 주소를 가진 프레임이 스위치 인터페이스 x에 도달했다고 하자.

  • 테이블에 목적지 주소에 대한 엔트리가 없는 경우
    • 스위치는 프레임의 복사본을 프레임이 수신된 인터페이스를 제외한 모든 인터페이스의 출력 버퍼로 전달한다.
    • 즉, 브로드캐스트한다.
  • 테이블에 목적지 주소가 x 인터페이스에 연관된 엔트리가 있는 경우
    • 프레임은 송신자 어댑터를 포함하는 랜 세그먼트로부터 왔다.
    • 프레임을 다른 인터페이스로 전달할 필요가 없으며, 프레임을 제거함으로써 필터링 기능을 수행한다.
  • 테이블에 목적지 주소가 y≠x 인터페이스와 연관된 엔트리가 있는 경우
    • 프레임은 y 인터페이스에 접속된 랜 세그먼트로 전달되어야 한다.
    • 즉, 해당 인터페이스 출력 버퍼에 프레임을 넣음으로써 포워딩 기능을 수행한다.

자가학습

스위치는 테이블을 자동으로, 동적으로, 자치적으로 자가학습(self-learning)하는 특징이 있다.

동작 과정

  1. 스위치 테이블은 초기에 비어있다.
  2. 인터페이스로 수신한 각 프레임에 대해 스위치는 다음과 같은 정보를 저장한다.
    • 프레임의 출발지 주소 필드에 있는 MAC 주소
      • 즉, 다음번 수신 때 다른 랜에서 목적지 주소 필드를 해당 MAC 주소를 갖게되면 프레임을 알맞게 전달할 수 있게 된다.
    • 프레임이 도착한 인터페이스
    • 현재 시간
  3. 랜에 있는 모든 호스트가 프레임을 송신하면, 결국 모든 호스트에 대한 정보가 테이블에 기록된다.
  4. 수명 시간(aging time)이 지난 후에도 스위치가 해당 주소를 출발지 주소로 하는 프레임을 수신하지 못하면 테이블에서 이 주소를 삭제한다.
    • 즉, PC가 다른 PC로 대체되면 원래 PC의 MAC 주소는 스위치 테이블에서 삭제된다.

스위치는 네트워크 관리자나 사용자의 개입을 요구하지 않으므로 플러그 플레이 장치(plug-and-play device)다.

링크 계층 스위치의 특성

  • 충돌 제거
    • 스위치로 구축된 랜에는 충돌로 인해 낭비되는 대역폭이 없다.
    • 프레임을 버퍼링하며 어느 시점이든 세그먼트에 하나 이상의 프레임을 전송하지 않는다.
    • 브로드캐스트 링크를 사용하는 랜보다 성능이 월등히 향상된다.
  • 이질적인 링크들
    • 링크들을 별개로 분리하기 때문에 랜의 각 링크는 상이한 속도로 동작할 수 있으며 상이한 매체를 사용할 수 있다.
  • 관리
    • 스위치는 향상된 보안을 제공할 뿐만 아니라 네트워크 관리를 쉽게 할 수 있게 한다.
    • e.g. 케이블이 끊긴다면 그쪽 호스트의 연결만 끊어진다, 오동작으로 프레임을 계속 보내는 경우 이 문제를 감지하고 오동작하는 어댑터의 연결을 의도적으로 끊는다.
    • 대역폭 사용, 충돌률, 트래픽 종류에 대한 통계치를 수집하여 볼 수 있다.

보안 초점

  • 스위치 테이블에 엔트리가 있을 때
    • 호스트가 스위치에 연결되면 보통 자신을 목적지로 해서 전송된 프레임만 수신하기 때문에 다른 호스트는 프레임을 훔쳐볼 수 없다.
  • 스위치 테이블에 엔트리가 없을 때
    • 스위치가 프레임을 브로드캐스트하기 때문에 스니퍼는 자신을 목적지로 하지 않는 일부 프레임을 훔쳐볼 수 있다.
    • 이를 이용해 스위치 (switch poisoning)이라는 공격 수법을 사용하여 프레임을 훔쳐본다.
      • 스위치 (switch poisoning) 은 여러 가짜 출발지 MAC 주소를 갖는 패킷을 상당수 보내 스위치 테이블을 가짜 엔트리로 가득채워 합법적인 호스트들의 MAC 주소를 넣을 공간을 없애는 것을 말한다.

스위치 대 라우터

스위치 대 라우터

  • 라우터
    • 네트워크 계층 주소를 사용해서 패킷을 전달하는 저장 후 전달 패킷 스위치다.
    • 3계층 패킷 스위치이다.
  • 스위치
    • 저장후 전달 패킷 스위치이지만 MAC 주소를 사용해서 패킷을 전달한다.
    • 2계층 패킷 스위치이다.

이 둘은 근본적으로 다르지만(MAC 주소, IP 주소를 사용한다는 점에서), 네트워크 관리자는 상호연결 장치를 설치할 때 종종 이들 중에서 선택해야만 한다.

실제로, 라우터는 충돌 없이 학과 간의 통신이 가능하게 할 수 있다.

스위치의 장점

  • 플러그 플레이 장치(plug-and-play device) 로 관리자가 크게 신경쓸 필요가 없다.
  • 높은 패킷 필터링 및 전달률을 갖는다.

스위치의 단점

  • 브로드캐스트 프레임의 순환을 방지하기 위해 스위치 네트워크의 실제 사용되는 토폴로지는 스패닝 트리로 제한된다.
  • 대규모 스위치 네트워크에서는 호스트와 라우터가 커다란 ARP 테이블을 갖게 되며 상당한 양의 ARP 트래픽이 생성되고 처리된다.
  • 브로드캐스트 트래픽의 폭주에 대비한 방안을 제공하지 않는다.

라우터의 장점

  • 계층구조이므로, 네트워크에 중복된 경로가 있을 때 조차도 패킷은 라우터를 따라 순환하지 않는다. 즉, 스패닝 트리로 제한받지 않고 최상의 경로를 사용할 수 있다.
  • 제한이 없으므로 인터넷 토폴로지가 자유롭게 구축될 수 있게 한다.
  • 브로드캐스트 폭풍에 대비한 방화벽 보호기능이 있다.

라우터의 단점

  • 플러그 플레이 장치(plug-and-play device) 가 아니다.
  • 스위치보다 패킷당 처리 시간이 더 크다.

일반적으로, 작은 네트워크는 트래픽이 지역적으로 제한되어 있고 IP 주소의 구성을 요구하지 않으면서도 총 처리율을 증가시키므로 스위치로도 충분하다.

그러나 보통 수천 개의 호스트로 구성된 큰 네트워크에서는 라우터도 포함한다.

6.4.4 가상 근거리 네트워크(VLAN)

가상 근거리 네트워크

위 구조에서 스위치는 계층적으로 구성되어있는데, 이러한 구성의 단점은 다음과 같다.

  • 트래픽 격리의 부족
    • 계층 구조는 그룹 트래픽을 단일 스위치 내로 격리해주지만, 브로드캐스트 트래픽은 여전히 전체 네트워크로 전달되어야만 한다.
    • 즉, 브로드캐스트의 범위를 제한하면 랜 성능을 향상할 수 있다.
  • 스위치의 비효율적인 사용
    • 기관에 그룹이 3개가 아닌 10개가 있는 경우 첫 단계 스위치가 10개가 필요하다.
    • 그룹 내 인원수가 10명보다 작으면 96 포트 스위치 하나로 모든 사람을 수용할 수 있지만 스위치 하나로는 트래픽 격리를 할 수 없다.
  • 사용자 관리
    • 사원이 한 그룹에서 다른 그룹으로 이동하는 경우 이 사원을 다른 스위치에 연결하기 위해 물리적 케이블 연결을 변경해야만 한다.

위와 같은 단점을 가상 근거리 네트워크(virtual local area network, VLAN)를 지원하는 스위치를 사용해서 해결할 수 있다.

VLAN을 지원하는 스위치는 하나의 물리적 근거리 네트워크 인프라스트럭처상에서 여러 개의 가상 근거리 네트워크들을 정의할 수 있게한다.

VLAN에 속한 호스트들은 마치 스위치에 자신들만(다른 호스트들은 없이) 연결된 것처럼 서로 통신한다.

포트 기반 VLAN에서는 네트워크 관리자가 스위치 포트(인터페이스)를 그룹으로 나눈다.

나뉜 각 그룹은 하나의 VLAN을 구성하며, 한 VLAN 포트들은 하나의 브로드캐스트 도메인을 형성한다.

즉, 같은 그룹의 다른 포트에만 브로드캐스트 트래픽을 전달할 수 있다.

기본 VLAN

VLAN

위 그림은 16개의 포트를 갖고 있는 단일 스위치를 보여준다.

포트 2~8은 EE VLAN이고, 9~15는 CS VLAN에 속한다.

  • VLAN은 각각의 프레임을 서로 격리해준다.
  • 그룹을 변경하려면 관리자가 포트가 속한 그룹이 바뀌도록 재구성한다.
  • 2개의 그룹을 위해 있던 2개의 스위치가 하나의 스위치로 대체되었다.

즉, 위의 단점을 모두 해결한다.

VLAN 스위치는 포트-VLAN 매핑 테이블을 관리하고 네트워크 관리자가 스위치 관리 소프트웨어를 사용해서 이를 바꿀 수 있다.

또한, 스위치 하드웨어는 같은 VLAN에 속한 포트들 간에만 프레임을 전달한다.

EE VLAN to CS VLAN 트래픽 전송 과정

EE VLAN과 CS VLAN은 물리적으로는 붙어있지만 논리적으로는 다른 LAN이기 때문에 트래픽 전송이 다른 스위치나 라우터를 거쳐야만 한다.

  • VLAN 스위치 포트(미사용 포트, e.g. 위 그림에서 1번 포트)를 외부 라우터에 연결한다.
  • VLAN 스위치 포트를 두개의 LAN 모두에 속하게 한다.
  • 데이터그램이 먼저 CS VLAN(스위치 포트)를 통과해서 라우터에 도달한다.
  • 라우터에 의해 CS VLAN을 통해 CS 호스트로 전달된다.

스위치 생산자들은 VLAN 스위치와 라우터를 모두 포함시켜 네트워크 관리자가 위 과정을 쉽게할 수 있도록 한다.

외부 스위치가 VLAN에 속하길 원하는 경우

VLAN 외부

스위치에 N개의 VLAN이 있다고 하면 N개의 포트를 N개의 VLAN에 속하게 하고, 외부 스위치에 하나씩 연결해주면 외부 스위치도 VLAN 스위치와 같이 일할 수 있다.

그러나 N개의 VLAN에는 N개의 포트가 필요하므로 확장에 문제가 있다.

VLAN 트렁킹

위 방법은 VLAN 트렁킹(VLAN Trunking) 방식이다.

스위치 마다 하나의 특수 포트가 2개의 VLAN을 연결하는 트렁크 포트(trunk port)로 구성되어있다.

트렁크 포트(trunk port) 는 모든 VLAN에 속하며 한 VLAN에서 전송한 프레임들을 트렁크 링크를 통해 다른 스위치로 전달해준다.

이때 어떤 트렁크 포트로 온 프레임이 어떤 VLAN에 속하는지 알 수 없다.

이를 위해 IEEE는 VLAN 트렁크를 통과하는 프레임을 위한 확장된 형태의 이더넷 프레임 형식을 정의했다.

확장된 이더넷 프레임 형식은 VLAN을 식별해주는 4바이트 VLAN 태그(VLAN Tag)를 헤더에 갖고 있다.

VLAN 태그(VLAN Tag) 는 당연하지만, 송신 측의 스위치에 의해 추가되고, 수신 측에 있는 스위치에 의해 파싱되고 제거된다.

VLAN 태그

VLAN 태그(VLAN Tag) 구성

  • 2바이트 태그 프로토콜 식별자(Tag Protocol Identifier, TPID) 필드
  • 2바이트 태그 제어 정보(Tag Control Information) 필드
    • 12비트의 VLAN 식별자(identifier) 필드 (추가 필요)
    • 3비트 우선순위(priority) 필드

6.5 링크 가상화: 링크 계층으로서의 네트워크

💡 MPLS의 목표는 고정 길이 레이블과 가상 회선을 기반으로 데이터그램을 전달하기 위해 목적지 기반 IP 데이터그램 인프라스트럭처를 포기하는 것이 아니라, 가능한 경우 데이터그램을 선택적으로 레이블링해서 라우터로 하여금 고정 길이 레이블을 기반으로 데이터그램을 전달할 수 있도록 목적지 기반 IP 데이터그램 전달 하부구조를 확장하는 것이다.

MPLS 헤더

MPLS 헤더

MLPS가능 라우터에 의해 처리되는 링크 계층 프레임의 형식은 2계층 헤더와 3계층 헤더 사이에 작은 MPLS 헤더를 가진다.

MPLS 헤더에는 레이블, 실험을 위해 예약된 3개의 비트, 일련의 스택된 MPSL 헤더들의 끝을 나타내는 1개의 S 비트, TTL 필드가 있다.

MPLS 헤더는 MPLS 가능 라우터들 사이에서만 전송될 수 있다.

MPLS 동작 과정

MPLS 가능 라우터는 MPLS 레이블을 포워딩 테이블에서 찾아 적당한 출력 인터페이스로 데이터그램을 전달하여 MPLS 프레임을 전달하므로 종종 레이블 스위치 라우터(label-switched router)라고 부른다.

즉, MPLS 가능 라우터는 목적지 IP 주소를 꺼내 볼 필요도 없고, 포워딩 테이블에서 최장 프리픽스 대응을 찾을 필요도 없다.

MPLS 네트워

R1에서 R4 까지만 MPLS 기능이 있을 때 어떻게 상호 동작하는지 알아보자.

  1. R1은 자신이 A까지 라우팅할 수 있고 MPLS 레이블 6을 포함하는 프레임을 목적지로 보낼 수 있음을 R2 R3에게 광고한다.
  2. R3는 자신이 목적지 A,D까지 라우팅할 수 있고, MPLS 레이블 10과 12를 포함하는 입력 프레임을 각각 이들 목적지를 향해 스위칭할 수 있음을 R4에게 광고한다.

이를 반복하여 R4는 3개의 MPLS 경로를 갖게 된다.

MPLS 가능 라우터는 패킷의 IP 헤더를 건드리지 않고 동작한다.

즉, MPLS는 IP 주소를 고려하지 않고 레이블 기반으로 스위칭하여 스위칭 속도를 향상시켰다.

MPLS는 또한 트래픽을 관리하는데, IP 라우팅 프로토콜은 최소 비용 경로 하나만 지정하는 반면, MPLS는 표준 IP 라우팅 프로토콜을 사용해서는 불가능한 경로까지 제공한다.

이는 MPLS를 사용해서 트래픽 엔지니어링(traffic engineering) 을 제공하는 간단한 하나의 방식이다.


6.6 데이터 센터 네트워킹

데이터 센터는 인터넷에 연결되어 있을 뿐만 아니라 내부 호스트들 간 상호연결을 위해 자체 데이터 센터 네트워크(data center network)를 갖고 있다.

데이터 센터의 3가지 목적

  1. 웹 페이지, 검색 결과, 전자메일, 스트리밍 비디오와 같은 콘텐츠 제공
  2. 검색 엔진을 위한 분산 인덱스 계산과 같은 특정 데이터 처리 작업이 가능한 대량 병렬 컴퓨팅 인프라스트럭처 역할
  3. 다른 회사에게 클라우드 컴퓨팅(cloud computing)을 제공

6.6.1 데이터 센터 구조

데이터 센터

호스트

데이터 센터에서 작업을 수행한다.

피자 박스 모양의 블레이드(blade)라고도 불린다.

CPU, 메모리, 디스크 저장장치를 갖고 있는 범용 호스트다.

호스트들은 20~40대의 블레이드를 적재할 수 있는 (rack)에 적재된다.

데이터 센터 내부에서 사용되는 자신만의 IP 주소를 할당 받는다.

TOR(top of rack) 스위치

랙의 맨 위에는 TOR스위치라고 불리는 스위치가 있다.

TOR 스위치는 네트워크 인터페이스 카드를 통해 랙에 있는 호스트들을 연결해준다.

그 외의 다른 포트들을 통해 데이터 센터의 다른 스위치들과 연결된다.

경계 라우터(border router)

외부 클라이언트와 내부 호스트 간 트래픽 플로우를 처리하기 위해 하나 이상의 경계 라우터를 갖는다.

경계 라우터는 데이터 센터 네트워크를 공중 인터넷으로 연결해준다.

로드 밸런싱

  1. 외부 클라이언트의 요청을 지원하기 위해, 애플리케이션에는 공용 IP 주소가 할당되며 클라이언트는 이 IP 주소로 요청을 보내고 응답을 받는다.
  2. 요청을 로드 밸런서로 보낸다.
    • 일반적으로 여러 로드 밸런서를 갖고 있으며, 각 로드 밸런서는 특정 클라우드 애플리케이션을 위해 사용된다.
    • 로드 밸런서 는 목적지 IP 주소 뿐만 아니라 목적지 포트를 보고 결정하기 때문에 4계층 스위치라고도 한다.
  3. 로드 밸런서는 요청을 호스트로 분배하고 호스트의 현재 부하 상태에 따라서 호스트 간의 부하를 균등하게 한다.
    • 로드 밸런서 는 호스트의 공용 외부 IP 주소를 내부 IP 주소로 변환해주고 그 반대 변환도 해주기 때문에 NAT과 유사한 기능을 제공한다.

클라이언트가 호스트와 직접 통신하지 못하게 하여 내부 구조를 숨기고 보안을 제공한다.

계층적 구조

  1. 계층 구조의 최상단에서는 경계 라우터가 접속 라우터들에 연결된다.
  2. 접속 라우터는 최상단 스위치와 연결된다.
    • 접속 라우터 아래에는 총 세 단의 스위치들이 있다.
  3. 최상단 스위치는 여러 개의 두 번째 단 스위치들과 로드 밸런서에 연결된다.
  4. 두 번째 단 스위치는 랙의 TOR 스위치(세 번째 단)를 통해 여러 랙으로 연결 된다.
  5. 호스트들은 랙에 연결되어 하나의 서브넷을 형성한다.
    • ARP 브로드캐스트 트래픽을 지역 내로 한정하기 위해 서브넷은 다시 작은 VLAN 서브넷들로 분할된다.

클라우드 애플리케이션 제공자 입장에서는 애플리케이션 가용성을 높게 유지하는 것이 중요하기 때문에 데이터 센터 설계에 여분의 네트워크 장비와 링크를 포함시킨다.

계층적 구조의 문제

맨 위 데이터센터 그림에서 랙 1에 있는 10대의 호스트가 랙 5의 대응되는 호스트로 플로우를 보낸다고 하자.

마찬가지로 랙 2에서 6, 랙 3에서 7, 랙 4에서 8로 플로우를 보낸다고 하자.

하나의 링크를 지나가는 플로우들이 공평하게 링크 용량을 나눠서 사용하면 A에서 B로의 링크를 거쳐 가는 40개의 플로우는 각각 n Gps/40 만 수신하게 된다.

네트워크 인터페이스 카드의 전송률이 n Gps/40 보다 크다면 이는 문제가 생기고, 위쪽을 거쳐가는 호스트 간 플로우의 경우 훨씬 더 심각해진다.

해결방안

데이터 센터

  • 고속 스위치와 라우터를 사용한다.
    • 이는 비용이 많이 나간다.
  • 2단 또는 1단 스위치를 경유하는 렉 간 통신이 최소화되도록 서로 관련된 서비스와 데이터를 가능한 한 같은 곳에 위치시킨다.
    • 데이터 센터의 주요 요구사항인 계산과 서비스를 융통성 있게 배치해야 한다는 것 때문에 제한적이다.
  • TOR 스위치들과 2단 스위치들 간, 2단 스위치들과 1단 스위치들 간 연결성을 증가시킨다.
    • 예를 들어, 하나의 TOR 스위치를 2개의 2단 스위치에 연결함으로써 랙 간에 여러 개의 링크 비결합(link-disjoint), 스위치 비결합 경로를 제공할 수 있다.
    • 단 간의 연결성(경로의 다양성)을 증가시킴으로써 스위치 간 용량 및 신뢰성 증가라는 두 가지 이득을 얻게 된다.

6.6.2 데이터 센터 네트워킹 동향

비용 감소

데이터 센터 네트워킹에서 가장 중요한 동향은 계층적으로 단을 구성해서 데이터 센터 호스트들을 상호 연결해주는 것이다.

즉, 데이터 센터의 호스트는 다른 어떤 호스트와도 통신할 수 있게 한다.

데이터 센터 상호연결 네트워크는 다수의 소규모 스위치들로 구성된다.

중앙 집중형 SDN 제어 및 관리

데이터 센터는 단일 기관에 의해 관리되기 때문에 다수의 대규모 센터 운영자들은 SDN과 같은 논리적 중앙 집중형 제어라는 개념을 쉽게 받아들이게 된다.

SDN의 데이터 평면과 소프트웨어 기반 제어 평면에 대한 명확한 분리가 데이터 센터 구조에도 반영된다.

가상화

가상 머신(virtual machine,VM)은 소프트웨어를 실행하는 애플리케이션을 물리 하드웨어로부터 분리시켰다.

이렇게 분리하여 VM을 상이한 랙에 위치한 물리 서버들 간에 문제없이 마이그레이션할 수 있게 했다.

표준 이더넷과 IP 프로토콜은 서버들 간 활성화된 네트워크 연결을 유지한 채로 VM들을 이동시키는 것을 제한한다.

이를 해결하는 방법은 전체 데이터 센터 네트워크를 단일, 평면, 2계층 네트워크로 다루는 것이다.

모든 호스트가 단일 스위치에 연결된 것과 유사한 효과를 얻기 위해 브로드캐스트 대신 DNS 형태의 질의 시스템을 사용하도록 ARP를 수정하고 디렉토리에 VM에 할당된 IP 주소와 데이터 센터 네트워크에서 VM이 현재 연결된 물리 스위치 간 매핑 정보를 관리한다.

물리적 제약사항

광역 인터넷과 달리 데이터 센터 네트워크는 고용량, 초 저지연 환경에서 동작한다.

따라서 데이터 센터의 경우 버퍼 크기가 작으면 TCP 등과 같은 혼잡 제어 프로토콜이 효율적으로 동작하지 못한다.

손실복구와 타임아웃은 데이터 센터를 매우 비효율적으로 만들기 때문에 혼잡 제어 프로토콜은 반응이 빠르고 초 저지연으로 동작해야한다.

이러한 문제를 해결하기 위해 데이터 센터에 적합하도록 TCP를 변형한 방법부터 표준 이더넷에 RDMA(Remote Direct Memory Access)를 구현한 방법이 제안 및 적용되었다.

하드웨어 모듈화와 커스터마이징

또 다른 주요 동향은 선박 컨테이너(shipping container) 기반의 모듈화된 데이터 센터(modular data center, MDC)다.

MDC에서는 표준 12m 선박 컨테이너에 미니 데이터 센터를 구축한 후 컨테이너를 데이터 센터의 위치로 이동시킨다.

컨테이너에는 수십 개의 렉에 최대 수천 개의 호스트들이 촘촘히 포장되어 들어 있다.

데이터 센터 위치에는 여러 컨테이너들이 서로 연결되어 있고 인터넷도 연결되어 있다.

미리 제작된 컨테이너를 데이터 센터에 설치한 후에는 컨테이너에 대한 서비스를 하기 어려울 수 있다.

따라서 컨테이너 성능은 점진적으로 저하되도록 설계하고, 여러 구성요소가 고장나고 성능이 임계치 이하로 떨어지면 컨테이너를 제거하고 교체한다.

MDC에는 각 컨테이너의 내부 네트워크와 컨테이너들을 연결하는 코어 네트워크, 두 종류의 네트워크가 있다.

그러나 일상적인 작업 부하를 처리할 수 있도록 컨테이너들 간에 고속의 호스트-호스트 대역폭을 제공하면서도 수십 만대의 컨테이너들을 상호 연결해주는 코어 네트워크를 설계하는 것은 아직 난제로 남아있다.

지속적인 구축과 커스터마이징

대규모 클라우드 제공자가 네트워크 어댑터, 스위치, 라우터, TOR, 소프트웨어, 네트워킹 프로토콜 등 데이터 센터에 있는 모든 것을 계속해서 구축하거나 커스터마이징 한다.

신뢰성 확보

근처 건물들에 데이터 센터를 복제하여 가용 구역을 확보하여 신뢰성을 높인다.


6.7 총정리: 웹페이지 요청에 대한 처리

웹 페이지 요청

학생 밥이 학교의 이더넷 스위치에 랩톱을 연결하고 www.google.com을 다운로드 하는 과정을 보자.

6.7.1 시작하기: DHCP, UDP, IP 그리고 이더넷

밥은 랩톱을 켠 후 학교 이더넷 스위치에 연결되어 있는 이더넷 케이블에 연결한다.

학교 라우터는 ISP comcast.net에 연결되어 있고, comcast.net 은 이 학교에 DNS 서비스를 제공하며, DNS 서버는 학교 네트워크가 아닌 컴캐스트 네트워크에 있고 DHCP 서버는 라우터에서 실행되고 있다고 가정하자.

  1. 밥의 랩톱 운영체제는 DHCP 요청 메시지를 만들어서 이 메시지를 목적지 포트 67(DHCP 서버)과 출발지 포트 68(DHCP 클라이언트)을 갖는 UDP 세그먼트에 넣는다. 이 UDP 세그먼트는 브로드캐스트 IP 목적지 주소(255.255.255.255)와 출발지 IP 주소 0.0.0.0(랩톱이 아직 IP가 없기 때문에)을 갖는 IP 데이터그램에 들어간다.

  2. DHCP 요청 메시지를 포함한 IP 데이터그램은 이더넷 프레임에 들어간다. 스위치에 연결된 모든 장치에 이 프레임이 브로드캐스트될 수 있도록 이더넷 프레임의 목적지 MAC 주소는 FF:FF:FF:FF:FF:FF로 설정된다. 이 프레임의 출발지 MAC 주소는 밥 랩톱의 MAC 주소인 00:16:D3:23:68:8A 가 된다.

  3. DHCP 요청 메시지를 포함한 브로드캐스트 이더넷 프레임은 밥의 랩톱이 처음으로 이더넷 스위치에 전송한 프레임이다. 스위치는 자신의 모든 출력 포트로 브로드캐스트 한다.

    • 이때, 자가학습을 통해 스위치 테이블을 갱신한다.
  4. 라우터는 MAC 주소 00:22:6B:45:1F:1B 인 인터페이스로 DHCP 요청 메시지가 포함된 브로드캐스트 이더넷 프레임을 수신하고, 이더넷 프레임으로부터 IP 데이터그램을 추출한다. 데이터그램의 브로드캐스트 IP 목적지 주소는 이 IP 데이터그램이 노드의 상위 계층 프로토콜에 의해 처리되어야함을 의미한다. 이렇게 함으로써 데이터그램의 UDP 세그먼트가 UDP로 역다중화되고, UDP 세그먼트로부터 DHCP 요쳥 메시지가 추출되고 DHCP 서버는 요청 메시지를 갖게된다.

  5. 라우터에서 실행되고 있는 DHCP 서버가 CIDR 블록 68.85.2.0/24 에 있는 IP 주소들을 할당할 수 있다고 하자. DHCP 서버는 밥의 랩톱에게 주소 68.85.2.101을 할당했다고 가정하자. DHCP 서버는 이 IP 주소와 DHCP 서버의 IP 주소, 디폴트 게이트웨이 라우터의 IP 주소,서브넷 블록을 포함하는 DHCP ACK 메시지를 만든다. 이 메시지는 UDP 세그먼트에 들어가고 세그먼트는 IP 데이터그램으로 들어가고 데이터그램은 이더넷 프레임으로 들어간다. 이더넷 프레임은 출발지 MAC 주소로 홈 네트워크로의 라우터 인터페이스의 MAC 주소로, 목적지 MAC 주소로 밥 랩톱의 MAC 주소를 갖는다.

  6. DHCP ACK 메시지를 포함한 이더넷 프레임은 라우터에 의해 스위치로 전송된다(유니캐스트). 스위치는 자가학습을 하며 밥의 랩톱으로부터 DHCP 요청 메시지를 포함한 이더넷 프레임을 수신했었기 때문에 00:16:D3:23:68:8A를 목적지로 하는 프레임을 밥의 랩톱으로 가는 출력 포트로 전달할 수 있다.

  7. 밥의 랩톱은 DHCP ACK 메시지를 수신한 후 이더넷 프레임으로부터 UDP 세그먼트를 추출하고 DHCP ACK 메시지를 추출한다. 밥의 DHCP 클라이언트는 자신의 IP 주소와 DNS 서버의 IP 주소를 기록한다. 또한 IP 포워딩 테이블에 디폴트 게이트웨이의 주소를 저장한다. 밥의 랩톱은 자신이 속한 서브넷의 외부를 목적지 주소로 하는 모든 데이터그램을 디폴트 게이트웨이로 보내게된다.

6.7.2 여전히 시작하기: DNS와 ARP

www.google.com IP주소 알아내기

  1. 랩톱 운영체제는 DNS 질의 메시지를 생성하며, 이때 DNS 질의 메시지의 질문 부분에 www.google.com을 넣는다. DNS 질의 메시지는 목적지 포트가 53(DNS 서버)인 UDP 세그먼트에 들어간다. UDP 세그먼트는 목적지 IP 주소 68.87.71.226(DHCP ACK 메시지에 들어 있던 DNS 서버의 주소)로 하여 IP 데이터그램에 들어간다.

  2. 만들어진 이더넷 프레임은 밥의 학교 네트워크에 있는 게이트웨이 라우터로 보내진다. 밥의 랩톱이 학교 게이트웨이 라우터의 IP 주소를 DHCP ACK 메시지를 통해 알고 있긴 하지만 MAC 주소는 모르므로 ARP 프로토콜을 사용한다.

  3. 밥의 랩톱은 목표 IP주소 68.87.2.1 을 포함한 ARP 질의 메시지를 생성하며 이 메시지는 브로드캐스트 목적지 주소 FF:FF:FF:FF:FF:FF를 갖는 이더넷 프레임에 포함되어 스위치로 전송된다. 스위치는 게이트웨이 라우터를 포함한 모든 연결된 장치로 프레임을 전달한다.

  4. 게이트웨이 라우터는 학교 네트워크로의 인터페이스를 통해 프레임을 수신하고, ARP 메시지로부터 목표 IP 주소 68.85.2.1을 찾아서 자신의 인터페이스의 IP 주소와 일치하는 것을 알게 된다. 따라서 게이트웨이 라우터는 68.85.2.1 에 대응하는 MAC주소를 포함하는 ARP 응답 메시지를 만든다. 목적지 주소를 랩톱의 MAC주소로 하여 이더넷 프레임에 넣어 스위치로 보내며, 스위치는 이를 랩톱으로 전달한다.

  5. 밥의 랩톱은 프레임을 수신해서 게이트웨이 라우터의 MAC주소를 추출한다.

  6. 랩톱은 DNS 질의 메시지를 목적지 MAC주 소를 게이트웨이 라우터의 MAC 주소로, IP 목적지 주소로 DNS 서버로 하여 스위치로 보내고 스위치는 프레임을 게이트웨이 라우터로 전달한다.

6.7.3 여전히 시작하기: DNS 서버로의 인트라 도메인 라우팅

  1. 게이트웨이 라우터는 프레임을 받아서 DNS 질의가 포함된 IP 데이터그램을 추출한다. 라우터는 데이터그램의 목적지 주소 68.87.71.226포워딩 테이블에서 찾아 데이터그램을 컴캐스트의 라우터로 보내야 한다는 사실을 알게되고, 학교 라우터를 컴캐스트의 라우터로 연결해주는 링크에 적합한 링크 계층 프레임에 IP 데이터그램을 넣은 후, 프레임을 해당 링크로 전송한다.
  2. 컴캐스트의 좌측 상단 라우터는 프레임을 수신한 후, IP 데이터그램을 추출해서 데이터그램의 목적지 주소와 포워딩 테이블(인터넷의 인터 도메인 프로토콜인 BGPRIP,OSPF, IS-IS 같은 컴캐스트 의 인트라 도메인 라우팅 프로토콜에 의해 결정됨)로 부터 데이터 그램을 DNS 서버로 전달할 출력 인터페이스를 결정한다.
  3. IP 데이터그램이 DNS 서버에 도착하고, DNS 서버는 DNS 질의 메시지를 추출한 후 DNS 데이터베이스에서 www.google.com 에 해당하는 IP주소를 포함하는 DNS 자원 레코드를 찾는다. DNS 서버는 DNS 응답 메시지를 만들어서 UDP 세그먼트를 만들고 데이터그램을 만들어 밥의 랩톱을 목적지로 하여 보낸다,
    • DNS 서버에 캐싱되어 있다고 가정하자. google.com에 대해 책임 DNS 서버가 캐싱 데이터를 준 것이다.
  4. 밥의 랩톱은 DNS 메시지로부터 www.google.com IP 주소를 추출한다.

6.7.4 웹 클라이언트 - 서버 상호작용: TCP와 HTTP

  1. 밥의 랩톱은 먼저 목적지 포트 80(HTTP)을 갖는 TCP SYN 세그먼트를 생성하고, TCP 세그먼트를 목적지 주소가 64.233.169.105(www.google.com)인 IP 데이터그램에 넣은 후 MAC 주소가 게이트웨이 라우터인 프레임에 넣어서 이 프레임을 스위치로 전송한다.
  2. 학교 네트워크, 컴캐스트 네트워크, 구글 네트워크에 있는 라우터들은 TCP SYN 세그먼트를 포함하는 데이터그램을 14~16단계 처럼 자신의 포워딩 테이블을 사용해서 www.google.com 쪽으로 전달한다.
    • 컴캐스트와 구글 네트워크 사이의 도메인 간 링크상으로 패킷을 전달하는 데 사용되는 라우터의 포웓ㅇ 테이블 엔트리는 BGP 프로토콜에 의해 결정된다.
  3. TCP SYN 세그먼트를 포함하고 있는 데이터그램이 www.google.com 에 도착한다. TCP SYN 메시지는 포트 80과 연관된 환영 소켓으로 역다중화 된다. 연결 소켓은 구글 HTTP 서버와 밥 랩톱 사이의 TCP 연결을 위해 생성된다. TCP SYNACK 세그먼트를 생성해서 밥의 랩톱을 목적지로 하는 데이터그램에 넣은 후 www.google.com 을 첫 홉 라우터로 연결해주는 링크에 적합한 링크 계층 프레임에 넣는다.
  4. TCP SYNACK 세그먼트가 포함된 데이터그램은 구글, 컴캐스트, 학교 네트워크를 통해 밥 랩톱의 이더넷 컨트롤러에 도착한다. 이 데이터 그램은 18단계에서 생성된 TCP 소켓으로 역다중화된다.
  5. 밥의 브라우저는 가져올 URL이 포함된 HTTP GET 메시지를 생성하고 이를 소켓으로 보내며 이 메시지는 TCP 세그먼트의 페이로드가 된다. 이 TCP 세그먼트를 데이터그램에 넣어 18~20단계에서처럼 www.google.com 로 전달한다.
  6. www.google.com 에 있는 HTTP 서버는 TCP 연결 소켓으로부터 HTTP GET 메시지를 읽고 HTTP 응답 메시지를 생성하고 요청된 웹 페이지의 콘텐츠를 HTTP 응답 메시지 body에 포함시켜서 TCP 소켓으로 보낸다.
  7. HTTP 응답 메시지는 밥의 랩톱에 전달되고, 밥의 웹 브라우저 프로그램은 소켓에서 HTTP 응답 메시지를 읽어서, body로부터 웹페이지에 대한 html을 추출한 후 마침내 웹 페이지를 출력한다.

참고: Computer Networking: A Top-Down Approach - IT-Book-Organization