OSI 7계층은 통신의 접속에서부터 완료까지의 과정을 7단계로 OSI에서 정의한 국제 통신 규약입니다.
OSI 7계층이 왜 필요한가?
연결되어 있는 컴퓨터들이 서로 정상적인 통신을 할 수 있으려면 정해진 규격대로 연결이 되어야지 통신을 할 수 있습니다.
실제로 이 규격이 만들어지기 전까지의 통신은 각 통신 업체 장비간의 통신만 가능했다고 합니다.
그래서 다른 통신 업체 장비간의 통신을 할 수 있도록 할 필요가 있었고, 통신의 흐름을 파악하기 쉽게 계층 하나하나를 모듈화 했습니다. 이 모듈화를 통해 각 계층은 독립적으로 구성이 되어있으므로 하나의 계층에 문제가 생기면 해당 계층만 고치면 되므로 유지관리가 수월해 집니다.
OSI (Open System Interconnection Reference Model)
국제표준화기구(ISO)에서 개발한 모델로, 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것 입니다. (프로토콜 기능별로 나눈 것이라 보면 됩니다.)
각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공합니다.
프로토콜 스택은 이러한 계층들로 구성된 프로토콜 시스템을 가리키는데, 하드웨어나 소프트웨어 혹은 그 둘의 혼합으로 구현될 수 있습니다.
일반적으로 하위 계층은 하드웨어, 상위 계층은 소프트웨어로 구현됩니다.
OSI 7계층
1계층 (물리 계층) : 컴퓨터간 전기적인 연결을 담당하는 계층 - 통신 케이블, 허브 사용
물리 계층에서는 주로 전기적, 기계적, 기능적인 방법으로 통신 케이블을 통해 데이터를 전송합니다.
물리 계층에서는 PHY칩에서 데이터를 전기적인 신호로 변환해서전송(encoding - 0과 1의 데이터를 아날로그 신호), 수신(아날로그 신호를 0과 1의 데이터)하는 역할만 합니다.
데이터가 무엇인지 어떤 에러가 있는지 신경쓰지 않습니다.
이 계층에서의 대표적인 장비는 통신 케이블, 리피터, 허브가 있습니다.
전송 단위 : Bit
2계층 (데이터 링크 계층) : 노드간의 신뢰성 있는 전송을 보장하기 위한 계층으로 MAC Address를 가지고 통신합니다. - CRC(Cyclic Redundancy Check)기반의 오류 제어와 흐름제어, 이더넷 사용, 스위치 사용
물리 계층에서 수신 or 물리 계층에 송신되는 데이터의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행(데이터의 앞 뒤에 특정한 비트열을 붙임)할 수 있도록 도와주는 역할을 합니다.
통신에서의 오류도 찾아주고 재전송하는 기능도 있습니다.
MAC 주소를 가지고 통신합니다.
이 계층에서의 전송단위는 프레임이라고 하고, 대표적인 장비로는 스위치(우리가 잘 아는 공유기가 여기에 해당), 브리지 등이 있습니다. (여기서 MAC 주소 사용)
브리지나 스위치를 통해 MAC 주소를 가지고 물리 계층에서 전송받은 데이터를 전달합니다.
포인트 투 포인트(point to point) 간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC기반의 오류 제어와 흐름제어가 필요합니다.
네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류들을 찾아내고 수정하는데 필요한 기능적 수단을 제공합니다.
전송 단위 : Frame
3계층 (네트워크 계층) : 패킷을 네트워크간의 IP 주소를 통해 목적지까지 전달하는 계층입니다. - IP 사용
네트워크 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)입니다. 여기에 사용되는 프로토콜의 종류도 다양하고, 라우팅하는 기술도 다양합니다.
경로를 선택하고 주소를 정하고 경로에 따라 패킷을 목적지까지 전달해주는 것이 네트워크 계층의 역할입니다.
대표적인 장비는 라우터이며, 요즘은 2 계층 장비 중 스위치에 라우팅 기능을 장착한 Layer 3 스위치도 있습니다. (여기서 IP를 사용)
여러개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 데이터를 네트워크들을 통해 전달하고, 그 과정에서 상위 계층인 전송 계층이 요구하는 서비스 품질(Qos)를 제공하기 위한 절차적/기능적 수단을 제공합니다.
네트워크 계층은 라우팅, 세그맨테이션, 오류제어, 흐름제어, 인터네트워킹등을 수행합니다.
데이터를 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층입니다.
전송 단위 : Datagram (Packet)
4계층 (전송 계층) : 데이터 전송을 담당하는 계층으로 데이터 용량, 속도, 목적지 등을 처리합니다. - TCP/UDP 사용
통신을 활성화하기 위한 계층입니다. 보통 TCP를 사용하며, 포트를 열어 응용프로그램들이 전송할 수 있게 합니다.
만약 데이터가 왔다면, 해당 계층에서 데이터를 하나로 합쳐서 세션 계층으로 전송합니다.
전송 계층은 양끝단(end to end) 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 도와주고, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줍니다.
시퀀스 넘버기반의 오류 제어 방식을 사용합니다.
전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)입니다. 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송에 실패한 패킷들을 재전송한다는 것을 뜻합니다.
종단간 통신을 다루는 최하위 계층으로 기능은 오류검출 및 복구와 흐름제어, 중복 검사등을 수행합니다.
전송 단위 : Segment
5계층 (세션 계층) : 통신을 할 경우 host간 최초 연결을 하게되고 연결이 끊어지지 않게 유지하는 역할을 하는 계층입니다.
데이터가 통신하기위한 논리적인 연결을 합니다. 통신을 하기위한 대문이라고 생각하면 됩니다.
하지만 4계층에서도 연결을 하고 종료할 수 있기 때문에 우리가 어느 계층에서 연결이 끊어졌는지 판단하기에는 한계가 있습니다. 그러므로 세션 계층은 4계층과 무관하게 응용 프로그램 관점에서 봐야합니다.
세션 설정 생성, 유지, 종료, 전송 중단시 복구(체크포인트를 통해 동기화) 등의 기능이 있습니다.
세션 계층은 양 끝단 프로세스가 통신을 관리하기 위한 방법을 제공합니다.
동시 수신 방식(duplex), 반이중(half-duplex) 방식, 전이중 방식(Full duplex)의 통신과 함께 체크 포인팅과 유휴, 종료, 다시 시작 등을 수행합니다.
이 계층은 TCP/IP 세션을 만들고 없애는데 책임을 집니다.
6계층 (표현 계층) : 프로그램이나 네트워크를 위해 데이터를 표현하는 계층으로 암호화/복호화 작업이 이루어집니다.
코드간의 번역을 담당하여 사용자 시스템에서 데이터 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줍니다.
HIME 인코딩이나 암호화 등의 작업이 표현 계층에서 이루어집니다.
예를 들면, EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꾸어 주는 것, 해당 데이터가 TEXT인지, GIF인지, JPG인지 구분하는 것이 표현 계층의 역할입니다.
7계층 (응용 계층) : 사용자가 보는 부분으로 네트워크에 접속할 수 있도록 서비스를 제공합니다.
최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있습니다.
해당 통신 패킷들은 위의 프로토콜에 의해 전부 처리되며 우리가 사용하는 브라우저나 메일 프로그램은 프로토콜을 보다 쉽게 사용하게 해주는 응용프로그램입니다. 모든 통신의 양 끝단은 HTTP와 같은 프로토콜이지 응용프로그램이 아닙니다.
TCP/IP 4계층
1계층 (링크 계층)
물리적인 영역의 표준화에 대한 결과입니다. 가장 기본이 되는 영역으로 LAN,WAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역입니다.
2계층 (인터넷 계층)
경로검색을 해주는 계층입니다. IP자체는 비연결지향형이며 신뢰할 수 없는 포로토콜입니다. 데이터를 전송할 때마다 경로를 선택해주지만, 일정하지 않습니다.
특히 데이터 전송 도중 경로상에 문제가 생기면 다른 경로로 선택해 주는데, 이 과정에서 데이터가 손실되거나 오류 등의 문제가 발생해도 해결해주지 않습니다.
3계층 (전송 계층)
데이터의 실제 송수신을 담당합니다. UDP는 TCP에 비해 상대적으로 간단하며, TCP는 신뢰성 있는 데이터 전송을 담당합니다. 하지만 TCP가 데이터를 보낼 때 기반이 되는 프로토콜은 IP입니다.
IP 계층은 문제가 발생해도 해결해주지 않는 신뢰할 수 없는 프로토콜입니다. TCP가 이것을 해결해줍니다.
데이터가 순서에 맞게 전송이 되었는지 확인해주며 대화를 주고 받습니다. 확인 절차를 거쳐 신뢰성 없는 IP에 신뢰성을 부여해줍니다.
4계층 (응용 계층)
서버와 클라이언트를 만드는 과정에서 프로그램의 성격에 따라서 데이터 송수신에 대한 규칙들이 정해지기 마련인데, 이를 통틀어서 응용 프로토콜이라고 합니다.