데이터 통신과 네트워킹 TCP-IP프로토콜 기반

[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 3장 데이터 링크층

studyingalone 2024. 11. 22. 15:15
728x90

데이터 통신과 네트워킹-TCP/IP프로토콜 기반: 3장 데이터 링크층


3.1 개요


3.1.1 노드와 링크

노드(node): 두 종단 호스트와 라우터를 노드로 표현

링크(link): 노드 사이의 네트워크를 링크로 표현

노드와 링크


3.1.2 링크의 두 가지 유형

점-대-점(point-to-point link)

링크는 서로 연결된 2개의 장치가 전용으로 이용한다.

➡️ 일반 가정집 전화

 

브로드캐스트 링크(Broadcast link)

링크는 여러 장치의 쌍들이 공유된다.

➡️ 휴대폰

 


3.1.3  2개의 부계층 

데이터 링크 제어(DLC, Data Link Control)

  • 점-대-점, 브로드캐스트에 연관된 공통 사항 다룸

 

매체 접근 제어(MAC, Media Access Control)

  • 브로드캐스트 링크에 관한 사항 다룸

3.2 데이터 링크 제어

  • 데이터 링크 제어(DLC, Data Link Control)는 링크가 전용이거나 방송용이거나 상관없이 두 인접한 노드 사이의 통신을 위한 절차를 다룬다.
  • 프레임짜기(framing), 오류 제어(error control)를 포함

3.2.1 프레임 짜기(framing)

  • 데이터 링크층의 프레임 짜기는 송신자와 수신자의 주소를 추가하여 한 발신지에서  한 목적지로 가는 메시지를 구분한다. 
  • 목적지 주소: 패킷이 가야 할 곳
  • 송신자 주소: 수신자가 수신에 대한 확인 응답하는 데 사용
  • 메시지를 여러 개의 작은 프레임으로 나눠 넣음 ➡️ 오류에 대응하기 위해

프레임 크기

  • 고정 길이 프레임 짜기(fixed-size framing): 사전 정의된 크기를 구분 기호로 사용
  • 가변 길이 프레임 짜기(variable-size framing): 프레임이 끝나는 곳과 시작 되는 지점을 지정해야 한다.

문자 중심 프레임 짜기

  • 데이터 및 제어 정보(헤더/트레일러)는 8비트 문자(예: ASCII)로 구성
  • 플래그: 특수 8비트 문자는 프레임의 시작과 끝을 표시
  • 데이터에 플래그가 표시되어 오해가 발생할 수 있다.

문자 중심 프로토콜 프레임


비트 중심 프레임 짜기

  • 프레임의 데이터 부분은 상위 계층에서 해석하는 비트의 순서이다.
  • 헤더를 포함하여 프레임들을 서로 분리하는 구분자가 있음
  • 8비트 패턴(01111110)을  프레임 구분자로 사용

비트 중심 프로토콜의 프레임

 

비트 채우기(Bit Stuffing)

  • 플래그 패턴이 데이터 안에 나타나면 수신자로 하여금 이것이 프레임의 끝이 아니라는 것을 알리기 위해 사용
  • 1개의 단일 비트를 채워 넣어서 크 패턴이 플래그처럼 보이지 않도록 만든다.

비트 채우기와 빼기

방법

  • 0과 그 뒤로 연속하는 5개의 1을 만나게 되면 추가로 0을 더해 넣는다.
  • 추가로 채워진 비트는 마지막 순간에 수신자가 데이터에서 제거하여 원본 데이터로 재구성

3.2.2 오류 제어

데이터 링크층에서 오류 제어는 주로 오류 검출과 재전송

 

오류의 유형

  • 간섭(interference): 비트가 다른 지점으로 전달될 때 간섭으로 인해 변경이 생길 수 있음
  • 단일 비트 오류(single-bit error): 주어진 데이터 단위 중 오직 하나만 0에서 1, 1에서 0으로 변경
  • 폭주 오류(burst error): 데이터 단위에서 2개 이상의 연속적인 비트들이 0에서 1, 1에서 0으로 변경

중복(Redundancy)

  • 오류를 검출하거나 정정하는 것의 중심 개념
  • 송신자에 의해 오류 검출, 정정을 위해 데이터 이외에 추가 비트를 수신자에게 보냄

검출 대 정정(Detection versus Correction)

  • 오류 검출(error detection): 단순히 오류가 생겼는지만
  • 오류 정정(error correction): 정확히 몇 비트가 잘 못되었는지, 어디가 잘못되었는지 알아야 함

부호화(Coding)

  • 송신자는 중복 비트와 실제 데이터를 관련 짓는 중복비트를 수신자에게 보낸다. 
  • 수신자는 이 두 종류의 비트들 사이에 관계를 확인하여 오류를 검출하거나 정정.
  • 부호화 방법은 블록 부호화(block coding)와 컨볼루션(convolution) 부호화로 나눌 수 있다.

블록 부호화(block coding)

  1. 메시지를 데이터워드(dataword)라는 k비트의 블록으로 나눈다.
  2. 각 블록에 r개의 중복 비트들을 더하여 길이 n = k + r이 되도록 한다.
  3. n비트 블록을 코드워드(codeword)라 한다.

오류 검출

  1. 수신자는 유효 코드워드의 목록을 가지고 찾을 수 있다.
  2. 원래의 코드워드가 무효 코드워드로 바뀌었다.

블록 부호화에서 오류 검출 과정

 

 

예제

k = 2, n = 3이고 송신자가 데이터워드 01을 011로 부호화하여 수신자에게 보낸다.

  1. 수신자가 011을 수신 ➡️ 유효 코드 ➡️ 수신자는 데이터 워드 01을 추출
  2. 코드워드 손상으로 111 수신 ➡️ 유효 코드가 아니므로 버려진다.
  3. 코드워드 손상으로 000 수신 ➡️ 유효 코드 ➡️ 수신자는 00 추출 ➡️ 2개 비트가 손상되어 요류를 찾지 못함

※ 오류 검출 코드는 찾도록 설계된 오류만 찾아낼 수 잇다. 다른 유형의 오류는 검출 x


해밍 거리(Hamming distance)

  • 2개의 워드(같은 길이) 사이의 해밍거리는 서로 다른 대응 비트의 개수
  • 두 워드 x, y사이의 해밍 거리를 d(x, y)로 표시 
  • 수신된 코드워드와 발신된 코드워드 사이의 해밍 거리는 전송되는 동안에 오류가 생긴 비트의 수
  • 해밍 거리는 두 워드에 XOR 연산을 한 결과에 1의 개수

 

오류 검출을 위한 최소 해밍 거리

  • 모든 경우에 s개까지의 오류 검출을 보장하려면 블록 코드의 최소 해밍 거리는 d(min) = s + 1 

오류 검출에서 d(min)을 이해하기 위한 기하학적 개념

 


 

선형 블록 코드(Linear Block Code)

  • 2개의 유료 코드워드에 대해 XOR 연산을 하면 다른 유효 코드워드가 생성되는 코드

 

선형 블록 코드의 최소 거리

  • 0이 아닌 가장 적은 수의 1을가지고 있는 코드워드의 1의 개수

패리티 검사 코드(Parity-check code)

  • k비트 데이터워드를 n = k + 1이 되도록 n 비트 코드워드로 바꾸는 것
  • 추가된 비트는 패리티 비트한다.(보통 짝수 패리티 비트 사용)
  • 최소 해밍 거리 d(min) = 2 이다.

단순 패리티 검사 코드의 부호기와 복호기

 

  • 송신자가 전송한 워드를 수신자가 덧셈한 결과를 신드롬(Syndrome)라고 하는데 1비트 값이다.
  • 수신된 워드의 1의 개수가 짝수이면 신드롬은 0이고 아니면 1이다.
  • 신드롬이 0이면 오류가 없음
  • 신드롬이 1이면 코드워드의 데이터 부분을 버린다.

 

순환 코드(Cyclic Code)

  • 코드워드를 순환시키면 다른 코드워드를 얻는다.
  • 1011000이 코드워드이면 1개의 비트를 왼쪽으로 이동시켜 얻은 코드워드 0110001도 코드워드이다.

순환 중복 검사(CRC, Cyclic Redundancy Check)

  • 순환 코드의 한 범주

CRC 부호기와 복호기

 

송신자 - encoder(부호기)

  1. 부호기(encoder)에서 데이터워드는 k비트이며, 코드워드는 n비트이다.
  2. 데이터워드의 크기는 n - k 개의 0을 워드의 오른편에 더해서 키워진다.
  3. n비트 결과 값이 생성기로 보내진다. 
  4. 생성기는 미리 전해진 크기 n - k + 1의 나누기 장치를 사용한다.
  5. 생성기는 확장된 데이터 워드를 나누기 장치로 나눈다.
  6. 나눗셈 결과로 얻은 몫은 버려지고 나머지(r2r1r0)를 데이터워드에 덧붙여 코드워드를 만든다.

수신자 - decoder(복호기)

  1. 손상되었을지 모르는 코드워드를 수신
  2. 수신된 n비트의 사본이 검사기에 보내짐
  3. 검사기에 의해 만들어진 나머지가 n - k 비트의 신드롬이 되며 이 신드롬이 결정 논리 분석기에 보내짐
  4. 신드롬 비트가 모두 0이면 코드워드의 왼편 4개 비트를 데이터 워드로 받아드림
  5. 그렇지 않은 경우 4개 비트는 버려짐(오류 발생)

부호기(Encoder)

  • 데이터워드를 받아 n - k 개의 0을 덧붙인다.

  • XOR 연산을 사용한다.

복호기(Decoder)

  • 복호기는 부호기와 동일한 나눗셈 연산 수행
  • 나머지가 신드롬이 됨

  • 신드롬이 000인 왼편은 오류가 없다.
  • 오른편은 오류가 하나 있는 경우의 신드롬 값이다.

검사합(Checksum)

  • 모든 길이의 메시지에 적용할 수 있는 오류 검출 기법. 
  • 네트워크층과 전송층에서 사용됨(여기는 링크층)

3.3 매체 접근 프로토콜(MAC, Media Access Control)

3.3.1 임의 접근(Random-Access)

  • 어떤 지국이든 다른 지국보다 우월하지 않으며 다른 지국에 대해 제어할 수 없다.
  • 전송은 지국 사이에서 임의로 벌어진다.
  • 어느 지국이 다음번에 전송해야 하는지 아무 규칙이 없다.
  • 지국들은 매체에 접근하기 위해 서로 경쟁한다.
  • 2개 이상의 지국이 동시에 전송하려고 하면 접근에 대한 충돌(Collision)이 발생한다.

ALOHA

  • 임의 매체 접근 방법

순수 ALOHA

  • 프레임의 한 비트라도 다른 프레임의 한 비트하고 충돌이 생기면 두 프레임 모두 훼손될 수 있다.
  • 순수 ALOHA 프로토콜은 수신자가 잘 받았다는 확인응답에 의존
  • 타임아웃이 될 때까지 오지 않으면 지국은 프레임이 훼손된 것으로 간주하여 다시 전송

순수 ALOHA 네트워크에서 프레임 충돌

  • 1, 3번 지국에서 보낸 프레임만 제대로 전송됨
  • 충돌이 발생하면 각 지국은 임의 시간을 기다린 후 재전송
  • 이 임의 대기 시간을 대기 시간(back-off time)이라고 한다.

취약 시간(vulnerable time)

  • 충돌 위험이 있는 시간

순수 ALOHA 프로토콜 취약 시간

  • 지국 A와 B가 전송한 프레임 사이에 충돌 발생
  • 지국 B와 C가 전송한 프레임 사이에 충돌 발생

처리율(Throughput)

  • 성공적으로 전송되는 프레임의 개수

순수 ALOHA의 처리율

  • G: 한 프레임 전송 시간 동안에 시스템 전체에서 생성되는 프레임의 평균 개수
  • S: 성공적으로 전송되는 프레임의 평균 개수

G = 1/2일 때 최대 처리율

 


틈새(slotted) ALOHA

  • 틈새 ALOHA에서는 시간을 T(fr)의 틈새로 나누어 지국은 매 시간 틈새가 시작할 때에 전송하도록 규제한다.
  • 지국은 오직 동기화된 시간 틈새가 시작될 때에만 프레임을 전송할 수 있음
  • 2개의 지국이 동시에 같은 시간 틈새에 전송 시도시 충돌 발생

틈새 ALOHA 네트워크에서 프레임

 

틈새 ALOHA 프로토콜의 취약 시간

 


반송파 감지 다중 접근(CSMA, Carrier Sense Multiple Access)

  • 각 지국이 전송하기 전에 먼저 매체의 상태를 확인할 것을 요구
  • 충돌 가능성을 줄일 수는 있으나 완전히 없애는 것은 없음
  • 전파 지연 때문에 충돌 위험 존재

CSMA에서 충돌의 시공간 모델

  • t(1)에서 지국 B가 매체를 감지하여 매체가 휴지 상태에 있다고 판단하여 프레임을 전송한다. 
  • 시간 t(2) 에서 지국 C가 매체를 감지하여 휴지 상태에 있다고 판단하는데, 이는 이 시각에 B가 보낸 프레임의 첫 번째 비트가 아직 C에게 도달하지 않았기 때문
  • 지국 C 또한 프레임을 전송하면 두 신호는 충돌하여 두 프레임 모두 손상

취약 시간

  • CSMA의 취약 시간은 전파 시간(propagation time) T(p)이다. 
  • 이 시간은 신호가 매체의 한 끝에서 다른 끝으로 전파되는 데 소요되는 시간이다

CSMA의 취약 시간

  • 위 그림은 최악의 경우이다.
  • 회색으로 표시된 부분이 시간과 공간상의 취약 지역이다.

지속 방식

  • 채널이 사용 중, 휴지 상태이면 지국이 무엇을 할지

 

세 가지 지속 방식의 동작
세 가지 지속 방식의 흐름도

1 - 지속 방식(1 - Persistent)

  • 이 방식에서는 지국이 회선이 휴지 상태인 것을 감지하게 되면 즉각 프레임을 전송한다. 
  • 2개 이상의 지국이 회선이 휴지 상태인 것을 감지하고 그 경우 즉각 프레임을 존송하기 때문에 가장 높은 충돌 위험을 유발

비지속 방식(Nonpersistent)

  • 전송할 프레임이 있는 지국이 회선을 감지한다.
  • 회선이 휴지상태에 있으면 즉각 프레임을 보낸다
  • 휴지 상태에 있지 않으면 임의 시간을 대기하고 다기 회선을 감지한다.
  • 전송할 프레임이 있는 지국이 있음에도 불구하고 회선이 휴지 상태에 있을 수 있기 때문에 회선의 효율이 낮아진다.

p - 지속 방식(p-Persistent)

  • 채널이 최대 전파 지연 시간과 같거나 그보다 큰 시간 틈새를 사용하는 경우에 채택된다.
  • p - 지속 방식은 위의 두 가지 방식의 장점을 합한 것이다
  • 회선이 휴지 상태에 있는 것을 감지하면 
    1. 학률 p를 가지고 프레임을 전송한다.
    2. 확률 q = 1 - p를 가지고 지국은 다음 틈새 시작까지 기다리다가 회선을 다시 감지한다.
    3. 만일 회선이 휴지 상태이면 1번 단계로 간다.
    4. 만일 회선이 사용 중이면 충돌이 생긴 것으로 간주하고 대기 절차에 들어간다.

 


반송파 감지 다중접근/충돌 검출 (CSMA/CD, with Collision Detec-tion)

  • 이 방법에서 지국은 프레임을 전송한 뒤에 전송이 성공적인지 매체를 관찰한다.
  • 실패면 충돌이 생긴 것이며, 프레임을 다시 전송한다.

CSMA/CD에서 첫 번째 비트의 충돌

  1. 지국 A와 C가 충돌
  2. t(1)에서 지국 A는 자신의 지속 절차에 따라 프레임의 비트들을 전송하기 시작
  3. t(2)에서 지국 C는 A가 보낸 프레임의 첫 번째 비트를 아직 감지하지 못한다.
  4. 지국 C는 지속 절차를 수행하여 자신의 프레임 비트들을 전송하는데 그 비트는 왼편과 오른편으로 전파된다.
  5. 충돌은 시각 t(2) 이후에 발생
  6. 지국 C는 시각 t(3)에 A가 보낸 프레임의 첫 번째 비트를 수신하게 되어 충돌을 감지한다.
  7. 지국 C는 즉각 전송하는 것을 멈춘다.
  8. 지국 A는 C의 프레임의 첫 번째 비트를 수신한 시각 t(4)에 충돌을 알게 되어 자신도 즉각 전송하던 것을 멈춘다.

CSMA/CD에서 충돌과 폐기

 

예제

CSMA/CD를 사용하는 네트워크의 대역폭은 10Mbps다. 최대 전파 시간 (디바이스의 지연을 포함하며 방해 신호를 보내는 데 필요한 시간은 무시합니다. 나중에 참조)이 25.6μs인 경우 프레임의 최소 크기는 얼마인가? 

 

➡️ 최소 프레임 전송 시간은 T(fr) = 2 × T(p) = 51.2μs


3.3.2 제어 접근(Controlled Access)

제어접근에서 지국들은 서로 상의하여 어느 지국이 전송할 권리를 갖는지 찾는다.

 

예약(Reservation)

  • 예약 방식에서 지국은 데이터를 전송하기 전에 예약을 해야 한다.
  • 시간은 구간들로 나눠 각 구간마다 예약 프레임이 그 구간에 전송되는 데이터 프레임의 앞에 놓인다.
  • 모두 N개의 지국이 있다면 예약 프레임에는 N개의 예약 미니틈새(minislot)가 있다.
  • 각 미니 틈새는 한 지국에 속한다.
  • 어떤 지국이 데이터 프레임을 보내려고 하면 자신의 미니틈새에 예약한다.

예약 접근 방법

  • 위 그림은 5개의 미니틈새 예약 프레임을 보여준다.
  • 첫 번째 구간에는 1, 3, 4 번 지국이 예약을 했다.
  • 두 번째 구간에서는 1번 지국이 예약을 했다.

폴링(Polling)

  • 폴링은 지국 중 하나가 주국(primary station)이 되고 다른 지국은 종국(secondary stations)이 되는 접속 형태에서 동작한다.
  • 종국으로 가는 데이터도 모두 주국을 통해서 전달된다.

선택(Select)

  • 선택 시능은 주국이 무엇을 보낼 것이 있을 때마다 수행된다.
  • 데이터를 전송하기 이전에 주국은 선택(SEL)프레임을 만들어서 전송한다.
  • 그 프레임의 필드 중 하나가 보내려고 의도하는 종국의 주소를 포함한다.

폴(Poll)

  • 주국이 종국들로부터 전송을 요청할 때 이용한다.
  • 주국이 데이터를 수신할 준비가 되어 있으면 각 장치에게 차례로 보낼 것이 있는지 물어봄(Polling)
  • 주국은 부정 확인 응답(NAK)을 받으면 데이터를 보낼 종국을 찾을 때까지 다음 종국에게 동일하게 묻는다.
  • 확인 응답이 긍정일 때 주국은 프레임을 읽어 들이고 확인응답(ACK)을 보내어 받은 것을 확인해 준다.

폴링에서의 선택과 폴

 


토큰 전달(Token Passing)

  • 토큰 전달 방식에서 네트워크 안의 지국들은 논리 링 형태로 구성된다.
  • 각 지국에는 선행자(Predecessor)와 후행자( Sucessor )가 있다.
  • 선행자는 링 접속형태에서 논리적으로 앞에 있는 지국이며 후행자는 링의 바로 뒤에 있는 지국이다.

토큰 전달 접근 방법에서 논리적인 링과 물리적인 접속형태

 


3.4 링크 계층 주소 지정


 

 

728x90
반응형