CS/데이터통신

OSI 참조 모델

망재이 2024. 1. 30. 18:37
OSI 참조 모델

 

OSI 7계층

  • OSI 참조 모델
    - 다른 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약
    - 하위 계층은 전송되는 데이터의 물리적인 면과 패킷의 전달 등을 담당
    - 전송 계층은 두 시스템 간의 연결을 확인하며 원격의 시스템 간의 데이터 전송을 보장하며, 하위 계층과 상위 계층을 연결하고 하위 계층이 전송한 데이터를 상위 계층에서 사용할 수 있는 형태로 변화
    - 상위 계층은 호스트 내부에서 처리되는 기능

  • 계층별 프로토콜 데이터 유닛 (PDU)
    - 응용, 표현, 세션 계층 : 메시지
    - 전송 계층 : 세그먼트
    - 네트워크 계층 : 패킷
    - 데이터 링크 계층 : 프레임
    - 물리 계층 : 비트

* PDU : 네트워크 구조에서 정보를 실어 나르는 기본 단위

 

 

 

 

OSI 7계층 구조

 

  • 물리 계층 (Physical Layer)
    - 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성을 의미
    - 송신측의 물리계층은 데이터링크 계층으로부터 받은 데이터를 비트 단위로 변환하여 수신측으로 전송
    - 수신측의 물리계층은 전송받은 비트들을 데이터링크 계층의 데이터로 올려 보냄

  • 데이터링크 계층 (Data Link Layer)
    - 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 함
    - 헤더부분에는 데이터의 시작을 나타내는 표시와 목적지 주소 등을 포함하고, 트레일러 부분에는 데이터에 발생한 전송에러를 검출하기 위한 에러 검출코드 등을 포함
    - 데이터 링크 연결의 설정과 해제를 담당
    - 데이터링크 계층의 프로토콜로는 문자 지향 방식인 BSC(Binary Synchronous Communication) 절차과 비트 지향 방식인 HDLC(High-level Data Link Control) 절차가 있음
    - 데이터링크 계층 기능 : 노드 대 노드 전달, 주소지정(물리주소), 접근제어, 흐름제어, 에러제어, 동기화

* HDLC(High-level Data Link Control) 절차

- 비트 위주의 프로토콜로 각 프레임에 데이터 흐름을 제어하고 오류를 보정할 수 있는 비트 열을 삽입하여 전송

- 단방향, 반이중, 전이중 통신을 모두 지원하며 동기식 전송 방식을 사용

- 고속으로 전송할 수 있고 신뢰성이 높음

- 에러 제어를 위해 Go-Back-N ARQ와 선택적 재전송 ARQ를 사용

- 흐름 제어를 위해 슬라이딩 윈도우 방식을 사용

 

- 플래그(Flag) : 프레임의 시작과 끝을 나타내는 고유한 8비트 패턴(01111110)으로 시작과 끝을 구분하며 동기 유지, 비트 투과성을 이용한 기본적인 오류 검출 등의 기능을 수행

- 주소부(Address) : 송수신국을 식별하기 위해 8비트로 전송할 목적지 주소를 표현

- 제어부(Control) : 8 또는 16비트로 프레임의 종류를 식별하기 위해 사용

   ▶︎ 정보프레임(I-Frame) : 사용자 데이터를 전달

   ▶︎ 감독프레임(S-Frame) : 오류 제어와 흐름 제어를 수행

   ▶︎ 비번호프레임(U-Frame) : 회선의 설정, 유지 및 종결을 담당

- 정보부(Information) : 실제 정보 메시지가 들어 있는 부분으로 길이가 고정되어 있지 않음

- FCS(프레임 검사 순서) : 16 또는 32비트로 오류검출을 위해 사용되는 부분으로 일반적으로 CRC 코드 사용

 

* 흐름 제어 (flow control)

- 네트워크 내의 원활한 흐름을 위해 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능

▶︎ 정지 대기 (stop-and-wait) : 수신측의 확인 신호를 받은 후에 한 번에 프레임 1개씩만 전송

▶︎ 슬라이딩 윈도우 (sliding window) : 송신측에서 한 번에 윈도우 크기(확인 신호 없이 보낼 수 있는 패킷의 최대치)만큼 프레임을 연속적으로 전송하는 방법으로 긍정 수신 응답이 전달되면 윈도우 크기를 증가시키고, 부정 수신 응답이 전달된 경우 윈도우 크기를 감소시켜 적절한 간격으로 크기를 조절하여 통보하는 방법

 

* 에러제어 - 오류 검출 방식

▶︎ 패리티 검사 (Parity Check)
- 데이터 블록에 1비트의 패리티 비트를 추가하여 오류를 검출

- 가장 간단한 방식이지만 2개의 비트에 오류가 동시에 발생하면 검출이 불가능

- 오류 검출만 가능하고 수정은 불가능

- 수직 패리티 체크와 수평 패리티 체크가 존재

 

더보기

Q. 네트워크에서 1비트의 패리티 비트를 사용하여 데이터의 전송 에러를 검출하려 한다. 1바이트 크기의 데이터 A, B, C, D, E 다섯 개를 전송하였다. 그 중 두 개의 데이터에서 1비트 에러가 발생하였고 나머지는 정상적으로 전송되었다고 가정하자. 다음 표에서 에러가 발생한 두 개의 데이터는?

 

데이터 이름 데이터 비트열 패리티 비트
A 01001101 1
B 01110110 1
C 10111000 0
D 11110001 0
E 10101010 0

 

A. A, D

 

-> 데이터 비트열에 패리티 비트를 추가하여 전체 '1'의 개수가 홀수인지 짝수인지 판단한다. 

홀수 패리티 방식은 1의 개수가 홀수가 되도록 구성하며, 짝수 패리티 방식은 1의 개수가 짝수가 되도록 구성한다.

 

A: 5개

B: 6개

C: 4개

D: 5개

E: 4개

 

전체 '1'의 개수가 홀수인 데이터가 두 개이므로 A, D가 정답

 

▶︎ 해밍 코드 (Hamming Code) = 자기 정정 부호

- 수신 측에서 오류가 발생한 비트를 검출한 후 직접 수정하는 순방향 오류 수정방식

- 1비트의 오류만 수정이 가능하며, 정보 비트 외에 잉여 비트가 많이 필요

 

더보기

Q. 짝수 패리티를 갖는 7비트의 데이터 0011111이 수신되었다. 해밍코드를 이용하여 전송 중 발생한 오류를 찾아 바르게 정정한 것은?

A. 0001111

 

-> 짝수 패리티는 XOR 연산, 홀수 패리티는 XNOR 연산을 수행!먼저 1의 값을 갖는 비트의 인덱스를 모두 골라 2진수 3자리로 표현한다.현재 0011111의 값은 3, 4, 5, 6, 7의 인덱스가 1의 값을 가지므로 해당 인덱스를 2진수로 표현한다.(3 -> 011, 4 -> 100, 5 -> 101, 6 -> 110, 7 -> 111)값들을 짝수 패리티인지, 홀수 패리티인지에 따라 해당하는 연산을 수행한다.(해당 예제는 짝수 패리티이므로 XOR 수행 -> 011)결과를 10진수로 변환하여 나오는 인덱스의 값이 에러! 해당 값을 정정해주면 된다.(011 : 3이므로 3번째 인덱스 값이 에러! 1 -> 0으로 변경하면 올바른 데이터는 0001111)

 

▶︎ 순환 중복(잉여) 검사 (CRC)

- 프레임 단위로 오류 검출을 위한 다항식 코드(FCS)를 사용하여 오류를 검출

- 전송 과정에서 오류가 발생하면 송신 측에 재전송(ARQ)를 요구하는 역방향 오류 수정 방식

- 동기식 전송에 사용되는 에러 검출 기법으로 데이터가 프레임 단위로 전송될 때 사용

- 집단 오류를 검출할 수 있고 검출률이 높아 가장 많이 사용

 

* 에러 정정 방식 - 자동 반복 요청(ARQ)

- 오류 발생 시 수신 측은 오류 발생을 송신 측에 통보하고, 송신 측은 오류 발생 블록을 재전송하는 모든 절차

▶︎ 정지 대기 (Stop and Wait) ARQ : 송신 측에서 하나의 블록을 전송하면 수신 측이 에러를 검사한 후 ACK or NAK를 보낼 때까지 기다리는 방법

▶︎ 연속 ARQ [Go-Back-N ARQ] : 오류가 발생한 블록 이후의 모든 블록을 재전송하는 방식

▶︎ 연속 ARQ [선택적 재전송 (Selective Repeat) ARQ] : 오류가 발생한 블록만을 재전송하는 방식

▶︎ 적응적 (Adaptive) ARQ : 블록 길이를 동적으로 변경하여 전송하는 방식으로 전송 효율은 가장 좋으나 제어 회로가 복잡하고 비용이 많이 들어 거의 사용되지 않음

 

  • 네트워크 계층 (Network Layer)
    - 개방형 시스템 사이에서 네트워크 연결을 관리하고 유지하며 해제하는 기능을 담당
    - 송신지로부터 전송된 데이터를 목적지까지 전달하는 과정에서 여러 경로 중 패킷을 보내기 위한 가장 좋은 경로를 선택하는 라우팅을 수행
    - 논리 주소인 IP 주소를 헤더에 포함하여 전송하기 때문에 송신지에서 수신지까지 주소가 변경되지 않고 유지
    - 네트워크 계층 기능 : 패킷 전달, 논리주소 지정, 라우팅, 주소변환

* 경로 제어 프로토콜

▶︎ IGP (Interior Gateway Protocol; 내부 게이트웨이 프로토콜) [RIP (Routing Information Protocol)]

- 하나의 자율 시스템(AS) 내의 라우팅에 사용되는 프로토콜

- 현재 가장 널리 사용되는 라우팅 프로토콜로 거리 벡터 라우팅 프로토콜이라고도 불리며 최단 경로 탐색에 벨만 포드 알고리즘 사용

- 소규모 동종의 네트워크 내에서 효율적인 방법 (최대 홉 수 : 15)

- 라우팅 정보를 30초마다 네트워크 내의 모든 라우터에 알리며, 180초 이내에 새로운 라우팅 정보가 수신되지 않으면 이상 상태 간주

▶︎ IGP (Interior Gateway Protocol; 내부 게이트웨이 프로토콜) [OSPF (Open Shortest Path First protocol)]

- 하나의 자율 시스템(AS) 내의 라우팅에 사용되는 프로토콜

- 라우팅 정보에 노드 간의 링크 상태 정보를 실시간으로 반영하여 최단 경로로 라우팅을 지원

- 최단 경로 탐색에 다익스트라 알고리즘 사용

- 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내의 모든 라우터에 알림

▶︎ EGP (Exterior Gateway Protocl; 외부 게이트웨이 프로토콜)

- 자율 시스템 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜

▶︎ BGP (Border Gateway Protocol)

- EGP의 단점을 보완하기 위해 만들어진 거리 벡터 라우팅 프로토콜

- 라우터들이 연결될 때 라우팅 테이블을 교환하는데 초기에는 전체 경로 정보를 교환하고 이후에는 변화된 정보만을 교환

 

  • 전송 계층 (Transport Layer)
    - OSI 7계층 구조는 전송 계층을 기점으로 하위계층으로 이루어진 네트워크 서비스와 상위계층으로 이루어진 사용자 서비스로 구별
    -> 물리계층에서부터 네트워크 계층까지는 주로 이용자와 무관하게 네트워크 내에서 데이터 전달을 위한 경로관리를 책임
    -> 세션계층에서부터 응용계층까지는 이용자의 메시지 표현 형식과 같이 주로 이용자 서비스와 관련된 기능 제공
    - 전송계층의 주 역할은 두 서비스 간의 인터페이스 기능과 전체 메시지의 종단간(end-to-end) 전송을 수행하는 역할
    -> 종단 간 전송은 송신 컴퓨터의 응용 프로세스에서 최종 수신 컴퓨터의 응용 프로세스로의 전달을 의미
    -> 전송계층의 헤더는 포트번호나 소켓주소로 불리는 서비스 지점 주소를 포함
    - 전송 계층 기능 : 종단 간 메시지 전달, 서비스 지점(포트) 주소 지정, 분할과 재조합, 연결제어, 에러제어, 흐름제어

  • 세션 계층 (Session Layer)
    - 송신측과 수신측의 특정한 프로세스들 사이에서 세션이라 불리는 가상연결을 확립하고 유지하며 동기화 기능을 제공
    - 프로세스 간 전송하는 방식으로 전이중과 반이중 방식을 결정
    - 데이터의 단위(메시지)를 전송 계층으로 전송할 순서를 결정하고, 데이터에 대한 점검 및 복구를 위해 동기점을 제공
    - 세션 계층 기능 : 세션관리, 복구를 위한 동기점 제공, 대화제어

  • 표현 계층 (Presentation Layer)
    - 정보를 송신자가 공통으로 이해할 수 있도록 데이터 표현 방식을 바꾸는 기능을 담당
    - 송신측의 표현계층은 응용계층으로부터 받은 데이터의 보안과 효율적인 전송을 위해 암호화와 압축을 수행하여 세션계층으로 보냄
    - 수신측의 표현계층은 세션계층으로부터 받은 데이터를 해독과 압축해제를 통해 응용프로그램으로 올려 보냄
    - 표현 계층 기능 : 코드 변환, 암호화, 보안, 압축

  • 응용 계층 (Application Layer)
    - 응용 프로세스가 네트워크 환경에 접근하는 수단을 제공함으로써 응용 프로세스들이 상호 간에 유용한 정보교환을 할 수 있도록 함
    - 파일 전송, 데이터베이스, 원격 접속, 메일 전송 등 응용 서비스를 네트워크에 접속시키는 역할을 담당하며 여러 가지 서비스 제공
    - 사용자로부터 정보를 입력받아 하위 계층으로 전달하고 하위 계층에서 전송한 데이터를 사용자에게 전달
    - 응용 계층 기능 : 네트워크 가상 터미널, 파일 접근 전송 및 관리, 이메일 서비스

 

더보기

Q. OSI 7계층 중 종점 호스트 사이의 데이터 전송을 다루는 계층으로서 종점 간의 연결 관리, 오류 제어와 흐름 제어 등을 수행하는 계층은?

1. 전송 계층 2. 링크 계층 3. 네트워크 계층 4. 세션 계층

 

-> 전송 계층은 오류 복구, 흐름 제어 등을 담당하며 시스템 종단 간에 투명한 전송을 양방향으로 행하는 계층이다.

 

 

 

 

 

 

728x90