메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

[개발자 CS 기술 면접] 4. 네트워크 편(4/5)

한빛미디어

|

2024-11-14

|

by 강민철

2,411

네트워크란 여러 대의 장치가 그물처럼 연결되어 정보를 주고받는 통신망을 의미합니다. 일상에서 네트워크를 이용하지 않는 프로그램을 찾기 어려운 만큼, 네트워크는 프로그램을 만드는 개발자가 반드시 알아야 할 분야라고 할 수 있습니다.

 

 

 

 

 

✅네트워크의 큰 그림

 

• 네트워크의 기본 구조

 

네트워크는 노드와 간선으로 이루어진 자료구조라는 점에서 그래프의 형태를 띤다고 할 수 있습니다. 네트워크 기기가 노드이고, 네트워크 기기 간에 정보를 주고받는 유무선의 통신 매체가 간선인 셈입니다.

 

 

 

네트워크 상에서 노드와 노드 사이의 연결 구조는 네트워크 토폴로지network topology라고 부릅니다. 노드가 어떻게 연결되고 배치되느냐에 따라 다음 그림과 같은 망형, 트리형, 링형 등의 유형으로 나눌 수 있습니다. 

 

 

 

 

이때 네트워크의 가장자리에 위치하면서 네트워크를 통해 주고받는 정보를 최초로 송신하고 최종 수신하는 노드를 호스트host라고 부르는데요. 우리가 흔히 접하는 대부분의 네트워크 기기가 바로 호스트입니다. 예를 들어 노트북의 웹 브라우저를 통해 구글 홈페이지에 접속했다면 노트북과 구글의 서버 컴퓨터가 각각 호스트로서 정보를 주고받은 것입니다. 

 

❶ 노트북이 구글의 서버 컴퓨터에게 웹 페이지를 가져다 달라는 요청을 보낸다. 
❷ 구글의 서버 컴퓨터가 노트북에게 웹 페이지로 응답한다.

 

 

이 과정에서 노트북처럼 요청request을 보내는 호스트를 클라이언트client, 구글의 서버 컴퓨터처럼 응답response을 보내는 호스트를 서버server라고 합니다. 즉, 클라이언트와 서버는 주고받는 정보의 방향(요청과 응답)에 따라 부여된 역할입니다. 

 

 

 

 

또한 네트워크를 그래프로 간주했을 때 중간에 위치한 노드, 즉 중간 노드는 가장자리에 위치한 호스트가 주고받는 정보들을 원하는 수신지까지 안정적으로 전송하는 역할을 합니다. 이러한 중간 노드로써의 역할을 수행하는 여러 네트워크 장비들이 있는데요. 스위치와 라우터, 공유기 등이 해당됩니다. 

 

 

 

- LAN과 WAN

네트워크는 규모에 따라 LAN와 WAN으로 나뉩니다. 근거리 네트워크를 의미하는 LANLocal Area Network은 이름 그대로 가정이나 기업처럼 비교적 가까운 거리를 연결하는 한정된 공간에서의 네트워크를 말합니다. 원거리 네트워크를 의미하는 WANWide Area Network을 통해 LAN 간 통신이 이루어집니다. WAN이 인터넷을 가능하게 만드는 네트워크라고 할 수 있습니다. WAN은 일반적으로 ISPInternet Service Provider라는 인터넷 서비스 업체(KT, LG유플러스, SK브로드밴드)가 구축하고 관리합니다. 

 

 

 

 

 

- 패킷 교환 네트워크

서로 다른 네트워크에 있는 두 호스트가 유무선의 통신 매체를 통해 100GB의 파일을 한 번에 전송할 수 있을까요? 네트워크를 통해 주고받는 데이터는 한 번에 송수신되지 않고, 여러 데이터로 쪼개져서 송수신됩니다. 이렇게 네트워크를 통해 송수신되는 데이터의 단위를 패킷packet이라고 합니다. 오늘날의 네트워크는 패킷 단위로 주고받는 정보를 쪼개서 송수신하고 수신지에서 재조립하며 패킷을 주고받는 ‘패킷 교환 네트워크’가 대부분입니다. 


하나의 패킷은 페이로드payload헤더header로 구성되어 있으며, 때로는 트레일러trailer라는 정보가 포함되기도 합니다. 페이로드는 패킷에서 송수신하고자 하는 데이터이고, 헤더와 트레일러는 패킷에 추가되는 부가 정보입니다. 페이로드가 택배(패킷)를 통해 송수신하고자 하는 물품이라면, 헤더와 트레일러는 택배 앞뒤로 붙이는 송장(부가 정보)과 같습니다.

 

 

 

 

 

- 주소의 개념과 전송 방식

주소address는 패킷의 헤더에 명시되는 정보로, 네트워크에서 사용되는 대표적인 주소로는 IP 주소와 MAC 주소가 있습니다. 주소를 바탕으로 다양한 수신지 유형을 지정해 패킷을 보낼 수 있습니다. 

 

수신지와 수신지가 일대일로 메시지를 주고받는 전자의 전송 방식을 유니캐스트unicast라고 하고, 네트워크상의 모든 호스트에게 메시지를 전송하는 후자의 전송 방식을 브로드캐스트broadcast라고 합니다. 이때 브로드캐스트가 전송되는 범위를 브로드캐스트 도메인broadcast domain이라고 하며, 호스트가 같은 브로드캐스트 도메인에 속해 있는 경우에는 같은 LAN에 속해 있다고 간주합니다.

 

 

 

 

 

 

 

• 두 호스트가 패킷을 주고받는 과정

 

네트워크 내의 호스트는 서로가 주고받을 내용(패킷)을 이해할 수 있어야 하고, 이를 올바르게 주고받을 수 있어야 합니다. 호스트가 서로 주고받는 정보를 이해하기 위한 규칙인 프로토콜과 네트워크 참조 모델의 개념을 알아보고, 두 호스트가 패킷을 주고받는 과정 전반에 대해 알아보겠습니다.

 

 

 

- 프로토콜

서로 다른 LAN에 속한 두 호스트가 패킷을 주고받을 때는 네트워크 장비를 거치게 됩니다. 이때 호스트들과 네트워크 장비들이 서로의 패킷을 이해하기 위해서는 정해진 규칙, 즉 프로토콜이 필요합니다. 프로토콜protocol은 네트워크 통신을 위한 노드 간의 약속된 규칙입니다. 네트워크의 언어라고도 불리는 프로토콜은 매우 다양하지만, 개발자가 필수적으로 알아야 할 기본적인 프로토콜은 어느정도 정해져 있습니다.

 

 

 

 

프로토콜마다 목적과 특징이 다른데요, 유사한 목적을 지닌 프로토콜들이 존재할 경우 각 프로토콜을 구분 짓는 특징이 존재합니다. 

예를 들어 IP는 네트워크 간의 주소를 지정한다는 목적을 지닌 프로토콜이고, ARP는 IP 주소와 MAC 주소를 대응시킨다는 목적을 지닌 프로토콜입니다. 또 HTTPS는 보안상 HTTP에 비해 안전하며, TCP는 UDP에 비해 신뢰성이 높다는 특징을 갖고 있습니다.  마찬가지로, 각각의 목적과 특징이 다른 프로토콜로 구성된 ‘패킷의 내용’ 또한 달라질 수 있습니다. 패킷은 패킷을 구성하는 프로토콜의 목적과 특징에 따라 다음과 같이 그에 걸맞는 패킷 헤더를 가집니다. 

 

 

 

 

 

- 네트워크 참조 모델

호스트 간에 패킷을 주고받는  과정은 택배를 주고받는 과정과 비슷합니다. 택배를 주고받는 과정에는 정형화된 순서가 있기 때문에 택배를 보내는 과정은 곧 택배를 받는 과정의 반대라고 할 수 있죠. 

 

 

 

 

패킷을 주고받는 과정에도 정형화된 순서가 있고, 계층적으로 표현할 수 있습니다. 이렇게 통신이 이루어지는 단계를 계층적으로 표현한 것을 네트워크 참조 모델network reference model이라고 합니다. 패킷을 송신하는 쪽에서는 상위 계층에서 하위 계층으로 정보를 보내고, 패킷을 수신하는 쪽에서는 하위 계층에서 상위 계층으로 정보를 받아들이게 되는 것이죠.

 

 

 

 

네트워크 참조 모델에서 각각의 계층이 하는 일은 명확하게 정해져 있습니다. 따라서 계층별 목적에 맞는 프로토콜과 장비를 구성하면 네트워크의 구성과 설계, 문제의 진단과 해결이 용이해집니다. 

 

 

 

OSI 모델

OSI 모델은 국제 표준화 기구ISO, International Organization for Standardization에서 만든 네트워크 참조 모델로, 통 신 단계를 7개의 계층으로 나눠 OSI 7계층이라고 부릅니다. OSI 모델은 다음과 같이 물리 계층, 데 이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층으로 구성되어 있습니다. 

 

 

 

 

물리 계층

물리 계층physical layer은 가장 최하위 계층으로, 비트 신호를 주고받는 계층입니다.컴퓨터는 0과 1만을 이해할 수 있기 때문에 네트워크를 통해 주고받는 정보 또한 0과 1로 이루어진 신호로 구성됩니다. 물리 계층은 이러한 신호를 유무선 통신 매체를 통해 운반하는 계층입니다. 

 


데이터 링크 계층

데이터 링크 계층data link layer은 같은 LAN에 속한 호스트끼리 올바르게 정보를 주고받기 위한 계층입니다. 이를 위해 같은 네트워크에 속한 호스트를 식별할 수 있는 주소(MAC 주소)를 사용하고, 물리계층을 통해 주고받는 정보에 오류가 없는지 확인하기도 합니다. 짐작할 수 있듯, 물리 계층과 데이터 링크 계층은 서로 밀접하게 연관된 계층이며, 하드웨어와 밀접하게 맞닿아 있는 계층입니다. 

 

 

네트워크 계층

네트워크 계층network layer은 네트워크 간 통신을 가능하게 하는 계층입니다. 데이터 링크 계층이 기본적으로 같은 LAN에 속한 호스트끼리 올바르게 정보를 주고받기 위해 필요한 계층이라면, 네트워크 계층은 LAN을 넘어 다른 네트워크와 통신을 주고받기 위해 필요한 계층입니다. 따라서 네트워크 간 통신 과정에서 호스트를 식별할 수 있는 주소(IP 주소)가 필요하죠. 네트워크 계층에서 대표적으로 사용되는 프로토콜이 바로 IP입니다.

 

 

전송 계층

네트워크를 통해 송수신되는 패킷은 전송 도중에 유실될 때도 있고, 순서가 뒤바뀔 때도 있습니다. 전송 계층transport layer은 이러한 상황에 대비해 신뢰성 있는 전송을 가능하게 하는 계층입니다. 또한 포트port라는 정보를 통해 특정 응용 프로그램과의 연결 다리 역할을 수행하는 계층이기도 합니다. 전송 계층에 속한 대표적인 프로토콜에는 TCP와 UDP가 있습니다.

 


세션 계층

세션 계층session layer은 응용 프로그램 간의 연결 상태를 의미하는 세션session을 관리하기 위한 계층입니다. 즉, 응용 프로그램 간의 연결 상태를 유지하거나 새롭게 생성하고, 필요하다면 연결을 끊는 역할을 합니다. 

 


표현 계층

표현 계층presentation layer은 마치 번역가와 같은 역할을 하는 계층으로, 인코딩과 압축, 암호화와 같은 작업을 수행합니다. 세션 계층과 표현 계층은 다른 계층과 달리, 두 계층을 명확하게 구분하지 않거나 응용 계층에 포함하여 간주하는 경우가 많습니다.

 


응용 계층
마지막으로 응용 계층application layer은 사용자와 가장 밀접하게 맞닿아 있어 여러 네트워크 서비스를 제공하는 계층으로, 중요한 프로토콜들이 다수 포함되어 있습니다. 응용 계층에 속한 대표적인 프로토콜에는 HTTP, HTTPS, DNS 등이 있습니다.

 

 

 

TCP/IP 모델

TCP/IP 4계층이라고도 불리는 TCP/IP 모델은 네트워크 액세스 계층과 인터넷 계층, 전송 계층, 응용 계층으로 구성되어 있습니다. OSI 모델은 주로 네트워크의 이론적 기술을 목적으로 사용하는 반면, TCP/IP 모델은 구현과 프로토콜에 중점을 둔 네트워크 참조 모델입니다.

 

 

 

OSI 모델과 TCP/IP 모델이 만들어진 목적이 다른 만큼, 두 모델에 대한 직접적이고 엄밀한 비교는 어려울 수 있습니다. 그러나 계층별로 수행하는 역할을 기준으로 OSI 모델과 TCP/IP 모델의 계층을 비교하면 어렵지 않게 이해할 수 있습니다.

 

TCP/IP 모델의 최하위 계층인 ➊ 네트워크 액세스 계층network access layer링크 계층link layer 또는 네트워크 인터페이스 계층network interface layer이라고도 부르는데, 이는 OSI 모델의 데이터 링크 계층과 유사합니다(TCP/IP 모델에는 OSI 모델에서의 물리 계층에 해당하는 개념이 없다고 보는 견해도 있습니다). 

 

두 번째 계층인 ➋ 인터넷 계층internet layer은 OSI 모델의 네트워크 계층과 유사하며, ➌ 전송 계층transport layer은 OSI 모델의 전송 계층, ➍ 응용 계층application layer은 OSI 모델의 세션 계층, 표현 계층, 응용 계층을 합친 것과 유사합니다.

 

 

 

- 캡슐화와 역캡슐화

프로토콜과 네트워크 참조 모델을 토대로 이뤄지는 패킷의 송수신 과정 중 송신 과정에서는 캡슐화가, 수신 과정에서는 역캡슐화가 이루어집니다. 캡슐화와 역캡슐화를 이해하려면 네트워크 계층 구조를 통한 송수신과 패킷의 구조를 상기해 보아야 합니다.

 

  • 패킷을 송신하는 쪽에서는 상위 계층에서 하위 계층으로 정보를 보내고, 패킷을 수신하는 쪽에서는 하위  계층에서 상위 계층으로 정보를 받아들인다.
  • 네트워크 계층 구조를 이용하면 프로토콜을 계층별로 구성할 수 있다.
  • 하나의 패킷은 헤더와 페이로드(때로는 트레일러까지)를 포함하며, 프로토콜의 목적과 특징에 따라 헤더의 내용은 달라질 수 있다.

 

 

즉, 각 계층에서는 어떤 정보를 송신할 때 상위 계층으로부터 내려받은 패킷을 페이로드로 삼아, 각 계층에 포함된 프로토콜의 각기 다른 목적과 특징에 따라 헤더 혹은 트레일러를 덧붙인 다음 하위 계층으로 전달합니다. 상위 계층의 패킷이 하위 계층의 페이로드로 간주되는 것입니다. 캡슐화encapsulation란 이렇게 송신 과정에서 헤더(및 트레일러)를 추가해 나가는 과정을 의미합니다. 반대로, 역캡슐화decapsulation란 캡슐화 과정에서 붙인 헤더(및 트레일러)를 각 계층에서 확인한 뒤 제거하는 과정을 의미하죠.

 

 

 

 

 

 

 

• 네트워크 지도 그리기

 

 

 


 

위 컨텐츠는 『이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접』의 내용을 재구성하여 작성되었습니다.

 

댓글 입력
자료실

최근 본 상품0