본문 바로가기

컴퓨터통신

[컴퓨터통신] 2장. 데이터 링크 네트워크 (신뢰성 있는 전송, 이더넷, 토큰링)

  • 2-2) 신뢰성 있는 전송
  • 2-3) 이더넷
  • 2-4) 토큰링

 

  • 2-2) 신뢰성 있는 전송

 

A. 순서 번호 공간

순서 번호 공간이 sws(sliding window size)보다 작으면 불안정하다 - 2배는 커야 안정하다. (안 중요)

 

 

B. 동시 논리 채널

<Sliding window> : 대역폭을 크게 해서 1개 링크에서 여러 frame을 전송한다.

Sliding Window

All-in-one : 전부 다 1개의 프로토콜

 

<동시 논리 채널> : 1개의 점대점 링크로 여러 채널 + Stop & Wait (문제를 Divide & Conquer)

동시 논리 채널

1개의 점대점 링크를 여러 논리 채널로 나누고 각 채널을 독립적으로 Stop & Wait 방식으로 운용한다.

 

 

 

 


 

  • 2-3) 이더넷 - 컴퓨터 네트워크 기술 (CSMA / CD)

공유 매체에 공평하게 접근할 수 있도록 하는 분산 알고리즘 (ex. Wifi, 기지국)

CSMA / CD : Carrier Sense (돌아오는 신호 감지) & Multiple Access (다중 접근) & Collision Detection

 

 

A. 개요

  • 버스 토폴로지 (*토폴로지 : 네트워크의 구성도)

다중 접근에서는 반드시 접근제어가 필요하다 = MAC

*MAC : 노드 스스로 판단해서 링크를 사용하는 분산 알고리즘

 

 

 

 

B. 개요

Transceiver : 그냥 선을 따와서 어댑터 & 호스트와 연결시키는 것

*MAC는 어댑터 안에서 구현된다.

Repeater : 1계층 (bit를 다룸)

 

 

 

 

 

C. 프레임 형식 - 맨체스터 방식으로 보낸다.

이더넷 프레임 형식

  • 주소 : 48bit의 목적지 주소가 할당된다. (ex. 8:0:2b:e4:b1:2 - 6개로 나눠서 1byte를 16진수로 두개씩 표현)

        - 브로드캐스트 : 모든 비트가 1 (ex. ff:ff:ff:ff:ff:ff)

        - 멀티캐스트 : 첫비트가 1 (ex. 1xxxx..... 48bit)

        - 유니캐스트 : 첫비트가 0 (ex. 0xxxx..... 48bit) (인터넷에서는 첫바이트의 마지막 비트라고함)

 

  • 전송 방식

이더넷의 전송방식

이렇게 신호를 버스 전 지역에 쫘악 보낸다.

어댑터 역시 프레임을 일단 수신한 후 아래의 경우에만 호스트에게 전송한다.

1. 목적지 주소가 내 유니캐스트 주소와 같을때

2. 목적지 주소가 브로드캐스트 주소일때

3. 목적지 주소가 내 멀티캐스트 주소와 같을때

 

신호를 이렇게 다 보내는 것의 단점 : 도청 & 어댑터에서 내 신호아닌데 일단 무조건 수신한다.

(ex. 컴퓨터 전원 꺼도 얼마동안에는 신호를 계속 받고 있는 현상)

 

 

D. 전송 알고리즘 - 경쟁방식

  • CS : Carrier Sense (돌아오는 신호 감지)

        - 전송하기 전에 일단 회선의 상태를 확인한다.

        - 회선이 idle인 경우 : 무조건 치고 들어가서 전송한다.

          (공평하게 1500byte 상한선 & 내가 쓰고 반납하면 9.6㎲ 기다린 후에 다시 전송할 수 있다 - 연속 전송 방지)

        - 회선이 사용 중인 경우 : idle 될 때까지 기다렸다가 idle되면 즉시 전송한다. (1Persistent)

 

  • CD : Collision Detection (충돌 감지)

        - Listen While Talk (전송 중에도 신호 상태를 지켜본다 - 신호가 커지면 충돌한 것이다.)

        - 전송 중에도 회선을 계속 확인한다.

        - 얼마동안 감지 해야 하나? -> 최악의 시간 = 2 * Propagation Delay (51.2㎲)

          (최악의 시간 경우 : 맨 끝에 있는 노드의 신호가 반대쪽 끝에 도달하기 전에 반대쪽 끝이 idle인 줄 알고 보냄)

 

        if 프레임 길이 너무 짧으면,

 

가운데 노드가 충돌인데도 인지 못하고 A 신호를 그냥 수신해버림 -> 따라서 51.2㎲ 전에 전송 안 끝나도록 10Mbps 기준 프레임의 최소 길이는 512bit (64byte) 이다.

 

        - 충돌이 생기면 jam 신호를 발송한다. (=지금 신호들 버리라는 뜻의 msg를 아주 큰 신호로 보냄)

        - 충돌 -> jam -> idle -> 모두 전송 -> 충돌 ... 반복 ...

          => 따라서 Exponential Backoff!! (처음에만 1p이고 점점 떨어뜨린다.)

          (ex. (0, 51.2㎲), (0, 51.2㎲, 102.4㎲), (0, 51.2㎲, 102.4㎲, 153.6㎲) ... ) k * 51.2, k=0..2^n-1

 

 

E. 전송 과정 (송신)

전송 과정(송신)

 

 

F. CSMA / CD 평가

  • 여러 MAC 정책을 평가할때 적절한 지표는? (1. Throughput / 2. 회선의 idle 기간)
  • 충돌에 소모되는 총 비용은 무엇의 함수인가? (노드 수 & traffic빈도 의 함수)
  • 1-Persistent 정책은 어떠한가? (Traffic이 낮다면 좋고 아니면 나쁜 정책이다)
  • CD를 하지 않는다면? CD로 얻는 이익은 어디서 나오는 것인가? (다 보내지 않고 중간에 끊음으로써 비용 절약이 가능하다, 충돌 감지를 통해 충돌이 안나면 모든 노드가 프레임을 잘 받은 것이고 충돌 나면 프레임 다 못 받은 것일테니까 각각 어떤 노드가 잘 받았고 못 받았고를 관리할 필요가 없다.)
  • 충돌이 감지된 후, 1-Persistent인가? (첫번째 충돌 후 0, 51.2 중 택이므로 1/2-Persistent 이다.)
  • CSMA / CD가 유효한 환경은?

 

G. 사용 경험

  • 보통 frame 크기가 48byte(짧게 통신) & 1500byte(ex.영화) 일 때 충돌 빈도가 가장 크다.
  • 최대 30% 효율이다. (traffic 적을때를 가정하고 설계한 이더넷이므로) traffic이 30% 넘으면 과부하이다.

 

H. 이더넷 확장

  • 스위칭 기능 : Repeater 대신 Bridge를 사용한다.

        - Bus를 bridge가 분할하여 filter 역할을 하므로 독립적인 세그먼트로 나눌 수 있다.

 

 

 


 

  • 2-4) 토큰링 - 신호등 방식

토큰링 방식

A. 개요

  • 토큰링 네트워크 : 이더넷의 반대 정책으로 경쟁 방식은 충돌이 많고 따라서 신뢰를 떨어뜨리므로 신뢰가 중요한 공장같은 곳에서 사용한다.

B. 토큰링 MAC 기본 개념

  • 토큰 : 특정 bit를 갖고있는 frame
  • 프레임은 한 방향으로 돈다.
  • 특별한 bit를 갖고 있는 토큰이 링을 한 방향으로 회전한다.
  • 토큰을 흭득한 호스트만이 전송할 기회가 생긴다.
  • 전송을 마치면 토큰을 방출해야 한다.
  • 프레임이 돌아오면 프레임을 제거한다.
  • 토큰을 일단 무조건 받아들이고 data 보낼게 없다면 토큰을 닷 보낸다.
  • 장점 : 공평하다 / 단점 : 길이 텅 비어도 내 차례가 아니면 데이터 못 보낸다.
  • 예약방식 : 내 차례 끝나서 토큰 보내야 하는데 급하게 보낼 데이터가 남아있을때 토큰에 색을 칠해서 자신보다 우선순위가 높은 호스트만 토큰을 쓰도록 한다.

C. 토큰링 관리

  • 모니터 지국 : 링의 정상적 동작을 감시 / 유지한다. 

        - 토큰의 회전을 감시하고 문제 발생시 재생성한다.

        - 토큰 갖고 있는 호스트가 죽어버리면 네트워크가 불통이 되므로 모니터가 존재한다.

        - 모니터가 죽을 수도 있으며 이때 역시 네트워크가 불통이 된다.

 

D. 프레임 형식

토큰링에서의 프레임

  • 식별자 (delimiter) : illegal Manchester Coding
  • 접근 제어 (Access control) : 프레임 우선순위, 예약 우선순위
  • 프레임 상태 (Frame status) : 수신자가 송신자에게 보내는 message (ACK) / 수신자가 frame status에 적고 다시 프레임 보낸다.
  • 헤더 부분 (Start delimiter ~ Src addr) 은 송신자가 수신자들 보라고 쓰는 것이다.
  • 이렇게 프레임의 field가 많다는 것은 서로 주고받으면서 하는 일이 많다는 것을 뜻함

E. 이더넷 vs 토큰링

  • 이더넷 : 선투자를 전혀 하지 않는다. 따라서 충돌을 관리해야함
  • 토큰링 : 선투자를 함으로써 충돌을 원천 배제한다.

이더넷 vs 토큰링

이더넷 : 임계(30%) 까지는 traffic 증가한다는 것은 많이 보내는 것이므로 throughput이 증가한다. 그러다가 30%가 넘어가면 점차 줄다가 어느 시점에서 확 줄어들게 된다.

토큰링 : 선처리 방식이므로 시작점의 throughput이 낮은채로 시작한다. 또한 임계까지 traffic증가에 따른 throughput증가 기울기가 이더넷보다 더 완만하다. 그러나 임계가 이더넷보다 더 높은 80%정도이다. 80%이후로는 신호등 방식이기 때문에 충돌이 없어서 throughput이 이더넷처럼 줄어들지 않고 일정하다.

 

* 이더넷은 bridge를 쓰고 이래서 애초에 30% traffic 내에서만 사용되는게 목적이다. 따라서 이 범위에서 특화돼있고 높은 traffic에서는 사용되지 않을 것이기 때문에 그 이상의 traffic에서 throughput이 감소하는 것은 관심없다.

 

E. Summary

  • MAC은 네트워크 카드인 어댑터에서 구현한다. 따라서 이더넷의 경우 MAC으로 할 일이 많지 않아서 어댑터가 똘똘하지 않아도 된다. CPU가 해줄 일이 적다.
  • 토큰링의 경우 하는 일이 많기 때문에 CPU가 해줄일이 많다. 따라서 어댑터가 똑똑해야해서 어댑터에 CPU가 필요하다.