본 내용은 한양대학교 이석복 교수님의 강의를 참고하여 정리하였습니다. 교재는 Pearson/Addison Wesley에서 출판한 Computer networking : a top-down approach입니다.
MAC (Medium Access Control)
- MAC address 구조 : 앞 24-bit는 제조사 고유 번호, 뒤 24-bit는 제품 고유 번호
- 여러 단말들이 공유 매체를 사용할 때 발생하는 충돌을 제어하는 방식
MAC protocols
1. Channel partitioning
- 채널을 기준에 따라 나누어서 전송하는 방식
- 특징
* 사용자가 많으면 효율적
- TDMA (Time Division Multiple Access, 시분할다중접속)
* 시간을 나누어서 사용
* 예시 : A와 B, C 사람들이 1초씩 하고 싶은 말 하기
* 문제 : A는 말하고 싶지만, B와 C는 아닐 때, A만 2초 후에 계속 말해야 한다.
- FDMA (Frequency Division Multiple Access, 주파수분할다중접속)
* 서로 다른 주파수로 나누어서 사용
2. Random access
- Frame을 보내고 싶을 때 보내는 방식
- 다중 접속으로 인한 collision이 일어날 수 있기 때문에, 충돌을 감지하고 처리하는 방법을 명시해야 한다.
- 예시 : A, B, C 사람들이 말하고 싶을 때 말한다. 충돌이 발생한다.
- 특징
* 사용자가 적으면 효율적
* Ethernet과 Wifi에서 사용
- CSMA (Carrier Sense Multiple Access)
* 전송하기 전에 어떤 노드가 보내고 있는지 확인하고 전송하는 방식
* 예시 : A, B, C 사람들 중에 누가 말하고 있으면 가만히 있다가 말이 끝나면 자신의 말을 한다.
* 동작
+ 채널이 사용되지 않을 때까지 대기
+ 채널이 사용되지 않으면 frame 전송
* 문제
+ 여전히 충돌 발생 : B에서 frame을 전송 시작하면, 채널에 퍼져나가게 된다(브로드캐스트). 이때, 전파도 속도가 있기 때문에 동시에 다른 노드들에 도착하는 것은 아니다. 채널에 B의 frame이 퍼져나가는 중에, D는 자신의 frame을 보낼려고 한다. 이때, 아직 B의 frame이 도착하지 않아서, 채널이 사용중이 아니라고 판단하여 D의 frame을 보낸다. 그러면, 두 개의 frame은 서로 섞여서 쓸 수 없게 된다.
- CSMA/CD (Carrier Sense Multiple Access/Collision Detection)
* CSMA에서 충돌을 감지해서 처리하는 방법이 추가
* 충돌이 감지되면 서로 멈추고, 각자 임의의 시간 후에 재전송
* 충돌이 n번 감지되면, 임의의 시작은 t^2으로 늘어남
* 예시 : A가 재미있는 말을 시작했는데, 거의 동시에 B도 시작했다. 이때, 둘은 "어...!"하고 멈췄다가, 각자의 임의의 시간 초를 가슴으로 센 뒤에 말한다. 이때, B가 먼저 말하는 것을 A가 듣게 되면, A는 B의 이야기가 끝날 때까지 기다린다. 만약에 A와 B가 또 거의 동시에 말을 한다면, 임의의 시간을 다시 센 뒤에 말한다.
* 충돌 감지 : 케이블은 외부의 간섭이 거의 없다. 따라서 케이블 내의 신호 크기는 거의 동일하다. 따라서 신호가 충돌되면 크기가 달라지기 때문에 충돌로 인식된다.
* 동작
1. NIC(network interface card)는 network layer로부터 datagram을 받아서 frame 생성
2. NIC가 channel이 비었다는 것을 감지하면 frame 전송 시작. 반대일 경우, channel이 빌 때까지 대기하다가 전송
3. NIC가 다른 전송과의 충돌을 감지하지 못했으면 전송 완료
4. NIC이 전송 중에 충돌을 감지하면, 전송을 중단하고 jam signal을 보냄
5. 중단 후, NIC는 interval time을 2배로 늘리고 (binary exponential backoff), 2번 시작 (재전송)
* 특징
+ 피드백 없음 why? 유선이기 때문에 외부 간섭이 거의 없다. 따라서 내부 충돌만 피하면 거의 100% 전송된다. 그리고 충돌만 감지하면 재전송 보내면 된다.
* 현상
+ 많은 사람들이 인터넷을 사용하려고 할 때 느려지는 이유? 노드가 많아져서 충돌의 빈도수가 늘어날 것이다. 그에 따라 임의의 시간 간격도 늘어나게 되기 때문이다.
3. Taking turns
- partioning과 random의 장점을 융합
- 실제로 거의 사용되지 않음 why? decentralized를 위반하기 때문
- Polling
* master 노드가 salves 노드들에게 전송할 수 있는 차례를 줌
* mater의 기능이 망가지면, 전체 네트워크 불능 (decenteralized 위반)
- Token passing
* Token을 순차적으로 넘기면서 Token이 주어졌을 때, frame을 전송할 수 있음
* Token을 잃어버리면 전체 네트워크 불능 (decentralized 위반)
'Software Courses > Network' 카테고리의 다른 글
Link layer : ARP (Address Resolution Protocol) (0) | 2021.01.11 |
---|---|
Link layer : ethernet (0) | 2021.01.10 |
Link layer : overview (0) | 2021.01.10 |
Network : routing algorithms (0) | 2021.01.08 |
Network : IP (0) | 2021.01.06 |