공부기록

Link Layer 본문

CS/Network

Link Layer

코타쿠 2021. 5. 26. 11:20

Link Layer?

Link 계층은 한 노드로부터 물리적으로 인접한 다른 노드로 데이터그램을 전송해야하는 책임을 가지고 있다.

데이터그램은 다른 연결들을 통해 다른 link 프로토콜들에 의해 전송되어진다.

각 link 프로토콜은 다른 서비스를 제공한다.

Link Layer Service

데이터그램을 프레임으로 캡슐화 하고, 헤더를 더한다.

공유되어질 수 있는 채널이라면 접근한다.

출발지와 도착지를 식별하기 위해 프레임 헤더에 "MAC" 주소가 사용된다.

인접한 노드 간에 신뢰성 있는 전송을 해준다.

Link layer는 NIC (Network Interface Card)라고 하는 어뎁터에 구현된다.

Error Detection and Correction

Parity Checking

Single Bit Parity는 한개의 비트의 오류를 검출한다.

Two Dimensional Bit Parity는 각 row, col에 대해서 parity bit를 만들어 낸다. 오류를 검출하고 한 개의 비트 오류에 대해 수정을 할 수 있다.

Cyclic Redundancy CHeck

data bit D, r+1 개의 비트로 이루어진 generator G, r개의 bit로 된 R이 있을 때,

bit pattern은 d+r길이의 DR 이다.

D*2^r XOR R 이 된다.

즉 G로 DR을 나눈 나머지가 R과 같으면 오류가 나지 않은 것이고 그렇지 않으면 오류가 검출된다.

Multiple Access Protocols

하나의 채널을 공유하게 되면 서로의 신호가 간섭되는 collision이 일어나게 된다. collision에 대한 처리 방식으로 프로토콜의 유형을 나눠볼 수 있다.

Channel Partitioning

채널을 조각으로 나누고 각 조각은 노드가 독점적으로 사용한다.

TDMA : Time Divion Multiple Access

각 라운드마다 정해진 노드가 사용한다.

FDMA : Frequency Division Multiple Access

각 주파수 영역마다 정해진 노드가 사용한다.

Random Access

채널을 나누지 않고 충돌을 허용한다.

충돌로부터 회복한다.

Slotted ALOHA

time division을 사용한다. 노드들은 동기화 된다. 노드가 프레임 하나를 차지하여 데이터를 전송하는데 충돌이 생긴다면 노드를 충돌이 일어나지 않을 때 까지 뒤의 노드에 다시 보낸다.

Pure ALOHA

unslotted, 간단하고 동기화가 필요없다. 그러나 겹쳐질 가능성이 더 존재하게 된다.

CSMA (Carrier Sense Multiple Access)

전송 전에 채널을 듣고 놀고 있다면 전체 프레임을 보내고 그렇지 않다면 전송하지 않는다.

그러나 놀고 있는 채널에 두 개의 노드가 동시에 들어갈 수 있기 때문에 여전히 충돌할 수 있따.

CSMA/CD (Collision Detection)

CSMA에 충돌을 감지하는 기능을 추가한다. 충돌을 짧은 시간 안에 듣고 임의의 시간동안 전송을 중단한다. 채널 낭비를 줄이게 된다.

Taking Turns

노드들은 순서를 가지는데, 보낼 것이 더 많은 노드는 더 길게 순서를 가질 수 있다.

Polling

마스터 노드가 slave 노드를 할 수 있는 만큼 초대해서 전송한다.

Token Passing

노드가 순차적으로 토큰을 돌리고, 토큰을 가진 노드가 통신한다.

Link-Layer Addressing, ARP (Address Resolution Protocol)

MAC 주소는 48비트의 주소이며 하나의 인터페이서에서 다른 물리적으로 연결된 인터페이스로 프레임을 전송하는 역할을 한다.

Network의 IP 주소를 MAC 주소로 바꾸는 역할을 한다. 그러한 정보를 가지는 테이블을 ARP 테이블이라고 한다.

ARP는 Plug and Play이다. 노드들이 요청을 수행하면서 스스로 테이블을 만들게 된다.

같은 랜 네트워크에서 A가 B로 데이터그램을 보내고 싶으면 A가 B의 IP 주소를 가지는 ARP 질의를 보낸다. 네트워크에 있는 모든 머신이 질의 를 받게 되고, B가 A에게 MAC addr을 보낸다. A는 IP : MAC 쌍을 주정하게 된다.

다른 랜 네트워크의 A, B가 통신하게 되면 A의 질의를 라우터가 받고, 라우터의 질의를 B가 받는다.

Ethernet

이더넷은 수신, 송신 NIC간의 handshaking이 없어 비연결형이다. 또 ack, nacks를 보내지 않아 신뢰성이 없다. CSMA/CD를 쓴다.

Link-Layer switches

Ethernet Switch

link-layer의 디바이스로 허브보다 똑똑하고 능동적인 역할을 한다. Ethernet 프레임을 저장하고 보내는 역할을 하고, 선별적으로 프레임을 다른 링크로 보내준다. 호스트들은 스위치의 존재를 알지 못하기에 투명하다. plug and play이고 self-learing이다. 그래서 따로 설정해줄 필요가 없다.

스위치는 동시다발적인 전송을 허용한다. full-duplex이다.

스위치는 어떤 호스트가 어떤 인터페이스를 통해 갈 수 있는지 스스로 학습한다. 프레임이 오면, 송신자의 위치를 파악하고 스위치 테이블에 sender (MAC addr) /location (interface) 정보를 기록한다. 정보가 없다면 그냥 모든 연결로 보낸다.

Link Virtualization

'CS > Network' 카테고리의 다른 글

웹의 동작원리  (0) 2021.05.26
Application Layer  (0) 2021.05.26
Network Layer  (0) 2021.05.25
Transport Layer  (0) 2021.05.25
Web and HTTP  (0) 2021.05.19