컴퓨터네트워크_LinkLayer

김태성·2024년 9월 25일

개인 프로젝트-1

목록 보기
45/53
post-thumbnail

레퍼런스 : http://www.kocw.net/home/cview.do?cid=6b984f376cfb8f70

저작권 법에 따라 출처 공개, 영리목적 사용금지, 내용을 의도적으로 바꾸지 않습니다.

Link Layer

이전 내용은 출발지에서 목적지까지 어떻게 가느냐의 이야기었다면
Link는 Host의 데이터가 라우터까지 전달될때, 중간과정이 어떻게 연결되는가를 말할 것이다.
여러 연결방법이 있지만 유선 상황인 이더넷을 기준으로 설명한다.
Link Layer는 네트워크 카드, OS에 일부 구현되어 있다.

Multiple Access

링크를 할때, 많은 Broadcast들이 동시에 연결한다.
이때 어떻게 충돌이 일어나지 않고 잘 전달할 수 있을까?(Conflict 방지)

상황 : broadcast channel of rate R bps
요구

  • 하나만 있다면 R을 다 사용가능해야함
  • N개 있다면 R/N 씩 사용가능해야함
  • 분산적으로 computing이 되야함
  • 동작이 단순해야함

전달 프로토콜

channel partitioning

TDMA
time division multiple access
시간을 나눠서 엑세스 하는 방법

FDMA
frequency division multiple access
주파수를 나눠서 전파하는 방법

장점 : 충돌 발생 안함.
단점 : 두 방법 다 한쪽을 집중적으로 처리 불가

random access

사용하는 채널을 랜덤으로 연결

CSMA
carrier sense multiple access
내가 전송을 할때 누가 전송을 하고 있는지 미리 들어본다.(하고있으면 안함)
하지만 동시에 여러개가 시작하면 충돌 발생가능
충돌이 발생하면 데이터 다 날아감. 오버헤드 발생

이는 전자기파의 속도와 관련되어 있는데, A가 B보다 아주 미세하게 빨리 전파를 시작하더라도
전파를 한다는 신호는 주변에 알리는데 일정 시간이 필요하기 때문에 B 또한 전파를 시작함.
이때 충돌이 발생한다.
충돌이 발생해도 보내던거는 다 보낸다.
그래서 싹다 패킷 충돌이 일어났기 때문에 재전송이 필요하다.

CSMA/CD
carrier sensing, deferral as in CSMA
요즘 많이 쓰는 방식이다.
라고 하지만 유선 이더넷 기준이고 wifi에서는 CSMA/CA를 쓴다고 한다.
CSMA에서 충돌이 발생하면 즉시 중단하는 방식
문제는 충돌난 A,B가 모두 멈춘다.
멈췄기 때문에 나중에 random을 돌려서 재전송을 돌린다.

Random 시간을 정할때, 시간이 짧다면 많은 충돌이 나고 시간이 길다면 적게 충돌이 날 것이다.

  • 예) 모든 broadcast가 0~1초 사이 랜덤값에 전송을 하는 경우와
    그리고 0~100초 사이의 랜덤값에 전송을 하는 경우를 비교해 보자.
    범위가 크다면 겹칠 일이 적어질 것이다.

그래서 재전송을 할때 처음은 시간범위를 적게, 충돌이 일어나면 시간범위를 점차 늘려나간다.

사람들이 많을때 왜 인터넷 속도가 느리지?
-> Random 범위값이 점점 더 커지기 때문이다.

Taking turn MAC protocol

Polling
Master노드가 Slave 노드들을 invite 하면서 요청을 일일이 찾아다님.
장점 : 충돌이 안남
단점 : master가 오류나면 다 꼬임

token passing
token 가진 노드만 전송 가능

장점 : 충돌 안남
단점 : 토큰 잃어버리면 다 꼬임

LAN

이더넷

유선 케이블 상의 Medium Access Control(MAC) 프로토콜이다.

IP 패킷이 링크계층으로 넘어올때 이더넷 프레임에 담긴다.
(패킷 헤더는 도저히 보이지 않음)
중요한건 여기서 담기는 Address는 MAC 주소 이다.

또한 위에서 사용한 CSMA/CD 방식을 사용한다.
여기서 중요하게 고민해야 할 부분이 있다.
이더넷에서 라우터로 데이터를 전송할때 피드백이 없다.(CSMA/CD 특징)
그래서 데이터를 잘 보낸건지, 잘못보낸건지는 확인할 방법이 없다.
충돌만 없다면 데이터를 보낸게 거의 확실하다.
하지만 충돌이 발생한다면 재전송을 해야 한다.

Clooision Detecting(충돌 감지)이 재대로 안된다면 심각한 문제가 발생할 것이다.
즉 CSMA/CD에서 충돌 감지가 100프로 잘 작동해야 한다는 것이다.

최악의 경우에는
A가 데이터를 다 보내고 난 이후 B의 데이터가 도착해서 데이터 충돌이 발생했음에도 감지하지 못하는 경우도 발생할 수 있다.(영원히 손실)

그래서 이러한 상황을 방지하기 위해 데이터에 패딩을 붙인다.
듣고 이게 맞나 싶긴 했는데, 데이터를 정확히 보내기 위해 다른 방법이 없다고 말하는거 같다.
따라서, 패딩이 붙었기 때문에 데이터를 다 보내고 나서도 충돌을 일정시간 감지하게 되는 것이다.

주소

특정 사람을 정의하는것과 특정 컴퓨터를 정의하는것을 비교해 보자.

  • 이름 : MyMac
  • 주소 : IP Address
  • 주민번호 : MAC Address

따라서 MAC 주소는 바꿀수가 없다는 것을 설명해준다.
IP와 이름은 설정을 변경하면 바꿀 수 있지만, MAC 주소는
하드의 고유한 값이라서 고정되어 있다는 것이다.
번호는 제조사/제조사의 번호로 Unique하게 설정되어 겹치지 않는다.

Address Resolution Protocol (ARP)

어느 주소로 데이터를 보내려고 한다고 가정해 봤을때 그 과정을 적어보자.

  • APP에서 IP패킷을 만든다.
  • IP 패킷의 SRC와 DST 번호가 담겨있다.
  • 이 데이터를 보내기 위해서는 게이트웨이로 보내야 한다.
  • 각 호스트 내부의 포워딩 테이블(라우터에만 있는게 아니다)을 확인하고 전송한다.
  • 이때 게이트웨이 IP주소는 호스트가 부팅할때 DHCP를 통해 주소를 얻어온다.
  • 이후 프레임의 SRC, DST를 체워야 한다.
  • (이더넷이니까) SRC는 HOST의 MAC 주소이고, DST는 게이트웨이의 MAC 주소이다.
  • 하지만 게이트웨이의 MAC 주소는 DHCP가 알려주지 않기 때문에 알아봐야 한다.(IP - MAC 매핑)

이때 IP - MAC 매핑을 하기 위한 프로토콜이 ARP 프로토콜이다.
그래서 IP주소에 해당하는 노드의 MAC 주소를 불러달라고 Broadcast 해야할 수 밖에 없다.
프레임 헤더에 Type 필드가 존재하는데
이 Type 필드에 ARP가 담기게 되면, 데이터에 MAC 주소가 담긴다.
여기서 알아낸 정보를 HOST의 ARP 테이블에 IP : MAC 주소로 매핑하게 된다.(TTL도 담긴다)

이후에
라우터에서 라우터로 데이터를 옮길때,

  • 프레임 헤더의 SRC에 보내는 라우터의 MAC주소가
  • 프레임 헤더의 DST에 받는 라우터의 MAC 주소를 넣을 것이다.

즉, 라우터는 프레임을 받게 되면 데이터를 지속해서 재포장 한다는 것이다.

Switch

예전에는 버스(Bus) 형식이었지만 현대는 스타(Star) 방식이다.
Switch가 추가되었다는 것이 차이점이다.

차이점은 뭘까?
버스 형식은 모든 기기가 다 연결되어있어서 항상 시끄럽다.(선에서 계속 데이터가 들어옴)
하지만 스타 형식은 스위치에서 통신을 관리하기 때문에 필요한 데이터만 전송된다.

Self Learning

이때 Switch는 똑똑해서 학습을 한다.
MAC 주소를 데이터 통신할때 다 기록해 놨다가 나중에 찾아서 쓴다는 말이다.
왜 그럴까?

이더넷 환경에서는 처음 선을 연결했을때 MAC 주소를 모른다. 그래서 하나하나 다 확인해야 되서
불필요한 오버헤드가 발생한다.

하지만 이때 데이터를 주고받으면서 MAC 주소를 얻어놓는다면, 이를 활용해 확인하는 절차를 건너뛸 수 있는 것이다.

그런데 스위치에 스위치를 연결하면?
마찬가지로 학습을 하면서 학습을 한다.

스위치는 기기에 선을 연결해서 쓰는 구조이기 때문에,
특정 선이 어디로 연결되어있다는 것을 매핑한다.

그래서 궁극적인 이더넷은 위와 같은 모양이 될 것이다.

Switch VS Router

스위치는

  • 도우미 역할을 한다. MAC Address도 없다.
  • 링크 계층에서 작동한다.

라우터는

  • 데이터 패킷을 전송하는 하나의 네트워크 장치이다. MAC Address도 있다.
  • 네트워크 계층에서 작동한다.









드디어 길고 길었던 네트워크 강의가 끝이 났다.
이후 보안과 무선 등이 있지만
OS에 대한 공부를 좀 더 해보고 싶기 때문에 네트워크는 여기까지 정리하도록 하겠다.

profile
닭이 되고싶은 병아리

0개의 댓글