🌍 컴퓨터 네트워크란

컴퓨터 네트워크에 대해 ISO(국제 표준화 기구)에서는 다음과 같이 정의하고 있다.

“컴퓨터 네트워크는 둘 이상의 컴퓨터 시스템이 데이터 및 자원을 교환하기 위해 연결된 통신 시스템의 집합이며, 이것은 데이터 공유, 통신 및 협력을 가능하게 합니다.”

쉽게 말해 컴퓨터 네트워크는 여러 컴퓨터가 연결되어 데이터를 공유하고 주고받을 수 있는 시스템이다. 이를 통해 파일을 공유하거나 이메일, 협업 등 다양한 활동이 가능하게 되는 것이다.

🎁 컴퓨터 네트워크에서 데이터는 어떻게 주고받을까?

간단하게 데이터는 네트워크를 통해 패킷이라는 단위로 쪼개져 전송되고, 목적지에서 다시 재조립되어 사용된다. 좀 더 자세하게 살펴보자.

  1. 송신자에서 데이터 생성
    • 데이터 전송 과정은 데이터의 생성으로 시작된다. 이 데이터는 파일, 텍스트, 이미지, 비디오 등 여러 형식이 될 수 있다.
    • 이후 데이터는 디지털 신호로 변환된다.
  2. 송신자에서 패킷 생성
    • 데이터는 네트워크를 통해 전송될 수 있는 크기로 나뉘어진다. 이 분할된 작은 데이터 조각의 단위를 패킷이라 한다.
    • 패킷은 고유한 식별자, 송신자와 수신자의 주소(출발지와 목적지), 데이터의 일부분, 오류 검출을 위한 체크섬 등의 정보를 포함한다.
  3. 인터넷에서 라우팅
    • 이후 패킷은 송신자의 라우터를 통해 각각 인터넷으로 전송된다. 라우터는 패킷의 목적지 주소를 확인하고, 다음 라우터로 패킷을 전송한다.
    • 이 과정에서 패킷의 경로는 라우터에 의해 최적의 경로를 탐색하여 동적으로 결정하고 전달한다.
  4. 패킷 전송
    • 패킷은 네트워크를 통해 전송된다. 이 때 각 패킷은 다른 패킷과 독립적으로 전송되며, 도착 순서가 보장되지 않을 수 있다.
  5. 수신자에서 패킷 수신 및 디코딩
    • 목적지에 도착한 패킷은 다시 원래의 데이터로 재조립된다(디코딩). 이 과정은 패킷 헤더에서 정보를 추출하고, 데이터를 순서대로 재조립한 뒤 사용자에게 표시하거나 저장한다.

🗄️ 네트워크를 구성하는 요소

네트워크를 구성하는 네트워크 기기로는 주로 라우터, 레이어2 스위치, 그리고 레이어3 스위치가 있다. 이 기기들은 모두 데이터를 전송하는데 각각의 차이는 뭘까?

라우터

라우터는 네트워크에서 데이터 패킷을 전달하고 경로를 선택하는 장비이다. 이름에서도 보이다시피 라우팅 기능과 네트워크 트래픽 포워딩 기능을 제공한다. 라우터는 L3 네트워크 계층에서 작동하며, 라우터가 라우팅을 하는 목적은 네트워크를 다른 네트워크로 연결하기 위함이다. 목적지를 찾아가기 위해서 IP 주소를 사용하고, 패킷을 목적지로 보내기 위한 최적의 경로를 결정한다. 주로 외부 네트워크인 인터넷과 내부 네트워크 간의 트래픽을 관리하며, 보안 및 방화멱 역할도 수행한다.

스위치

스위치 는 네트워크에서 로컬 트래픽을 관리하고 데이터를 전달하는 장비이다. 따라서 스위치 역시 전송된 패킷을 받아 다시 내보내는 역할을 한다. 하지만 패킷이 도달해야 하는 기기로 이어지는 물리적 포트를 통해서만 보낸다. 스위치는 L2 데이터 링크 계층에서 작동하며, 로컬 네트워크 내에서 로컬 기기(컴퓨터, 서버, 프린터 등) 간의 효율적인 데이터 전송을 지원하기 위함이다. MAC 주소를 사용하여 데이터를 올바른 디바이스로 전송하며, 패킷을 스위치된 포트로 전달한다.

image
출처: https://m.blog.naver.com/chlalsdud61/220744988172

패킷이 인터넷에 이르기까지 일반적으로 거치는 경로는 기기 -> 허브 -> 스위치 -> 라우터 -> 인터넷 순이다. 기기는 스위치를 통해 로컬로 연결되고 네트워크는 라우터를 통해 다른 네트워크와 연결된다.

🤝 네트워크 프로토콜?

우리가 대화를 하기 위해서 언어가 필요하듯 컴퓨터 통신에서는 네트워크 아키텍처가 필요하다. 또한 언어 안에 문법과 발음 등의 규칙이 있듯, 네트워크 아키텍처에는 주소나 데이터 형식, 통신 절차 등의 규칙이 필요하다. 이러한 통신에 필요한 규칙을 프로토콜이라 한다. 즉, 송신자와 수신자 간의 통신 규칙을 표준화한 것이 프로토콜이며, 이 프로토콜을 모아놓은 집합이 프로토콜 스택(네트워크 아키텍처, 프로토콜 스위트)이다.

🥞 프로토콜 스택

네트워크 아키텍처는 프로토콜 스택, 또는 프로토콜 스위트로도 불린다. 정확히 말해 ‘스위트’는 통신 프로토콜의 정의이고 ‘스택’은 이들의 구현체이다. 대표적인 프로토콜 스택으로 OSI 7 Layer와 TCP/IP 모델이 있다. OSI 표준 모델은 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면, 실질적인 통신을 설명할 땐 TCP/IP 모델을 주로 사용한다.

OSI 7 Layer

OSI 7 Layer는 네트워크에서 통신이 일어나는 과정을 프로토콜의 기능을 중심으로 7단계로 정의한 국제 통신 표준 규약이다. 국제표준화기구인 ISO에서 네트워크 간의 호환을 위해 OSI 7 계층이라는 표준 네트워크 모델을 만들었다.

image
출처: https://joonfluence.tistory.com/96

물리 계층 (Physical layer)

실제 장치를 연결하기 위한 전기적, 물리적 세부 사항을 정의한 계층. 이 계층에서는 단지 데이터를 0과 1의 비트로 변환해서 주고 받는 기능만 한다. 대표적인 장비로는 통신 케이블, 허브 등이 있다.

물리 계층에서 받은 데이터를 물리적 매체에 담아 전달하는 계층. 브릿지나 스위치를 통해 MAC 주소를 가지고 물리적인 네트워크 사이에서 데이터를 전송한다. 대표적인 예로는 이더넷이 있고, 데이터 전송 단위는 Frame이다.

네트워크 계층 (Network layer)

목적지까지 가장 안전하고 빠른 경로를 찾아 데이터를 전달하는 계층. IP 주소를 정하고 -> 라우터를 통해 경로를 선택(스위칭)한 뒤 -> 경로에 따라 패킷 데이터를 전달한다. 이를 라우팅이라 한다. 데이터 전송 단위는 패킷이다.

전송 계층 (Transport layer)

통신을 활성화하기 위한 계층이며 서비스를 구분하고 데이터의 전송 방식을 담당한다. 또한 데이터 전송의 신뢰성을 보장하기 위한 계층으로, 송신 측에서 수신 측으로 패킷이 정상적으로 전달되었는지 확인하는 역할을 수행한다. 보통 TCP 프로토콜을 사용하며, 포트를 열어두어 응용 프로그램이 전송할 수 있도록 제공해준다. 이를 통해 양 끝단(End to end)의 사용자들이 데이터를 주고 받을 수 있다. 데이터 전송 단위는 세그먼트이다.

세션 계층 (Session layer)

응용 프로그램 간의 연결을 지원하는 계층으로 통신 시스템 사용자간의 연결을 유지, 설정 및 종료한다. 다중 프로세스 간의 대화를 제어하며 세션 복구 및 동기화를 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.

표현 계층 (Presentation layer)

데이터의 변환 작업을 담당하는 계층. 응용 계층으로 주고받는 데이터를 응용 계층에서 이해할 수 있도록 맞추어 인코딩 및 디코딩 등의 변환 작업이 이루어진다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.

응용 계층 (Application layer)

사용자 인터페이스를 제공하는 계층. 송수신측 사이에 주고 받는 서비스에 따라 프로토콜이 달라진다. 예를 들어 클라이언트가 HTML 문서를 요청했다면 HTTP 프로토콜이 사용되고, 요청하는 정보가 메일이나 파일이라면 각각 SMTP, FTP 프로토콜이 사용된다.

OSI 모델의 데이터 전송 과정

image
출처: https://joonfluence.tistory.com/96

TCP/IP 모델

TCP/IP는 TCP와 IP를 중심으로 하는 프로토콜의 집합으로, 우리가 인터넷에서 사용하는 표준 프로토콜이다. PC나 스마트폰 등의 OS에도 TCP/IP가 내장되어 있어 이를 이용할 수 있는 것이다. TCP/IP 계층 구조는 ‘네트워크 접근 계층’, ‘인터넷 계층’, ‘전송 계층’, ‘응용 계층’인 총 4계층으로 나눌 수 있다.

image
출처: https://yozm.wishket.com/magazine/detail/1906/

TCP/IP의 계층

TCP/IP의 구조 주요 프로토콜 특징 데이터 단위 식별자 주요장비
애플리케이션층 HTTP, SMTP, POP3, IMAP4, DHCP, DNS 등 애플리케이션에서 다룰 데이터 형식과 절차를 결정한다 Message, Data - -
트랜스포트층 TCP/UDP 애플리케이션에 데이터를 할당한다 Segment Port (프로세스 식별자) 게이트웨이
인터넷층 IP, ICMP, ARP 등 End to end 통신을 한다 Packet IP (Host 식별자) 라우터
네트워크 접근층 이더넷, 무선LAN(Wi-Fi), PPP등 프로토콜은 자유롭게 선택할 수 있다. 통신 상대와 같은 것을 사용할 필요는 없다 Frame MAC (NIC 식별자) 브릿지, 스위치

🤔 왜 프로토콜을 이렇게 계층으로 나누는 걸까?

기본적으로 구분을 나누면 유지보수에 편리해진다. 구분을 하면 서로 간의 간섭을 최소화 할 수 있기 때문에 각 계층을 독립적으로 개발하고 업데이트할 수 있어 프로토콜의 변경이나 업그레이드가 쉬워진다.
또한 각 계층은 특정 역할을 담당하기 때문에 문제가 발생할 때 해당 계층에서 진단이 가능하므로 문제 해결 및 디버깅이 용이해진다.

🤔 웹 개발에도 레이어트 아키텍처를 적용할 수 있을까?

Yes..!!!
현재 나의 업무에서 적용하는 예시를 들어본다. 크게 화면/비즈니스 로직/데이터 이렇게 3개의 레이어로 나눌 수 있다. 나는 자바 개발자이기 때문에 Spring 프레임워크를 사용하여 비즈니스 로직 레이어에서 핵심 비즈니스 로직을 모아 처리한다. 그리고 데이터베이스와 관련된 것들, 주로 MySQL이나 Oracle과 같은 RDB를 사용하여 DB에 질의 및 조작을 수행하는 행위들은 데이터 액세스 레이어에서 이루어진다. 프레젠테이션 레이어는 Vue.js와 Nuxt 프레임워크를 사용하여 웹페이지 디자인과 UI를 처리한다.

🤔 그럼 내가 직접 사용한 프로토콜은 무엇이 있을까?

알게 모르게 접하고 있는 프로토콜이 많다. 나는 웹개발자이기 때문에 주로 접하는 프로토콜은 아무래도 HTTP이다. HTTP는 웹 브라우징에 사용되는 표준 프로토콜로 클라이언트가 웹 서버에 리소스를 요청하고, 서버가 해당 요청에 대한 응답을 반환한다.

또한 개발한 애플리케이션을 서버에 반영할 때 war 배포를 할 때가 있는데 이 때 FTP를 사용하여 파일을 업로드한다. FTP는 파일 전송을 위한 프로토콜로 파일을 업로드하고 다운로드하는 데에 사용된다.

메일 전송을 할 때 SMTP를 사용한다. SMTP는 전자 메일 전송을 위한 표준 프로토콜로, 이메일 서버 간에 이메일을 전송하고 수신하는 데 사용된다.

출처(참고문헌)

댓글남기기