네트워크의 계층 구조와 프로토콜
복잡한 네트워크 시스템을 효과적으로 설계하고 유지하기 위해, 우리는 네트워크를 계층(layer)으로 나누어 구성한다. 각 계층은 고유한 기능을 수행하며, 바로 아래 계층의 서비스를 요청해 자신의 기능을 완수한다. 이러한 구조를 통해 복잡한 시스템을 모듈화하고, 유지보수를 간편하게 할 수 있다.
서비스와 요청/응답 관계
상위 계층은 하위 계층에게 서비스 요청(request) 을 보내고, 하위 계층은 이에 응답(response) 하는 방식으로 작동한다. 이러한 동작은 primitive(원시 동작) 라고 부르며, 각 계층은 서로 독립적이면서도 상호 협력하는 구조를 이룬다.
프로토콜과 투명한 서비스
각 계층에서의 서비스는 프로토콜(protocol) 이라는 형태로 정의된다. 프로토콜은 서로 다른 장비나 시스템이 정해진 규칙에 따라 통신하도록 돕는 약속이며, 이는 기계가 이해할 수 있는 형식으로 구성되어야 한다. 사람이 말로 표현하는 서비스 설명과 달리, 프로토콜은 기계 간 통신을 위한 정형화된 언어로 되어 있다.
계층화된 항공 여행 모델
계층 구조의 개념은 항공 여행에 자주 비유된다. 항공권 구매, 수하물 탁송, 보안 검색, 탑승, 비행, 도착 등은 모두 각기 다른 서비스(계층) 로 나뉘어 있으며, 각각 내부적으로 복잡한 작업을 포함하고 있다. 하지만 승객은 그 복잡함을 알 필요 없이 전체 과정을 투명하게 경험한다. 이처럼 네트워크도 계층을 통해 투명한 사용자 경험을 제공하는 구조로 설계되어 있다.
프로토콜 스택과 OSI 5계층 모델
실제 네트워크에서는 다음과 같은 계층 구조가 일반적으로 사용된다:
- Application Layer: 사용자 응용 프로그램이 동작하는 계층 (예: HTTP, SMTP)
- Transport Layer: 애플리케이션 간 통신을 담당 (예: TCP, UDP)
- Network Layer: 데이터를 목적지까지 라우팅 (예: IP)
- Link Layer: 인접 장비 간의 프레임 전송 (예: Ethernet, Wi-Fi)
- Physical Layer: 전기적 신호 또는 빛 등 물리적 비트 전달
이 계층들을 하나로 묶어 프로토콜 스택(stack) 이라고 부른다.
계층 내에서의 다양한 서비스
같은 계층이라도 다양한 방식으로 서비스를 제공할 수 있다. 예를 들어, Transport 계층에서:
- TCP는 신뢰성 있는 연결형 서비스를 제공 (예: 대한항공 같은 풀서비스 항공사)
- UDP는 신뢰성을 보장하지 않는 비연결형 서비스 (예: 저비용 항공사처럼 최소한의 서비스)
즉, 같은 계층이라도 목적과 특성에 따라 서로 다른 프로토콜을 사용할 수 있다.
캡슐화와 디캡슐화
계층 구조에서 데이터를 주고받을 때는 캡슐화(encapsulation)라는 과정을 거친다.
- 사용자가 만든 원본 메시지는 Application 계층에서 시작된다.
- 전송 계층에서는 여기에 TCP/UDP 헤더를 붙여 세그먼트(segment)를 만든다.
- 네트워크 계층에서는 IP 헤더를 추가하여 데이터그램(datagram)을 만든다.
- 링크 계층에서는 MAC 헤더를 붙여 프레임(frame)을 만든다.
이러한 일련의 과정은 편지를 봉투에 넣고, 주소를 적고, 우표를 붙이는 것과 유사하다.
수신 측에서는 이와 반대로 디캡슐화(decapsulation)가 일어나며, 헤더를 하나씩 제거하면서 원래의 메시지를 복원한다.
네트워크 상에서 실제 물리적인 장치 간 전송은 링크 계층(Link Layer)이 담당한다. 네트워크 계층이 만든 데이터그램 [Hn | Ht | M]은 인접한 장치끼리 전송되는데, 이때 링크 계층이 개입하여 이 데이터그램을 자신의 링크 계층 헤더로 감싼다. 즉, 링크 계층은 전체 데이터그램을 감싸는 프레임(frame)을 만들게 된다.
네트워크 장비의 계층별 역할
네트워크 장비들은 각기 다른 계층까지를 처리하도록 설계되어 있다:
- 호스트(End Host): 모든 계층을 처리
- 라우터(Router): 3계층(네트워크 계층)까지 처리
- 스위치(Switch): 2계층(링크 계층)까지 처리
스위치는 라우터보다 단순하기 때문에 더 빠르며, 라우터는 더 많은 정보와 복잡한 계산을 수행한다.
라우터는 전송되는 데이터의 IP 주소를 보고 목적지를 결정하고, 그에 따라 어떤 포트를 통해 데이터를 보낼지 선택한다. 이 과정은 마치 우편물이 우편번호만 보고 자동으로 분류되는 것과 유사하다.
인터넷의 역사
현대 인터넷의 시작은 1961년의 패킷 스위칭 개념으로 거슬러 올라간다.
이후 미국 국방부 산하의 ARPA가 ARPANET을 개발하며 실제 네트워크 구현이 시작되었다.
처음에는 단 15개의 노드만 연결된 소규모 네트워크였고, 주된 응용은 이메일이었다.당시에는 서로 신뢰하는 사용자 간 통신이라는 전제가 있었기 때문에 보안에 대한 고려가 없었다.
이후 여러 회사들이 독자적인 네트워크 구조를 만들며 다양한 프로토콜이 등장했지만, 결국 TCP/IP가 통일된 인터넷 프로토콜로 자리잡게 되었다.
상업화와 웹의 확산
인터넷은 점차 공공 연구기관을 넘어 상업화되기 시작했다. 미국 국립과학재단(NSF)이 상업적 이용을 허용하면서 웹 서비스가 등장했고, Mosaic, Netscape, Chrome 등 다양한 웹 브라우저가 개발되었다. 또한:
- 1983년: DNS 시스템 도입
- 1988년: TCP 혼잡 제어 기능 추가
- 이후 다양한 응용 프로토콜(SMTP, FTP 등)이 지속적으로 추가되며 발전
오늘날 인터넷은 수십억 대의 기기가 연결된 거대한 시스템이 되었으며, 이는 모두 기본적인 계층 구조와 프로토콜의 설계 원칙 위에서 이루어졌다.
네트워크 보안의 등장 배경
인터넷이 처음 설계될 당시에는 보안이 고려되지 않았다. 초기 네트워크는 상호 신뢰하는 사용자들 간의 투명한 연결을 전제로 했기 때문이다. 네트워크는 단순히 데이터를 주고받는 투명한 전달망으로, 사용자는 내부의 동작 방식에 대해 알 필요도, 걱정할 필요도 없었다.
그러나 네트워크 사용이 확산되면서 악의적인 사용자가 등장하게 되었고, 이에 따라 네트워크 보안(network security)이라는 새로운 분야가 등장하게 되었다.
보안의 핵심은 공격을 이해하고, 그것에 대한 방어 방법을 찾는 것이다. 네트워크가 공격받을 수 있는 방식들을 알아야만, 그에 대한 설계와 방어책을 마련할 수 있다.
보안의 적용 방식: 리모델링
기존의 인터넷 프로토콜 구조는 보안을 고려하지 않고 만들어졌기 때문에, 이후 보안 기능은 기존 구조 위에 덧붙이는 방식으로 추가되었다. 이를 '재건축'이 아닌 '리모델링'에 비유할 수 있다. 즉, 기존 건물을 부수지 않고 내부 구조만 바꾸는 방식이다.
이처럼 보안 기능은 기존 프로토콜 구조를 유지하면서, 필요한 부분에 보완적인 기능을 추가하는 방식으로 적용된다.
계층별 보안 대응
보안은 네트워크의 모든 계층에 영향을 미친다. 각 계층에서는 아래와 같은 방식으로 보안을 구현한다:
- Application Layer (응용 계층): 사용자의 ID와 비밀번호 입력으로 인증을 수행
- Transport Layer (전송 계층): TCP와 UDP의 취약점에 대한 방어
- Network Layer (네트워크 계층): IP 스푸핑 등 라우팅 관련 공격 방어
- Link Layer 이하: 물리적인 접근을 통한 데이터 탈취를 방지
이처럼 보안은 특정 계층에 국한되지 않고, 네트워크 전체에 걸쳐 전방위적으로 고려되어야 하는 요소이다.
대표적인 보안 위협들
악성코드(Malware)
- 바이러스, 웜(worm), 트로이 목마 등이 여기에 해당한다.
- 자기 복제 기능을 가지며, 이메일 첨부파일 등으로 전파될 수 있다.
- 스파이웨어(spyware)는 키보드 입력, 방문 웹사이트 등을 기록하여 외부로 전송한다.
- 최근에는 랜섬웨어(ransomware)와 같은 금전 요구형 악성코드도 증가하고 있다.
DDoS (Distributed Denial of Service)
- 공격자가 여러 대의 좀비 PC를 활용해 하나의 서버나 네트워크 자원을 마비시키는 방식
- 자원을 고갈시켜 정상적인 사용자가 서비스를 이용할 수 없게 만든다
- 일반적으로 대역폭 또는 서버의 처리 능력을 한계까지 끌어올리는 공격 방식이다
패킷 스니핑(Packet Sniffing)
- 공유된 매체에서 모든 패킷을 수집하여 비밀번호 등 민감 정보를 탈취하는 행위
- promiscuous mode로 설정된 네트워크 인터페이스를 통해 발생
- 대책: 모든 데이터에 대한 암호화(encryption)
IP 스푸핑(IP Spoofing)
- 출발지 IP 주소를 위조하여 다른 사용자인 것처럼 위장
- 다른 사용자의 권한을 획득하거나 공격의 추적을 어렵게 만듦
'CS 지식 > 네트워크' 카테고리의 다른 글
[네트워크] 전송계층과 HTTP와 쿠키(Cookie) (1) | 2025.04.01 |
---|---|
[네트워크] 응용계층과 프로토콜, P2P, 클라이언트-서버 아키텍처 (0) | 2025.04.01 |
[네트워크] 네크워크 코어, 스위칭, 인터넷 아키텍처, 처리량 (0) | 2025.03.23 |
[네트워크] 인터넷의 구조와 네트워크의 종류와 발전과정 (1) | 2025.03.23 |
[네트워크 입문] 가상화 개념과 종류 (0) | 2025.02.05 |
댓글