일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 1101
- 신경망 학습
- n과 m
- 재귀
- Python
- 백트래킹
- streamlit
- 실버
- 기계학습
- N-Queen
- pyenv
- 1002
- 개발환경
- 백준
- 경사하강법
- 4948
- 파이싼
- Mac
- 파이썬
- 그리디 알고리즘
- 15649
- 밑바닥부터 시작하는 딥러닝
- end to end
- 설정
- BOJ
- 가상환경
- 손실함수
- 9020
- Today
- Total
파이톨치
[네트워크] Mac Protocol (정리 x) 본문
Mac 프로토콜 : link layer
Mac sub layer?
broadcast (shared wire)
Hub: 자기가 목적지가 아니어도 다 받는다. 뿌리기. (Hub 역할), switch랑 모양은 비슷함.
무선도 다 공유됨. P2P라인이 없음.
Switch: P2P 라인을 쓴다. 얘는 나랑 너만 데이터 전송함.
=> Mac 프로토콜을 잘 제어ㅐ해야함. 내가 혼자 사용해야 함. 그럼에도 에러는 있음.
-> 때문에 에러제어 프로토콜이 돌아감.
Multiple access protocol
collision: 2개 이상의 노드가 데이터를 보내는 것임. 케리어가 정보를 실고 간다. 근데 겹쳐버림. 중첩되는 경우 엉망이 되어버림.
때문에 Media access control (Mac)이 필요하다.
이는 distributed 알고리즘이다. 어떻게 효율적으로 사용할지. 노드가 데이터를 “”언제”” 보낼지 판단함.
특정 노드가 모든 정보를 제어하는게 중앙 제거 (centraliezed) -> 이거 안 좋음. 하나가 다 판단하면, 중앙한테 알려줘야 함. ㅈㄴ 낭비 심함. 에약해 두어야 하는데 버스트하게 정보가 움직이니까, 한번에 한 놈이 데이터를 보내는데 사용해야 함.
다른 애들로부터 얻는 정보 최소화 하고 스스로 판단해서 동작해야 하다. 심플하게. 그렇게 해서 collision을 피해야 하는데… 어케함?
no out of band chnnel for coordination이거 뭔 뜻?
실제로 보낼 데이터가 줄어드니까. 맥을 위한 정보가 최대한 적게 왔다 갔다 해야함. 커뮤니케이션도 데이터 채널을 사용해야 함.
broadcast channel of rate R bps임.
1개의 노드가 있을 때, R rate로 보낸다.
M노드가 있을 때, R/M이면 맥을 위한 통신이 없을 때, 이상적인 경우이다.
fully decentralized해야 함. (special node 없고, synchronization 없음,)
간단해야 함.
channel partitioning -> TDMA, FDMA 앞에서 배운 내용임. 공산주의..;; 버스트한 인터넷 특성에 안 맞음. 하나만 쓸 때, R/3이라고? ㅇㅇ 다른 애들 쓰던 안 쓰던 기다려야 하잖아. ㅈㄴ 짜증남.
random access(CSMA) -> 이게 우리가 쓰는 방식에 가까움. 채널이 나뉘어 지지 않아서 collision이 발생함. 하지만 회복한다.
-> 랜덤한 시간을 기다렸다 보내?
taking turns -> 내 차례가 오기까지 기다린다. 키를 넘기는데 시간이 걸리지만, 쓸 것 있는 애가 키를 받을 수 있음. 오버헤드 좀 적음. 얘는 3보다는 적은데, 키를 관리하고 복구하는데 귀찮음.
random access protocol
-> 패킷을 보낼 때, 나 혼자 다 쓰기. 우선 순위 없음
2개 이상 동시에 보내면 collision 발생
colision 탐지를 어떻게 할 것인가? 다른 신호가 또 오면 깨진다. 중단하고 다시 보내세요. 지연시켜서 나중에 다시 보내, 랜덤하게 기다려.
CSMA CD -> 유선? 감지 가능. -> 해결책 제안.
CSMA CA-> 무선? 감지 못하니까. 피해버리기. (와이파이가 동시에 데이터 보내, 보내는 입장에서 collision을 알 수가 없음. 서로 이어져 있지 않으니까, 와이파이 다른 곳에서 쓰는 사람이랑 나랑 안 이어져 있음. 유선은 서로 다 이어져 있음.)
slotted ALOHA(w도 안 쓰는 기법임, 잘 몰라도 됨)
p가 내가 보낼 확률, 1-p가 다른 애가 보낼 확률임. 전체 노드 수는 n
p * (1-p) ^ n-1 (ㅈㄴ 안 좋음) 해봤자 37퍼임. 얘는 슬롯 시작할 때 기다렸다가 보내. 걍 시간맞 맞추는 거임.
-> CSMA(carrier sense multiple access)
얘는 눈치를 보고 보낸다. 보내기 전에 케이블 같은거 데이터가 실어지는 주파수가 케리언데, 케리어가 감지되는 것이 데이터가 나가고 있는 것이다. 지금 보내봤자 데이터 에러난다. 니 보낼 때 나는 안 보낼게. 전체 상황을 좀 본다. 근데 케리어 정보를 어케 알아? 나한테 연결된 케이블에서 케리어만 감지하면 된다. ㅈㄴ 간단하게 많이 안다.
케리어 감지 안 될때 보내도 콜리젼 발생하는데… 왜? 채널이 idle 한지 본다. busy 하면 안 보낸다.
CSMA 콜리젼, 발생하니까 CD도 하자. 이게 요즘 유선 랜 표준임.
콜리젼 발생 이유 : propagation delay 때문에, 늦게 알아채고 보내버림. 미세한 차이로 보내버리면 collision 발생하기 쉽다. 나중에 보내기 시작한 애가 더 빨리 알아챔. 내가 보낸 신호를 abort함 (깨진거니까 의미없음) ㅇㄴ 충돌 됐다~, 잼신호 -> 야야 정리해
-> “””다시 보내세요. “”” : 얼마나 기다리는지가 핵심임.이게 랜덤. 몇 초 기다리는지. 랜덤 하게 뽑아. 중복도이ㅓ서 받으면?, 또 콜리젼, 몇 명 떄문에 콜리젼이 발생했는지에 따라서, 뽑는 랜덤 값이 달라진다. 랜덤하게 기다렸다 다시 보내. 정확하게 몇 명인지 모르고 시간 늘리면 낭비임. 때문에 정확히 알아야 해. “몇 명 때문인지 몰라” => 뭔가 휴리스틱한거 개발함.
1번 콜리젼 -> {0, 1} 랜덤 뽑아 -> 2번 콜리젼 -> {0, 1, 2, 3} -> 3번 콜리젼 -> {0, .., 7} -> ,,, ->