본문 바로가기
CS 이론/🛰️ Networking

인터넷을 이해해 보자 : OSI 7 계층? TCP/IP 4계층?

by 개발자 진개미 2022. 10. 27.
반응형

인터넷은 어떻게 동작할까요?

인터넷은 현대사회를 이루는 가장 핵심적인 기술이고, 우리의 문화와 삶을 바꿨지만 사실 본질은 매우 간단합니다.

곰곰이 생각해보면, 우리가 인터넷에서 하는 모든 일은 누군가가 다른 컴퓨터에 올려놓은 데이터를 보는 일입니다.

넷플릭스는 누군가가 넷플릭스 컴퓨터(서버)에 올려놓은 동영상을 보는 것이고,

구글은 누군가가 구글의 컴퓨터(서버)에 올려놓은 정보들의 묶음을 보는 것입니다.

 

근데 이상하다고 느끼실 수도 있습니다. 넷플릭스, 구글은 미국 회사인데, 한국이 미국과 연결되어 있다고?

그렇습니다. 전 세계 바다에는 해저케이블이라고 하는 케이블이 있고, 이 케이블은 전 세계에 있는 컴퓨터를 연결하고 있습니다.

해저케이블이 어디에서 어디로 연결되어 있는지 궁금하시다면 아래 링크에서 확인해 보실 수 있습니다.

 

Submarine Cable Map

Copyright © 2022 TeleGeography

www.submarinecablemap.com

 

어쨌든 중요한 건 컴퓨터와 컴퓨터를 연결하는 '네트워크'의 이해하면 인터넷을 얕게나마 이해할 수 있습니다.

이 네트워크의 통신은 OSI 7 계층이나 TCP/IP 4 계층을 사용해 묘사합니다.

 

더 자세히 알아보기 전에, 왜 계층을 사용해서 인터넷을 이해해야 할까요?


계층이 뭐야? 계층을 사용하는 이유

계층이라는 단어를 들으면 뭔가 나눠져 있고, 서로에게 무관심한 이미지가 떠오르실 겁니다.

'사회적 계층'에서는 이게 나쁜 거지만, 네트워크 계층에서는 나눠져 있고 무관심한 성질이 매우 유용합니다!

 

갑자기 뜬금없지만 우리가 배달 음식을 시키는 과정을 원시인에게 설명해준다고 가정해 보세요.

 

배달음식을 시키는 과정을 간단하게 묘사하면 아래와 같을 겁니다

 

  • 고객은 배달앱을 켜서 식당을 고르고, 메뉴를 고르고, 결제를 합니다
  • 배달앱은 주문 데이터를 받아서 식당에 전달합니다
  • 식당 서빙 직원이나 관리자는 배달앱에서 전달받은 데이터를 보고 특정 메뉴를 요리사에게 요리하라고 합니다
  • 요리사는 요리를 합니다
  • 배달기사는 식당에서 요리를 받아서 고객에게 전달합니다
  • 고객은 문 앞에 있는 음식을 수령합니다

누구나 아는 간단한 상식 같은 일입니다.

그래도 원시인에게 이 모든 개념을 설명하려고 하면 갑자기 막막해집니다.

하지만 그럴 필요가 없습니다. 우리는 한 문장만 이해시키면 됩니다.

배달앱을 켜서 식당을 고르고, 메뉴를 고르고, 결제를 하면 문 앞에 음식이 오니 먹으면 된다

배달이 어떻게 이루어지는지는 복잡하지만, 배달앱이라는 '계층'에서 묘사하면 매우 간단합니다.

그리고 원시인이 현대 생활에 더 익숙해지고 점점 더 많은 '계층'을 설명해 주면 됩니다.

 

이 모든 게 가능한 이유는 각각의 계층끼리 다른 계층이 어떤지 알 필요가 없기 때문입니다.

식당은 배달앱의 원리나 전화기의 원리를 몰라도 어떻게 하든 고객의 주문정보만 알면 됩니다.

배달기사는 음식 메뉴나 식당의 경영철학을 몰라도 배달만 잘하면 됩니다.

 

즉, 각 계층은 각각의 맡은 역할에 집중할 수 있고, 각 계층에서 일하는 방식을 바꿔도 문제가 없습니다. 걸어서 배달했던 배달기사가 오토바이를 사 오토바이로 배달해도 다른 계층에는 영향을 끼치지 않다 '배달'이 완수되는 데는 문제가 없습니다.

 

네트워크 계층도 비슷합니다. 

네트워크 계층은 컴퓨터와 컴퓨터끼리 데이터를 주고받는다라는 목적을 달성하기 위해 각 계층이 서로 다른 역할을 수행합니다.

각 계층은 서로가 서로의 역할을 어떻게 하는지 알 필요가 없습니다.

이 말은, 각 계층에서 자신의 목적을 수행할 더 좋은 기술이 나오면 서로에게 영향을 주지 않고 업그레이드가 가능하다는 것입니다.


TCP/IP 4 계층

TCP/IP 4 계층은 이름에서 알 수 있듯, 네트워크를 크게 4 계층으로 나눕니다.

 

한국어 이름 영어 이름 역할 대표적인 프로토콜
애플리케이션 계층 Application Layer Application의 기능을 위한 데이터 형식과 처리 절차 결정 HTTP, DNS, DHCP, SSL
트렌스포트 계층 Transport Layer 데이터를 적절한 애플리케이션에 배분, 데이터 분할/조립, 신뢰성 확보(TCP의 경우) TCP, UDP
 인터넷 계층 Internet Layer 다른 네트워크들 끼리 데이터 전송 IP, ICMP, ARP
네트워크 계층, 물리 계층 Network Layer, Physical Layer 물리적인 신호 같은 네트워크내에서 전송 Ethernet, Wireless LAN, PPP

 

갑자기 많은 정보로 혼란스러울 수 있지만, 사실 용어만 어렵지 알고 보면 간단합니다.

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

애플리케이션은 흔히 프로그램, 앱, 응용소프트웨어 등으로 불리는 특정 기능을 수행해서 우리의 삶을 편리하게 해 주는 소프트웨어입니다. 각각의 애플리케이션마다 원하는 기능이 다르고, 그에 따라 필요한 정보가 다릅니다.

 

컴퓨터 정보는 본질적으로 0과 1이기 때문에, 모두 똑같은 방식으로 통신을 요청해도 될 거 같지만, 그렇지 않습니다. 어떤 통신 방법, 어떤 약속을 가지냐에 따라 통신의 효율성이나 속도, 보안이 달라지기 때문입니다.

 

예를 들어, 보안이 중요한 정보는 SSL 같은 암호화를 적용하는 Protocol로 보내야 하지만, 그만큼 느립니다. 누구나 볼 수 있는 위키피디아 정보를 SSL Protocol로 통신하는 건 낭비입니다. 용량이 큰 파일은 압축화 알고리즘으로 보내면 좋겠지만, 간단한 HTML 파일은 굳이 그렇게 보낼 필요가 없습니다.

 

즉, 애플리케이션 계층은 각각의 애플리케이션에 적합한 프로토콜(약속)을 선택하는 역할을 합니다.

 

트랜스포트 계층 (Transport Layer)

트랜스포트 계층부터는 실제 데이터를 어떤 방식으로 전송할지 고민해야 합니다.

 

우선, 한 번에 큰 데이터를 전송하면 중간에 실패할 경우 리스크가 너무 크기 때문에 데이터를 나눠서 전송합니다. 당연히 데이터를 나누면 다시 조립해야 하기 때문에 이런 분해/조립을 모두 트랜스포트 계층에서 담당합니다.

 

어찌어찌해서 데이터가 컴퓨터에 도착해도, 하나의 컴퓨터에서도 다양한 애플리케이션이 서로 다른 요청을 합니다. 트랜스포트 계층은 각각의 애플리케이션이 요청한 정보를 배분해 주는 역할도 합니다. exmaple.com:80에서 : 뒤에 있는 번호를 포트번호(Port Number)이라고 하는데, 이 번호에 따라 애플리케이션에 분배해 줄 수 있습니다.

 

여기까지가 UDP라는 프로토콜이 하는 기능입니다. TCP는 여기에 더해 신뢰성을 확보합니다. TCP는 중간에 혹시 도달하지 못한 정보가 있는지 확인하고, 도달하지 못한 정보를 다시 요청합니다.

 

유튜브 같은 곳에서 라이브 방송을 보면 가끔 음질이 안 좋아지거나, 끊기는 경우가 있습니다. 이건 UDP 프로토콜을 사용해서 신뢰성이 확보되지 않았기 때문입니다. 라이브 방송은 조금 끊겨도 빨리 전송하는 실시간성이 더 중요하기 때문에 UDP 프로토콜을 사용합니다.

 

인터넷 계층 (Internet Layer)

인터넷이 성립하려면 가까운 거리의 사람뿐만 아니라 서울-부산, 더 나아가서 해외에까지 연결해야 합니다.

 

인터넷 계층에서 바로 서로 다른 네트워크로 데이터를 전송하는 역할을 담당하고, 이를 라우팅(Routing)이라고 합니다.

 

인터넷 계층에서는 IP 주소를 보고 다른 네트워크를 찾아갑니다. 모든 네트워크에는 라우팅 테이블(Routing Table)이 있어 각각의 네트워크는 다른 네트워크한테 패킷(데이터)이 도착하면, 라우팅 테이블을 보고 "아~ 여기 가려고? 그럼 저기 네트워크로 가서 물어봐"하는 식으로 패킷을 보내줍니다. 이런 과정을 여러 번 거쳐서 결국 목적지의 네트워크에 도달하는 겁니다.

 

이 과정은 언듯 보기에도 복잡해 보여, 오류가 나는 경우가 많습니다. 그래서 IP 프로토콜은 네트워크를 몇 번 거쳐가는지 세서, 일정 횟수가 넘어가면 "아 이 패킷은 길을 잃었구나"라고 판단해 폐기해 버립니다. 이렇게 안 하면 인터넷은 오류가 난 패킷으로 넘쳐서 제대로 동작하지 못할 겁니다.

 네트워크 계층(Network Layer), 물리 계층(Physical Layer)

마지막으로 물리 계층은 우리가 인터넷, 네트워크하면 떠오르는 서버실의 무한히 늘어선 컴퓨터와 뒤엉킨 케이블에 가장 어올리는 계층입니다. 0, 1로 된 정보를 실제로 전송하는 역할을 담당합니다.

 

 

정보를 전송하기 위해 어떤 케이블을 쓸 것인지 같은 무선(Wi-Fi)/유선(Ethernet) 프로토콜 등이 모두 이 계층에 속합니다.

이더넷(Ethernet) 케이블

네트워크 계층의 장비는 크게 2가지로 구성됩니다.

  • 라우터 (Router)
  • 스위치 (Switch)

 

스위치는 여러대의 컴퓨터를 연결하는 장치입니다. 

네트워크는 본질적으로 컴퓨터를 연결시키는 겁니다. 하지만 여러대의 컴퓨터를 직접 연결하면 너무 복잡하고, 관리하기 힘들기 때문에 여러대의 컴퓨터를 스위치에 연결하고, 스위치를 통해 통신하는 겁니다.

 

라우터는 여러 스위치를 연결시키는 장치입니다. 위의 인터넷 프로토콜에서 라우팅(Routing)이 여러 네트워크를 거쳐 목적지 네트워크를 찾아가는 과정이라고 설명했는데, 이를 실현시켜 주는 장치가 바로 라우터입니다.


OSI 7 계층은 또 뭐야...?

OSI 계층은 TCP/IP 계층과 기본적으로는 비슷하지만, 더 세부적으로 나눈 것입니다.

TCP/IP 4 계층에서는 애플리케이션 계층을 하나로 취급했지만 Application, Presentation, Session 계층으로 더 세부적으로 나누고, 네트워크 계층도 Data Link, Physical 계층으로 나눴습니다.

 

계층은 당연히 나누면 나눌수록 정확해지겠지만, 그만큼 복잡하기 때문에 현업에서는 잘 사용되지 않는다고 합니다.


프로그래머가 알아야 할 계층

프로그래머는 주로 애플리케이션 계층에 있는 프로토폴(Protocol)을 사용해서 프로그램을 만드는 사람들이기 때문에 애플리케이션 계층과 주요 프로토콜의 원리를 이해하면 좋습니다.

 

특히, 웹 통신에서 사용되는 HTTP, HTTPS와 서버에게 명령을 안전하게 내리기 위해 사용하는 SSL 프로토콜(Protocol)을 깊게 공부하는 게 좋습니다.

 

각 애플리케이션 특성에 따라 트랜스포트(Transport) 계층의 TCP를 사용해 신뢰성을 보장할지, UDP를 사용해 실시간성을 보장할지 등을 결정할 경우도 있겠지만, 현실적으로 애플리케이션 계층과 주요 프로토콜만 깊게 이해하고, 나머지 계층은 얕게만 알아도 된다고 개인적으로 생각합니다.


각 계층 더 자세히 알아보기

네트워크(Network)/물리(Physical) 계층 자세히 알아보기

인터넷(Internet) 계층 자세히 알아보기

트랜스포트(Transport) 계층 자세히 알아보기

애플리케이션(Application) 계층 자세히 알아보기


요약

  1. 인터넷은 전 세계의 컴퓨터를 연결해 놓은 것이다
  2. 인터넷(네트워크)을 이해하기 위해서는 계층을 사용해야 한다
  3. 네트워크 계층은 크게 TCP/IP 4 계층, OSI 7 계층 2가지가 있다
  4. TCP/IP의 네트워크 계층 : 같은 네트워크 내에서 물리적인 전송 (케이블로 신호 전송)
  5. TCP/IP의 인터넷 계층 : 다른 네트워크들끼리 전송 - 라우팅(어떤 선을 이용하면 가장 빨리 갈까? )
  6. TCP/IP의 전송(트랜스포트) 계층 : 데이터 적절한 프로그램(애플리케이션)에 배분, 데이터 분할/조립
  7. TCP/IP의 애플리케이션 계층 : 이 애플리케이션의 기능을 실행하기 위해 어떤 데이터를 어떤 식으로 요구할 건지 결정

 

반응형

댓글