OSI 7계층이란 국제표준기구 ISO에서 만든 네트워크통신의 7단계 과정이다.
이것이 필요한 이유는 다음과 같다.
"네트워크 통신이 이루어지는 과정을 단계별로 파악하여, 문제가 발생할 시에는 문제가 일어난 곳을 찾아서 빠르게 해결할 수 있도록 하기 위해"
물리계층 (Physical Layer) [비트단위의 신호를 전기신호로 변환해 전송해주는 계층]
물리계층에서는 0과1이 나열된 신호를 아날로그 신호로 변환해서 전선을 통해 흘려보내고, 아날로그 신호가 들어오면 0과 1의 나열로 변환해주는 열할을 수행한다.
데이터 링크계층 (Data Link Layer) [동일한 네트워크 내에서의 데이터 전송을 담당하는 계층]
오류제어, 흐름제어의 기능이 있다.
데이터 전송시에 오류를 감지하고 오류가 발생할 경우 재전송을 한다.
만약 하나의 컴퓨터에 여러대의 컴퓨터에서 데이터를 전송할 경우, 그 데이터를 받는 컴퓨터에서는 데이터를 잘 끊어 읽는 것이 매우 중요하다.
따라서 데이터 링크계층에서는 데이터의 앞 뒤에 특정한 비트열을 붙이는 Framing작업을 수행한다.
2계층의 장비로는 스위치가 있는데, 스위치는 데이터의 목적지를 확인해서, 특정 목적지에만 그 데이터가 전달될 수 있도록 해주는 역할을 수행한다.
네트워크계층 (Network Layer) [서로다른 두 네트워크간의 데이터 전송을 담당하는 계층]
IP나 라우터가 속한 계층으로 호스트에 IP주소를 부여한 후, 데이터의 해당 도착지까지의 최적의 경로를 찾아(라우팅) 선택하고, 데이터를 전송한다.
3계층의 장비중 라우터(Router)는 서로다른 네트워크에 속한 컴퓨터끼리 서로 통신이 가능하게 해주는 장비다. (우리가 알고 있는 공유기)
라우터와 라우터는 또다른 라우터로 연결할 수 있고, 이렇게 전세계에 컴퓨터가 계층구조로 연결되어 있는 것을 인터넷이라고 한다.
전송계층 (Transport Layer) [사용자들간 "신뢰성있는 데이터 전송" 을 담당하는 계층]
서로다른 두 네트워크간의 데이터 전송, 흐름제어, 오류제어를 담당하는 계층이다. 기능들은 다음과 같다.
흐름제어 : 데이터의 전송량을 낮추거나 높이기를 요구
오류제어 : 받은 데이터가 손실이 없는지 확인하고, 손실,오류가 있다면 재전송을 요구
세그먼테이션 : 상위계층의 데이터를 받아서 세그먼트(Segment)라는 단위로 나눔
-> 왜 세그먼테이션이 필요할까?
만약에 1GB의 동영상을 본다고 생각해보면, 세그먼테이션 작업이 이루어지지 않는다면, 1GB가 모두 다운받아질 때까지 동영상을 시청하지 못한다.
하지만 세그먼트 단위로 나누게 되면 다운받아진 일부분을 먼저 시청할 수 있게된다. 또한 파일을 다운받는 도중 연결이 끊기게 되는경우. 세그먼트 단위로 나누어 저장하게 된다면, 끊긴 다음부터 다시 받을 수 있게 된다.
세션계층 (Session Layer) [네트워크의 연결을 관리하고 지속시켜주는 계층]
세션의 파괴/생성/유지/복구등을 지원하는 계층이다.
서로다른 네트워크간의 연결을 관리해주고, 연결이 지속될 수 있도록 해준다.
표현계층 (Presentation Layer) [응용계층이 이해할 수 있게 데이터를 표현하는 계층]
각각의 통신기기들이 서로다른 인코딩과 디코딩을 사용하는 경우가 있을 수 있다.
이러한 경우를 대비해서 표현계층에서 데이터의 변환을 수행한다.
표현계층은 응용계층으로부터 전달받거나, 전송하는 데이터의 인코딩과 디코딩을 수행한다.
즉, 응용계층에서 데이터를 이해할 수 있도록 응용프로그램에 맞게 데이터를 변환하는 작업을 수행하는 계층이다.
응용계층 (Application Layer) [사용자와 직접적인 상호작용을 하는 계층]
웹브라우저(Chorme,Safari,...), 응용프로그램(한글, Word, PPT, ...), 프로토콜(HTTP, SMTP, FTP) 등이 속한 계층이다.
사용자 또는 어플리케이션이 네트워크에 접속할 수 있도록 해준다.
우리가 사용하는 응용서비스나 프로세스가 바로 이 계층에서 동작한다고 볼 수 있다.
전송계층에서 TCP인지 UDP인지에 대한 정보 + 출발지 도착지에대한 포트번호를 헤더에 넣어서 캡슐화 (단위 : 세그먼트(Segment))
네트워크 계층으로 내려보냄
여기서 잠깐!
TCP : 데이터를 전송한 후 데이터가 손실되었는지, 잘 전달되었는지 확인하고, 만약 데이터가 손실되었거나 오류가 있다면 재전송 -> 신뢰성이 높음
UDP : 일단 데이터를 전송하면 그 뒤로 신경쓰지 않음(손실, 오류여부). -> 신뢰성은 낮지만 속도는 빠름. 스트리밍 등에서 사용
포트번호 : 목적지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 잘 도달할 수 있도록 포트번호를 사용
네트워크 계층에서 출발지 & 도착지의 IP주소를 마찬가지로 헤더에 넣어 캡술화(단위: 패킷(Packet))
데이터링크계층으로 내려보냄
데이터링크 계층에서 출발지의 MAC주소와, 가장가까운 라우터의 MAC주소를 헤더의 넣어서 캡슐화, 오류제어를 위한 Trallier도 넣음 (단위: 프레임(Frame))
물리계층으로 보내고 물리계층에서는 이를 아날로그 신호로 변환한 뒤에 데이터를 전송한다.
수신자가 데이터를 받으면 물리계층부터 헤더의 정보를 확인, 떼어낸 후 상위 계층으로 전달. 이과정을 반복해서 응용계층에서 data형태가 됨
실제로 우리가 인터넷 통신에 사용하는 것은 OSI가아니라 TCP/IP 4계층이다.
< TCP/IP 4계층 >
네트워크 통신에 실제로 사용되는 계층으로, 현대의 인터넷은 이 모델을 따르고 있다.
OSI 7계층의 표현계층과 세션계층이 응용계층으로 통합되고, 물리계층과 데이터링크 계층이 하나로 통합된 모델이다.