컴퓨터 네트워크

04. Data-Link layer

유승혁 2022. 1. 31. 23:49

 컴퓨터 네트워크 카테고리 마지막 글이 될 data link layer 이다. 여기까지 오신 여러분 정말 수고하셨습니당~~^__^

 Network Layer에서는 라우터가 있었다면 Data-Link Layer는 스위치라는 것이 있다. 이 스위치들이 다루는 데이터의 종류를 frame이라고 부른다. 

 또한 MAC-address 라고 불리는 값이 있는데 IP주소는 민증이었다면 mac주소는 거주지라고 여기면 될 것 같다. host를 연결해주는 LAN선에는 고유의 48bit MAC주소가 있으니, 그 LAN선에 컴퓨터를 막 갖다 끼우는 것이라 생각하면 편할 것이야. 물론 내장되어 있기도 하다.

 컴퓨터에는 adpator가 있기도 하고 이 adaptor에서 frame을 만들거나 들어온 frame을 확인하고 자신의 것이라면 분해하는 식이다. adaptor는 NIC라고 불리기도 한다.

 아무튼 이 정도 전반 개념만 있고, 이번 글에서 다룰 주 내용은 다음과 같을 예정이다. 1) 소통 규칙 2) ARP 3) Switch 4) VLAN 그리고 1번을 제외하고는 전반적으로 짧을 예정! 화이팅```

 

1. 소통 규칙

 누구들의 소통이느냐아? 바로 물리적으로 가까이 있는 친구들과의 소통이다. 이 물리적으로 가까이 있는 친구들을 switch로 묶게 되고 이 묶인 그룹을 LAN이라 부른다. 그럼 하나의 LAN 안에서의 소통을 다루어 보겠다는 뜻!

 먼저 소통 컨셉은 broadcasting 방식이다. muticast는 각자가 누군가랑 말 하고 싶다면 자유롭게 말하고 듣고 뭐 그런거지만, broadcasting은 그러하지 않다. 한명이 말하면 나머지는 듣고 있어야 한다. 두 명 이상이 동시에 말하게 되면 충돌이 일어나는 것이다. 그래서 이런 충돌을 방지하는 방법이 크게 세가지가 있는데 첫번째로는 partioning 두번째로는 random access 마지막으로는 taking turns가 있다. 사실 이 세가지 모두가 장단이 적절하게 있어서 상황에 맞게 잘 이용하면 될 것이당.

 

1-1. partitioning

  가장 간단한 방식. 시간별로 누가 방송할지 정하거나 주파수 별로 누가 이 대역폭을 사용할지 정하는 것이다. 아래 두 그림처럼.

TDMA
FDMA

 위 사진이 바로 시간을 기준으로 나눈 TDMA 이고 왼쪽 그림이 각자가 대역폭을 할당 받아 사용하는 FDMA이다. 

 장단점 또한 상당히 직관적으로 어느 방식을 택하건 장점은 절대 충돌이 일어날 일이 없다는 것이다. 단점은 만약 그 host가 broadcasting을 전혀 하지 않는 다면 아깝다는 것과 모든 host마다 고유의 영역이 필요하니 꽤 비용이 들 수 밖에 없다는 것이다.

 

 

 

 

1-2. Random access

 여기가 뭐 거의 하이라이트다. 왜냐면 방식이 여러가지가 있기 때문인데, 차이점만 잘 짚고 넘어가면 어렵지 않으리라~

 가장 첫번째 방식은 Slotted Aloha로서 배경은 각 frame의 크기가 정해져 있고 일정 순간에만 이 frame들을 보내고 싶다면 보내면 된다. 즉, 모든 host들은 언제 보낼 수 있는 지 타이밍을 재다가 보낼 수 있다! 하면 보내면 된다. 하지만 만약 두 명 이상이 동시에 보내어 충돌이 일어난다면, 랜덤하게 기다렸다가 보낸다. 아래 사진과 같이.

 장점은 운 좋으면 한 명이 전체의 대역폭을 계속 사용 할 수 있다는 것이다. 단점은 동기화를 해야 한다는 것, 그리고 그림에서 보이듯이 E인 순간들은 손해를 보고 있다는 것이다. 참고로 C는 충돌 S는 보냄을 뜻한다. 

 수학적으로 계산하면 37%정도의 효율이 나는데 이게 뭐 좋은지 아닌지는 사람마다 다르니.. 장단에 따지기 어렵다.

 두번째 방식은 위 방식에서 slot을 안쓰는 방식이다. Unslotted ALOHA 또는 Pure ALOHA라고 부른다. 이 방식은 그냥 자기가 보내고 싶다면 언제든 보내고 충돌이 일어나면 그냥 대충 자기가 기다리다가 보낼 때 보내면 된다. 장점은 구현하기 쉽지만, 단점은 효율이 18% 정도로 반토막이 난다.

 이번엔 이런 방식을 과감히 탈피한! CSMA/CD 방식 등장! CSMA는 물리적으로 연결된 네트워크에서의 broad casting은 점점 퍼져나가니 이 퍼져나갈 때 일어나는 충돌을 뜻한다. 아래 사진처럼.

 보다시피 t0인 순간에 두 번째 컴이 broadcasting을 했는데 4번째 컴이 이 소식을 듣기 전 t1인 순간에 보내버려서 발생하는 충돌이다.

 이 충돌을 다루는 방식인 CSMA/CD에서 CD는 바로 collision detection을 의미한다. 이 방식의 핵심은 충돌이 발생하는 순간! boradcastiong을 둘 다 중단한다. 충돌이 일어나는지 아닌지는 내가 말하면서 귀를 열어 놓는다. 그래서 누가 말하면 나도 그만 말하기 방식이다. 그럼 언제 다시 말할 건데? 이 방식이 상당히 random하다. 

 만약 충돌이 m번 일어났다면, 0,1,2,4,~,2^(m-1) 의 수들 중 K를 골라 512bit를 곱한 시간 만큼 기다린다. 그 시간이 지나고 나면 broadcasting을 시도한다.

 어라 이 정도면 제일 괜찮은 방식일거 같은데? 이걸 채택하자! 사실 그러기엔 꽤 큰 단점이 있다. CD, 즉 충돌 감지가 유선에서는 상당히 쉽지만 Wi-Fi 같은 무선 LAN에서는 상당히 어렵다.ㅠㅠㅠㅠ 아쉽

 

1-3. 발언 하시겠습니까?

 마지막 방식으로는 taking turns 가 있다. 크게 두 가지 방식인데 polling과 token passing이다. 아래 두 사진이 이를 나타낸다. polling은 master가 있어서 자신의 부하들 중 "야 누가 말할래? 너?" 이렇게 골라준다. token passing은 아래 그림처럼 서로 고리를 만들어서 frame을 전달한다. 만약 누군가가 나에게 보내준 것이면 내가 읽고 아니라면 옆 친구에게 보내준다.

 장점은 상당히 안정적이고 그냥 자기 차례에 말만 하면 되는 듯 싶지만 polling일 경우 master가 죽거나 token rings일 경우 중간에 하나라도 끊어진다면 그냥 답이 없다. 이런 장단이 있다.

 

2. ARP

 이제 소통 규칙을 알았으니, 소통을 해보자. 소통은 크게 두 가지로 나뉜다. 같은 LAN에 있느냐 아니냐. 같은 LAN이 아니라면 라우터가 개입하기 시작하게 된다. 또한 이때의 소통은 상대방의 IP 주소를 아는 상황에서이다. IP주소를 어떻게 아는지는 application layer에서 DNS 서버에 대해 다루었으니 까먹었으면! 반성하고! 읽고 오세요!!

 아 이걸 하는 이유는 사실 우리는 지금껏 IP 주소만 가지고 통신이 되는 줄 알았으나 사실은 MAC주소 또한 알아야 한다. 상대방의 MAC 주소와 IP 주소를 모두 알아야 통신이 가능 한 것이다. 

 아무튼 여기서 쓰이는 방식이 바로 ARP인데, 각 LAN에는 ARP 테이블이 있다. 이 테이블에는 <IP 주소, MAC 주소, TTL> 으로 이루어 져 있다. TTL은 생존 시간으로 이 시간이 끝나면 그 테이블 항목은 사라진다. 어? 아까운데.. 아까 말했듯이 MAC 주소는 집 주소 같은 개념이라 이사가면 다른 IP가 찾아오므로 일정 시간마다 확인해 주어야 한다.

  옆 사진과 같이 만약 78이 88과 통신하고 싶다. ARP 테이블에 88의 mac주소가 있으면 가져다 쓸 예정지만, mac 주소를 모르면 broad cast를 한다. IP 주소는 137.196.7.88 과 mac 주소는 FF-FF-FF-FF-FF-FF 로 세팅해서 한다.

 이후에 88은 "앗, 나를 부르네?" 하고 78에게 자신의 MAC주소를 알려준다. 이렇게 통신이 시작된다.

 

 

 그렇다면 만약 우리가 찾는 mac주소가 같은 LAN안에 있지 않다면..? 당연히 라우터가 개입하면 서 일이 커지기 시작한다. 아무튼 아래 그림을 보고 그림과 함께 이야기 하겠다.

외부에 있다면..

 A가 B의 IP주소를 들고 통신을 하려고 한다. 그래서 ARP 테이블 확인! 엇 없네,, 그럼 broadcasting! 을 하게 되면 아무도 응답하지 못하지만 단 하나! 바로 라우터가 자신의 mac주소를 전달한다. 그럼 A는 얼씨구! E6-E9-00-17-BB-4B구나! 하고 자신의 IP주소와 mac주소, 목적지IP 주소는 222.222.222.222, mac주소는 E6-E9-00-17-BB-4B로 frame을 만들어서 보낸다. 그럼 라우터가 그 frame에서 A의 mac주소가 아닌 자신의 mac 주소인 1A-23-F9-CD-06-9B로 바꾸어서 보낸다. 왜 그러냐고? B가 답장할 경우를 대비해서! 이렇게 바꾼 후에 B에게 그 frame 이 잘 전달 된다.

 이렇게 만약 같은 LAN안에 있을 경우 없을 경우를 대비해준 ARP에게 감사하다~~~

 

3. switch

 스위치에 대해 이야기 하기전에 이더넷을 다루자면, LAN을 이루는 방식은 여러가지가 있는데 아래 두 사진의 방식을 사용하면 이더넷이라 부르는 것이다. 이 두 방식 중 하나가 바로 스위치를 이용하는 것이다. 

이더넷

 또한 이더넷은 handshaking 이라던지, error detection이 존재하지 않는다. 그리고 CSMA/CD 방식을 이용한다. 

 이제 스위치에 대해 이야기하자면 스위치도 ARP 처럼 스위치 테이블이 있다. 이 테이블의 저장 정보는 <mac주소, 해당 컴퓨터와 연결된 번호, TTL>이다. 아래와 같은 이더넷이 있다고 하자.

 만약 A가 A' 과 통신하고 싶다면 A는 A'의 mac주소를 담은 frame을 보낸다. A는 자기가 스위치에 보낸지, 직접 보낸지 모르지만 일단 보낸다. 그럼 스위치는 <A의 mac주소, 1, 60>과 같이 스위치 테이블에 이 정보를 설정한다. 1인 이유는 1을 통해 A와 연결되어 있으니!

 근데 만약 테이블에 A'으로 가는 연결 선의 번호를 모르면 전체에게 다 보낸다. 그럼 A'은 "나 요있어요!~~!"하고 응답한다. 그럼 이제 스위치는 A에서 한 것처럼 <A'의 mac 주소, 4, 60> 과 같은 방식으로 테이블에 기록한다. 

 이러한 방식으로 스위치는 서로를 이어준다.

 참고로 목적지가 겹치지 않는다면 (A와 A') (B와 B') 처럼 한번에 여러 쌍들을 통신하게 해준다. 상당히 큰 장점

 

 

 

 

4. VLAN

 상당히 간단하다. 사실상 이것은 스위치를 사용하게 만드는 또다른 장점이다.. 허브의 경우는 이런 기능이 없지만 스위치는 VLAN 기능이 있어서 이다. 앞에 V는 virtual을 가리키는 것으로서 하나의 스위치에는 아까 보았듯이 여러 컴퓨터들을 연결 할 수 있다. 이때 이더넷들을 형성할 때 하나의 스위치당 하나의 이더넷을 만들기에는 포트가 꽤 많다. 그래서 뭔가 아쉬우니 하나의 스위치가 두 개 이상의 이더넷을 형성 해준다. 아래 처럼 노란색과 청색 부분은 서로 다른 이더넷이 형성 되어 있는 것이다.

VLAN

 이러한 방식으로부터 나오는 장점은 꽤 여러가지이다. i).당연히 traffic이 줄어들 수밖에 없다는 것. ii) 청색과 노란색수가 정해진 것이 아니라는 것 iii) 포트들 중 하나(trunk port)를 희생해서 다른 스위치까지도 확장을 한다는 것

 마지막 장점은 사진을 첨부하겠당.

확장하기

 또한 당연히 청색과 노란색이 통신하려면 서로 다른 이더넷이므로 라우터를 이용해 통신해야 한다.

 

 마무리

 이렇게 학교에서 배웠던 컴퓨터 네트워크 과목을 총 정리 해보았다. 사실 배우면서 너무 재밌었다. 왜냐하면 다른 컴퓨터들과의 통신이 너무나 궁금했었기 때문이다. 그래서 실습할때 노트북이랑 내 컴퓨터랑 연결 된거 보고 너무 신기했었다. 아무튼 이런 저런 이유로 여지껏 수업 중 가장 재밌었어서 블로그에 정리해 보았다. 나중에 관련 지식이 궁금할때 한번씩 읽으면 좋을 거 같다. 

 암튼 끝! 후련하다!! 오늘 밖에 눈 엄청 왔는데 눈 보러 가야지~~~~