본문 바로가기
Computer Science/Network

[Network] 네트워크 통신

by 연제원 2021. 6. 14.

컴퓨터를 이용하면서 네트워크란 말을 한 번도 들어본적이 없는 사람은 없을 것이다?! 우리는 이 네트워크를 통해 파일공유, 미디어 스트리밍, 게임 등 데이터를 주고 받는 다양한 것들을 할 수 있다. 모든 종류의 작업을 가능하게 하는 이러한 장점이 존재하는 반면 바이러스, 악성코드, 해킹과 같은 보안상의 문제라는 단점 또한 존재한다. 그렇기에 네트워크에 대해 좀 더 알아보는 시간을 가지려고 한다!

 

네트워크(Network)란?


분산되어 있는 컴퓨터들을 자원이나 정보를 공유하기 위하여 통신망으로 연결한 것을 의미

네트워크 정의에 대해 컴퓨터들을 연결한 것이라고 했는데, 컴퓨터 뿐만 아니라 휴대폰, IoT, 프린터 등 여러 기기들을 연결하여 사용하는 것도 네트워크다. 왜 연결하여 사용하는 것일까? 바로 통신 즉, 데이터들(정보, 자원)을 공유하기 위함이다. 

 

목적은 간단해 보이지만 실제로는 매우 복잡한 과정을 거친다. 우선 이 과정을 보기 전에 관련 용어를 먼저 정리해야 할 것 같다.

 

  • 노드(Node), 링크(Link), 홉(Hop)
    노드란 네트워크에 연결된 컴퓨터와 그 안에 속한 장비들을 통틀어 하나의 노드라고 한다. 물론 상황에 따라 조금씩 의미가 변화할 수도 있다. 그리고 링크는 노드와 노드 사이의 물리적으로 연결된 통로를 의미하고, 이 거리의 단위를 홉이라고 한다.
  • 패킷 (Packet)
    네트워크를 통해 데이터를 주고 받을 때 일정한 단위로 나눈 데이터 전송 단위다.
    데이터를 한 번에 보내는 것이 편하지만, 나눈 이유는 큰 데이터는 대역폭(신호를 전송할 수 있는 주파수 범위 또는 폭)을 많이 차지해 트래픽이 많아지기 때문이다.
    예를 들자면, 이케아에서 가구를 살 때 가구가 조립되어 있는 상태로 가져온다면 바로 사용할 수 있어서 편하겠지만, 그만큼 무겁고 집까지 가져오기 매우 힘들 것이다. 이를 조립 단위로 분리한다면 그나마 집에 가져오기 편하다..!
  • LAN과 WAN
    LAN은 근거리 네트워크를 의미하며, 지역적으로 좁은 범위 내에서 고속 통신이 가능하다.
    WAN은 광대역(넓은) 네트워크를 의미하며, 지역과 지역, 나라와 나라 등을 연결하는 네트워크다.
  • 인터넷 (Internet)
    전 세계의 큰 네트워크부터 작은 네트워크까지를 연결하는 거대한 컴퓨터 통신망(네트워크)를 말한다. (WAN이 서로 다른 WAN들과 연결되어 하나의 네트워크를 구성한 것이 인터넷이라 말할 수 있다.)
    인터넷은 클라이언트, 서버로 구성되며, TCP/IP라는 기본 프로토콜을 통해 제공되고 있다.
  • 프로토콜 (Protocol)
    상호 연동되는 시스템이 전송 매체를 통해 데이터를 교환할 때 특정 규칙을 따르는데, 이 규칙을 프로토콜이라 한다.
    개인이 원하는대로 데이터를 교환한다면 주고 받는 방식이 모두 다르기 때문에 난장판이 될 것이다. 그렇기에 서로 이해 할 수 있도록 공용된 언어를 사용하고자 정한 것이 프로토콜이다.
  • 시스템 (System)
    시스템은 체제라고도 하는데, 내부 규칙에 따라 능동적으로 동작하는 대상이다.
    말은 어렵지만 자동차, 컴퓨터와 같은 물리적인 대상 뿐아니라 신호등으로 교통을 제어하는 운영시스템, MacOS와 같은 운영체제 등 논리적인 대상도 시스템이다.

 

네트워크 통신 (OSI 7계층, TCP/IP 프로토콜)


데이터를 주고 받는 과정 즉, 네트워크 통신에서 빠질 수 없는 것이 OSI 7계층TCP/IP 프로토콜이다.

우선 다음과 같이 계층으로 나눈 이유는 통신이 일어나는 과정을 단계별로 파악하고 쉽게 문제를 해결하기 위함이다. 간단한 예로 자동차의 엔진이 고장났을 때 타이어, 시트를 갈지 않고 엔진만 수리하는 것처럼!

 

즉, OSI 7계층을 통해서 데이터의 통신 과정 중 어느 부분이 문제가 발생했는 지를 쉽게 파악하고, 다른 계층은 건드릴 필요없이 한 계층만의 문제를 해결할 수 있게 된 것이다. 또한 OSI 7계층이 생기기 이전에는 표준이 존재하지 않아 회사마다 다르게 데이터를 주고받도록 개발이 되어 데이터 전송이 매우 어려웠다고 한다.

 

다음은 TCP/IP 프로토콜이다. 프로토콜은 데이터를 교환할 때 정해진 규칙이라 했는데, 즉, TCP/IP 프로토콜은 인터넷 통신 규칙이다. IP (인터넷 프로토콜)과 TCP (전송 제어 프로토콜)로 이루어져 있는데 이를 묶어서 TCP/IP 라고 부른다. 데이터를 교환할 때 앞에서 패킷이라는 단위로 쪼개어 전송한다고 했다. 이때 패킷이 전송중에 순서가 바뀌거나 손상이 발생한다면 받는 입장에서는 무슨 데이터인지 알 수 없을 것이다. 이를 막기 위해 패킷에 일련의 번호를 부여하고 이를 통해 재조합하거나 손상여부를 체크해 재전송을 요청하는 데 이 형식을 정의한 것이 TCP 프로토콜이다. 그리고 어느 컴퓨터에 전송을 할 지 주소를 필요로 하는데 이를 정한 것이 IP 프로토콜이다.

 

OSI 7계층과 TCP/IP 프로토콜은 모두 계층형이라는 공통점을 가지고 있다. 하지만 OSI 7 계층은 시스템 아키텍처(구조)를 이해하고 설계하는 데 사용되는 참조용이지만, TCP/IP는 OSI모델을 참조한 실제 인터넷에 사용되는 표준이라는 차이점을 가지고 있다.

 

다음은 OSI 7계층과 TCP/IP 프로토콜의 모델을 나타낸 그림이다.

OSI 7 계층


개요

먼저 OSI 7 계층을 정리해보려 한다. OSI 7 계층 모델은 국제표준화기구인 ISO에서 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명하기 위해 개발한 모델이다.

[제 1계층] 물리 계층 (Physical Layer)

전송단위 : 비트(bit) 
장비 : 리피터, 케이블, 허브 등

데이터를 전기적인 신호(01001011..)로 변환해서 주고 받는 기능 즉, 데이터를 전송하는 역할만 진행한다.

 

* 허브 : 데이터를 수신하면 뿌려주는 역할. 단방향 통신이며, 여러 사용자가 사용할 경우 충돌이 생기고 느려진다.

* 리피터 : 신호를 증폭해주어 데이터 손실없이 전송을 가능하게 해준다. 

[제 2계층] 데이터 링크 계층 (Data Link Layer)

전송단위 : 프레임(Frame - bit의 모음)
장비 : 스위치, 브릿지

물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할을 한다. 받은 데이터를 프레임(bit의 모음) 단위로 구성하여 MAC주소(기기의 자체 고유주소)를 통해 통신하고, 데이터의 오류 제어 및 흐름 제어를 담당한다.

(MAC주소를 주민등록증, IP주소를 집 주소라고 생각하면 될 것 같다. 인터넷 상에선 IP주소를 가지고 통신하는데 예를 들자면, 택배를 주고받을 때 집주소가 필요한 개념..?!)

 

* 스위치, 브릿지 : MAC주소를 참고하여 데이터 전송 여부를 결정한다. 스위치는 하드웨어, 브릿지는 소프트웨어 방식

[제 3계층] 네트워크 계층 (Network Layer)

전송단위 : 패킷(Packet)
장비 : 라우터

데이터(패킷의 형태)를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다. 라우터를 통해 이동할 경로를 선택하여 IP주소를 지정하고, 해당 경로에 따라 패킷을 전달해준다.

데이터 링크 계층이 같은 네트워크(링크)상에서 패킷 전달을 책임진다면, 네트워크 계층은 최종 목적지까지의 패킷 전달을 책임진다고 생각하면 된다.

 

* 라우터 : 패킷을 목적지까지 전달하기 위한 최적의 경로를 찾아주는(이를 라우팅이라 함) 기기

[제 4계층] 전송 계층 (Transport Layer)

전송단위 : 세그먼트(Segment)
장비 : 게이트웨이

1, 2, 3 계층과 5 ,6 ,7 계층을 연결한다. 즉, 상위 계층인 세션 계층으로부터 받아 패킷으로 쪼개고, 하위 계층인 네트워크 계층으로부터 받은 패킷은 세션 계층이 사용할 수 있도록 재구성한다. 또한 전송역할도 하는데 네트워크 계층이 목적지까지 전달한다면(IP주소), 전송 계층은 최종 프로세스(포트주소)로의 전달을 담당한다. (뭐가 차이인지 알아봤는데, 간단히 예로들면 IP주소가 우리 집의 입구라면, 포트주소는 내 방의 입구다..! 즉, IP주소는 컴퓨터를 찾을 때 필요한 주소를 나타내고, 포트주소는 컴퓨터 안에서 프로그램을 찾을 때를 나타낸 것이다.)

추가로 이 기능은 운영체제에 소프트웨어적으로 구현이 되어 있다!

 

* 게이트웨이 : 한 네트워크에서 다른 네트워크를 연결, 중재 역할

TCP(Transport Control Protocol) 프로토콜

대표적인 프로토콜로 TCP, UDP가 있다. 위에서도 TCP에 대해 정리했지만, 중요하므로 이해를 하기 쉽게 전화를 거는 상황을 비유하며 알아보자.

우리가 친구에게 목적을 말하려 전화를 한다. 그런데 실제로 얼굴을 보며 말을 하는 것이 아닌데 내가 정보를 전달하고자 하는 상대를 어떻게 아는가? 우선 연락처에 저장된 번호를 누른다. 상대가 전화를 받을 것인데, 이때 이것만으로 친구란 것을 확신할 수 없다. 그래서 우리는 목소리를 듣고 내가 원하는 사람이 맞는지 확인한다. 네트워크 상에서 이런 작업을 TCP라고 한다. (더 자세하게는 TCP 3 or 4 way handshake라고 하는데 추후에 자세히 알아볼 것이다!) 즉, TCP의 가장 큰 특징은 데이터의 정확성 보장이다. 내가 보낸 데이터가 얼마나 전송되었고(전화로 친구에게 어디까지 말했는지?), 어느부분이 누락되었는지까지 판단해 정확한 전송이 보장된다.

 

이와 반대되는 개념으로 UDP 프로토콜(User Datagram Protocol)이 있는데, 신뢰성보다는 신속함이 목적이다. 

[제 5계층] 세션 계층 (Session Layer)

전송단위 : 데이터(Data)

전송 계층을 통해 두 네트워크간의 연결(프로세스와 프로세스)이 성립되었다면, 이를 네트워크 세션이 생성되었다고 한다. 형성된 세션간의 데이터 송수신을 어떻게 관리할지에 대해 정의하는 것이 세션계층이 하는 역할이다. 즉, 통신 장치간의 상호작용을 설정하고 유지하며 동기화한다.

[제 6계층] 표현 계층 (PresentationLayer)

전송단위 : 데이터(Data)

표현 계층에서는 전달 받은 메시지를 사용자가 볼 수 있도록 만드는 역할 즉, 데이터의 변환, 압축, 암호화를 담당한다. 받는 입장에서 예를 들자면, 누군가가 보낸 데이터(프레임 -> 패킷 -> 세그먼트)가 포장되어서 전달되었다면 이제는 뜯어서 확인하는 것이다.

[제 7계층] 응용 계층 (Application Layer)

전송단위 : 데이터(Data)

우리가 컴퓨터를 사용하면서 작동하는 모든 프로그램이 응용 계층에 해당한다. 웹 브라우저, 글을 쓰는 행위, 게임을 하기 위해 접속하는 등 모두 응용 계층이다. 즉, 우리가 네트워크로 접속하기 위한 사용자 인터페이스를 의미한다.

 

응용 계층에는 많은 프로토콜이 존재하는데, 대표적으로 아래의 것들이 있다.

  • HTTP (Hyper Text Transfer Protocol)
    www 상에서 정보를 주고받을 수 있는 프로토콜, HTML 문서를 주고 받는 역할 (가장 많이 본..!)
  • HTTPS (Hyper Text Transfer Protocol Secure)
    HTTP의 약점을 보완하기 위해 HTTP 암호화나 인증 등의 구조를 더한 것
  • FTP (File Transfer Protocol)
    서버 / 클라이언트 사이의 파일 전송을 위한 프로토콜
  • SMTP (Simple Mail Transfer Protocol)
    인터넷에서 이메일을 보내기 위해 사용하는 프로토콜
  • DNS (Domain Name System)
    호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 반대의 변환을 수행하는 프로토콜

TCP/IP 


사실 앞서 말한 것 처럼 현대의 인터넷은 OSI 모델이 아닌 TCP/IP 모델을 따르고 있다. 하지만 개념을 이해하기 위해서 OSI 모델을 좀 자세히 보았다. 위 사진을 보면 OSI의 세션, 표현, 응용(5, 6, 7)계층이 TCP/IP의 응용 계층 하나로 뭉쳐졌다. 즉, OSI 7 계층을 이해했다면 TCP/IP 또한 이해하기 쉬울 것이다.

마무리


최대한 쉽고 자세하게..? 정리를 해보려고 했는데 새로운 용어를 맞이할 때마다 궁금한 게 생겨 계속 찾아보고 주절주절 정리한 것 같다. 하지만 이 의미는 공부할 것이 매우 많다는 뜻.. 심지어 지금까지 웹이 네트워크 그 자체인줄 알았었다.

 

이번에는 단순히 통신이 어떻게 진행되는 지 공부했다면, 이젠 실제 개발을 하며 관련이 깊은 HTTP 프로토콜과 관련이 깊은 IP, TCP, DNS 프로토콜에 대해 알아보고 어떻게 웹이 작동하고 통신하는지 공부할 것이다!

 

댓글