- 복잡한 네트워크의 통신 과정을 기능별로 추상화하여 이해하고 쉽고, 설계하기 쉬운 구조로 만든 모델
왜 필요한가?
-
문제를 계층별로 분리해서 해결 가능
→ 문제가 생겼을 때 모든 것을 점검할 필요없이 문제상황에 따라서 어디 부분에 문제가 있으며 어떤 방식으로 해결할지 선택할 수 있음.
-
역할을 분리하여 개발과 설계를 쉽게 함
- 각 계층이 하는 일이 정해지기 때문에 자기일만 하면 됨.
- 개발자 → 7계층만 신경씀
- 네트워크 엔지니어 → IP, 라우팅만 신경씀
-
표준화 (호환성 확보)
- 다양한 제조사의 장비들이 존재하기 때문에 서로 다른 장비 간에도 통신이 가능해야함
→ 계층별 기능과 프로토콜을 표준화하여 서로 다른 장비 간의 호환성을 보장한다.
- 재사용 가능(유지보수 쉬움)
- 문제가 있는 부분만 수정하면 되니까 나머지 부분은 그냥 놓아도 됨.
→ 유지보수 쉬움
계층별 특징
1. 물리 계층
- 전기적 , 기계적인 특성을 이용해서 통ㅇ신 케이블로 데이터를 전송
- 통신 단위는 비트이며 0과 1로 나타내어진다. (전기적으로는 off와 on이다)
- 어떤 데이터인지, 어떤 에러가 있는지는 신경 쓰지 않는다.
- 장비 : 리피터, 허브, 통신케이블
2. 데이터 링크 계층
- 같은 네트워크 내에서 데이터를 “프레임 단위”로 전달하고 오류를 관리하는 계층
- IP가 아닌 MAC 주소 기반 통신을 함
- 데이터가 깨졌는지등을 확인하고 재전송을 요청할 수 있음.
- 너무 빠르게 보내면 받는 쪽이 받지 못할 수 있기 때문에 속도를 조절할 수 있다. (흐름 제어)
3. 네트워크 계층
- 서로 다른 네트워크 간 IP주소를 기반으로 데이터의 목적지를 결정하고 최적의 경로를 선택하여 패킷을 전달하는 계층
- 전송과정에서 패킷이 MTU(Maximum Transmission Unit) 보다 크면 쪼개서 전송하는 단편화 과정이 일어남
- 라우팅의 방식은 다양함
- 정적라우팅 : 관리자가 직접 경로를 설정,지정
- 동적라우팅 : 라우터들이 서로 정보를 교환해서 자동으로 최적 경로를 찾는 방식 (RIP, OSPF)
- 대표적인 장비는 라우터
4. 전송 계층
- 종단 간(End-to-End) 데이터 전송을 담당하며, 신뢰성, 흐름제어, 오류제어, 포트기반 통신등을 수행하는 계층
- End to End를 프로그램 to 프로그램이라고 보면 된다 .
- 혼잡제어 (congestion Control) : 네트워크의 트래픽이 많아질 것을 고려하여 속도를 줄임
- 흐름제어 (Flow control) : 수신자가 처리 가능한 속도로 송신자가 전송함 (TCP의 window)
- 포트번호 사용 : 프로그램을 구분하기 위해 포트라는 개념을 사용
- 3계층에서 한 패킷 내부의 조각들의 순서를 맞췄다면 4계층에서는 여러 세그먼트들의 순서를 관리한다. (패킷들의 순서를 맞춘다고 보면 된다)
- 대표적으로 TCP, UDP를 사용
- TCP : 신뢰성을 보장하는 연결형 전송 프롵콜
- UDP : 빠르지만 신뢰성을 보장하지는 않는 비연결형 전송 프로토콜
5. 세션 계층
- 통신하는 프로그램 간 서로 대화를 시작하고, 유지하며 종료할 수 있도록 논리적은 연결을 관리하는 계층이다.
- 전송 계층이 데이터의 신뢰성을 보장한다면, 세션 계층은 통신의 시작과 종료, 그리고 대화의 상태를 관리한다.
- 전화통화에 비유하자면
- TCP가 전화를 연결하는것이라면
- 세션은 누가말할지, 어디까지 이야기했는지, 끊기면 이어서말할지등의 대화를 진행하는 과정설정이다.
6. 표현 계층
- 프로그램 간에 주고받는 데이터의 형식, 인코딩, 암호화 방식등을 통일시켜 서로 다른 시스템 간 이해 가능한 형태로 표현되도록 해주는 계층
- 예를 들어, 한 쪽은 아스키 방식, 다른쪽은 utf-8 인코딩을 사용하면 문자가 깨지거나 해석 불가 등의 문제가 생김.
- 이때 표현 계층에서 데이터를 공통 표준 형식으로 변환하고 복원해줌.
- 데이터의 압축 : 전송 효율을 높이기 위해 데이터를 압축하는 것도 표현계층의 기능이다.
7. 응용 계층
- 사용자와 네트워크 사이의 인터페이스를 제공
- 응용 프로그램이 네트워크 기능을 쉽게 이용할 수 있도록 API및 프로토콜을 제공한다
- 사용자의 요청을 바탕으로 네트워크로 전송할 데이터를 생성한다.
- HTTP, FTP등 응용 프로토콜을 사용하여 통신을 수행한다.
- 하위 계층 호출 : 표현 , 세션 계층을 통해 데이터 변환과 연결유지
- 자원접근 및 파일 전송 : 파일, 이메일, 원격 로그인 등 고수준 기능
캡슐화와 역캡슐화
1. 캡슐화
- OSI 7계층에서 각 계층은 자신의 기능을 수행하면서 데이터에 필요한 정보를 추가해야한다.
- 또한 각 계층이 데이터를 그 다음계층으로 내려보내면서 본인 계층의 정보를 덧붙이게 되는데 이 정보를 헤더라고 하며 이 과정을 “캡슐화”라고 한다.
- OSI 7계층에서 각 계층은 자신의 기능을 수행하기 위해 데이터에 “제어정보”를 추가한다.
- 또한 각 계층은 데이터를 하위 계층으로 전달하면서 자신의 계층 정보를 “헤더”형태로 덧붙이며 이러한 과정을 캡슐화라고 한다.
2. 역캡슐화
- 수신측은 데이터를 상위 계층으로 전달하면서 “캡슐화 과정에서 추가된 헤더정보”를 제거한다.
- 이때 각 계층은 자신의 계층에 해당하는 헤더를 해석하고 제거하며, 이러한 과정을 역캡슐화라고 한다.