Django/네트워크

LAN 통신이란??

치킨맛코드 2021. 10. 2. 16:30

90년대 중 후반 남성들 중에서 이 화면을 안 본사람은 없다고 생각한다. 민속놀이 혹은 애국가5절이 포함되어 있는 스타크레프트1 에서 자주 볼 수 있는 '근거리 통신망(LAN)'. 도대체 이건 뭐하는 것일까?

 

단어를 풀어쓰면 local area network. 근거리 통신망 이다. 보통 회사 내부와 같은 좁은 공간에서 사용한다. 보통은 OSI 7 계층에서 주로 2계층과 연관이 되어있는데 통신방법은 Ethernet(이더넷)을 사용한다. 통신을 할 때 서로 구분하기 위해서 기기마다 고유하게 지정되어 있는 MAC address(맥주소)를 사용하며 Frame이라는 형식을 통해 데이터를 주고 받는다.

이더넷의 통신 규칙은 CSMA/CD라는 방식을 사용하는데 
'half duplex에서 동작하는 링크에서 ethernet이 frame을 전송하는 절차' 이다.
데이터간에 충돌이 발생하게 될 경우 frame을 전송한 장비들을 렌덤한 시간만큼 대기했다가 최대 15회 재전송 시킨다. 이 방식을 통해 이더넷에 연결된 모든 장비가 상호간의 통신을 할 수 있다고 본다.

 

csma/cd  출저. 위키백과


뭐가 복잡하고 많다. 그리고 어려워보인다. 하지만 각각 단어를 풀어서 살펴보면 이해하기 굉장히 쉽다.

 

먼저 CS(Carrier Sense, 네트워크 신호 감지)
호스트가 Frame 을 전송하기 전에 네트워크 상에 다른 frame이 전송되는지 확인하는 과정이다.
(데이터를 보내기 전에 장비가 있는지 없는지 확인하는 과정이다.)
공유선(shared line)에 데이터가 흐르고 있는지 검사하는 과정이다. 이때 데이터가 흐르고 있다면 다른 장비는 잠시 멈춰서 기다려야 하기 때문이다.

MA(Multiple Access, 다중 접근)
ethernet에 연결된 장비들은 네트워크 위에서 frame의 흐름이 없을때 서로 동시에 frame을 전송할 수 있다. 즉 '무'순차적으로 접근할 수 있다. 즉 데이터를 보낼 필요가 있는 기기들은 언제든지 자동으로 접근해서 보낼 수 있다.

위와 같은 규칙이 잘 지켜지지 않을 경우 나타나는것이 CD(collision detection, 충돌감지) 라는것을 사용한다.
ethernet은 복수의 장비가 동시에 frame을 전송할 수 있으며 이 경우 충돌이 일어날 수 있어서 전송 후 충돌 발생 여부를 확인해야 한다. 충돌된 신호를 모든 장비에게 알려주는 행위이다. 이때 충돌한 영역을 collision domain이라고 명명한다.