이전 글을 보고 오시면 이해하기 편합니다! (이전글 보고 오기)
이전 글에서 자세히 설명하지는 않았지만 이미지와 함께 설명했던 7계층에 대해 추가적으로 설명하려고 합니다.
일반적으로 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나눠서 설계한다.
모듈화
복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해진다.
프로그래밍에서는 함수의 개념을 사용하여 전체 프로그램을 모듈화 한다.
7계층은 네트워크에서 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 동작하기 때문에 모듈화 된 계층이라 볼 수 있다.
모듈화의 장점
-> 오류를 수정하거나 향상시켜야 하는 경우 해당 계층의 모듈만 교체하면 된다.
계층 구조의 개념
계층 구조: 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조
- 네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상/하위의 계층구조로 연결 돼서 동작한다.
계층 구조의 장점
1. 복잡하고 큰 시스템을 기능별로 작게 구분함으로써, 전체 시스템을 이해하기 쉽고, 시스템을 설계 및 구현하기에도 좋다
2. 모듈간의 표준 인터페이스가 단순하면 모듈의 독립성을 향상 시킬 수 있으며, 시스템 구조를 단순화시킬 수 있다.
3. 대칭 구조에서는 동일 계층의 프로토콜을 단순화 시킬 수 있음
4. 특정 모듈의 외부 인터페이스가 변하지 않으면, 내부 기능의 변화가 전체 시스템의 동작에 영향을 미치지 않음
프로토콜 설계시 고려사항
1. 주소표현
- 여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하려면, 상대방을 구분하기 위해 이름을 부여한다. 이를 주소표현이라 한다.
2. 오류제어
데이터가 깨져서 도착하는 데이터 변형, 데이터가 도착하지 못하는 데이터 분실 이와 같은 전송오류를 바로 잡는 통신 프로토콜의 기본적인 기능이다.
3. 흐름제어
물리적인 오류가 없어도 송/수신 호스트사이의 데이터 처리 속도로 인해 데이터의 분실이 일어날 수 있다.
이를 방지하기 위해 수신 측에서 송신 측이 송신하는 데이터의 전송량이나 전송 속도를 제어하는 것을 흐름제어라고 한다.
프리미티브 서비스
계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류로 프리미티브 형태로 구현된다.
예를 들면 심부름으로 두부를 사오라 했다면, 시킨 사람 입장에선 두부와 잔돈만 받으면 된다. 하지만 심부름을 하는 나는 신발을 신고, 문을 열고, 가게를 찾고, 두부를 찾고, 계산하고 와 같은 동작을 수행하는데 이런 하나하나 동작의 개념을 서비스 프리미티브라고 한다.
-출처: You Are Right - 티스토리
Request : 클라이언트가 서버에 서비스를 요청
Indication : 서버에 서비스 요청이 도착했음을 통지
Response : 서버가 클라이언트에 서비스 응답 회신
Confirm : 클라이언트에 응답이 도착했음을 통지
클라이언트에서 서버로 전달되는 요청은 Request와 Indication이 된다.
서버에서 클라이언트로 전달되는 응답은 Response와 Confirm이 된다.
하위계층이 상위 계층에 서비스를 제공하는 서비스의 종류에는 연결형과 비연결형이 있다.
연결형 서비스
연결 설정 단계 / 데이터 전송 단계 / 연결 해제 단계의 3단계로 서비스를 제공한다.
비연결형 서비스
연결 설정 및 해제 단계없이 데이터를 전송한다. 전송할 데이터가 있으면 바로 목적지 호스트로 전송한다.
문자메시지 서비스와 유사하다.
OSI 참조 모델
컴퓨터 네트워크에서는 계층 구조로 모듈화 된 프로토콜 스택을 사용하며, ISO가 확립한 OSI 7 계층 모델은 개방된 통신 환경에 적합한 계층 구현 모델의 표준이다.
연결된 두 호스트는 각각 7개의 계층으로 구성된 모듈을 따라 데이터 송수신이 가능하다.
데이터가 하위 계층으로 내려갈 때는 각 계층의 프로토콜에서 정의한 헤더 정보가 추가되며, 데이터가 상위 계층으로 올라갈 때는 순차적으로 헤더 정보를 제거하고 해석한다.
용어 정의
- 계층 n프로토콜 : 계층 n 모듈끼리 사용하는 통신 규칙
- 동료 프로세스 : 동일 계층에 위치한 통신 양단 프로세스
- 인터페이스 : 상/하위 계층 사이의 접속 방법
- 서비스 : 상위 계층이 하위 계층을 사용하는 방법 (7계층이 6계층을 사용하는 방법)
중개 노트 : 라우터
- 라우터는 자신에게 도착한 데이터의 헤더 정보를 해석해서 적절한 경로로 전달하며, 헤더 정보를 수정하는 작업을 진행한다.
계층별 기능
TCP / IP 모델
구현 환경
컴퓨터의 네트워크 구현 모델에서는 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현한다.
즉, TCP / IP를 사용하려면, 사용자 공간에서 네트워크 응용 기능을 지원하는 프로그램을 작성해야 한다.
시스템 공간 (1 ~ 4 계층)
연결형 서비스(TCP)와 비연결형 서비스(UDP)는 시스템 운영체제인 커널 내부에 구현되어 있음
소켓 인터페이스라는 전송 계층의 프리미티브를 이용한다.
네트워크 계층은 IP로 구현, 전송 패킷의 올바른 경로 선택 기능을 제공
사용자 공간 (5 ~ 7 계층)
프로그래밍 환경에서 전송 계층의 기능을 제공하는 소켓 시스템 콜을 이용
프로그램에서 소켓을 사용할 때는 소켓마다 부여되는 고유 주소인 포트번호를 관리해야 한다.
TCP, IP, UDP 프로토콜을 이용하지만, 이들의 동작을 도와주기 위한 프로토콜이 추가적으로 필요하다.
이때 쓰이는 것이 ARP와 RARP이다.
ARP: IP주소를 MAC주소로 변환
MARP : MAC주소를 IP주소로 변환