OSI 7계층이란 국제표준화기구(ISO)에서 개발한 모델로, 네트워크 프로토콜 디자인과 계층을 나눠 설명한 것이다. 다시 말해 ISO에서 만든 네트워크 통신의 7단계 과정이다.
OSI 7계층은 Application Layer , Presentation Layer, Session Layer, Transport Layer, Network Layer, Data Link Layer, Physical Layer로 나뉘어져 있다.
표로 나누어보면
OSI | TCP/IP | TCP/IP Protocol Suite |
---|---|---|
Application | Application | HTTP,FTP,SMTP,DNS,RIP,SNMP |
Presentation | 위와 동일 | 위와 동일 |
Session | 위와 동일 | 위와 동일 |
Transport | Transport | TCP,UDP |
Network | Internet | {ARP},{IGMP,ICMP} |
Data-Link | NetworkAccess | Ethernet,Token Ring, Frame Relay, ATM |
Physical | - | - |
이메일, 웹서핑 등과 같은 서비스를 제공하고 제공받기 위해 어떤 형식으로 메시지를 주고 받을지에 대한 프로토콜들이 모여있는 레이어라고 생각하면 된다. 이는 endSystem에만 존재한다.
네트워크 계층의 모델 중 트랜스포트 이하의 게층들은 데이터 전송을 담당하고 있으므로 이들 데이터 전송 관련 계층을 제외한 모든 영역이 애플리케이션 계층의 범주이다.
Presentation Layer는 네트워크 사의 여러 다른 기종 시스템들이 저마다 다른 데이터 표현 방식을 사용할 때, 이를 통일된 구문 형식으로 변환 시키는 기능을 수행하는 계층이다.
데이터 값이 여러 다양한 시스템에 저장될 때 그 값들은 각각의 시스템에서 다른 방법으로 표현된다. 예를 들어 정수형은 시스템에 따라 16bit,24bit 등으로 표현되기 때문에, 통신할 때 양쪽 개체간의 메시지가 같은 뜻으로 교환해야 한다. 따라서 두 App Layer 간의 메시지 교환은 동일한 가상의 문법이 상호 합의 되어 있어야 한다.
이러한 번역기/변환기 역할이 바로 Presentation Layer이다.
응용 프로그램간의 연결을 성립하게 하고 안정되게 유지관리하며 작업 완료 후 연결을 끊는 역할을 담당한다. 4계층인 통신 계층에서도 연결은 맺고 종료할 수 있지만 어느 계층에서 통신이 끊어졌는지 판단하는데 한계가 있다. 따라서 4계층과 다르게 응용 프로그램 관점에서 보는 것이다.
세션계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 예를 들어 HTTP에서 했듯이 사용자 정보를 계속 유지하거나 지속하거나를 결정하는데 대표적으로 로그인이 있다. 로그아웃까지 통
서로 다른 호스트들의 process들은 Transport Layer를 통해 logical한 communication을 주고 받는다.
상위 계층들이 데이터 전달이나 유효성이나 효율성을 생각하지 않도록 해준다.
트랜스포트 계층의 프로토콜은 종단 시스템에서만 구현된다. 중간 지점 같은 라우터강 아닌 호스트(app layer, PC, smartphone)등에서 구현된다.
end-system 위에서 동작하며 segment라는 단위로 패킷을 주고받는다. 데이터는 계층마다 다르게 존재하는데 app계층에선 메세지 , transport 계층에선 세그먼트, 네트워크 계층에선 데이터그램으로 존재한다. 이는 큰 메세지를 세그먼트인 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 헤더를 추가해 나중에 헤더를보고 합칠 수 있게 해준다. 그 후 세그먼트는 네트워크 계층에서 데이터그램안에 캡슐화되어 전달된다. 나중에 이를 분해하면서 해석한다.
네트워크 계층으로 보내고 받을때 다중화와 역다중화를 이용한다.이를 알려면 먼저 application과 transport 은 소켓을 이용하여 서로 통신하는데 트랜스포트 계층 세그먼트 데이터를 올바른 소켓으로 전달하는 작업을 역다중화, 반대로 출발지로부터 소켓을 받아 데이터를 모으고, 이를 세그먼트 단위로 묶어 생성하기 위해 세그먼트 앞에 헤더를 붙여 캡슐화하고, 이 세그먼트들을 네트워크 계층으로 보내는 작업을 다중화라고 한다.
비연결형,연결형 다중화는 TCP,UDP에서 나오니 나중에한다.
그리고 시퀀스 넘버 기반의 오류 제어 방식을 사용하는데 이는 TCP,UDP에서 더욱 자세히 하겠다.(ACK number & Sequence)
우편부를 항상 생각하자.
우리가 만든 데이터그램을 어디로 전달해야할지를 정해야 한다. 최종 목적지에 도달하기 위해 네비처럼 알려줘야 하는데 이를 라우팅이라고 한다. 라우팅을 해주는 계층이 네트워크 계층이다.
즉 라우트는 경로이고, 라우팅은 찾아가게 하는 과정인데 찾아주는 규칙 사용하는 프로토콜은 라우팅 프로토콜이라고 한다. 라우팅에 의한 결과가 라우트이다.
데이터링크 계층은 연결된 이웃 컴퓨터와 통신만을 한다. 노트북,데탑 이런것 뿐만 아니라 라우터 스위치등 주소가 부여되어 통신 가능한 것들을 말한다. 데이터링크가 옆 노드만 신경을 쓰면 네트워크 게층은, 출발지에서 목적지, 즉 End to End만 신경쓴다.
즉 받는 목적지와 보낸 출발지를 붙여서 데이터 링크 계층으로 보내는 것이다. 그외에도 여러 정보가 붙여져서 보내지게 된다. 이런식으로 붙여지는걸 캡슐화라고 한다.
네티워크 계층의 데이터를 패킷, 전송 계층의 데이터를 세그먼트, 데이터 링크의 데이터를 프레임이라고 한다.
스위치 장비에서 관리하고 있는 주소가 맥주소, IP 주소가 논리적 주소면 맥주소는ㄴ 물리적 주소이다. MAC은 변하지않는 장치의 고유번호로 맥 어드레스 테이블(Mac Address Table)은 표지판과 같은 역할을 해준다. 즉 현재의 갈림길에 정보는 알지만 다음에 나올 표지판은 모르는 것이다. 그래서 스위치가 맥어드레스테이블을 통해 옆 노드간의 통신을 담당한다.
라우팅 테이블에는 MAC주소는 없고, 논리적 주소인 IP로 허브들을 관리하고 있다.네트워크 대역대만 보고 몰아서 보내기 때문이다.
네트워크 계층부터 위쪽 계층은 소프트웨어적 특성을 가지고 있다면 데이터링크는 하드웨어와 소프트웨어적 특성을 모두 가지고 있다. 소프트웨어와 하드웨어를 연결하는 다리 같은 역할을한다.
데이터링크 계층에선 연결된 이웃 컴퓨터와의 통신만을 생각한다. 직접 연결된 서로 다른 2개의 네트워크 장치간 데이터 전송을 담당한다.
MAC은 2계층 데이터링크와 관련된 프로토콜이다.
말그대로 0과 1을 가진 디지털 시그널을 전압으로 전달해야하고, 전압을 디지털 시그널로 바꿔야 한다. 이런 전기적 특성을 이용해 신호를 만드는 역할을 물리계층에서 한다.
이진 데이터를 어떤 시그마로 만들고, 신호를 주고받기 위한 전기적, 과학적, 전파적 이러한 특성을 정의하는 계층이 제 1계층이다.
즉 캡슐화가 완료된 데이터를 전기신호로 바꾸어 전송하는 역할을 한다. 단, 데이터를 전달하는 역할만하고 오류 제어 기능은 수행하지 않는다.