■ 흐름제어 : 송신측과 수신측의 데이터 처리 능력과 속도의 차이를 조정한다.
■ 슬라이딩 윈도우 프로토콜
흐름제어에서 사용하는 슬라이딩 윈도우 프로토콜(Sliding Window Protocol)은 데이터 링크계층에서 사용하는 흐름제어 기법 중에서 가장 대표적인 프로토콜로 송신측과 수신측에서 일정한 크기의 윈도우를 설정하고 데이터 프레임의 송수신을 윈도우의 크기로 데이터의 흐름을 조절 한다.
■ 슬라이딩 윈도우 구조
■동작원리 정리
처음에 송수신 모두 0,1,2,3(왼쪽 오른쪽 둘다)의 총4개를 보낸다고 보자.
송신이 0,1,2(중간 I0 I1 I2)를 보내면, 윈도우 크기가 줄면서 3(왼쪽 오른쪽 둘다)이 된다.
수신도 0,1,2(오른쪽)를 받으면 3(오른쪽)에서 다시 4칸(3,4,5,6 오른쪽)으로 늘어남. 그리고 ACK2를 보냄.
송신은 ACK2를 받고나서 윈도우 크기를 3,4,5,6(왼쪽)으로 늘림
■ 윈도우 크기 : 에러제어, 흐름제어에서 쓰는 버퍼의 크기.
■ 오류제어에서 쓰이던 stop and wait ARQ이다.
■ 확실한 응답이 있어야만 다음 데이터 프레임 전송하는 방식
■ 고백앤 : 한번에 연속적으로 데이터르 보냄. 에러가 났으면 에러가 난 번호 이후부터 다시 연속적으로 한꺼번에 보냄.
■ 송신측은 연속적으로 보내기 때문에 n개만큼 필요한 것이다.
■ 선택적 재전송 : 연속적으로 보내는건 고백앤과 같음. 하지만 에러가 난 프레임만 재전송 (고백앤은 에러가 난 프레임 이후까지 전부 다시 보냄)
■ 송수신 모두 윈도우 크기가 n개이다.
■ 받고 응답, 받고 응답 식으로 계속 확인하기 때문에 0 과 1만 필요하다.
■ 연속적으로 보내기 때문에 n+1개가 필요하다. 왜냐하면 계속 데이터프레임 보내야하니까!
■ n+1이 없을 경우의 상황 : 결론적으로 I0(오른쪽 빨간네모)를 다시 보냄. 그러나 그게 재전송인지, 새로운 데이터인지 모름.
■ a 왼쪽표
I0을 보냄. 근데 ACK0이 오질 않음. 그래서 송신측에서 I0을 새롭게 보냄.
■ 결론 : 문제는 I0이 2개임. 처음 받아놨던것과 나중에 다시 받은것을 구별할 수가 없다. 그래서 n+1개가 필요하다. 헷갈리게 되니까!
■ n+1을 사용하는 경우
■ 왼쪽 a표 : ACK0이 없어서 새롭게 보냄.
■ 오른 b표 : 빨간 네모 I3에서 보듯, ACK0이 제대로 왔기에 계속해서 I3을 보낸다. 그리고 순서번호가 n+1개이다. 쉽게 생각하자면 n+1개는 여유분이 있다고 생각하자. 그렇기에 좀 더 여유롭게 보낼 수 있다고 생각하면 된다.
■ 선택적 재전송 : n개의 최소 순번호만 가질 경우 문제가 발생한다.
■ 선택적 재전송에서 순서번호는 2n이 필요하다.
■ 위의 ppt와 연결된다. 각 a,b항목을 비교하면서 읽어보자.
■ 여기서는 2n개를사용하지 않는 상황이다.
■ 여기서는 순서번호 2n개를 사용하는 상황이다.
■오른쪽 b표
ACK 0,1,2가 안옴. 수신측에서는 다시 I0부터 보내게됨.
그러나 수신측에는 I0,1,2가 있음. 즉, 데이터는 받긴함. 근데 응답만 안했을 뿐임.
그래도 송신측은 못받았다고 생각하니 01,2 데이터를 보내게 됨.
수신측은 결국 0,1,2 데이터가 2개씩 생기게됨.
그래서 2n개가 필요함. 즉 2배씩!
■ 최종정리다.
■ HDLC
- HDLC(High-level Data Link Control) 은 데이터 링크계층(OSI 2계층)에서 동작하는 대표적인 데이터 링크제어 프로토콜이다.
- 비트 위주의 동기식 프로토콜로 사용된다
■ 주 스테이션과 부 스테이션으로 구성됨
■ 양쪽다 혼합형 스테이션으로 구성됨.
a,b = 불균형 구성
c = 균형 구성
■ 정규 응답모드 NRM
- 불균형 구성
- 점 대 점, 멀티 포인트 형태
- 부 스테이션은 항상 허가 필요
■ 비동기 응답 모드 ARM
- 불균형 구성
- 일대일 연결
- 부스테이션 허가 없어도 됨
■ 비동기 균형 모드 ABM
- 균형 구성
- 1:1 방식
- 서로 허가 없이도 됨
- X.25 프로토콜 집합에 사용
■ HDLC 프레임 구조
■ 플래그
1이 6번 나오면 안됨. (왜냐하면 1이 6개는 시작과 끝을 나타내기에)
그래서 5번으로 끊음. (중간에 0 삽입)
그리고 나중에 삽입한 0 을 제거해서 복구함
■ 시작과 끝에 플래그가 있다.
■ 주소부
- 전송할 목적지가 있다.
- 확장 가능. 중간에 0을 삽입. 마지막 확장이되면 1을 넣음.
■ 제어 필드 : 프레임의 유형식별, 수신확인, 흐름제어 등의 용도
■ 제어 필드는 정보, 감독, 비번호 프레임 3가지로 나뉘어짐
- 정보 0 으로 시작
- 감독 10으로 시작
- 비번호 11로 시작.
■ 제어필드 - 정보 프레임(I프레임)
- 시작은 0 비트로!
■피기백 응답 : 정보 프레임에 대한 응답. "나 n번 정보프레임 잘 받았어!"
■ 1(명령)을 1(응답)로 응답해야 "잘 받았구나" 라고 생각하면 된다.
■ 제어 필드 - 감독프레임(S프레임)
- 시작비트는 10
- 응답용 프레임으로 많이 씀
■ 제어필드 - 비번호 프레임 (U프레임)
- 첫비트가 11로 시작
- 데이터 연결 설정 해제에 씀
■ UDF 필드 - 사용자 데이터 필드
■ FCS 필드 - 프레임 체크, 프레임의 오류를 검출하기 위한 코드 (순환재전송코드CRC)
■ HDLC 연결 절차
■ 연결 해제시
- NRM은 주 스테이션만 가능
- ABM은 둘다 가능
■ DISC : 연결해제를 수락해주는 메세지
■ a 왼쪽
- SNRM (Set NRM) : 정규응답모드로 셋팅할게
- UA : 연결에 대한 응답
- 여기서 DISC는 연결해제다. 그리고 이 연결해제는 주 스테이션인 송신측에서만 하고 있다.
■ b 오른쪽
- SABM (Set ABM) : 비동기 균형 모드로 셋팅할
- 둘다 주 스테이션으로서의 역할을 하기 때문에 수신측에서도 DISC요청을 할 수 있다.
■ 송수신 데이터의 흐름을 살펴보자.
■ 고백앤
1비트로 P가 오면 F도 1로 와야 한다. 1은 1로!
■ a 왼쪽표 :
- 묵시적인 방법 : 음 응답이 없네? 응답 없는 부분부터 새로 보내줄게!
- p와 f가 같은 1로 동기화가 되야 제대로 된 것이다.
■ b 오른쪽표 :
- 명시적인 방법 : 야! REJ (1)이야! 1번 데이터 안왔어! 다시 보내줘!
- p와 f가 같은 1로 동기화가 되야 제대로 된 것이다.
■ RNR을 이용한 수신측 흐름제어
■ 빨간색 됌 >> 됨 오타임.
■ 타임 아웃에 의한 에러제어
- 마지막 [ㅇㅋ 3,4 받아!]는 연속적으로 보내는 모습일뿐, 크게 신경쓰지 말자.
■ 피기백을 이용한 양방향 데이터 교환
- 양방향이니 ABM이 필요
■ 양쪽 모두 송신, 수신할 수 있다.
■ 위의 빨간색 글씨들 해석
- 프레임을 이용하면 2가지 요청을 다 할수 있다. 즉, [n번 데이터 받아] 랑 [n번 데이터 보내줄래?] 를 동시에 가능
예시 | I | ( | N | N | ) |
I | ( | 1 | 2 | ) | |
1번 데이터 받아! |
2번 데이터 보내줄래? |
||||
데이터 송신! | 데이터 요청 |
- 즉 앞의 숫자는 보내는 데이터의 번호이다.
- 뒤의 숫자는 내가 원하는 데이터 번호를 말하는 것이다.
■ 특이점으로 RR의 경우는 더이상 보낼게 없을 때 쓴다. 맨 마지막 빨간색 글씨를 참고하자.
'컴퓨터공학 > 정보통신개론' 카테고리의 다른 글
7. 프로토콜 (2) (0) | 2024.06.23 |
---|---|
7. 프로토콜 (1) (0) | 2024.06.23 |
6. 데이터의 부호화 (0) | 2024.06.12 |
5. 데이터전송 방식 (1) | 2024.06.12 |
4. 물리 계층의 표준 인터페이스 (0) | 2024.06.01 |