CS/Network

[네트워크] OSI 7 layer

hectick 2023. 5. 28. 15:56

 

OSI (Open Systems Interconnection) 7 계층은 통신에서 사용되는 표준 구조이다. 이 구조는 통신 시스템을 계층적으로 분할하여 생각하고 설계할 수 있도록 돕는다. 각 계층은 특정 기능을 수행하며, 이러한 계층화된 구조를 통해 통신 문제를 나누어서 이해하고 해결할 수 있다.

 

상위 계층에서는 하위 계층에서 특정 기능이 제공된다고 가정하고, 그 특정 기능에 대한 문제를 푸는 것에서 해방된다. 이로써 상위 계층에서는 자신이 제공하는 기능에 대한 문제를 해결하는 데 집중할 수 있게 된다. 상위 계층은 하위 계층이 제공하는 기능을 이용해서 다른 상위 계층에게 서비스를 제공한다. 

 

OSI 7 계층 구조

  1. 물리 계층 : 물리적인 신호 교환과 관련된 사항 담당
  2. 링크 계층 : 하나의 링크로 연결된 노드 사이의 비트 묶음(프레임) 교환
  3. 네트워크 계층 : 네트워크를 통해 연결된 호스트(단말) 사이의 데이터(패킷) 교환
  4. 전송 계층 : 통신 애플리케이션 사이의 신뢰성 있는 메시지 교환 (end-to-end reliable data transfer)
  5. 세션 계층 : 대화 패턴과 관련된 사항 담당
  6. 표현 계층 : 데이터 표현 방법과 관련된 사항 담당
  7. 애플리케이션 계층 : 애플리케이션 자체와 관련된 사항 담당

 

물리 계층(Physical Layer)

 

물리 계층 아래에는 다른 계층이 없다. 그래서 해방될 기능이 존재하지 않는다. 자기가 다 풀어야 한단 뜻이다.

 

일단 두 컴퓨터가 통신하기 위해서 0과 1이라는 비트가 왔다갔다 해야한다. 하지만 전선으로 이 비트들을 왔다갔다 하기 위해서는 0과 1이라는 전기 신호를 아날로그 신호로 변환(인코딩)해서 송신하고, 아날로그 신호를 전기 신호로 변환(디코딩)해서 해석하는 과정이 필요하다. 물리 계층은 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해준다.

 

이렇게 됨으로써, 2계층인 링크 계층 부터는 신호 교환이라는 기능에서 해방될 수 있다.

 

 

링크 계층(Data Link Layer)

 

제일 간단한 형태, 즉 링크 하나로 직접 연결된 형태의 컴퓨터 사이에서 "비트의 묶음"을 교환하는 것을 담당한다. 이때의 묶음을 관행적으로 "프레임(frame)"이라고 한다. (이 프레임을 블록, 세그먼트 등등 다른 단어와 혼용해 쓰면 안된다. 그럼 사람들이 다른 계층에 대해 이야기하는 줄 착각할 수 있다. 꼭 프레임이라는 단어를 써야 한다.) 링크 계층은 프레임을 이용하여 0과 1의 나열에서, 원본 데이터의 처음과 끝을 판단할 수 있도록 도와준다.

 

 

네트워크 계층(Network Layer)

 

일반적으로는 네트워크를 통해 통신을 한다. 네트워크에서의 주체는 송신자와 수신자이다. 호스트와 호스트, 즉 두 단말기 사이에 똑같이 비트 묶음을 보내는 것이다. 3계층에서는 이 비트 묶음을 프레임이 아닌 패킷이라고 한다.

 

네트워크에서 송신자로부터 수신자까지의 사이의 길찾기를 담당하는 게 3계층이 하는 일이다. 그렇다면 자연스레 출발지 주소, 도착지 주소가 필요하게 된다. 따라서 송신자는 패킷에 IP 주소라는 것을 붙여야 한다. 그리고 여기 붙여진 IP 주소를 이용해 다음 컴퓨터로, 또 다음 컴퓨터로 패킷이 이동하며 결국에는 수신자의 컴퓨터에 패킷이 도착하게 된다. (우체국에서 우편을 부치고, 보내고, 받는 과정과 유사하게 생각할 수 있다.)

 

 

전송 계층(Transport Layer)

 

3계층까지의 기능으로, 송신자의 컴퓨터에서 수신자의 컴퓨터로 패킷을 보내는 것이 해결되었다. 하지만 요즘은 컴퓨터 기기에서 통신을 하나만 하는게 아니라 여러개 하기도 한다. A가 B에게 보내달라 했는데 B가 애플리케이션을 여러개 쓰고 있을 수 있다. 예를 들어 카카오톡도 켜놓고, 유튜브도 보고 있을 수 있다.

 

따라서 4계층에서의 주체는 호스트가 아니라 통신 애플리케이션이 된다. 통신 애플리케이션을 구분하기 위해서 port 번호가 사용된다.

port 번호: 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값 

 

또한, A에서 B까지 가는 사이에 장애를 완벽하게 극복할 수도 없다. 그래서 최종 목적지 애플리케이션까지 전달하면서, 그 과정 중에 에러날 수 있는 것은 완벽하게 해결하는 계층이 필요하다. 그게 4계층 전송 계층이다.

 

키워드는 end-to-end reliable data transfer이다. 여기서 end라는 것은 아래 그림처럼 호스트와 애플리케이션이 붙는 지점이다. 그림이 거지같지만 A, B가 호스트고, 거기에 얇은 실선으로 붙어있는 동그라미가 애플리케이션이다.

end-to-end에서 볼 수 있듯이, 종단 간의 통신이다. 그렇기 때문에 4계층 부터는 출발지와 목적지 사이에 있는 다른 단말들에 존재해서는 안된다. 만약 존재한다면... 그것은 마치 우체국 아저씨가 내 편지를 뜯어서 보는 것과 같다. 내가 할일이 있나? 하면서..

 

 

세션 계층(Session Layer) & 표현 계층(Presentation Layer)

 

4계층에서 바로 7계층으로 가는게 불안해서 만들어진 계층이 5, 6계층인 세션계층, 표현계층이다. 하지만 현실세계에서는 세션 계층, 표현 계층이 꼭 필요하지 않은 경우가 많다.

 

 

애플리케이션 계층(Application Layer)

 

애플리케이션의 수행과 관련된 계층이다.

 

 

'CS > Network' 카테고리의 다른 글

[네트워크] UDP(User Datagram Protocol)  (0) 2023.06.16
[네트워크] Network edge  (0) 2022.03.11
[네트워크] What is the Internet?  (0) 2022.03.11
[네트워크] Life of a web request  (4) 2022.03.10