본문 바로가기

네트워크

네트워크 계층

훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com

OSI 7 계층 & TCP/IP 5 계층


OSI 7계층 & TCP/IP 5계층

위 그림 중 왼쪽이 OSI 7 계층, 오른쪽이 TCP/IP 5 계층입니다.

 

중요한 것은 왜 이렇게 계층을 나눴는지 이해하는 것이라 생각합니다.

통신이 일어나는 과정이 단계별로 파악할 수 있기 때문에 이렇게 계층을 나눴다고 하는데 그게 무슨 말인지...?

학부 평균 이하 수준에서 생각을 한번 해 보면

C 프로그램을 짜는데, 함수를 만들지 않고 main함수 안에 모든 코드를 넣었다고 생각해보겠습니다.
문제없이 코드를 짰다면 당연히 잘 돌아가기는 하겠지만, 만약 문제가 생겼다고 해보겠습니다.
어디서 문제가 생겼는지 찾기 위해 main함수 전체를 뒤져 수정해야 할 것입니다.
100줄 200줄짜리 코드에서는 가능할지 몰라도 프로그램이 길어질수록 불가능에 가까워질 것입니다.

이럴 때 코드를 함수 단위로 분리해서 모듈화를 한다면? 문제가 생긴 모듈만을 확인하여 수정하면 될 것입니다.

네트워크 계층을 나눈 이유도 이와 마찬가지라고 생각합니다. 계층을 분리하여 모듈화, 계층 간 통신을 위한 인터페이스만 만들어준다면 유지보수 측면에서 굉장히 유리해지겠죠?


OSI vs TCP/IP


그래요. 계층을 나눈 건 알겠는데, 왜 나눠진 모델이 2개나 있는 거죠?

 

가장 먼저 눈에 띄는 차이점은 OSI의 세션, 표현, 응용 계층이 TCP/IP에서는 애플리케이션 계층이라는 이름으로 묶여있다는 것입니다.

다시 말해 TCP/IP는 세션, 표현, 응용 계층의 역할을 애플리케이션에게 모두 넘겨 버리는 것입니다.

그리고 실제로 애플리케이션들은 이런 역할들을 구현하고 있습니다.

그에 따라 세션, 표현, 응용 계층은 Application dependent 한 경향이 있고, 그에 따라 TCP/IP는 애플리케이션이라는 하나의 계층으로 묶어버린 것입니다.

 

그리고 TCP/IP가 OSI 모델보다 먼저 개발되어 상용화되었기 때문에 실질적인 통신에서는 TCP/IP가 보편적으로 사용되고 있다고 합니다. TCP/IP가 상용적 모델이라면, OSI 모델은 개념적인 모델이라는 것입니다.



계층별 프로토콜


OSI 7계층과 계층별 프로토콜

계층별 모듈화를 통해 역할을 나눴으니 당연히 계층별로 담당하고 있는 역할들이 있을 것입니다.

이런 역할들을 수행할 수 있도록 하는 프로토콜도 위 그림처럼 정해져 있습니다.

TCP, IP처럼 친숙한 것들도 있고 잘 모르겠는 것도 있습니다.

이에 대한 내용은 공부하며 차근차근 채워보도록 하겠습니다.



1. 물리 계층 (Physical Layer)


물리 계층은 통신상에 실제로 데이터가 오고 가는 계층입니다. 컴퓨터상에서는 데이터로 표현되던 것들이 실제로 전송이 되려면 전기적 신호로 바뀌어서 가야겠죠? 

 

보내는 측은 데이터를 전기적 신호로 바꾸어 보내고, 받는 측은 전기적 신호를 데이터로 복원하는 일을 합니다.


2. 데이터 링크 계층 (Data Link Layer)


데이터 링크 계층은 물리 계층 바로 위에 얹어진 계층입니다. 

데이터 링크 계층은 두 가지 주요 기능을 수행합니다.

  1. 주소 할당 - 물리 계층으로부터 받은 신호들이 네트워크 상의 장치에 올바르게 전달될 수 있게 해 줍니다.
  2. 오류 감지 -  신호가 전달되는 동안 오류가 포함되는지를 감지합니다.

MAC 주소를 통해 전기적 신호가 올바른 host에 도착할 수 있게 해 주고,

어떤 문제가 생길지 모르는 물리계층을 거쳐 온 전기적 신호들을 체크해주고...

마치 물리계층의 엄마 같습니다.

 

이런 데이터 링크의 대표적 프로토콜로는 이더넷 프로토콜이 있습니다.


3. 네트워크 계층 (Network Layer)


 

일반적인 클라이언트들이 네트워크를 사용하는 것은 WAN을 사용하기 위함일 것입니다.

 

이처럼 LAN을 넘어선 WAN통신을 위해, 네트워크 계층이 존재합니다.

네트워크 계층에서는 대표적으로 IP 프로토콜을 정의하는데요,

이것은 WAN상에서 네트워크 통신을 할 때 주소 같은 역할입니다.

 

전 세계적으로 서울특별시 강남구 **동 하면 다 알고 찾아갈 수 있잖아요?

간단한 예시로 IP가 이런 역할을 하는 것입니다.

 

또한 네트워크 장비에는 라우터라는 것이 있는데,

이 라우터가 네트워크 패킷의 IP주소를 보고 알맞은 쪽으로 전달 전달을 이어나갑니다.


4. 전송 계층 (Transport Layer)


 

TCP(연결 지향), UDP(비연결 지향)와 같은 프로토콜을 정의하는 계층으로,

  1. 오류 복구 및 신뢰성
  2. 흐름 제어

등의 기능을 담당하는 계층입니다.

또한 네트워크 계층에서 올려준 데이터를 어느 애플리케이션으로 보낼지 포트 번호를 설정합니다.

즉, 호스트에서 돌아가는 실제 어플리케이션으로 데이터를 이어주는 역할을 한다고 보시면 됩니다.

대표적으로 잘 알려진 포트번호는

HTTP(80)이 있습니다.

 

위 그림처럼 한 Host에서도 여러 애플리케이션이 돌아가고 있기 때문에 포트 번호가 필요한 것입니다.

우리가 카카오톡 메신저로 보낸 데이터가 상대 호스트의 리그 오브 레전드 애플리케이션으로 가면 안 되겠죠?

 

TCP, UDP는 여기서 한 번에 다루기엔 무리가 있어 다음에 새로운 게시글로 다뤄보겠습니다.


5. 세션(Session), 표현(Presentation), 응용(Application) 계층


위에서 말씀드린 것처럼 세션, 표현, 응용 계층은 애플리케이션 dependent 한 경향이 있기에 하나로 묶어보았습니다.

 

세션 계층에서는 응용 프로그램간 접속을 설정, 유지, 종료 등으로 관리하는 역할을,

 

표현 계층에서는 데이터의 형식 변환이나 암호화, 압축 등을,

 

응용 계층은 말 그대로 응용 프로그램을 뜻합니다.



정리 및 간단한 시나리오


제가 정리한다고 위에 몇 자 끄적여 봤지만, 처음 보신 분들이라면 정말 무슨 소린지 이해하기 힘들 것 같습니다.

 

정말 간단한 예시 하나를 생각해보았습니다.

A와 B가 통신을 하는데, A가 B에게 동영상 파일을 보내고 싶습니다.

 

그러면 

응용 계층 : 동영상 파일 전송 애플리케이션

표현 계층 : 동영상 압축 및 데이터 암호화해서 최대한 효율적으로 보내야지

세션 계층 : 애플리케이션 내부 보안을 통과할 수 있는 인증 체크. 내가 맞다고 알려줘야지

전송 계층 : TCP 통신할 거야

네트워크 계층 : B의 IP가 뭐지

데이터 링크 : B컴퓨터 MAC 주소가 뭐지

물리 계층 : 전기적 신호로 전송


 

'네트워크' 카테고리의 다른 글

TCP 기본  (0) 2021.03.25
바이트 순서 (엔디언)  (0) 2021.03.18
네트워크 주소  (0) 2021.03.18
네트워크 기본  (0) 2021.03.04