OSI 7계층이란 무엇일까?
OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 표준 모델이다.
7 Layer에서 알 수 있듯 1계층 ~ 7계층으로 구성되어 있다.
하지만 나를 포함한 네트워크를 잘 모르는 사람들은 도대체 7계층이 뭐지..? 싶은 생각이 든다. 그래서 나도 공부할 겸 테코톡 히히님의 강의를 참고해 OSI 7계층과 TCP/IP 4계층에 대해서 정리해볼까 한다.
📝 1계층 - 물리 계층(Physical Layer)
두 대의 컴퓨터가 통신하려면 어떻게 해야될까? 먼저, 모든 파일과 프로그램은 0과 1의 나열이라는 말을 들어본 적이 있을 것이다. 그렇기 때문에 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다.
전선을 통해 컴퓨터들이 연결되어 있고, 서로 0과 1을 주고 받을 수 있다면 모든 파일과 프로그램들을 주고 받을 수 있다.
하지만 이러한 간단한 과정으로는 제대로 된 통신이 되기 어렵다.
예를 들어 전송한 데이터는 1~10 Hz의 전자기파를 가지고, 전선은 5~8 Hz만 통과시킬 수 있다고 한다면 5~8 Hz를 제외한 신호들은 전송되지 않을 것이다. 수직선과 수평선이 있는 전자기파는 항상 0 ~ 무한대 Hz의 주파수 범위를 가지고 있기 때문에 hz의 범위를 충족시킬 수 있는 전선은 없다. 그렇다면 이 신호를 어떻게 전송해야 할까?
데이터를 아날로그 신호로 바꿔서 전송해야한다. 앞서 말했듯 컴퓨터는 0과1로 이루어져 있기 때문에 0101 0101을 보내고 싶다면 아날로그 신호로 바꿔서 전선으로 내보내고 수신측에서는 아날로그 신호로 받은 데이터를 해석해서 0101 0101을 얻으면 된다. 사실 1계층의 Physical Layer 모듈은 우리가 흔히 아는 칩의 형태로 하드웨어적으로 구현되어 있다.
1계층 물리계층에 대해서 간단하게 요약하자면 다음과 같다
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보낸다 (Encoding)
- 아날로그 신호가 들어오면 0과 1의 나열로 해석한다 (Decoding)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈 (module)
📝 2계층 - 데이터 링크 계층(Data-Link Layer)
데이터 링크 계층을 정리하기에 앞서 우리는 1계층에서 단 두대의 컴퓨터가 통신하는 과정을 살펴봤다. 하지만 여러 대의 컴퓨터가 통신하려면 어떻게 해야될까?
이와 같이 모든 컴퓨터를 전선으로 연결하면 되지만, 이는 전선도 많이 필요하게 되고 꽂을 구멍도 많이 필요하게 되어 비용 측면에서 비효율적이다. 그렇기 때문에 효율성 측면에서 전선 하나를 가지고 여러 대의 컴퓨터와 통신할 방법이 필요하다.
그래서 가운데에 허브를 두고 모든 선을 연결시킨다면 각각의 컴퓨터와 연결할 필요성이 없어지게 되고 이전의 방식보다는 효율적으로 데이터를 전송할 수 있게 된다. 하지만 예림이가 혜림이에게만 데이터를 보내고자 할 때 다른 두 대의 컴퓨터에도 연결이 되어 있기 때문에 예림이가 보낸 데이터를 읽을 수 있게 된다. 그렇기 때문에 데이터를 전송할 때, 데이터를 받을 목적지를 확인시켜줄 수 있어야 한다.
위와 같이 예림이와 혜림이가 동일 상자에 속해있지 않다면 상자와 상자를 통신이 가능하게 해주어야 하는데 이를 라우터라고 한다. 이 초록색 상자는 우리가 잘 알고 있는 공유기에 해당된다.
위와 같은 방식으로 우리나라와 일본, 미국 등 세계 모든 나라와 통신이 가능하게 되는데 이렇게 계층구조로 연결되어 있는 것을 인터넷이라고 한다. 하지만 여기에서도 문제가 발생하게 된다. 모든 컴퓨터들이 동시에 데이터를 보내기 때문에 그 데이터를 잘 처리할 수 있어야 한다.
이와 같이 0과 1로 이루어진 비트열이 마구잡이로 들어오게 된다면, 어디가 시작이고 어디가 끝인지 모르기 때문에 시작과 끝의 약속이 필요하게 된다. 예를 들어서 시작은 1111이고 끝은 0000이라고 약속하게 된다면
여러 데이터들이 들어와도 위와 같이 데이터를 구분할 수 있게 된다.
2계층 데이터 링크 계층에 대해서 간단하게 요약하자면 다음과 같다
- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈이 Data-link Layer
- 예시에서 처럼 시작의 1111과 0000으로 감싼 데이터 Framing 은 Data-link Layer에 속하는 작업들 중 하나
📝 3계층 - 네트워크 계층(Network Layer)
앞서서 말했듯, A에서 B에게 데이터를 전송하려면 목적지에 대한 정보가 있어야 하며, 각 컴퓨터들이 갖는 고유한 목적지 주소를 IP라고 한다. A에서 보낸 데이터는 '가' 라우터에게 보내지고 '가'는 목적지에 해당하는 컴퓨터를 확인한다. '가' 내에서는 없으니 '마'로 전송하게 되고 '마' 또한 자신과 연결된 라우터에 목적지 주소를 확인한다. 이런 과정을 반복해 목적지 주소에 해당하는 'B'에게 데이터가 전송되게 된다.
3계층 네트워크 계층에 대해서 간단하게 요약하자면 다음과 같다
- 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서 목적지 컴퓨터로 데이터를 전송하는 과정
- IP 주소를 이용해서 길을 찾고 (routing) 자신 다음의 라우터에게 데이터를 넘겨주는 것 (forwarding)
📝 4계층 - 전송 계층(Transport Layer)
3계의 계층을 통해 모든 컴퓨터들은 데이터를 받을 수 있게 됐다. 하지만 데이터를 받는 컴퓨터에는 여러개의 카카오톡, 배달의 민족, 네이버 등 여러 개의 프로세스가 실행되고 있다. 받은 데이터가 컴퓨터 내에서 어떤 프로세스로 수신되어야 하는지도 컨트롤 해줄 필요가 있다. 그렇기 때문에 데이터를 받고자 하는 프로세스들은 포트 번호(Port Number)이라는 것을 가져야 한다. 포트 번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값이다.
4계층 전송 계층에 대해서 간단하게 요약하자면 다음과 같다
- Port 번호를 사용해 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈
📝 7계층 - 응용 계층(Application Layer) + [5계층 - 세션 계층, 6계층 - 표현 계층]
사실 OSI 7계층은 국제 표준화 기구(ISO)에서 정의한 표준 모델일 뿐 현대의 인터넷은 OSI 7계층 모델이 아니라 TCP/IP 4계층 모델을 따르고 있다. 현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문이다. OSI 7계층과 TCP/IP 모델을 살펴보면 5, 6, 7 의 과정이 한 과정으로 합쳐져 있는 것을 볼 수 있다.
TCP/IP 소켓 프로그래밍
-> 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다. 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로 만들어서 동작을 시킬 수 있다. TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다. 즉, 누구든 자신만의 Application Layer 프로토콜을 만들 수 있다. 대표적인 Application Layer 프로토콜인 HTTP로 인코딩 & 디코딩을 살펴보면
header, body, request, response, status code 등이 있다.
최종적으로 Application Layer를 통해서 데이터를 전송하는 서버 컴퓨터(또는 데이터를 받는 클라이언트 컴퓨터)와 데이터를 받는 클라이언트 컴퓨터(또는 데이터를 받는 서버 컴퓨터)가 정상적인 데이터를 받을 수 있게 된다.
전체계층에 대해서 간단하게 요약하자면 다음과 같다
- 1~2단계 계층은 하드웨어적으로 구현되어 있고, 3~7단계 게층은 소프트웨어적으로 구현되어 있다.
- 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.
- OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것이다.
참고
https://www.youtube.com/watch?v=1pfTxp25MA8&t=795s
'Computer Science' 카테고리의 다른 글
네트워크 라우터 개념(Router) (0) | 2023.01.03 |
---|---|
동기와 비동기 개념과 장단점 (0) | 2022.12.30 |
프로토콜(Protocol)의 개념, 요소, 특징, 계층 구성 (2) | 2022.12.29 |
마이크로서비스 아키텍처(MSA)란? (0) | 2022.12.29 |
객체지향 / 절차지향 프로그래밍이란? (0) | 2022.12.27 |