- 2-2) 신뢰성 있는 전송
- 2-3) 이더넷
- 2-4) 토큰링
- 2-2) 신뢰성 있는 전송
A. 순서 번호 공간
순서 번호 공간이 sws(sliding window size)보다 작으면 불안정하다 - 2배는 커야 안정하다. (안 중요)
B. 동시 논리 채널
<Sliding window> : 대역폭을 크게 해서 1개 링크에서 여러 frame을 전송한다.
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 토큰링
- 이더넷 : 선투자를 전혀 하지 않는다. 따라서 충돌을 관리해야함
- 토큰링 : 선투자를 함으로써 충돌을 원천 배제한다.
이더넷 : 임계(30%) 까지는 traffic 증가한다는 것은 많이 보내는 것이므로 throughput이 증가한다. 그러다가 30%가 넘어가면 점차 줄다가 어느 시점에서 확 줄어들게 된다.
토큰링 : 선처리 방식이므로 시작점의 throughput이 낮은채로 시작한다. 또한 임계까지 traffic증가에 따른 throughput증가 기울기가 이더넷보다 더 완만하다. 그러나 임계가 이더넷보다 더 높은 80%정도이다. 80%이후로는 신호등 방식이기 때문에 충돌이 없어서 throughput이 이더넷처럼 줄어들지 않고 일정하다.
* 이더넷은 bridge를 쓰고 이래서 애초에 30% traffic 내에서만 사용되는게 목적이다. 따라서 이 범위에서 특화돼있고 높은 traffic에서는 사용되지 않을 것이기 때문에 그 이상의 traffic에서 throughput이 감소하는 것은 관심없다.
E. Summary
- MAC은 네트워크 카드인 어댑터에서 구현한다. 따라서 이더넷의 경우 MAC으로 할 일이 많지 않아서 어댑터가 똘똘하지 않아도 된다. CPU가 해줄 일이 적다.
- 토큰링의 경우 하는 일이 많기 때문에 CPU가 해줄일이 많다. 따라서 어댑터가 똑똑해야해서 어댑터에 CPU가 필요하다.
'컴퓨터통신' 카테고리의 다른 글
[컴퓨터통신] 3장. 패킷스위칭 (스위칭과 포워딩) (0) | 2019.11.25 |
---|---|
[컴퓨터통신] 2장. 데이터 링크 네트워크 (무선 LAN, 네트워크 어댑터) (0) | 2019.11.23 |