[네트워크] 컴퓨터 네트워크와 인터넷
호스트
- 호스트는 인터넷에 연결되는 장치들을 말하며, 종단 시스템이라고도 불린다.
- 호스트는 통신 링크와 패킷 스위치의 네트워크로 연결된다.
- 호스트는 때때로 서버와 클라이언트로 구분된다. 서버는 웹 페이지를 저장하고 분배하며, 비디오를 스트림하는 등 많은 기능을 갖춘 성능 좋은 컴퓨터를 말한다.
패킷
- 통신 링크에서는, 송신측에서 데이터를 세그먼트로 나누고 헤더를 붙이는 작업을 거치는데, 이처럼 세그먼트에 헤더가 붙은 형태를 패킷이라고 한다.
- 패킷은 네트워크를 통해 호스트로 보내지며, 목적지에서 원본 데이터로 재조립된다.
패킷 스위치
- 오른쪽 사진에서 빨간색 동그라미는 패킷 스위치를, 파란색 선은 링크를 나타낸다.
- 패킷 스위치는 입력 통신 링크의 하나로 도착하는 패킷을 받아서, 출력 통신 링크의 하나로 그 패킷을 전달한다.
- 패킷 스위치의 종류로는 라우터와 링크 계층 스위치가 있다.
- 둘 다 목적지로의 패킷 전달을 수행한다.
-
라우터는 네트워크 코어에서 사용되고, 링크 계층 스위치는 액세스 네트워크에서 사용된다. 아래 사진에서 빨간색 패킷 스위치는 액세스 네트워크 내부의 링크 계층 스위치(줄여서 스위치)이고, 파란색 원은 네트워크 코어 내부의 라우터다.
- 패킷이 송신측에서 수신측에 도달하는 동안 거친 일련의 통신 링크와 패킷 스위치들을 경로(route, path) 라고 부른다.
ISP(Internet Service Provider)
- 호스트는 ISP를 통해 인터넷에 접속한다.
- ISP는 통신 링크와 패킷 스위치로 이루어진 네트워크다.
분산 애플리케이션
- 전자 메일, 웹 서핑 등 전통적인 응용 뿐 아니라, 실시간 도로 교통 정보를 반영한 지도 서비스, 클라우드로부터의 각종 스트리밍, 비디오 컨퍼런싱 등 현대 애플리케이션들은 서로 데이터를 교환하는 많은 호스트들을 포함하기에 분산 애플리케이션(distributed application)이라고 불린다.
프로토콜
- 프로토콜은 둘 이상의 통신 개체 간에 교환되는 메세지 포맷과 순서 뿐 아니라, 메세지의 송수신과 다른 이벤트에 따른 행동들을 정의한다.
접속 네트워크(Access Network)
- 접속 네트워크는 호스트 끼리의 경로상에 존재하는 첫 번째 라우터에 연결된 네트워크를 의미한다. 위 사진에서 빨간 네모친 네 개의 네트워크들을 모두 접속 네트워크다.
네트워크 코어
- 네트워크 코어는 호스트들을 연결하는 패킷 스위치(빨간 원)들과 링크(빨간 선)들의 연결망을 의미한다.
저장 후 전달
- 저장-후-전달 전송(store-and-forward transmission) 방식은 스위치가 출력 링크로 패킷의 첫 비트를 전송하기 전에, 전체 패킷을 받아야 함을 의미한다.
- 대부분의 패킷 스위치는 저장-후-전달 전송 방식을 이용한다.
큐잉 지연과 패킷 손실
- 패킷 스위치는 연결된 모든 링크에 대해 출력 버퍼(혹은 출력 큐)를 갖는다.
- 출력 링크가 패킷을 전송하고 있으면, 해당 링크(여기서는 출력 링크가 됨)에 도착하는 패킷은 출력 버퍼에서 대기해야 현상이 발생하고, 이를 큐잉 지연이라고 한다.
- 버퍼의 크기는 유한하기 때문에, 큐잉 지연을 겪어 버퍼가 대기중인 다른 패킷들로 꽉 차있는 경우 패킷 손실이 발생할 수 있다. 이 때, 출력 버퍼는 도착하는 패킷이나, 이미 큐에 대기중인 패킷을 버린다.
전달 테이블과 라우팅 프로토콜
- 모든 호스트는 IP 주소를 갖고, 패킷 전달 시 헤더에 목적지 IP 주소를 포함해 전달한다. 라우터는 목적지 주소를 라우터의 출력 링크로 맵핑하는 전달 테이블(forwarding table)을 갖는다.
- 자세히 말하면, 패킷(정확히는 패킷의 헤더)의 목적지 주소를 이용해 전달 테이블의 색인으로 사용하고, 이 색인을 통해 출력 링크를 결정짓는다.
- 라우팅 프로토콜은 전달 테이블을 설정하기 위해 규정되어 있다. 즉, 라우팅 프로토콜은 라우터간 통신 방식(어떻게 보낼지)을 규정한다.
호스트 간 데이터를 이동시키는 방식
- 호스트 간 데이터를 이동시키는 방법으로 회선 교환과 패킷 교환 방식이 있다.
- 회선 교환은 전화 망에서 사용되고, 패킷 교환은 인터넷 망에서 사용된다.
- 대세는 패킷 교환 방식이며, 회선 교환 방식의 전화망 조차도 패킷 교환 방식으로 바뀌고 있다.
회선 교환
- 회선 교환은 경로상 필요한 자원을 세션 동안에 확보(reserve)한다.
- 회선 교환 이용시, 자원 분배를 통해 다중화를 구현할 수 있고, 아래와 같이 다른 주파수 분할 방법과 시간 분할 방법이 있다.
- 주파수-분할 다중화(frequency-division multiplexing, FDM)
- 링크의 주파수 스펙트럼을 공유한다.
- 링크별로 대역폭(bandwidth)을 고정한 후 제공한다.
- 각 회선은 지속적으로 고정된 대역폭(전체 대역폭의 일부)을 사용할 수 있다.
- 시-분할 다중화(time-division multiplexing, TDM)
- 시간을 일정 주기의 프레임으로 구분한 뒤, 각 프레임을 고정 수의 시간 슬롯으로 나눈다.
- 각 회선은 슬롯(시간 텀)동안 온전한 전체 대역폭을 사용할 수 있다.
- 주파수-분할 다중화(frequency-division multiplexing, FDM)
패킷 교환
- 패킷 교환은 경로상 필요한 자원을 확보해두지 않는다.
- 일정 데이터 블록 패킷을 경로를 따라 전달하는 방식이다. 회선 교환과 같이 독점하지 않으므로, 다양한 라우터로 뿌려질 수 있고, 최종적으로 목적지에서 패킷들이 합쳐져 원본 데이터로 복구된다.
패킷 교환 네트워크에서의 지연
- 패킷 교환 네트워크에서는 패킷이 라우터를 따라 경로를 지나게 되므로, 라우터상에서 여러 지연 현상이 나타난다.
- 아래와 같이 총 네 개의 지연을 알아보자
- 처리 지연(processing delay)
- 큐잉 지연(queuing delay)
- 전송 지연(transmission delay)
- 전파 지연(propagation delay)
처리 지연
- 처리 지연은 페킷 헤더를 조사하고, 그 패킷을 어디로 보낼지를 결정하는 데에 걸리는 지연 시간을 의미한다.
큐잉 지연
- 큐잉 지연은 출력 버퍼에서 링크를 통해 전송되기까지 기다리는 데에 걸리는 지연 시간을 의미한다.
- 큐잉 지연 시간의 길이는 큐에 저장되어있는 다른 패킷들의 수에 의해 결정된다.
전송 지연
- 전송 지연은 패킷이 앞서 출력 버퍼에 기다리고 있는 다른 패킷들이 모두 전송되기까지 기다리는 데에 걸리는 지연 시간을 의미한다.
- 출력 버퍼에 있는 패킷들의 총 길이가 L, 링크의 전송률을 R bps 라고 하면, 전송 지연은 $L/R$ 이 된다.
전파 지연
- 전파 지연은 패킷이 링크의 처음부터 다음 라우터까지 이동하는 데에 걸리는 시간을 의미한다.
- 두 라우터 사이의 거리를 D, 두 라우터를 잇는 링크의 전파 속도를 S 라고 하면, 전파 지연은 $D/S$ 가 된다.
OSI 7 계층 모델
- 애플리케이션 계층(Application Layer)
- 네트워크 애플리케이션과 애플리케이션 계층 프로토콜이 위치한다.
- HTTP, FTP 등 많은 애플리케이션 계층 프로토콜을 포함한다.
- 다른 호스트 애플리케이션과 정보 패킷을 교환하는 데에 애플리케이션 프로토콜을 사용한다. 여기서 말하는 정보 패킷은 메세지(message) 라고 불린다.
- 표현 계층(Presentation Layer)
- 통신하는 애플리케이션들이 교환되는 데이터의 의미를 해석하도록 하는 서비스를 제공한다.
- 데이터에 대한 기술 뿐만 아니라 데이터 압축과 데이터 암호화를 포함한다.
- 세션 계층(Session Layer)
- 데이터 교환의 경계와 동기화를 제공한다.
- 트랜스포트 계층(Transport Layer)
- 클라이언트와 서버 간 애플리케이션 계층 메세지를 전송하는 서비스를 제공한다.
- TCP, UDP 프로토콜이 존재한다.
- TCP 프로토콜은 연결지향형 서비스를 제공하고, 메세지 전달 보장과 흐름 제어, 혼잡제어 기능을 포함한다.
- UDP 프로토콜은 비연결형 서비스를 제공한다. TCP의 기능들을 제공하지 않는 간단한 서비스다.
- 트랜스포트 계층 패킷은 세그먼트(segment) 라고 불린다.
- 네트워크 계층(Network Layer)
- 한 호스트에서 다른 호스트로 정보 패킷을 보내는 책임을 진다.
- IP 프로토콜, 라우팅 프로토콜이 존재한다.
- IP 프로토콜은 주소지정과 패킷 분할 및 조립 기능을 담당한다.
- 라우팅 프로토콜은 데이터그램이 이동하는 경로를 결정한다.
- 네트워크 계층 패킷은 데이터그램(datagram) 이라고 불린다.
- (데이터) 링크 계층(DataLink Layer)
- 패킷스위치를 통해 데이터그램을 운반한다.
- 링크 계층 패킷은 프레임(frame) 이라고 불린다.
- 물리 계층(Physical Layer)
- 프레임 내부의 각 비트를 이동시키는 역할을 한다.
캡슐화와 역캡슐화(Encapsulation & Decapsulation)
- 캡슐화는 송신 데이터에 헤더를 붙여 하위 계층으로 전달하는 기술을 의미한다. 반대로, 역캡슐화는 수신 데이터에 헤더를 제거해 상위 계층으로 전달하는 기술을 의미한다.
- 각 계층에서 패킷은 헤더와 페이로드로 구성된다. 페이로드는 해당 계층에서 헤더를 제외한 나머지 부분이다. 캡슐화 과정에서의 페이로드는 상위 패킷을, 역캡슐화 과정에서의 페이로드는 하위 패킷을 의미한다.
맬웨어, 웜
- 맬웨어는 악성 소프트웨어를 뜻하며, 네트워크에 악영향을 끼칠 수 있는 모든 소프트웨어의 총칭이다.
- 맬웨어는 자기복제(self-replication)를 한다는 특징이 있다. 한 호스트가 감염되면, 그 호스트로부터 또 다른 호스트로의 전파가 가능하다는 말이다.
- 웜은 바이러스와 달리, 사용자의 직접적인 상호작용 없이 장치에 침투해 스스로 전파하는 맬웨어다.
Dos(denial-of-service)
- Dos 공격은 정상적인 사용자가 네트워크 서비스를 사용할 수 없게 하는 공격을 의미한다.
- 대부분 DoS 공격은 다음 세 가지 분류 중 하나에 속한다.
- 취약성 공격(vulnerability attack)
- 공격이 쉬운 호스트 애플리케이션에 메세지를 보낸다.
- 메세지를 받는 애플리케이션은 서비스가 중단되거나, 호스트가 멈출수도 있다.
- 대역폭 플러딩(bandwidth flooding)
- 목표 호스트로 수많은 패킷을 보낸다.
- 수많은 패킷들이 수신중이라, 정상적인 서비스를 받기 원하는 호스트가 패킷을 보내도 도달하지 못하게 된다.
- 연결 플러딩(connection flooding)
- 목표 호스트에 TCP 연결을 지속적으로 설정한다.
- 정상적인 서비스를 받기 원하는 호스트가 TCP 연결을 시도해도, 공격자의 요청이 큐에 가득하므로 무시된다.
- 취약성 공격(vulnerability attack)
패킷 스니퍼(packet sniffer)
- 패킷 스니퍼는 패킷의 사본을 기록하고 분석하는 도구를 말한다.
- 패킷 스니핑 공격이란 패킷 스니퍼를 이용해 네트워크 상의 데이터를 도청하는 행위를 말한다.
IP 스푸핑(spoofing)
- IP 스푸핑은 해킹을 위한 웹사이트를 만든 뒤, 방문을 유도해 TCP/IP 의 구조적 결함을 이용해 IP 주소를 속여 호스트 시스템 권한을 획득한 뒤 정보를 해킹하는 행위를 말한다.
- 이를 방지하기 위해서는, 메세지가 실제로 와야할 곳으로부터 온 것인지를 확인하는 종단 인증(end-point authentication) 방법이 필요하다.
댓글남기기