티스토리 뷰

네트워크

[Network] OSI 7계층이란?

오딩이 2022. 8. 10. 02:13

개발자라면 한 번쯤은 들어봤던 네트워크 OSI 7계층에 대해 알아보겠습니다!

저 같은 경우는 학교에서 네트워크 수업을 피해다녔던 터라,, 정보처리기사에서 처음 접하게 되었습니다.

정처기 공부할 당시에는 무슨 원리인지도 모르고 달달 외워서 시험을 봤었는데,

우연히 테코톡에서 좋은 강의를 찾아서 참고하여 정리해보겠습니다!

 

[참고한 테크톡 유튜브 영상]

https://www.youtube.com/watch?v=1pfTxp25MA8

🔎 OSI 7계층이란?

예전에는 같은 회사의 컴퓨터끼리만 통신이 가능했던 시절이 있습니다.

이러한 문제를 해결하기 위해 서로 다른 컴퓨터 회사들이 자유롭게 통신할 수 있도록 ISO (International Organization for Standardization, 국제표준화기구)에서 OSI 모델이라는 표준 규격을 만들었습니다.

 

이 것이 바로 OSI 7계층입니다.

계층 이름 설명 쉽게 외우기
7 계층 응용 계층 (Application) 애플리케이션 서비스 제공 (A) 앞
6 계층 표현 계층 (Presentation) 문자코드, 압축, 암호화 (P) 페
5 계층 세션 계층 (Session) 통신 방식 결정 (S) 서
4 계층 전송 계층 (Transport) 신뢰성 있는 통신 구현 (T) 터지
3 계층 네트워크 계층 (Network) 다른 네트워크와 통신하기 위한 IP주소 결정 (N) 니
2 계층 데이터링크 계층 (Data Link) 물리 주소 결정 (D) 뒤에서 
1 계층 물리 계층 (Physical Layer) 물리적인 연결과 전기 신호 변환 (P) 피가난다

 

❓ 왜 나눴을까?

그렇다면 왜 이렇게 나눴을까요?

이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문입니다.

 

흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉬우며,

7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고칠 수 있습니다.

 

 

📢 어떻게 통신?

두 대의 컴퓨터가 데이터를 통신하는 방법은 다음과 같습니다.

우선 데이터를 송신하는 쪽에서는 7계층인 응용계층부터 시작합니다.

송신 측에서 7계층부터 1계층까지 거친 뒤, 수신하는 쪽에서 1계층부터 다시 7계층을 거쳐 데이터가 전송됩니다.

 

제가 만든 예시는 아니지만, 참고한 문서에서 OSI7계층을 아주 쉽게 예시를 든 것을 발견했습니다!

 

카카오톡에 광고 문자는 어떻게 오는 것인가 과정을 살펴보면

- 송신자는 광고 문자를 1) 카카오톡에서 작성한다.

- 내부적으로 카카오톡에서 2) 광고 문자를 포장한다.

- 광고 문자가 서로 3) 주고받는 형태인지 일방적 통보인지 정한다.

- 상대편 4) 카카오톡에 전송된다고 세팅한다.

- 5) 내 핸드폰에 날아온다고 세팅한다.

- 6) 내 핸드폰에 무사히 전달될 수 있도록 연결해준다.

- 7) 전파를 통해 광고 문자를 송신한다.

 

그럼 OSI 7계층을 각 단계별로 더 자세히 알아보겠습니다.

 

1계층 : 물리계층 (Physical Layer)

물리계층은 시스템끼리 물리적인 연결을 하며, 전기 신호를 변환, 제어합니다.

물리계층은 전송하고자 하는 데이터를 전기신호로 바꾸어 상태 컴퓨터에게 전송하는 일을 합니다.

즉, 인코딩과 디코딩이 일어나는 단계입니다.

원본 데이터를 아날로그 신호로 인코딩하고, 아날로그 신호를 받아 원본 데이터로 디코딩하는 과정을 거칩니다.

이 과정에서는 단지 데이터를 전달하기만 하고, 데이터가 무엇인지, 어떤 에러가 있는지 등의 기능은 전혀 관여하지 않습니다.

 

1계층의 모듈은 하드웨어적으로 구현되어 있습니다.

따라서 이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브 등이 있습니다.

 

💡 정리 : 1계층은 원본 데이터를 인코딩, 디코딩을 거쳐 전달합니다. 오로지 데이터를 전달하는 목적만 가지고 있습니다.

 

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

1계층 물리계층만 가지고는 단지 컴퓨터 1대와 나머지 1대만 연결할 수 있습니다.

만약 1대의 컴퓨터가 여러 대의 컴퓨터에 데이터를 전송하고 싶다면 여러 개의 전선을 연결하면 가능합니다.

하지만 이 방식은 비용도 많이 들고, 매우 비효율적입니다.

따라서 데이터링크 계층에서는 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈을 정의합니다.

즉, 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여, 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 합니다.

 

이 계층에서는 맥 주소를 가지고 통신하게 됩니다.

이 계층에서 전송되는 단위를 프레임이라고 하고, 대표적인 장비로는 브릿지, 스위치 등이 있습니다.

즉, 브릿지나 스위치를 통해 맥 주소를 가지고 물리계층에서 받은 정보를 전달합니다.

 

💡 정리 : 2계층은 두 지점 간의 신뢰성 있는 전송을 포장하며, 맥 주소를 통해 주소를 할당하고, 오류를 감지합니다.

 

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

수많은 네트워크들이 연결되어있는 인터넷 환경에서(internetworking) 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해

IP주소를 이용해서 길을 찾고(Routing), 자신의 다음의 라우터에게 데이터를 넘겨주는 것을 네트워크 계층이라고 합니다.

즉, 경로를 선택하고 주소를 정하고, 경로에 따라 패킷을 전달해 주는 것입니다.

 

이와 같이 네트워크 계층은 인터네트워킹, 세그멘테이션, 라우팅, 흐름 제어 등을 수행합니다.

이러한 네트워크 계층에는 라우터 장비를 사용합니다.

 

💡 정리 : 3계층은 주소(IP)를 정하고, 경로(Route)를 선택하고, 패킷을 전달합니다.

 

4계층 : 전송 계층 (Transport Layer)

이제 인터넷 상의 모든 컴퓨터가 서로와 통신할 수 있게 되었습니다.

데이터를 받는 수신자는 전 세계의 컴퓨터로부터 데이터를 받을 것입니다.

그런데, 어떤 데이터를 무슨 프로세스에게 줘야 할지 컴퓨터는 모릅니다.

따라서 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보냅니다. (ex. :8080, :8081)

즉, 전송 계층이란 포트 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈입니다.

 

전송계층은 양 끝단(End to End)의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해줘서 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줍니다.

전송계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)입니다.

즉, 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것입니다.

 

전송계층에서 사용되는 장비는 게이트웨이이고, 프로토콜은 TCP와 UDP 등이 있으며, 전송 단위는 세그먼트입니다.

 

💡 정리 : 4계층은 서비스를 구분하고 데이터의 전송 방식을 담당하는 계층입니다.

 

5계층 : 세션 계층 (Session Layer)

세션 계층은 데이터가 통신하기 위한 논리적인 연결을 말합니다.

하지만 4계층에서도 연결을 맺고 종료할 수 있기 때문에 우리가 어느 계층에서 통신이 끊어졌나 판단하기에는 한계가 있습니다.

그러므로 전송 계층까지와는 무관하게 세션 계층부터는 응용 프로그램 관점에서 보아야 합니다.

 

세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다.

동시 송수신 방식(통화), 반이중 방식(무전기), 전이중 방식(우편)의 통신과 함께 통신을 하기 위한 세션을 확인하고 유지하고 중단합니다.

 

또한 세션계층은 TCP/IP 세션을 만들고 없애는 책임을 집니다.

세션 계층의 프로토콜은 SSH, TLS 등이 있으며, 전송 단위는 데이터입니다.

 

💡 정리 : 5계층은 응용 프로세스가 통신을 관리하기 위한 방법을 정의하고,  세션 설정, 유지, 종료, 전송 중단 시 복구 등의 기능을 담당합니다.

 

6계층 : 표현 계층 (Presentation Layer)

표현 계층은 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화합니다.

코드 간의 번역을 담당해서 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줍니다.

예를 들면, EBCDIC로 인코딩 된 문서 파일을 ASCII로 인코딩 된 파일로 바꿔주거나, 해당 데이터가 TEXT인지, 그림인지, GIF인지, JPG인지 등의 구분을 하는 역할을 맡고 있습니다.

 

전송 단위는 message입니다.

 

💡 정리 : 6계층은 사용자의 명령어를 완성하고, 결과를 표현하며 포장, 압축, 암호화를 진행합니다.

7계층 : 응용 계층 (Application Layer)

응용 계층은 최종 목적지로, 사용자에게 보이는 부분입니다.

즉, 최종 사용자에게 가장 가까운 계층으로 인터페이스 역할을 합니다.

응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행합니다.(응용 프로세스 간의 정보 교환 담당)

구글 크롬, 사파리, 인터넷 익스플로러 같은 웹 브라우저부터 여러 응용 프로그램이 대표적입니다.

전송 단위는 message이며, 프로토콜은 HTTP, FTP, SMTP, POP3, IMAP, Talnet 등이 있습니다.

 

💡 정리 : 7계층은 사용자와 가장 밀접한 계층으로, 네트워크 소프트웨어의 UI 부분과 사용자의 입출력 부분을 담당합니다.

 


🙄 TCP / IP 모델

두둥,, 반전,,

사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있습니다.

TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델인데요, 

현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP모델과의 시장 점유 싸움에서 졌기 때문입니다.

TCP/IP 모델도 업데이트를 진행했는데요, 다음 표를 보시면 업데이트된 TCP/IP 모델이 오히려 OSI 7계층과 좀 더 비슷해진 모습을 볼 수 있습니다.

OSI Layer 7 Model TCP/IP Original TCP/IP Updated
Application Layer Application Layer Application Layer
Presentation Layer
Session Layer
Transport Layer Transport Layer Transport Layer
Network Layer Internet Layer Internet Layer
Data Link Layer Link Network Interface
Physical Layer x

OSI모델과 TCP/IP 모델을 비교하자면

TCP/IP 프로토콜이 OSI모델보다 먼저 개발되었지만, TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수한 반면에, OSI모델은 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되었습니다.

따라서 OSI모델은 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되고, TCP/IP 프로토콜은 실질적인 통신으로 사용되고 있습니다.

 

 

 

 

 

참고 : 

https://devjounal.tistory.com/37, https://shlee0882.tistory.com/110, https://losskatsu.github.io/os-kernel/network-basic01/#1-osi-7%EA%B3%84%EC%B8%B5%EC%9D%B4%EB%9E%80

댓글
공지사항
최근에 올라온 글