[Network] Link layer

bin1225·2024년 6월 27일
0

Network

목록 보기
6/7

KOCW 컴퓨터네트워크-이석복 강의를 수강하며, 해당 내용을 바탕으로 배운 점들을 정리하였다.

Link layer

  • 각 호스트와 라우터를 노드라고 했을 때, 실제로 데이터가 인접 노드까지 이동하는 단계이다.

  • 각 호스트가 각기 다른 회선으로 연결돼있다면 고민할 필요도 없겠지만 현실적으로 불가능하다. 여러개의 노드가 하나의 회선을 공유하는 형태로 구성되어 있다.

  • 노드들이 회선을 공유한 상태에서 한 노드가 데이터를 전송하면, 회선 전체로 퍼져나간다. 이 때 다른 노드에서 전송된 데이터와 회선에서 만난다면 충돌이 발생하여 데이터를 사용할 수 없다.

  • 이를 방지하기 위해 MAC(Mutiple Access Control) 프로토콜을 사용한다.

MAC 프로토콜

3가지 접근법이 존재한다

  • channel partitioning

  • random access

  • taking turns

channel partitioning

  • 시간이나 주파수에 따라서 채널을 분리하고, 각 노드에 채널을 할당해주는 방법이다.
  • 사용되지 않는 채널이 낭비된다는 것이 문제점이다.

Random access protocols

Random access protocol은 여러가지가 있지만 현재 기본적으로 사용되는 것은 CSMA이다.

CSMA : listen before transmit
보내기 전에 채널이 사용중인지 확인한다.

CSMA collisions

  • Propagation delay로 인해 여전히 CSMA를 사용하더라도 충돌 발생 여지가 존재한다.

  • 충돌 탐지를 통해 충돌이 발생한 경우 Frame을 재전송한다.

CSMA/CD algorithm

  1. NIC가 network layer로 부터 datagrame을 받아서 frame을 생성한다.

  2. NIC가 채널이 사용중이지 않다는 것을 확인하면 전송을 시작한다.
    만약 채널이 사용중이라면 사용중이지 않을 때까지 대기한다.

  3. 전송된 Frame이 충돌 없이 전송됐다면 끝난다.

  4. 전송중인 프레임에서 충돌을 감지한다면, 전송을 중단하고 jam signal을 전송한다.

    • jam signal : 충돌 발생 사실을 다른 노드에게 알리는 신호
  5. 충돌 후에는 binary back off에 의해 랜덤 시간만큼 대기 후 다시 전송을 진행한다.

Taking turns

Polling

  • master 노드가 각 노드들에게 권한을 부여한다.
  • 권한을 가진 시간동안 데이터들 전송할 수 있다.
  • single point of failure
    • master 노드에 문제가 발생한 경우 전체 시스템이 붕괴된다.

token passing

  • 토큰을 인접 노드에게 전송한다.
  • 토큰을 가진 노드가 일정 시간동안 데이터를 전송한다.
  • single point of failure
    • 토큰을 가진 노드가 토큰을 분실할 경우 시스템이 붕괴된다.

LAN

MAC addresses and ARP

Link layer에서의 통신은 MAC address를 사용한다.

MAC address

  • 기기가 가진 고유한 값으로, 하드웨어에 설정돼있기 때문에 유일하다.

  • 실제로 각 기기가 데이터를 주고 받기 위해서는 MAC address가 필요하다.

ARP 프로토콜

  • 라우팅 알고리즘을 사용하기 위해서 논리적 주소인 IP를 이용하는데, IP 주소를 MAC주소로 변환하는 과정이 필요하다.

  • 이를 위해 IP주소와 MAC주소를 매칭시켜 저장하는 ARP 프로토콜을 이용한다.

ARP 작동 방식

IP 주소를 확인하고 해당 IP에 매칭되는 MAC 주소가 테이블에 존재하는지 확인한다.

  • 존재하면 해당 MAC주소를 이용해 다음 목적지로 전달한다.

  • 존재하지 않는다면 broad cast를 통해 IP와 일치하는 MAC 주소를 알아낸 후 table에 저장한다.

Switches

Collision domain을 분리하기 위한 장치이다.

그림처럼 각 도메인을 분리한 후 전송 흐름을 통제한다.

Self-learning

  • Switch는 몇번 출구에 어떤 호스트가 존재하는지 알아야한다.
    이 정보를 테이블에 저장해두고 이용한다.

  • 1번 포트에서 A가 요청을 보낸다면 A는 1번에 존재한다는 것을 학습할 수 있다.

  • 목적지 호스트에 대한 정보가 table에 존재하지 않는다면 모든 링크에 확인하는 메시지를 전송한다. -> flood

실제 데이터 전송 과정

0개의 댓글