네트워크 기본 OSI(Open Systems Interconnection) 7계층
- 통신을 수행할 때 처리되어야 할 작업을 순차적으로 7단계로 정의한 국제 통신 표준 규약이다.
- 실제 인터넷에서 사용되는 TCP/IP는 OSI 참조모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 것이다.
- 회사의 장비마다 호환이 되지 않으며 복잡했기 때문에 => 모든 시스템들의 상호 연결에 있어 문제가 없도록 표준을 정의한 것이다.
- 통신의 오류가 발생 시 해당 오류의 원인을 찾아서 원인의 계층만 고친다.
- 실제로는 TCP/IP 프로토콜 계층을 많이 이용한다.
🔰TCP/IP모델
- 독립적인 모듈을 구성할 때, 모듈들이 서로 강하게 의존하면 결합도가 높고, 너무 작은 단위로 나뉘면 응집도가 낮고 한다. => 소프트웨어 가치를 하락시키는 요인이 된다.
- OSI 7계층에서 응용, 표현, 세션 계층은 결합도가 높고, 응집도가 낮은 모듈로 TCP/IP모델에서는 하나로 통합되어 사용되고 있다.
1️⃣ 물리 계층(Physical Layer)
- 7계층 중 최하위계층
- 주로 전기적, 기계적, 기능적인 특성을 이용하여 데이터 전송
- 아날로그 신호(주파수)를 디지털 신호로 변경해주는 역할을 함, NIC(Network Interface Controller)란 하드웨어가 수행(네트워크 카드, 랜카드로 불림)
- 데이터는 0과 1의 비트열(on, off)의 전기적 신호 상태로 이루어져 해당 계층은 단지 데이터를 전달한다. ⇒ 알고리즘, 오류 제어 기능이 없다.
- 장비 : 케이블, 리피터(신호를 세게 해줌), 허브
- 리피터는 신호를 세게하지만 특정지점에 전달하기보다 무분별하게 전파하기 때문에 효율이 떨어진다.
2️⃣ 데이터링크 계층(Data-Link Layer)
- 들어온 데이터를 식별하기 위한 라벨링 작업을 진행한다. => 프레임화
- 물리적인 연결을 통해 인접한 두 장치간의 신뢰성 있는 정보 전송을 담당(Point-to-Point)
- 상위 or 하위계층으로 프레임 전달, 안전한 정보의 전달 ⇒ 오류나 재전송하는 기능 존재, 오류제어, 흐름제어
- MAC주소를 통해 통신
- 데이터 단위는 프레임(Frame)
- NIC라는 하드웨어가 수행
- 장비 : 브리지, 스위치
3️⃣ 네트워크 계층(Network Layer)
- 중계노드를 통해 전송하는 경우, 어떻게 중계할 것인가 규정
- 라우팅 기능을 맡고있는 계층, 목적지까지 가장 안전하고 빠르게 데이터를 보냄(최적 경로 설정 가능)
- 포워딩 : N개의 라우터가 지속적으로 정보를 전달하면서 최종 목적지까지 전달하는 방법이다.
- IP주소 (네트워크 계층 헤더)
- 데이터 단위는 패킷(Packet) : 전달 해야하는 데이터는 출발지 정보, 목적지 정보가 부가적으로 필요하며 해당 정보는 IP로 처리하고, IP정보를 붙인 데이터를 패킷이라고 한다.
- 장비 : 라우터(공유기), L3스위치
- 라우터 : 리퍼터의 단점을 해결하기 위해 사용되는 장비로 내장된 알고리즘을 통해 전달할 수 있는 가장 가까운 라우터까지의 경로를 결정하고 이를 테이블로 저장(라우팅)한다.
✔️수행역할
- 2계층에서 넘어온 데이터를 패킷으로 만들거나, 수신된 패킷 데이터를 해석
- 다음 라우터의 경로를 찾기 위한 라우팅 진행
- 패킷 전달의 역할을 다음 라우터에게 위임하는 포워딩 진행
👉 OSI 1~3계층은 하드웨어 영역으로, 각 층마다 매칭되는 하드웨어 장치가 존재한다.(하드웨어가 실질적으로 수행하는 역할)
4️⃣ 전송 계층(Transport Layer)
- 종단 간 신뢰성 있고 정확한 데이터 전송을 담당
- end to end를 담당하는 최하층 계층
- 송신자와 수신자 간 신뢰성 있고 효율적인 데이터를 전송하기 위해 오류 검출 및 복구, 흐름 제어와 중복 검사 등을 수행
- 데이터 전송을 위해 데이터를 식별할 수 있는 포트번호 사용(대표적인 프로토콜로 TCP/UDP가 있음)
- 데이터 단위는 세그먼트(Segment)
✔️수행역할
- 포트번호를 통한 데이터 식별 작업
- 데이터 통신 프로토콜에 따른 알고리즘 수행
5️⃣ 세션 계층(Session Layer)
- 통신 장치 간 상호작용 및 동기화 제공
- 연결 세션에서 데이터 교환과 에러 발생 시의 복구를 관리
- 데이터 단위 : 데이터 또는 메세지
6️⃣ 표현 계층(Presentation Layer)
- 데이터를 어떻게 표현할 지정하는 역할을 하는 계층
- 하위 계층이 전달한 데이터를 어플리케이션이 해석할 수 있도록 데이터를 디코딩하거나, 하위계층으로 효율적으로 데이터를 전달하기 위해 인코딩한다.
✔️수행역할
- 송신자에서 온 데이터를 해석하기 위한 응용계층의 데이터 부호화, 변화
- 수신자에서 데이터의 압축을 풀 수 있는 방식으로 된 데이터 압축
- 데이터의 암호화, 복호화
7️⃣ 응용 계층(Application Layer)
- 사용자와 가장 밀접한 계층으로 인터페이스 역할
- 응용 프로세스 간의 정보 교환을 담당
- 전자메일, 인터넷, 동영상 플레이어 등
- 소켓 API : 전송계층에서 제공하는 API로 네트워크 통신을 가능하게 하는 API이다. 응용계층에서는 소켓 프로그래밍을 통해 데이터를 송수신한다.
- 각 프로그램이 개벽적으로 데이터 규격을 만들어 통신할 수 있다. => 데이터의 인코딩 및 디코딩을 각 프로그램이 자체적으로 수행할 수 있기 때문
- 대표적 데이터 규격 : HTTP 프로토콜 방식, 작은 단위로는 JSON, XML 등이 있다.
👉 OSI 4~7 계층은 소프트웨어 영역으로, 4~6계층은 OS가 7계층은 프로그램이 해당 계층의 역할을 수행
👀 이 블로그를 참고하여 작성했습니다 :)