TCP/IP layer의 두번째 Data-link layer
Data-link layer에서는 당장 어디로 보낼지를 생각하는 node-to-node communication이 수행된다
여기서 node는 end host나 router들을 뜻하고 그들 사이의 network를 link 라고 한다
data는 cable이나 air를 통해서 전달되고 1대 1 방식의 point-to-point link나 1대 다 방식의 broadcast link 방식을 사용한다
data-link layer의 역할을 잘 이해하기 위해서 data-link layer를 아래와 같이 2개의 sub layer로 나누어서 표현하기도 한다
Broadcast link 에서는 1대 다 방식이기 떄문에 누가 보냈는지를 control 해야하는 media-access-conrol sublayer가 필요하다
반면에 point-to-point layer에서는 1대 1방식이기 때문에 이게 필요없다
아래의 2가지 기능을 가짐
message를 분리해서 frame에 담는 것
frame이 클수록 flow control이나 error control이 어려워진다
그렇다면 frame 크기는 어떻게 지정할 것이냐
frame의 크기는 기준이 없기 떄문에 고정크기로 해도 되고 가변크기로 해도 된다
이때 고정크기를 하면 boundary를 명시할 필요가 없지만 가변 크기로 하면 boundary를 명시해 줘야함
이 프레이밍 유형에서 전송되는 데이터는 8-bit 문자로 구성된다
Header에는 출발지와 목적지 주소, 그리고 다른 제어 정보를 포함하며, 8-bit의 배수로 구성된다
Trailer는 오류 감지를 위한 중복 비트를 포함하며, 8-bit의 배수로 구성된다
또한 추가로 하나의 프레임을 다음 프레임과 구분하기 위해, 프레임의 시작과 끝에 8-bit flag가 추가된다 (이런 flag는 data-link layer에만 존재함)
그런데 flag가 data에도 똑같이 있으면 수신기는 이게 frame의 끝이라고 판단 할 수도 있음
이를 해결하기 위해 byte-stuffing 전략을 사용한다
Byte Stuffing
프레임의 시작과 끝을 표시하기 위한 특별한 바이트(flag)가 데이터 내용 자체에도 나타날 경우 그것을 특정한 data를 삽입하여 구별하는 방법
이렇게 추가되는 data를 escape character(ESC) 라고 한다
위와 같이 수신자가 ESC를 만나면 ESC를 제거하고 다음 section의 data를 data로 인식한다
즉, flag가 그냥 나오면 data의 경계로 인식하지만 esc 다음에 flag가 나오면 이는 data의 일부로 판단한다
이 framing 유형에서 전송되는 data는 bit 열이다
bit framing에서는 flag로 8-bit flag를 사용한다
(01111110을 주로 사용함, data pattern으로 자주 사용되지 않아서 HDLC나 PPP에 사용)
bit-oriented framing에서는 실제 data의 패턴이 flag로 해석되는 것을 막기 위해서 bit stuffing을 사용한다
Bit stuffing
5개의 1이 연속으로 나오면 다음으로 0 한개를 추가하는 방식이다
이 방식을 사용하면 receiver는 data로써 01111110을 받을 수 없다
수신측에서는 반대로 1 5개 이후의 0은 무조건 제거하면 된다