OSI 7 Layer
- Open System Interconnection (OSI) 모델은 네트워크 통신 기능을 7개의 계층으로 나눈 프레임 워크이며 쉽게 말해, 상이한 컴퓨터 시스템이 서로 통신할 수 있는 표준을 제공한다.
OSI가 필요한 이유
- OSI 모델을 사용하여 복잡한 네트워크 시스템 아키텍처를 구성하고 모델링 할 수 있으며, 추상화를 통해 시스템을 더 작고 관리 가능한 부분으로 분해하는 기능은 사용자들이 시스템을 전체적으로 개념화하는 것을 더욱 쉽게 만들 수 있다.
1. 물리계층(Physical Layer)
- 물리 계층은 케이블, 스위치 등 데이터 전송과 관련된 물리적 장비가 필요하며 물리적 통신 매체와 해당 매체를 통해 데이터를 전송하는 기술을 말한다.
- 통신 단위는 1과 0으로 이루어진 BitStream이며 대표 장비는 리피터, 허브 등이 있다.
🚩 케이블 리피터, 허브를 통해 데이터를 전송
2. 데이터 링크 계층(Data-Link Layer)
- 데이터 링크 계층은 물리 계층에 이미 존재하는 네트워크를 통해 두 시스템을 연결하는 데 사용되는 기술이다.
- 데이터 패킷에 캡슐화된 디지털 신호인 데이터 프레임을 관리한다.
- 또한, 주된 특징으로 데이터의 흐름 제어 및 오류 제어가 있으며, MAC 주소를 이용하여 통신한다.
- 전송 단위를 프레임이라고 하며 대표적인 장비로 브리지, 스위치가 있다.
🚩 프레임에 주소 부여(MAC - 물리적 주소), 에러 검출 / 재전송 / 흐름 제어
3. 네트워크 계층(Network Layer)
- 네트워크 계층은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기술이다.
- 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해 주는 것이 네트워크 계층의 역할이다.
- 또한, 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단을 제공한다.
- 라우팅, 흐름 제어, 세그먼테이션, 오류 제어, 인터 네트워킹을 수행한다.
- 프로토콜로는 IP, 인터넷 제어 메세지 프로토콜(ICMP), 인터넷 그룹 메세지 프로토콜(IGMP), IPsec가 있다.
🚩 IP 주소 부여, 경로 설정(Route)
4. 전송 계층(Transport Layer)
- 통신을 활성화하기 위한 계층으로, 보통 TCP 프로토콜을 이용하며, 포트를 열어서 응용 프로그램들이 전송될 수 있도록 하는 기술이다.
- 세션 계층에서 데이터를 가져와서 네트워크 계층으로 보내기 전에 세그먼트라는 조각으로 분할하는 일을 포함한다.
- 또한, 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 한다.
- 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 stateful 한 연결 기반이다.
- 즉, 패킷들의 전송이 유효한지 확인하고 전송에 실패한 패킷들을 다시 전송한다.
🚩 패킷 (Assembly, Sequencing, Dessembly, Error detection, Request repeat, Flow contorl) 및 전송
TCP 프로토콜 (Transmission Contorl Protocol)
- 양 종단 호스트 내 프로세스로 상호 간의 신뢰적인 연결 지향성 서비스를 제공한다.
- 신뢰적인 전송을 보장
- 패킷 손실, 중복, 순서 바뀜 등이 없도록 보장한다.
- 같은 전송 계층의 UDP는 비연결적 이지만, TCP는 연결 지향적이다.
UDP 프로토콜 (User Datagram Protocol)
- 비연결적이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스를 제공한다.
- 메세지가 제대로 도착했는지 확인하지 않는다. -> 확인 응답 없음
- 수신된 메세지의 순서를 맞추지 않는다. -> 순서 제어 없음
- 흐름 제어를 위한 피드백을 제공하지 않는다. -> 흐름 제어 없음
- 실시간 응용 및 멀티캐스팅이 가능한다.
- 헤더가 단순하다.
- 16 비트의 포트 번호를 사용하지만 헤더는 고정 크기 8 Byte만(TCP는 20Byte) 사용한다.
5. 세션 계층(Session Layer)
- 데이터가 통신하기 위한 논리적인 연결 즉, 두 기기 사이의 통신을 시작하고 종료하는 일을 담당한다.
- 또한, 데이터 전송에 대한 체크 포인트를 둔다.
- 예를 들어, 100MB 중 52MB가 전송된 후 연결이 끊어졌을 때, 해당 데이터 전송에 대한 체크 포인트가 5MB마다 였다면 50MB부터 다시 전송 가능하다.
🚩 통신에 대한 동기화, 오류 복구 명령들을 일괄적으로 다룬다, 동신을 하기 위한 확립 / 유지 / 중단
6. 표현 계층(Presentation Layer)
- 데이터의 변환, 암호화, 압축을 담당하며 어플리케이션 계층에서 이를 사용할 수 있도록 한다.
- 예를 들어, EBCDIC로 인코딩 된 문서 파일을 ASC2로 인코딩 된 파일로 바꿔주는 역할이 있다.
- 해당 데이터가 TEXT 인지, 그림인지, GIF 인지, JPG 인지 구분하는 역할도 한다.
🚩 사용자의 명령어를 완성 및 결과 표현, 포장/압축/암호화
7. 응용 계층(Application Layer)
- 사용자의 데이터와 직접 상호 작용하는 유일한 계층이다.
- 웹 브라우저 및 이메일 클라이언트와 같은 소프트웨어 어플리케이션은 통신을 개시하기 위해 어플리케이션 계층에 의지한다.
- 최종 목적지로 HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다.
🚩 네트워크 소프트웨어 UI 부분, 사용자의 입출력(I/O) 부분
OSI 모델의 통신 / 데이터 전송
네트워크를 통해 사람이 읽을 수 있는 정보를 장치 간에 전송하려면 데이터가 송신 장치에서 OSI 모델의 7가지 계층 아래로 이동한 다음 최종 수신자에서 7가지 계층 위로 이동해야 한다.
예를 들어 A가 B에게 이메일을 보내려고 할 때 A는 자신의 노트북에 있는 이메일 어플리케이션에서 메세지를 작성한 후 "발송"을 누른다.
- A의 이메일 어플리케이션이 이메일 어플리케이션 계층으로 넘기면, 어플리케이션에서는 프로토콜(SMTP)을 선택하고 데이터를 프레젠테이션 계층으로 전달한다.
- 프레젠테이션 계층이 압축한 데이터는 세션 계층에 도달하고, 세션 계층은 세션을 시작한다.
- 이제 데이터는 발신자의 전송 계층으로 넘어가 세그먼트로 나눠지게 되며, 이 세그먼트는 네트워크 계층에서 패킷으로 다시 나눠지고, 이는 데이터 링크 계층에서 프레임으로 나눠진다.
- 데이터 링크 계층은 해당 프레임을 물리적 계층으로 전달하며, 물리적 계층은 데이터를 1과 0으로 비트스트림으로 변환하고 물리적 매체를 통해 전송한다.
B의 컴퓨터가 물리적 매체를 통해 비트스트림을 수신하면, 데이터는 반대 순서로 계층을 지나게 된다.
- 먼저 물리적 계층은 비트스트림을 1과 0에서 프레임으로 변환해 데이터 링크 계층으로 넘긴다.
- 데이터 링크 계층은 프레임을 패킷으로 재조립해 네 트워크계층으로 넘긴다. 네트워크 계층은 패킷으로 세그먼트를 만들어 전송 계층으로 넘기고, 전송 계층은 세그먼트를 재조립해 하나의 데이터를 만든다.
- 이제 데이터는 B의 세션 계층으로 흐르고, 세션 계층이 이 데이터를 프레젠테이션 계층으로 넘기면, 통신 세션이 종료된다.
- 이제 프레젠테이션 계층은 압축을 제거하고 원본 데이터를 어플리케이션 계층으로 넘긴다.
- 어플리케이션 계층은 사람이 읽을 수 있는 데이터를 B의 이메일 소프트웨어에 제공하고, B는 자신의 노트북 화면에서 이메일 소프트웨어를 통해 A의 이메일을 읽을 수 있게 된다.
Reference
https://aws.amazon.com/ko/what-is/osi-model/
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
https://shlee0882.tistory.com/110
https://hahahoho5915.tistory.com/12#google_vignette