티스토리 뷰

[한빛아카데미] 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 책으로 학습한 내용을 정리한 것입니다.

 

* 데이터 링크 계층(Data Link Layer) 

- 두 호스트가 통신하려면 일대일(1:1) 형식의 점대점(Point-to-Point) 방식으로 연결해야 함

- 송신 호스트에서 전송한 프레임은 점대점으로 직접 연결된 수신 호스트에 라우팅 과정 없이 전달됨

 

[연결 구성도]

출처:https://velog.io/@myday0827/데이터-링크-계층

 

- 데이터 링크 계층 프로토콜은 (a)와 같은 직접 연결 구조에서 둘 사이의 전송 오류를 감지하고, 이를 복구하는 기능을 지원

- (b)의 구조를 지원하려면 여러 수신 호스트 중에서 프레임의 목적지 호스트를 지칭하기 위해 주소 개념 필요

- 멀티 드롭(Multi-Drop) 방식 : 하나의 호스트가 다수의 호스트와 연결된 비대칭 형태

 

 

* 프레임의 종류

1) 정보 프레임(Information Frame)

 - 상위 계층이 전송을 요구한 데이터를 수신호스트에 전송하는 용도로 사용함

 - 프레임의 순서 번호, 송수신 호스트의 주소 정보를 포함

 

2) 긍정 응답 프레임(Positive Acknowledgement)

 - 프레임 변형 오류가 발생하지 않으면 송신 호스트에 해당 프레임을 올바르게 수신했다는 의미로 회신하는 프레임

 

3) 부정 응답 프레임(Negative Acknowledgement)

 - 정보 프레임의 전송 과정에서 프레임 변형 오류가 발생하면 수신 호스트가 송신 호스트에게 회신하는 프레임

 - NAK 프레임이라고 함

 

 

* 오류/흐름 제어가 없는 프로토콜

-  전송 프로토콜의 구조를 가장 단순화하기 위해 통신 환경 가정함

단방향 통신 : 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달된다.
전송 오류가 없는 물리 매체 : 통신 채널에서는 어떠한 형태의 전송 오류도 발생하지 않는다.
무한 개의 수신 버퍼 : 수신 호스트의 버퍼 수는 무한하다.

 

- 위 가정을 적용한 통신 프로토콜에서 송신 호스트가 전송한 프레임은 수신 호스트에 항상 안전하게 도착하므로 송신 호스트가 프레임을 원하는 만큼 계속 전송할 수 있음

출처:https://velog.io/@kohs01/6장-데이터-링크-계층

 

 

* 오류 제어가 없는 프로토콜

- 수신 호스트의 버퍼 개수가 유한하다고 통신 환경 가정했을 경우, 버퍼 개수가 제한되면 송신 호스트가 전송한 정보 프레임의 수신 작업이 늦어질 때, 버퍼에 일시적으로 보관할 수 있는 프레임의 개수가 제한됨

 -> 버퍼 용량 부족으로 프레임 분실 오류가 발생할 가능성이 있으므로 송수신 호스트 사이의 흐름 제어 기능 필요함

단방향 통신 : 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달된다.
전송 오류가 없는 물리 매체 : 통신 채널에서는 어떠한 형태의 전송 오류도 발생하지 않는다.

 

- 수신 호스트의 버퍼가 유한 개로 제한되는 환경에서 송신 호스트가 너무 빨리 정보 프레임을 전송할 경우 버퍼 부족으로 프레임 분실 오류가 발생할 수 있으므로 이를 방지하기 위해 프로토콜을 설계하는 과정에서 흐름 제어 기능을 제공하여 송신 호스트의 전송 속도 조절

 

 

* 단방향 프로토콜

- 오류 제어와 흐름 제어 기능을 지원하는 환경 가정했을 경우

단방향 통신 : 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달된다.

 

- 오류 제어와 흐름 제어가 필요한 통신 환경에서 송신 호스트가 전송한 정보 프레임에 발생할 수 있는 오류에는 프레임 분실 오류와 프레임 변형 오류가 있음

- 송신 호스트의 타임아웃(Timeout)기능이 필요함

 

1) NAK가 없는 경우

 

출처:https://velog.io/@kohs01/6장-데이터-링크-계층

 

2) NAK가 있는 경우

출처:https://velog.io/@kohs01/6장-데이터-링크-계층

 

 

* 슬라우딩 윈도우 프로토콜(Sliding Window Protocol)

- 두 호스트 간의 프레임 전송을 위한 일반적인 통신 프로토콜

- 오류 제어와 흐름 제어 기능을 함께 지원함

- 원리는 현재 대부분의 통신 프로토콜에서 사용하는 방식으로, 아래에 작성된 기본 절차를 따름

 

[절차]

1) 정보 프레임을 전송하는 송신 호스트는 보내려는 데이터뿐 아니라 프레임의 순서 번호, 오류 검출 코드 등을 프레임에 표기한 후에 정해진 순서 번호에 따라 순차적으로 송신함

2) 정보 프레임을 받은 수신 호스트는 해당 프레임의 순서 번호에 근거하여 송신 호스트에 응답 프레임을 회신해야 함

 (참고) 일반적으로 응답 프레임의 내용에 포함되는 순서 번호는 다음에 수신하기를 기대하는 프레임 번호 표기

3) 송신 윈도우에서 대기하는 정보 프레임은 송신 호스트가 프레임 전송을 완료했으나 긍정 응답 프레임을 받지 못해 보관

 - 송신 윈도우 : 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼에 유지하는 것

4) 수신 호스트는 수신한 정보 프레임을 보관하기 위해 내부 버퍼인 수신 윈도우를 유지할 수 있음

 - 선택적 재전송(Selective Retransmission) 방식에서는 송신 윈도우 크기와 같음
 - 고백 N(Go-Back-N) 방식에서는 크기가 1 임

 

 

* 흐름 제어

1) 순서번호

 - 정보 프레임의 내용에는 프레임별로 고유하게 부여되는 일련번호 부여

 - 이 번호는 0부터 임의의 최댓값까지 정의되는데, 최댓값 이후에는 다시 0번으로 되돌아오는 순환 방식으로 할당

 - 순서 번호의 최댓값이 송신 윈도우의 크기보다는 커야 함

 

2) 윈도우 크기(Window Size)

 - 임의의 시점에서 송신 호스트가 수신 호스트로부터 긍정 응답 프레임을 받지 않고도 전송할 수 있는 정보 프레임의 최대 개수

  -> 윈도우 크기를 규정하기 위함

- 윈도우에 포함되는 정보 프레임의 관리는 순서 번호를 기반으로 이루어지며, 이들 순서 번호의 묶음이 결과적으로 윈도우가 됨

- 송신 윈도우에 보관된 프레임은 낮은 순서 번호부터 차례로 처리됨

 -> 긍정 응답 프레임이 회신되고 오류 없이 수신 호스트에 전달되었음을 확인함에 따라 윈도우에 새로 추가될 정보 프레임의 순서 번호도 순차적으로 높은 번호로 이동함

- 프레임에서 순서 번호의 공간 크기 = n 비트 : 순서 번호의 범위 0 ~ 2^n-1

출처:https://velog.io/@kohs01/6장-데이터-링크-계층

 

 

* 연속형 전송(Pipelining)

- 정지-대기 방식의 프로토콜은 송신 윈도우의 크기가 1인 특수한 경우이며, 송신 호스트와 수신 호스트 사이의 물리적 거리 차로 인해 프레임의 전송 시간이 상대적으로 오래 걸리는 환경에서 윈도우 크기가 1이면 전송 효율이 극단적을 떨어짐

- 연속형 전송 : 위 문제를 해결하기 위해 윈도우 크기를 늘려 ACK 프레임을 받지 않고도 여러 정보 프레임을 연속으로 전송하는 방식

- 전송된 정보 프레임에 대한 ACK 프레임의 회신이 이루어지지 않은 상태에서 다음 프레임을 전송한느 방식은 전송 오류가 발생할 가능성이 적은 환경에서는 상당히 효율적임

- 전송된 여러 정보 프레임의 일부에 오류가 발생할 경우 해결하는 방법론에 따라 전송 효율이 영향을 받음

- 연속형 전송 방식의 오류를 해결하는 방법으로는 고백 N 방식과 선택적 재전송 방식이 있음

 

1) 고백 N(Go-Back-N) 방식

 - 오류 복구 과정에서 오류가 발생한 12번 프레임을 포함해 이후에 전송된 모든 정보 프레임을 재전송하는 방식

 - 정상적으로 수신한 프레임까지 재전송한다는 문제점이 있지만, 송수신 호스트 사이의 전송 지연 등에 따라서는 효과적인 처리 방법

 

2) 선택적 재전송 방식

 - 오류가 발생한 프레임만 선택적으로 복구하는 방식

 - 프레임의 도착 순서가 송신 순서와 일치하지 않을 수 있음

 

[두 방식의 수신 윈도우 크기 차이]

- 고백 방식 : 수신 호스트가 임의의 앞선 순서 번호를 갖는 정보 프레임이 처리될 때까지 다음 정보 프레임을 모두 버리는 방식으로 처리되어 수신 윈도우에는 현재 처리 중인 프레임 한 개만 존재하므로 수신 윈도우의 크기가 1이라고 할 수 있음

- 선택적 재전송 방식 : 정보 프레임에 대한 처리가 이루어지지 않았어도 오류 없이 수신된 모든 정보 프레임을 수신 윈도우에 보관하기 때문에 수신 윈도우의 크기가 송신 윈도우의 크기와 같다고 볼 수 있음 

 

 

* 피기배킹(Piggybacking) 

- 정보 프레임의 구조를 적당히 조정해 재정의하면 정보 프레임을 전송하면서 응답 기능까지 함께 수행할 수 있음

- 응답 프레임의 전송 횟수를 줄이는 효과가 있어 전송 효율을 높일 수 있음

- 피기배킹을 지원하기 위해서는 정보 프레임의 구조를 확장해 두 종류의 순서 번호를 모두 표기해야 함

 -> 전송할 데이터와 해당 데이터의 순서 번호는 물론이며, 현재까지 제대로 수신한 프레임의 순서 번호까지 포함

- 표기 방법 : I(m,n)

m : 정보 프레임에서 사용하는 전송 데이터의 순서 번호

n : 응답 프레임에서 사용하는 응답 순서 번호

출처:https://velog.io/@kohs01/6장-데이터-링크-계층

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함