OSI 모델과 TCP/IP 모델
컴퓨터는 데이터를 주고 받는다. 아무렇게나 주고 받으면 서로 이해를 할 수 없을 테니 정해진 절차에 따라 데이터를 주고 받게 된다. 컴퓨터가 데이터를 주고 받는 방식을 규격화한 방법은 두 가지가 있는데, 바로 OSI 모델과 TCP/IP 모델이다.
OSI 모델은 7단계, TCP/IP 모델은 5단계(TCP/IP Updated)로 나눠져있다. OSI 모델을 이해하면 TCP/IP 모델을 이해할 수 있으니, 이 글에서는 OSI 모델을 기준으로 데이터의 수신, 송신 방식을 정리해보고자 한다.
# OSI 모델
- 7단계의 과정을 통해 데이터가 전달됨
- ISO(International Organization for Standardization, 국제표준화기구)에서 제정
단계 | 이름 | 설명 |
7단계 | 응용 계층 | 사용자를 위한 인터페이스, 인터넷 접속 등의 작업 수행 가능 |
6단계 | 표현 계층 | 데이터의 인코딩 및 디코딩이 이루어짐 |
5단계 | 세션 계층 | 네트워크 상의 양쪽 연결을 관리, 연결을 지속시켜줌, 세션을 관리함 |
4단계 | 전송 계층 | 데이터의 신뢰성 확인, 데이터의 포트 번호 지정 |
3단계 | 네트워크 계층 | 주소(IP)를 정하고 경로(Route)를 선택하여 목적지까지 데이터를 전송 |
2단계 | 데이터 링크 계층 | 네트워크 기기 간의 데이터 전송, MAC 주소로 통신 |
1단계 | 물리 계층 | 시스템 간의 물리적 연결, 데이터의 전기적 신호 변환 |
OSI 모델은 7단계로 구성되어 있다. 데이터를 전송하려는 쪽은 7단계부터 1단계 순서로 전송하고, 데이터를 받는 쪽은 1단계부터 7단계 순서로 수신한다. 보통 5, 6단계는 7단계와 같이 묶기 때문에, 이 글에서도 5, 6, 7단계는 하나로 묶어서 설명하려 한다.
# 1계층 : 물리 계층
물리 계층은 0과 1로 이루어진 전기적 신호를 아날로그 신호로 변환하는 과정이라고 할 수 있다.
컴퓨터는 0과 1만 이해한다. 컴퓨터의 데이터는 0과 1로 이루어져 있고, 데이터를 송신, 수신할 때는 0과 1을 전기적 신호로 변환해서 전달한다. 이때의 전기적 신호는 아날로그 신호이다.
데이터를 보내려는 쪽은 0과 1로 이루어진 데이터를 아날로그 신호로 바꾸어 전선으로 흘려보내고, 데이터를 받는 쪽은 아날로그 신호를 다시 0과 1로 해석하여 데이터를 받는다. 이렇게 0과 1의 나열을 주고 받게 해주는 곳을 물리 계층이라고 한다. 이런 전기적 신호의 변환은 컴퓨터의 하드웨어에서 구현된다. 즉, 물리 계층은 컴퓨터의 하드웨어 부분이다.
# 2계층 : 데이터 링크 계층
데이터 링크 계층은 같은 네트워크에 속해 있는 컴퓨터들이 데이터를 주고 받는 과정이라고 할 수 있다.
컴퓨터는 다른 여러 컴퓨터들과 데이터를 주고 받는다. 1번 컴퓨터가 3번 컴퓨터에 데이터를 보내고 싶다고 한다면, 1번 컴퓨터는 3번 컴퓨터를 어떻게 찾는 것일까? 위 상황에서 1번 컴퓨터가 전선으로 데이터를 전송하면 3번을 포함한 모든 컴퓨터가 다 데이터를 받게 된다. 하지만 다른 컴퓨터 말고, 딱 3번 컴퓨터에게만 데이터를 보낼 수는 없을까?
컴퓨터들은 스위치라는 것으로 연결되어 있다. 그리고 이 스위치가 앞서 말한 역할을 해준다. 1번 컴퓨터가 3번 컴퓨터에게 데이터를 전달하고 싶다면, 1번 컴퓨터는 스위치에게 3번 컴퓨터에게 데이터를 전달해달라고 한다. 그럼 스위치는 데이터를 3번 컴퓨터에게만 전달한다. 이는 각 컴퓨터에 주소가 있기 때문에 가능하다. 이 때 사용되는 컴퓨터 주소를 MAC 주소라고 한다.
스위치는 자신과 연결된 컴퓨터들의 MAC 주소를 미리 알아둔다. 그리고 스위치는 데이터의 목적지를 확인하고 해당하는 목적지에게만 데이터를 전송한다. 이 때 같은 스위치로 연결된 컴퓨터들을 같은 네트워크에 속해있다고 표현한다. 그리고 이렇게 같은 네트워크 속에 있는 컴퓨터들이 데이터를 주고 받는 과정을 데이터 링크 계층이라 한다.
# 3계층 : 네트워크 계층
네트워크 계층은 다른 네트워크에 있는 컴퓨터들이 데이터를 주고 받는 과정이라고 할 수 있다.
3계층을 설명하기 전에 잠시 LAN의 개념을 짚고 가자. LAN(Local Area Network)이란 특정 지역을 범위로 하는 네트워크이다. 간단히 말하자면, 지리적으로 한정된 작은 네트워크이다. 예를 들어, 사무실에서 여러 컴퓨터를 사용하는 것이 LAN이다.
2계층은 같은 네트워크에 속해 있는 컴퓨터들의 소통이었다. 즉, LAN에서 데이터를 주고 받는 방식이다. 그렇다면 다른 네트워크에 있는 컴퓨터들이 데이터를 주고 받으려면 어떻게 해야 할까? 라우터라는 장비가 이 역할을 해준다. 라우터는 데이터의 목적지와 경로를 알려준다. 다른 네트워크에 있는 컴퓨터들이 소통할 때는 라우터를 통해서 데이터의 목적지와 경로를 찾고, 전달된다. 이때 사용하는 주소를 IP 주소라고 한다. MAC 주소는 LAN에서만 사용할 수 있기 때문에 다른 네트워크에 데이터를 전달할 때는 IP 주소를 사용한다. 데이터와 IP 헤더를 같이 붙여서 보낸다. IP 헤더에는 많은 내용이 있지만 출발하는 곳의 IP 주소와 도착하는 곳의 IP 주소가 있다는 것만 기억해도 된다. 데이터에 IP 헤더를 붙인 것을 패킷이라고 부른다.
1번 컴퓨터는 라우터에게 패킷을 전송했고, 라우터는 패킷에 적힌 IP를 확인한다. IP를 확인했을 때, 라우터와 본인과 연결된 컴퓨터 중 IP가 일치하는 컴퓨터가 없다면 다른 라우터에게 패킷을 넘겨준다. 이렇게 라우터가 패킷을 넘기고, 넘기고... 이 과정을 반복하여 2번 컴퓨터에 데이터가 도착하게 된다.
즉, 네트워크 계층이란, 여러 네트워크들로 이루어진 인터넷 세상에서 특정 컴퓨터로 데이터를 전송하기 위해 IP 주소로 길을 찾고, 라우터로 데이터를 넘겨주는 것이다. 네트워크 계층의 모듈은 운영체제의 커널에 소프트웨어로 구현되어 있다.
# 4계층 : 전송 계층
전송 계층은 데이터의 신뢰성을 보장하고 데이터의 구체적인 목적지를 지정해주는 과정이라고 할 수 있다.
전송 계층은 두 가지 역할을 한다. 1.데이터의 신뢰성/효율성 보장과 2.데이터의 구체적 목적지 지정이다.
물리 계층, 데이터 링크 계층, 네트워크 계층을 거쳐 데이터가 전송된다. 그러나 이 계층들은 데이터가 손상되거나 유실되는 것을 막아주지는 못한다. 전송 계층이 데이터의 손상과 유실을 막는다. 즉, 데이터의 신뢰성을 보장해준다. 또한 앞선 계층들은 데이터가 어느 컴퓨터에 도착하는지는 알려줘도, 그 도착한 데이터가 컴퓨터의 어느 곳에서 사용되어야 하는지는 알려주지 않았다. 이걸 알려주는 것이 전송 계층이다.
전송 계층의 두 가지 역할을 구체적으로 알아보자.
1. 데이터의 신뢰성/효율성 보장 : TCP와 UDP
전송 계층의 통신 방식은 두 가지가 있다. 첫번째, 데이터의 신뢰성을 보장해주는 TCP 프로토콜, 두번째, 데이터의 효율성을 보장해주는 UDP 프로토콜이다. 목적에 따라 두 방식 중 하나의 방식을 골라 사용한다.
TCP 방식은 데이터를 받는 상대와 계속 확인을 하며 소통한다. 패킷을 단순히 보내는 걸로 끝내지 않고, 잘 보내졌는지 여부를 상대에게 확인하는 것이다. A가 B에게 통신을 원한다는 신호를 보내면(SYN), B는 SYN을 정상적으로 받았다는 신호(SYN, ACK)를 보내고, SYN-ACK 신호를 받은 A가 B에게 ACK 신호를 보내는 과정이다. 이 과정을 3-Way-Handshake라고 한다. TCP는 이렇게 확인하는 과정을 거쳐 데이터의 신뢰성을 보장한다.
반대로, UDP는 따로 확인하는 절차 없이 일방적으로 바로 데이터를 보낸다. 따라서 데이터의 신뢰성을 보장할 수는 없지만 속도가 빠르다. 데이터의 신뢰성이 중요할 때는 TCP 방식을, 데이터의 속도가 중요할 때는 UDP 방식을 사용한다
2. 데이터의 구체적 목적지 지정
데이터가 컴퓨터에 도착하고 난 뒤, 구체적으로 어떤 프로그램에 사용되어야 하는지를 알아야 한다. 이 때 포트 번호를 이용한다. 포트 번호는 구체적인 주소라고 이해하면 된다.
데이터를 보내는 쪽에서 포트 번호를 미리 붙여서 보낸다. 그리고 데이터를 받는 쪽에서 포트 번호를 확인하고 해당 포트 번호로 데이터를 전달한다. 즉, 포트 번호를 사용하여 컴퓨터의 최종 도착지인 프로그램에게 데이터를 전달한다.
즉, 전송 계층을 통해 데이터의 신뢰성/효율성을 보장받고 구체적인 목적지를 알 수 있다.
# 7계층 : 응용 계층 (5, 6단계가 포함됨)
응용 계층은 계층의 최상단에서 사용자와 직접 소통을 하는 계층이다.
데이터를 보내는 쪽에게는 첫 단계, 데이터를 받는 쪽에게는 마지막 단계이다. 예시를 들어보자. 우리가 네이버에 접속하고 싶다면 네이버 서버에게 네이버 화면을 보여달라고 요청해야 한다. 네이버 서버는 우리의 요청을 듣고 네이버 화면 데이터를 우리에게 준다. 우리가 네이버 서버에게 데이터를 달라고 하고, 네이버 서버가 우리에게 네이버 화면 데이터를 주는 과정, 이 과정이 바로 지금까지 설명한 각 계층을 통해 이루어진다.
그렇다면 우리는 "네이버 서버한테 화면 좀 보여달라고 해봐" 라고 누군가에게 말을 해야 한다. 누구에게 말해야 할까? 우리가 네이버를 사용할 때마다 누구에게 이 말을 하고 있을까? 바로 응용 계층이다. 우리가 크롬 브라우저에 네이버 홈페이지를 띄운다고 하면, 크롬이 응용 계층인 것이다. 크롬 주소창에 네이버 주소를 입력할 테니까!
응용 계층에서 사용되는 프로토콜은 HTTP, DNS 등이 있다. 우리(클라이언트)는 네이버 서버에게 HTTP 방식으로 웹 페이지를 요청한다. 이 요청이 응용 계층에서 일어난다. 즉, 우리가 크롬(응용 계층)에 네이버 주소를 입력하면, 응용 계층이 전송 계층에게 그 내용을 전달한다. 그리고 전송 계층은 네트워크 계층에게, 네트워크 계층은 데이터 링크 계층에게, 데이터 링크 계층은 물리 계층에게 전달한다. 그리고 네이버 서버 쪽의 물리 계층이 데이터를 받고, 데이터 링크 계층, 네트워크 계층, 전송 계층을 거쳐 네이버 서버(응용 계층)에 요청 내용이 전달된다.
네트워크의 데이터 송신, 수신을 OSI 모델로 설명하였다. TCP/IP보다 OSI가 개념적으로 잘 정리가 되어있기 때문에 설명은 OSI로 했지만, 실제 산업에서는 주로 TCP/IP 모델이 사용된다. TCP/IP 모델을 OSI 모델과 비교하여 알아보자.
# TCP/IP 모델 (TCP/IP Updated)
TCP/IP 모델은 과거에는 4계층이었으나, 현재는 업데이트된 버전으로 5계층을 사용한다. OSI와 비교해보면 TCP/IP의 5번째 계층이 OSI의 5, 6, 7계층과 동일하다.
OSI 모델의 5, 6, 7단계를 하나의 단계로 묶는다면 TCP/IP Updated 모델과 같다. 따라서 OSI 모델을 이해한다면 현재 산업에서 많이 이용되는 TCP/IP Updated 모델 또한 이해할 수 있다. 위에서 설명했듯 물리 계층, 데이터 링크 계층, 네트워크 계층, 응용 계층 순으로 데이터의 송신, 수신이 일어나며, 우리가 흔히 사용하는 서버 - 클라이언트의 통신도 이와 같은 과정으로 이해할 수 있다.
HTTP가 여기서 나오는구나 아는 단어 나와서 너무 반가움 🤗
참고 자료
책 '모두의 네트워크' 2장 ~ 7장
[10분 테코톡] 🔮 히히의 OSI 7 Layer https://youtu.be/1pfTxp25MA8
'CS > WEB & 네트워크' 카테고리의 다른 글
[네트워크] HTTP (0) | 2023.01.08 |
---|---|
[네트워크] REST API (0) | 2022.12.11 |
[WEB] SPA, MPA와 CSR, SSR, SSG (0) | 2022.11.29 |
[WEB] 브라우저 렌더링과 DOM (0) | 2022.11.09 |
[WEB] 브라우저 저장소 (0) | 2022.11.06 |