OSI 7계층이란?
컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명하기 위해 개발한 모델이다.
왜 계층으로 나누는걸까?
계층을 분리함으로서 각 계층은 독립적인 역할을 할 수 있게되었다.
역할이 분리되면서 문제 발생시 문제가 발생한 부분파악이 가능하다.
1 계층 Physical (물리계층)
- 두대의 컴퓨터가 통신을 하려면 비트 0과 1을 주고받는다.
- 서로 다른 장비가 전기적인 신호를 주고받는 역할을하는 계층이다.
- 송신자는 0과 1의 나열을 아날로그신호로 바꾸어 전선으로 흘려보내고(encode)
- 수신자는 아날로그 신호가 들어오면 0과 1의 나열로 해석해서(decode)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게해주는 모듈
- 1계층 모듈은 phy칩(하드웨어적으로 구현되어있음)
2계층 Data link (데이터 링크 계층)
- 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing은 Date-link layer에 속하는 작업들중 하나이다.
- Framing > 원본데이터를 구분자로 감싼것, (==전송단위)
- 랜카드에 구현되어있음(하드웨어적으로 구현되어있다)
- point to point 간의 신뢰성있는 전송을 보장하기위한 계층이다.
- 물리주소인 mac주소가 이계층에 해당함
- 개체들 간 데이터를 전달하고, 물리계층에서 발생할 수 있는 오류를 찾아 수정하는 역할을 담당한다. 데이터를 전달받다가 연결이 불안정하거나 끊어지는 등 데이터에 직접적으로 영향을 줄 수 있는 오류를 감지하고, 오류가 발견된다면 데이터를 폐기시킨다.
3계층 network layer
라우팅을 포함한 패킷 포워딩을 담당하는 계층이다.
라우팅이란 네트워크안에서 데이터를 전송할때 경로를 선택하는 과정을 의미하는데, 데이터가 어떤길로 이동할지 정해준다
- 만약 전선으로 컴퓨터가 연결되어있다면 무한대로 확장이 불가능하다.
- 전선으로 통신하려는 컴퓨터가 많아지면 비용면에서 비효율적이다.
허브가 메시지의 목적지를 확인해서 목적지에만 전달할수있게함 > 스위치
하나의 스위치로 연결된 애들을 네트워크라고 한다.
한개의 네트워크와 연결되어있는 컴퓨터가 다른 네트워크의 컴퓨터로 데이터를 전송하고싶을때..?
스위치와 스위치를 연결해서 서로다른 네트워크에 속한 컴퓨터끼리 통신을 가능하게해주는것
라우터와 라우터를 라우터로 연결할수도있다
전세계의 컴퓨터를 연결한것을 인터넷이라고 한다
- ip주소 : 각 데이터들이 갖는 고유한 주소
- a 컴퓨터가 b 컴퓨터에 데이터를 보내기위해서는 b의 ip주소를 알아야한다.
- data앞에 ip주소를 붙인것 > 패킷(==전송단위)
- 수많은 네트워크들의 연결로 이루어지는 inter-network속에서 어딘가에있는 목적지 컴퓨터로 데이터를 전송하기위해 ip주소를 이용해서 길을찾고(routing) 자신 다음의 라우터에게 데이터를 넘겨주는것(forwarding)
- 네트워크 계층에서는 각 노드들을 거칠때마다 라우팅해주는 역할을 담당한다.
- 예를들면 공유기! 공유기는 라우처의 NAT이라는 기능을활성화시킨것이다.
공유기는 하나의 외부 통신선에서 들어오는 요청을 사설마에 연결되어있는 컴퓨터에게 전달해주는 역할을한다.
- 운영체제의 커널에 소프트웨어적으로 구현되어있다.
4계층 transport layer
- 데이터를 받는 수신자는 전세계의 컴퓨터로부터 데이터를 받을수있다.
- 하나의 컴퓨터가 3개의 데이터를 받았고, 그 컴퓨터가 3개의 프로세스가 실행중이라면
- 먼저, 데이터를 받고자하는 프로세스들은 port number를 가져야한다.
- 포트번호는 하나의 컴퓨터에서 동시에 실행되고있는 프로세스들이 서로 겹치지않게 가져야하는 정수값이다.
- 송신자는 데이터를 보낼때 데이터를 받을 수신자 컴퓨터에있는 프로세스의 포트번호를 붙여서 보낸다.
- port번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에까지 데이터가 도달하게하는 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어있다.
end to end의 사용자들이 데이터를 주고받을수 있게하는 계층이다.
대표적으로 TCP, UDP 프로토콜이 있는 계층이다.
TCP프로토콜은 우리가 자주사용하는 프로토콜이다.
TCP의 경우 신뢰성있는 통신을 보장한다. 따라서 데이터가 전달되는 과정에서 여러 스위치 라우터등등을 거치면서 데이터가 잘못 전달되는 현상이나 전달이 안되는 경우 오류제어, 흐름제어등을 통해 신뢰성있는 데이터가 전달될 수 있도록한다.
- TCP는 연결시 3way hand shaking방식으로 목적지와 상호 패킷을 교환하여 연결한다. 연결을 종료할때는 4way hand shaking방식을 사용한다.
UDP 프로토콜의 경우 비 연결형 프로토콜로서 데이터를 빠르게 전달하는데에 초점을 두고있다.
따라서 UDP는 목적지에 데이터가 제대로 전달되었는지조차 확인하지않는다.
비연결을 지향하고 데이터를 전달할때 TCP에비해 오버헤드가 적다.
그래서 신뢰성있는 데이터 전송이 필요할때보다 스트리밍같이 연속적인 특성을 가지고있는 서비스에 사용한다.
5계층 session layer
6계층 presentation layer
- 데이터의 표현의 차이에대한 문제를 해결하는역할을하는 계층이다. 코드간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용계층으로부터 덜어준다.
- 인코딩, 암-복호화 등의 일을 이 계층에서 수행한다.
7계층 application layer
- 사용자 인터페이스
- 사람이 인식하고 다른 계층들과 상호작용 할 수 있도록 사용자에게 보여주는 역할을 한다.
- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
- 대표적으로 http, ftp등의 프로토콜이 응용계층에 속한다.
Application layer
osi 7 vs tcp/ip 5
- 현대의 인터넷은 osi모델이아니라 tcp/ip 모델을 따르고 있다
- tcp/ip 모델도 osi모델과 마찬가지로 네트워크 시스템에 대한 모델이다.!
글의 내용은 아래 유튜브를 보고 참고했다.
이 영상에서 순서에따라 설명을 잘 해줘서 베이스가없는 사람이라면 도움이 많이될것이다!
https://www.youtube.com/watch?v=1pfTxp25MA8