컴퓨터 네트워크) OSI 참조모델
👀 OSI 참조모델
- 예전엔 제조사별로 각자 통신 모델을 만들어 썼기 때문에 서로 호환이 되지 않아 통신이 되지 않는 경우가 많았다.
- 그래서 1970년대 후반에 국제 표준화 기구 ISO(Open System Interconnection)가 네트워크 설계의 호환성을 증진시키기 위해 개방시스템 상호접속 참조모델(OSI) 구조를 제안함
OSI
란 말은 타사의 시스템 간이라도 데이터를 교환하기 위한 표준을 가질 수 있다는 것을 의미함OSI
는7계층
으로 이루어져 있다.
계층 구조의 장점
- 크고 복잡한 시스템을 기능별로 나누어 개발 과정을 단순화 하는데 매우 유용하게 사용(모듈화)
- 각 계층이 제공하는 서비스를 변경하기 쉬움(한 계층을 변경해도 나머지 계층에 영향을 주지 않아 유지 보수가 쉽다)
OSI 참조모델의 계층
- N 계층의 프로토콜 모듈은 상대방의 동일 계층 프로토콜 모듈과 통신을 하며 동일 계층에 있는 N 계층 끼리의 통신 규약을 N 계층 프로토콜이라 함
- N 계층 프로토콜이 상대방의 동일 계층에 데이터를 직접 전달하는 것이 아니라 하위 계층(N - 1)으로 전달해서 맨 아래 계층인 물리 계층까지 도달하면 케이블을 통해 상대 호스트의 물리 계층으로 데이터를 전달한다.
- 상대 호스트는 물리 계층에서 받은 데이터를 하나씩 확인하며 상위 계층(N + 1)으로 올려 보낸다.
- 결과적으로, OSI 7계층 모델에서 상위 계층은 하위 계층의 서비스 사용자(Service User)가 되며, 하위 계층은 상위 계층의 서비스 제공자(Service Provider)가 된다.
서비스 프리미티브(Service Primitive)
- 동일 호스트상의 서비스 사용자(N + 1계층)와 서비스 제공자(N계층)간에 주고 받는 데이터
- N 계층의 서비스는 N 서비스 프리미티브와 이 프리미티브에 관련된 파라미터로 규정
- N 서비스 프리미티브는 요청(Request), 통지(Indicator), 응답(Response), 확인(Confirm)으로 구분
- 송신측에서 수신측으로
Request
를 보내면 수신측의 하위 계층에서Indicator
를 발생시킨 뒤 송신측으로Response
를 보낸다. 송신측은 받은 데이터를 확인(Confirm
)하며 하위계층에서 상위계층으로 올려보낸다. - 송신측에서 데이터를 전송할 때 서비스 프리미티브를 사용하여 N + 1 계층의 송신 데이터(PDU : Protocol Data Unit)는 N 계층의 서비스 데이터 단위(SDU : Service Data Unit)로 N 계층에 넘겨진다.
- N 계층에서는
PDU
에 프로토콜 제어 정보(PCI : Protocol Control Information)를 헤더로 붙여 N 계층PDU
로 만든 뒤 하위 계층으로 내려보내고 하위 계층에서도 이걸 반복한다. - 이러한 계층간 데이터의 전달 과정을 캡슐화(Encapsulation)라고 한다.
OSI 참조모델의 7계층
물리 계층(Physical Layer)
- 계층 1에 해당하며 전송매체에 대한 전기적, 기계적인 인터페이스를 다룸
- 전송하고자 하는 데이터를 전송매체에 적합한 전기적 신호로 바꾸는 기능
- 하드웨어로 구현되며 계층 2 이상은 대부분 소프트웨어로 구현된다.
- 물리 계층 관련 장치들
- 리피터(Repeater), 허브(Hub), 케이블, 이더넷(Ethernet) 등과 같은 하드웨어 장치
- LAN에서 사용하는 UTP(Unshieled Twisted Pair), STP(Shieled Twisted Pair)와 같은 케이블
- LAN의 UTP 케이블에 연결하는 RJ-45 커넥터(흔히 사용하는 인터넷 랜선 커넥터)
데이터링크 계층(Datalink Layer)
- 물리 계층을 통해 전송되는 데이터의 오류 문제를 해결하여 신뢰성 있는 데이터 전송 기능을 제공하는데
호스트 - 라우터 간 오류 문제만
제어한다. - 이를 통해 상위 계층인 네트워크 계층에게 오류 문제에 대한 부담을 줄임
- 데이터링크 계층에서 전송하는 데이터 단위를
프레임(Frame)
이라 한다. - 데이터링크 계층의 주요 기능
- 순서 제어 : 데이터의 순차적 전송을 위해 프레임 번호 부여
- 오류 제어 : 오류 검출과 교정 (가장 중요한 기능)
- 흐름 제어 : 연속적인 프레임을 전송할 때 수신측이 수신이 가능한지 여부를 제어. 호스트 간
CPU
성능이 다를 때 느린 쪽이 빠른 쪽의 속도에 어느정도 맞춰 받을 수 있는지 서로 확인한 후 전송하는 등의 제어를 한다. - 프레임 동기화 : 데이터 전송시 프레임 단위로 전송
네트워크 계층(Network Layer)
- 네트워크 상에 존재하는 라우터와 같은 노드(Node)를 거칠 때마다 목적지로의 경로를 찾아주는 라우팅(Routing) 역할을 하는 계층
- 네트워크 계층의 데이터 전송 단위를 패킷(Packet)이라 부르며 패킷 내에는 송신 호스트의 주소와 목적지 호스트의 주소를 포함
- 라우터에 패킷이 도착하면 패킷의 목적지 주소에 따라 적합한 라우터로 중개하며 이러한 과정을 통해 목적지에 도착
- 라우터가 패킷을 중개할 때 자신이 관리하고 있는 라우팅 테이블(Routing Table)을 사용해서 패킷을 어디로 보낼지 결정한다.
- 네트워크 계층의 예
- 인터넷의
IP
(IP 주소가 이 계층에서 사용하는 주소) OSI
의 X.25
- 인터넷의
트랜스포트 계층(Transport Layer)
- 라우터와 같은 노드와는 상관없이 단대단(End-to-end) 신뢰성 있는 데이터 전송 기능을 제공
- 이를 위해 단대단 오류 복구, 흐름 제어 기능 등을 포함하는데 트랜스포트 계층에서의 제어 기능들은
A 호스트에서 B 호스트까지 가는 모든 경로의 오류 및 흐름
을 제어한다. - 트랜스포트 계층은 호스트 내에서 동작하는
프로세스(Process)에서 프로세스
로 데이터를 전송한다.- 네트워크 계층은
호스트에서 호스트
로의 데이터 전송에 관계함 - 네트워크 계층에서 보내는 IP 주소 만으로는 상대 호스트의 어떤 프로세스에서 이 데이터를 보냈는지 알 수 없다. 그래서 각 프로세스별로 포트(Port) 번호를 사용해서 어떤 프로세스에서 보낸 데이터인지 구분한다.
- 그래서 단대단 전송이라는 용어는 프로세스와 프로세스 간의 전송을 의미한다.
- 네트워크 계층은
- 트랜스포트 계층의 데이터 전송 단위(PDU : Protocol Data Unit)에는 송신측 포트 번호와 수신측 포트 번호를 포함한다.
- 포트 번호는 특정 프로세스를 나타내기 위해 트랜스포트 계층에서 사용하는 주소라 할 수 있다.
- 인터넷 통신구조에서
TCP
와UDP
가 트랜스포트 계층에 해당한다.
세션 계층(Session Layer)
- 양끝단에 있는 응용 프로세스간의 통신을 제어하는 기능 제공
- 응용 프로세스간 대화를 위해 세션을 설정하여 사용하는 기능 제공
- 제공 기능
- 대화(Dialogue) 형태 : 단방향, 반이중, 전이중
- 복구(Recovery) 기능 : 체크포인트(Checkpoint) 기능을 제공하여 체크포인트 사이에 오류가 있을 때 마지막 체크포인트 이후의 모든 데이터를 세션 계층이 재전송하는 기능
표현 계층(Presentation Layer)
- 호스트간에 교환되는 데이터의 표현방법(Syntax)과 의미(Semantic)를 다루는 계층
- 즉 양쪽 호스트의 데이터 표현 방식이 다를 때 송신 호스트는 양쪽 호스트가 이해할 수 있는 표준화 된 형식으로 인코딩(Encoding)하고, 수신 호스트는 표준화 된 형식을 수신측에 적합한 형식으로 디코딩(Decoding)하는 기능
- 이외에도 데이터의 안전하고 효율적인 전송을 위해 암호화(Encryption)하거나 압축(Compression)하는 기능 제공
응용 계층(Application Layer)
OSI 7계층
중에서 최상위 계층에 있으며 사용자에게 필요한 응용 서비스를 제공하는 계층- 응용 계층에 해당하는 프로토콜
- FTAM(File Transfer Access and Management) : 파일 전송 프로토콜이며 인터넷의 FTP와 유사한 서비스
- VT(Virtual Terminal) : 가상 단말 서비스 프로토콜이며 인터넷의 Telnet과 유사
SDU와 PDU의 차이
- SDU(Service Data Unit) : 상하위 계층간 데이터 전송을 위해 사용하는 데이터 단위
- PDU(Protocol Data Unit) : 상대방과의 통신을 위해 사용되는 데이터 단위