1장 - 컴퓨터 네트워크와 인터넷

cadenzah·2022년 4월 2일
1
post-thumbnail

Ch. 1 Computer network and Internet

이 챕터에서 다루는 것들:

  • 본 교재에서 사용하는 주요 용어와 개념들 소개
  • 네트워크를 구성하는 주요 하드웨어/소프트웨어 구성 요소 소개
  • 네트워크의 구성 설계 단위
  • 주요 정량 지표 소개 - 지연(Latency), 유실(Loss), 처리율(Throughput)
  • 네트워크 디자인 모델 - 프로토콜 레이어, 서비스 모델
  • 주요 네트워크 공격들 유형

1.1 What is the Internet?

아래 두 관점에서 접근할 수 있다:

  • 실무 관점 → H/W, S/W 관점
  • 분산형 어플리케이션 서비스 제공을 위한 인프라 관점 → 전자보다 조금 더 추상적

1.1.1 A Nuts-and-Bolts Description(실무 관점)

주요 개념과 용어들:

  • 통신 링크(communication link): 데이터가 전달되는 물리적인 통로; 동축 케이블, 구리선, 광섬유, ...
  • 패킷(packet): 한 노드가 데이터를 송신할 때 한번에 모두 보낼 수 없으므로, 데이터를 분할(segment)하고 여기에 데이터에 대한 메타 정보를 헤더로 붙인 형태의 데이터 단위. 패킷은 전송 완료된 후, 자신과 연관된 나머지 패킷들과 다시 합쳐져 원본 데이터가 된다.
  • 패킷 스위치(packet switch): 패킷을 받아서, 해당 패킷의 목적지를 향하여 전달하는 장치. router, link-layer switch 등이 존재
  • ISP(internet service provider): 엔드 노드는 ISP가 제공하는 네트워크 자원(통신 링크, 패킷, 패킷 스위치 등)을 통하여 인터넷에 접근하게 된다.
    • 각 ISP가 담당하는 네트워크의 규모는 제각각이다.
    • 각 네트워크는 서로 연결되어 서로의 인프라를 공유하고, 그 위에서 패킷이 이동된다. 화물과 고속도로의 비유 참고.

ISP의 네트워크 간 연결은 지역적인 수준(lower-tier; local)부터 국가간/국제적인 수준(upper-tier)까지 다양하다.

  • 프로토콜(protocol): 인터넷의 각 구성 요소가 인터넷 상에서 정보를 주고(send) 받는(receive) 것을 제어하는 방식. 오늘날 인터넷에서는 TCP/IP가 가장 중요함.
    • 프로토콜의 종류는 다양하다.
    • 프로토콜을 다양한 사람/네트워크 간에 합의하고자 표준으로 관리하게 되었고, 이는 오늘날 IETF라는 단체와 그들이 발행하는 RFC(request for comments) 문서를 통하여 관리되기에 이른다.
    • IEEE도 유명하고 중요함.

1.1.2 A Services Description(어플리케이션을 위한 인프라 관점)

분산 어플리케이션(distributed app.)이란:

  • 정보를 교환하는 여러 엔드 시스템 노드들이 서로 연관되어야 하는 서비스 형태인 앱.
  • 이 앱은 네트워크 단에 대하여 알지 못하며(agnostic), 몰라도 되야 한다.

즉, 어플리케이션을 위한 네트워크 플랫폼 서비스로서 관점으로 보면, 한 앱이 다른 앱으로 어떻게 데이터를 전달하고 받을 것인가? 에 대한 관점:

  • 소켓(socket interface): 한 엔드 시스템에서 구동되는 앱이, 다른 공간에서 구동되는 다른 엔드 시스템에서 구동되는 앱으로 데이터를 전달(또는 수신)하기 위하여, 인터넷에 어떻게 요청하면 되는지를 정의한 것. (순전히 어플리케이션 관점)
  • 소켓 인터페이스는 일련의 규칙들을 정의한다. 우편을 보내는 두 사람의 비유 참고.
  • 우편 규격도 다양하듯(일반, 등기, 긴급 등), 소켓 외에도 목적에 따라 앱이 시용할 수 있는 다양한 통신 인터페이스가 존재.

1.1.3 What Is a Protocol?

  • 사람으로 치면, 의사소통 매뉴얼 또는 예절. 즉, 내가 필요한 정보를 대상에게 요청/질의하기 위한 절차를 규정한 것. 또한, 이때 대상이 대답하는 내용(message)에 따라 어떻게 반응할지도 규정.
  • 두 사람 간의 프로토콜이 서로 다르다면 효과적인 정보 교환이 이루어질 수 없다.
  • 인터넷 상의 "모든" 양자 간 통신은 프로토콜을 기반으로 이루어진다.
    • A protocol defines the format and the order of messages exchanged between two or more communicating entities, as well as the actions taken on the transmission and/or receipt of a message or other event
  • 통신 작업의 종류에 따라 다양한 프로토콜이 존재

1.2. The Network Edge

  • 엔드 시스템(end system): 인터넷 네트워크 상에서 가장자리에 위치한 존재; 끝단, 종단
  • 호스트(host): 각종 프로그램(앱)을 동작하고 운영하는 존재. end system인 머신을 달리 부르는 말이기도 하다. 호스트는 client와 server로 구분된다.

1.2.1. Access Network(접속 네트워크)

  • 더 큰 또는 멀리있는 네트워크로 연결하는 경로 상에서, 엔드 시스템과 "첫번째" 라우터를 연결하는 네트워크
  • Figure 1.4 기준 파란색 굵은 선의 것이 접속 네트워크

Home Access: DSL, Cable, FTTH, Dial-Up, and Satellite

보통 가정에서는, 인터넷에 연결하기 위하여 아래의 연결 수단을 사용한다:

  1. 전화선: 데이터를 아날로그 주파로 변환하고, DSL(digital subscriber line)선을 통하여 송수신한다. 이때 일반 전화주파와 함께 보내어 3개의 선을 사용하는 효과를 얻었다.
    • 이때 가정과 TelCo에서는 각자, 인터넷 통신 신호와 전화 신호를 분리/병합(modem) 하는 작업을 해줘야 한다.
    • 가정과 TelCo 간의 물리적 거리에 업/다운 속도가 반비례한다. 게다가 Tier 별 속도 제한도 존재.
    • Figure 1.5
  2. 케이블TV선: TvCo의 Cable head end에서 지역까지는 광섬유선, 지역에서 각 가정으로는 동축선 이용. 이를 HFC(hybrid fiber coax)라 부른다.
    • DSL과 마찬가지로 모뎀이 존재하여, TV 신호와 인터넷 신호 분리
    • 지역 내 다수가 동시이용시 속도 저하 ∵ Cable head end 까지의 회선을 해당 지역에서는 공유하기 때문
    • Figure 1.6

최근에는 FTTx로 대체하여 전반적인 속도를 크게 개선하였다. DSL, Cable, FTTH도 사용 불가한 경우, 위성 인터넷을 사용하기도.

Access in the Enterprise (and the Home): Ethernet and WiFi

한 지역 또는 건물 내에서 네트워크에 연결하려는 사용자가 다수인 경우가 많아지면서(회사, 대학교, 나아가 가정) LAN이 점점 보급된다.

  • Ethernet은 대표적인 LAN 기술. 접속 네트워크까지의 통신 기술 규격(DSL, Cable 등)과 혼동하지 말자. LAN은 더 작은 단위. (Figure 1.9 참조)
    • Many homes combine broadband residential access (that is, cable modems or DSL) with these inexpensive wireless LAN technologies to create powerful home networks
  • 최근에는 WiFi를 통한 무선 LAN이 보편화되고 있다.
  • 일반적인 가정의 경우 인터넷 - 모뎀 - 라우터 (- 스위치 허브) 식으로 구성하게 된다. (Figure 1.9 참조)

근거리 무선 LAN을 넘어 WAN도 많이 사용되고 투자가 많이 이루어진다 - 3G, LTE 등

1.2.2 Physical Media(물리 매체)

  • physical medium: 데이터가 출발지에서 목적지까지 이동하는 통로
    • ex) 구리연선, 동축 케이블, 광케이블, ...
  • 출발지에서 목적지까지 이동할 때 bit의 형태는 여러가지일 수 있다. 그저 송/수신 과정에서 잘 변환되기만 하면 된다
    • ex) 전자파, 라디오파(RF), 빛, ...
  • 특성에 따라 지향성(guided) 또는 무지향성(unguided)으로 나뉜다. 즉, guided (along solid medium) 여부에 따라 나뉜다.
  • 설치 비용보다 설치를 통한 미래 부가가치가 월등히 크므로, 한 건물 내에는 최대한 다양한 종류의 물리 매체를 설치

Twisted-pair copper wire(UTP 케이블)

  • 가장 저렴하고 대중적으로 사용된다. 전화선으로 사용되어왔다.
  • FTTH가 대중화된 지금도 여전히 사용되고 있는 매개.

Coaxial Cable(동축 케이블)

  • TV와 인터넷 선을 동시에 제공하는 매개.

Fiber Optics(광섬유 케이블)

  • 빛 입자를 통하여 전달. 전자파 간섭이 없고 전송율이 매우 좋아 백본망, 해저망 등에서는 주로 이를 사용. 하지만 비싸다.

Terrestrial Radio Channels(지역 무선통신)

  • 유선 없이 사용 가능한 것이 장점.
  • 주변 환경 영향을 받는 것이 단점. (배치 위치, 음영지역 등)
  • 커버리지에 따라 종류가 근거리(BT 등), LAN(WiFi 등), WAN로 나뉜다.

Satellite Radio Channels(위성 통신)

  • 위성은 특정 주파수 대역의 신호를 취급하며, 지상에서는 리피터를 사용하여 이를 멀리 전파 및 데이터 송/수신
  • 두 가지 방식이 존재:
    • geostationary: 지구 궤도 상의 특정 위치에 고정적으로 위치하여 통신
    • low-earch orbiting(LEO): 지구 궤도 상에서 공전하며 통신

1.3 The Network Core

1.2에서 다룬 접속 네트워크를 지나, 그 이후부터 네트워크 내부까지를 다룬다.

1.3.1 패킷 스위칭

  • 네트워크 프로그램이 주고 받는 데이터는 '패킷(packet)'이라는 더 작은 단위들로 쪼개어서 이동한다; 패킷은 최소 단위인 bit로 구성된다.
    • 패킷의 전송 소요 시간: L(패킷의 총 bit 크기)/R(bit 전송량/초)
  • 패킷은 통신 링크(communication link)과 '패킷 스위치(packet switch)'를 거쳐서 목적지로 이동한다.
    • packet switch는 link-layer switch와 router 로 나뉜다

Store-and-Forward Transmission

  • 패킷 스위치가 패킷을 다음 목적지로 전달(switch; forward)하는 전략
  • 들어오는 패킷의 bit들을 모두 받아 완성되어야만 그 다음 목적지로 전송 시작하는 전략(∵ 패킷은 bit 단위로 전송). 경로 상의 노드 개수에 비례하여 전송 시간이 증가.
  • 라우터는 다음 목적지로 보낼 패킷을 임시로 저장하는 output queue를 가진다. 현재 큐의 front 패킷을 보낼 경로(link)가 이미 사용중(occupied)이면 대기해야 하고 이로 인한 병목 발생. output queue가 다 찬 상태에서 새로운 패킷이 들어올 경우 해당 패킷은 유실된다(packet loss). Figure 1.12의 예시 참조.

Forwarding Tables과 Routing Protocols

라우터는 여러 통신 링크로 연결된다. 패킷을 그 다음으로 어디로 전달할지 어떻게 결정할까?

  • 각 라우터는 저마다 forwarding table을 가진다. 이 표를 보고, 패킷에 들어있는 목적지 IP에 대응하는 인접한 통신 링크를 알아낸다.
  • forwarding table은 IP 주소 전체가 아닌 일부분에 대한 매핑을 가지는 수도 있다(CIDR).
  • 라우터의 forwarding table은 routing protocol에 의하여 자동으로 초기화된다 - 최단 거리 계산 등

1.3.2 서킷 스위칭

서킷 스위칭은 (패킷 스위칭과 더불어) 네트워크 상에서 패킷을 전달하는 본질적인 두 가지 접근 방식 중 하나. Figure 1.13 참조.

  • "통신 세션(communication session)이 유지되는 동안은" 두 end system 간 통신에 필요한 자원들(통신 링크, 버퍼 등)을 "점유"하는 방식. 전화 연결을 떠올려보자.
  • "점유"라는 특징이 패킷 스위칭과의 가장 큰 차이. - 어떤 자원이 점유중이라면, 이를 사용하고자 하는 다른 노드는 대기해야 한다.
  • circuit: connection for which the switches on the path between the sender and receiver maintain connection state for that connection x. "독점적으로 유지"
  • 한 링크 안에 여러 서킷이 들어있다.
  • 서킷 연결은 두 end system 간에 일정한 전송율을 보장한다

서킷으로 이루어진 네트워크 상에서 MUX가 이루어지는 방식은 2개가 있다. (Figure 1.14 참조)

  • 주파수 분할 방식(frequency-division): 일정 대역폭(bandwidth) 기준으로 링크 내 서킷들을 나누어, 각 통신 세션이 유지되는 동안 세션이 서킷을 할당받아 계속 사용하도록 하는 방식

    cf) (무선)주파수의 이해

    cf) 통신에서의 주파수와 대역폭에 대한 개관: https://www.ylab.ca/frequency_bands_and_bandwidth/

    • ex) 어떤 정보를 무선 송신하는 데에 100khz의 대역폭(baseband)이 필요하다고 가정하면, 이 대역폭을 바탕으로 나에게 배정된 주파수 대역(pathband; 예를 들어 100Mhz, +-50khz)에 맞게 변조하여 송신, 다른 장치에서도 해당 대역에 동조(tune)했을 때 들리도록 만들 수 있다.
      • 네트워크 도메인에서의 대역폭은 "한번에 전송되는 데이터의 양"을 말한다. 일반적인 무선통신에서의 대역폭과 단어와 뜻은 동일하지만 맥락이 전혀 다르다. 그리고 hz 대신 bps가 단위로 사용될 수 있다.
  • 시분할 방식(time-division): 단위 시간을 고정 개수의 프레임(frame)을 기준으로 나누고, 그 프레임 안에서 서킷 개수만큼 시간 슬롯을 배분한다. 한 통신은 매 시간 프레임 안에서 특정 시간 슬롯(key로 구분)을 오롯이 사용하는 방식.

서킷 스위치에는 디자인적 한계가 존재한다.

  • 네트워크 사용자가 IDLE 상태가 되면, 자원도 IDLE한 상태로 점유가 계속되므로 waste 이다.
  • 종단 간 서킷을 구성하고, 일관되게 안정적인 전송율을 유지하는 것은 복잡한 신호 처리 S/W를 필요로 한다.

그렇다면 패킷과 서킷 중 무엇이 더 나은가?

  • 패킷 스위치는 packet loss 등이 발생하는 특성상 실시간성이 (상대적으로) 떨어진다.
  • 하지만 패킷 스위치는 전송 capa를 각 노드 간에 효율적으로 공유할 수 있고, 방식 및 구현 난이도가 단순하고 그 비용이 더 저렴하다.
  • 비교 예시는 p58의 내용을 확인. 확률적으로따져볼 때, 패킷 스위치는 (이론과 달리) 실시간성을 웬만하면 유지할 수 있다.

1.3.3 (더 작은) 네트워크들의 네트워크

  • 앞에서 다룬 접속 네트워크(access network)를 제공하는 주체를 access ISP라고 분류함.
  • 접속 ISP는 반드시 대형 통신업체일 필요 없이, 일반 회사, 학교 등일 수 있다.
  • 이러한 접속 ISP가 제공하는 네트워크를 연결하는 (더 큰) 네트워크 또한 존재 → Figure 1.10 참조
  • 이 (더 큰) 네트워크는 글로벌 규모의 네트워크로, 국가 및 대형 자본 주도로 형성되어왔다. 접속 ISP를 (더 큰) 네트워크에 연결해주는 대가로 운영되는 통신 회사들(global transit ISP)로 구성되어 있다. 글로벌 ISP는 서로 연결된다. 이런 식의 재귀적으로 확장되어 n-tier 구성의 (더 큰) 네트워크 구조가 비롯된다.
  • 더 자세한 이야기는 역사로, 생략...

티어와 hierarchy가 확장됨에 따라 아래의 네트워크 개념이 도입된다. Figure 1.15 참조

  • PoP(point of presence): 상위 티어 ISP가 제공하는, 하위 티어 iSP의 네트워크가 연결할 수 있는 접속 포인트
  • multi-home: 상위 티어 ISP가 여러 ISP와 연결하는 것 - single point of failure를 방지하고자 이렇게 구성
  • peer: 하위 티어 ISP들이 서로 간에 직통 연결을 구성하는 것 - 상위 ISP에 요청하지 않아도 될 경우, peer간에 통신하여 비용 절감 가능
  • IXP(internet exchange point): 여러 ISP가 peer하는 포인트
  • content-provider network: 현재의 네트워크 구조를 바탕으로, 특정 서비스만이 사용하는 전용 네트워크(ex. Google의 글로벌 자체 네트워크). 단순 비용 절감 측면을 넘어, 엔드 사용자에게 자신의 서비스가 전달되는 방식을 제어할 수 있게 된다.

1.4 패킷 스위치 네트워크에서의 Delay, Loss, Throughput

1.1.2에서 다룬 인프라 관점의 인터넷에서는, 이상적으로는, 두 엔드 시스템 간에 데이터를 원하는 만큼 걱정없이 주고 받을 수 있어야 하겠으나 현실은 그렇지 않다. 데이터는 생각한 것보다 느리게 전송되거나, 유실되곤 한다. 이 절에서는 이 문제를 다룬다.

1.4.1 패킷 스위치 네트워크에서의 Delay 개관

패킷이 전송과정에서 거쳐가는 각 노드에서는 다양한 delay가 발생 - nodal delay라 통칭(Figure 1.16 참고)

  • processing delay: 패킷이 처음 라우터에 당도했을 때, 라우터는 해당 패킷의 헤더를 분석하여, 패킷을 다음에 어디로 보낼지 결정한다. 이때 발생하는 지연.
  • queuing delay: 링크로 진입하기 전, 다른 패킷이 링크를 점유하고 있다면 대기해야 한다.
  • transmission delay: 패킷은 실제로는 여러 bit로 분할되어 전송되며(1.3.1 참조),
    • 패킷이 다음 목적지로 전송되려면, 자신의 모든 bit를 가지고 완성된 상태이어야 한다.
    • 1초에 전송될 수 있는 bit수는 한정된다. 그래서 여기서 말하는 전송 지연은, 패킷의 모든 bit가 전송 시작하기까지 걸리는 시간
  • propagation delay: 링크 위에서 bit가 목적지 라우터로 이동하는 시간. 보통 빛의 속도로 전송되며, 링크의 거리만큼 이동한다.
  • transmission과 propagation의 차이는 뭘까? 위에 설명을 잘 읽어보자(Figure 1.17).

nodal delay는 위에 언급한 4가지 delay의 총합 (dnodal = dproc + dqueue + dtrans + dprop) (Equation 1.1)

  • 각 delay는 여러 요인에 따라 크게 변동할 수 있다.
    • dprop: 회선 종류에 따라(유선 / 무선 통신)
    • dtrans: 회선 속도에 따라 (10Mbps 광랜 / 전화선)

1.4.2 Queuing Delay and Packet Loss

queuing delay는 nodal delay 중 가장 복잡하고 흥미로운 주제이다. 패킷이 큐에 들어온 순서에 따라 복불복인 특성이 있기 때문. 그래서 queuing delay를 분석할 때에는 통계적 수단 - 평균, 편차, 확률 등을 활용하여 특성을 뽑아낸다.

  • a: queue에 진입하는 1초당 패킷 개수
  • R: queue에서 링크로 전송되는 1초당 bit 개수
  • L: 패킷 1개에 들어있는 bit 개수
  • La/R: traffic intensity; queue에 유입/이탈하는 bit의 비율을 나타낸 값으로, queuing delay의 정도를 판단하는 척도.
  • traffic intensity < 1 이도록 시스템을 설계하자
    • 단, 패킷이 몰리는 특성을 가지는 상황에 있다면, 병목은 필연적.

정리하면, queue가 전달받는 패킷 특성은 예측이 어렵다(random). 다만 traffic intensity를 토대로 queuing delay의 경향성과 추이를 예측해볼 수는 있다(Figure 1.18 참조). traffic intensity가 1에 가까워질수록 queuing delay는 기하급수적으로 증가한다. 즉, 약간의 변동이 큰 변화로 이어질 수 있다.

Packet Loss

  • 앞서 논한 packet queue는 그 크기가 한정되어서, 현실에서는 queue가 full인 경우 queuing delay가 발생하기보다는 packet loss가 발생한다.
  • 엔드 시스템 관점에서는 lost packet을 재전송하는 테크닉이 중요

1.4.3 종단 간 Delay

1.4.1 ~ 1.4.2는 단일 노드(라우터) 기준의 nodal delay를 다뤘다면, 이제 거시적인 차원에서 종단간(end-to-end) delay를 따질 수 있다.

  • 출발지와 목적지 사이에 N - 1 개의 라우터가 존재한다고 가정
  • queuing delay는 무시할 정도로 작다고 가정

이때 end-to-end는 (dend-end = N * (dproc + dtrans + dprop)) (3quation 1.2) 로, Equation 1.1 을 일반화한 것

Traceroute

Traceroute is a simple program that can run in any Internet host. When the user specifies a destination hostname, the program in the source host sends multiple, special packets toward that destination. As these packets work their way toward the destination, they pass through a series of routers. When a router receives one of these special packets, it sends back to the source a short message that contains the name and address of the router.

  • 목적지까지 경로 상에 N - 1개 라우터가 존재한다고 하면, traceroute는 목적지와 라우터까지 총합 N개의 특별한 패킷을 송신한다.
  • 각 패킷이 자신의 순번에 대응하는 라우터 또는 목적지에 도착하면, 해당 노드는 최초 출발 노드로 응답을 회신한다. 최초 출발 노드에서는 각 패킷이 회신될 때까지의 시간을 확인하여, 각각의 경로까지 전파 시간을 파악하고 진단할 수 있게 된다.
  • traceroute는 각 시행별 시간 차이를 비교할 수 있도록 위 과정을 3번 반복 수행한 결과를 보여준다.
  • 이때 각 시행 간의 시간차는 각종 delay로 인한 변동이다.

End system, application, and Other delays

앞서 언급한 지연(process, transmission, propagation, queuing 등) 외에도 다양한 주요 지연 요소들이 존재

  • 어플리케이션 특성에 따라, 패킷 전송을 의도적으로 지연시키는 경우도 존재
  • 미디어 패킷화(media packetization) 지연: A/V 데이터를 일련의 통신 패킷으로 변환하는 과정에 따른 지연

1.4.4 Throughput in Computer networks

  • instantaneous throughput: 순간 다운로드 속도; 우리가 흔히 파일을 다운받을 때 표시되는 다운로드 속도를 가리킨다.
  • average throughput: 정해진 시간동안 다운로드받은 총량을 토대로 한 평균 속도.

어플리케이션의 특성에 따라 두 지표 중 중요한 것이 달라진다.

  • 네트워크의 링크가 잇는 두 노드 간의 데이터 전송 속도를 RN이라고 하면, 이 속도는 각 링크마다 상이하다. 이 차이는 특정 링크로 인하여 경로의 전체 전송 속도를 떨어트리는 병목(bottlenet link) 현상을 유발한다.
  • 따라서 어떤 경로에서의 전체적인 파일 전송 속도(transmission rate)는 min{R1, R2, ..., RN} 이다.
  • 현대 실무의 네트워크 구조에서는 인터넷 속도가 매우 빠르므로, the constraining factor for throughput in today’s Internet is typically the access network.
  • 단, 특정 목적지에 요청하는 노드가 많고 어떤 링크를 공유하게 된다면, 해당 링크의 대역폭을 나누어 쓰게 되므로 그만큼 병목이 심해진다(Figure 1.20 참조)

1.5 프로토콜 레이어와 각각의 서비스 모델

다양한 요소가 복잡하게 구성되어 있는 오늘날의 인터넷을 구조화 및 조직화하려면, 무언가 계층 구조가 필요하다.

1.5.1 (인터넷이 가지는) 다층 설계(Layered Architecture)

  • 예시의 항공 서비스 이용 과정은 어디까지나 비유인데, 좋은 비유이지만 설명이 너무 구구절절이라 오히려 헷갈리는 측면도 있으니 대충 참고해두고 넘어가자.
  • 출발지에서 거쳐간 네트워크 계층을 목적지 도달한 후에 다시 역순으로 거쳐야 한다는 포인트는 중요
  • 다층 설계의 장점은 이 문장으로 음미해두고 넘어가자: As long as the layer provides the same service to the layer above it, and uses the same services from the layer below it, the remainder of the system remains unchanged when a layer’s implementation is changed.
  • 결국 인터페이스(프로토콜)의 중요성을 강조; 정해진 규격을 준수한다면, 내부 구현이 수정되어도 괜찮다.

protocol layering

여러 네트워크 프로토콜들에 대하여 구조를 잡기 위하여 아래와 같이 개념화

  • layer: 네트워크 프로토콜들로 구성된 계층 단위.
  • service: 각 layer가 자신의 상위 layer에 제공하는 기능(functionality). layer의 service model 이라 부르기도 한다.
    • Each layer provides its service by (1) performing certain actions within that layer and by (2) using the services of the layer directly below it.

protocol layer는 S/W 그리고/또는 H/W 로 구현한다. 네트워크를 구성하는 다양한 장치들에 걸쳐 그 역할에 따라 단/복수의 protocol이 배분된다.

  • S/W: HTTP, SMTP 등 application-layer 및 transport-layer
  • H/W: physical- 및 data-layer; communication link 종류에 따라 특화된 network interface 장비에서 직접 구현
  • 혼합: network layer

protocol layer를 사용하면 아래와 같은 장점이 있다:

  • 네트워크 시스템을 구성하는 각각의 요소들을 구조적으로 인식할 수 있다.
  • 계층에 의하여 생겨난 관심사 분리(modularity)으로 인하여, 각 시스템 요소의 수정이 용이해진다.

하지만 아래와 같은 단점도 있어, 일부 연구자들은 protocol layer를 부정적으로 본다:

  • 어떤 계층은 하위 계층의 기능을 중복으로 구현할 수도 있다.
  • 어떤 계층은 다른 계층이 가지고 있는 정보에 의존적일 수 있다. (ex. timestamp) -> 관심사 분리 실패

protocol layer의 모음을 protocol stack 이라 부른다(Figure 1.23 참조). 아래에서는 5계층으로 이루어진 Internet Protocol을 다룬다.

Application Layer

  • 네트워크 기반 어플리케이션과 해당 어플리케이션이 사용하는 application-layer protocol이 자리한 계층.
  • HTTP, SMTP, FTP, DNS 등이 이 계층의 대표적인 프로토콜이며, 새로운 프로토콜을 만드는 것 또한 어렵지 않다.
  • application-layer 에서 다뤄지는 패킷을 message 라고 부른다.

Transport Layer

  • message를 전송하는 기능을 담당하는 계층. TCP와 UDP 프로토콜이 존재.
    • TCP: 연결 지향 서비스; message가 목적지에 도착하는 것을 보장하는 프로토콜. 또한, message를 작은 조각(segment)으로 쪼개서 전송하여, 네트워크가 혼잡한 상황에서 전송 속도를 제어(throttle)할 수 있다.
    • UDP: 무연결 서비스. TCP와 달리 아무 것도 보장하지 않는다.
  • transport-layer에서 다뤄지는 패킷을 segment 라고 부른다.

Network Layer

  • 출발지에서 도착지로 패킷을 이동시키는 기능을 담당하는 계층.
  • 상위 계층에서 TCP 또는 UDP segment와 목적지 주소를 network layer로 전달하면, network layer는 목적지의 transport layer까지 해당 segment를 전달하는 기능을 제공한다.
  • network layer에서 다뤄지는 패킷을 datagram 이라고 부른다.
  • IP는 유일한 IP 프로토콜이다.
  • network layer는 경로를 찾는(routing) 프로토콜도 포함하며, 라우팅 프로토콜의 종류는 매우 다양하다. 다만 보통 이 계층을 대표하는 프로토콜은 IP이다.
  • 상위 계층의 datagram을 한 node에서 '인접한' 다른 node(host 또는 router)로 이동시키는 기능을 담당하는 계층
    • network layer가 목적지 탐색을 맡는다면, link layer는 목적지를 향하는 경로 상의 인접한 다음 node 탐색을 맡는다.
    • 말 그대로, 링크 단위의 통신를 책임지는 계층 cf) network layer는 출발지-목적지 간의 통신을 책임지는 것으로 더 큰 범위를 담당
  • 실제 링크에서 사용되는 link-layer protocol에 따라 링크에서 제공하는 서비스가 상이하다.
  • Ethernet, WiFi, DOCSIS 등이 이 계층의 대표적인 프로토콜.
  • 네트워크 경로 상의 링크들은 제각각 다른 프로토콜을 사용하는 경우가 많으므로, datagram 또한 다양한 프로토콜에 의하여 처리될 수 있다.
  • link layer에서 다뤄지는 패킷을 frame 이라고 부른다.

Physical layer

  • 상위 계층의 frame을 구성하는 개별 bit들을 이동시키는 기능을 담당하는 계층.
  • 실제 링크에서 전송에 사용하는 physical media 특성에 의하여 프로토콜(소재) 종류가 결정된다.
  • Ethernet 케이블의 경우, 다양한 소재로 구성된다: ex. UTP 케이블, 광섬유, 동축 케이블 등

OSI Model

앞서 다룬 5계층 인터넷 프로토콜 외에도 OSI(Open Systems Interconnection) 7계층 모델이 존재. (사실 이 둘 외에도 다양한 모델이 존재한다고 한다) 큰 차이점은 application layer에 덧붙여 2개 layer가 하위에 더 존재한다는 점이다.

  • presentation layer: 오고가는 데이터의 표현 방식을 책임지는 계층. 데이터 압축, 암/복호화 등의 역할을 수행.
    • ASCII, UTF, MPEG 등
  • session layer: 데이터 교환시 동기화, 연결 복구 등의 역할을 수행. '세션계층의 중요한 기능에는 동기화가 있다. 동기란 통신 양단에서 서로 동의하는 논리적인 공통처리 지점으로써, 동기점을 설정하기 위해 사용된다. 동기점이 설정된다는 의미는 그 이전까지의 통신은 서로 완벽하게 처리했다는것을 뜻한다.'
    • SSL, TLS 등

왜 Internet 프로토콜 모델에는 위 2개 계층이 없을까? 이 2개 계층이 안 중요한 것이 아니라, 이 2개 계층의 기능이 필요하다면, application 개발자가 마땅히 추가 개발하면 된다는 의미.

1.5.2 캡슐화

Figure 1.24은 한 end system에서 다른 end system 으로 패킷이 전달되는 과정을 Internet 프로토콜을 기준으로 잘 표현하고 있다.

  • 경로 상의 링크와 switch, router 에서 작동하는 계층도 묘사되어 있는데, 각 node의 역할에 따라 포함하는 프로토콜의 범위가 상이한 점 참고.
  • 각 계층은 자신의 계층에 해당하는 부분의 데이터만을 활용한다. 예를 들어, switch(layer 1~2)의 경우 IP 주소(layer 3)에 대하여 이해하지도 못하고 관심사도 아니다.
  • 상위 계층에서 하위 계층으로 데이터를 전달할 때마다, 직전 상위 계층의 데이터는 캡슐화(encapsulation)된다. 그래서 하위 계층에서는 상위 계층에서 캡슐화된 데이터는 건들 수 없고, 이 데이터는 도착지의 동일 계층까지 온전한 형태로 전달된다. Thus, we see that at each layer, a packet has two types of fields: header fields and a payload field. The payload is typically a packet from the layer above.
  • 한 거점 오피스에서 다른 거점 오피스로 우편을 보내는 p82의 비유 참조

1.6 공격에 노출된 네트워크

네트워크 보안은 아래의 내용들을 다룬다:

  • 악의를 가진 사람이 네트워크를 공격하는 방식
  • 공격으로부터 네트워크를 방어
  • 공격을 초장에 막을 수 있는 새로운 설계의 고안

기존에 밝혀진 공격 유형들은 다양한 한편, 새로운 취약점과 공격 유형은 계속해서 생겨나므로 네트워크 보안은 네트워크 분야의 주된 연구 분야이다. 이 절에서는 오늘날 널리 알려진 보안 관련 문제들을 다뤄본다.

  • 왜 컴퓨너 네트워크에는 취약점이 존재하는가?
  • 오늘날 흔히 알려진 공격 유형은 어떤 것이 있는가?

The Bad Guys Can Put Malware into Your Host Via the Internet

  • 장치 내의 파일을 제거하거나, 개인정보를 탈취하여 외부로 전송하는 백그라운드 프로세스가 작동하거나, ...
  • 시스템 주도권을 탈취당하여 악의적으로 동작하는 botnet에 등록되거나, (스팸메일 전송, ddos 공격 등)

악성 프로그램은 자가 복제의 특성을 지닌다. 즉, 네트워크 상의 다른 호스트도 감염되게끔 설계된다. 악성 프로그램은 그 특성에 따라 아래와 같은 것들이 있다.

  • virus: 악성 프로그램에 노출되기 위하여 user interaction(ex. 이메일 열람, 광고 클릭 등)이 필요한 유형.
  • worm: user interaction이 없이도 호스트에 침투할 수 있는 유형. 예를 들어, 변조된 온라인 프로그램을 실행하는 순간 사용자가 별도 동작을 하지 않더라도 해커에 의하여 시스템이 제어될 수 있게 된다.

이처럼 인터넷에 연결된 호스트를 악성 프로그램으로부터 보호하려면, 네트워크 설계자는 어떻게 해야 할까? 생각해보자.

The Bad Guys Can Attack Servers and Network Infrastructure

denial-of-service(DoS) 공격은 아주 대중적인 보안 위협 유형이다. 네트워크, 특성 호스트, 네트워크 인프라 등의 기능을 마비시켜, 정상 사용자들이 웹 서비스를 사용할 수 없도록 만든다. DoS 공격은 아래 3가지 유형으로 크게 나뉜다:

  • vulnerability attack: 로직 상의 취약점이 존재하는 어플리케이션을 노리는 공격. script injection 공격을 떠올리면 될 듯.
  • bandwidth flooding: 서버에 대량의 패킷(요청)을 보내서, 정상 사용자의 요청이 서버에 도달하지 못하도록 만드는 공격.
    • 다수의 머신을 사용하여 이러한 공격을 감행하는 경우, 이를 distributed DoS (DDoS) 공격이라고 부른다.
  • connection flooding: 서버에 대하여 다수의 TCP connection을 연결하여, 정상 사용자가 서버와 연결할 수 없도록 만드는 공격.

이러한 DoS 공격을 막으려면 네트워크 설계자는 어떻게 해야 할까? 생각해보자.

The Bad Guys Can Sniff Packets

WiFi 등의 무선 인터넷 환경이 보급되면서, 접근성이 높아진 만큼 패킷 탈취 위험이 높아졌다.

  • 무선 송신 장치 인근에 packet sniffer를 위치시키는 것만으로, 패킷 탈취가 손쉽게 가능한 환경이 된 것이다.
  • 유선 환경 또한 패킷 탈취에서 자유롭지 않다. 악의를 가진 자가 LAN의 access network에 접근하여 라우터 또는 스위치 등을 변조하게 되면, 동일한 위험에 노출된다.
  • Wireshark 등의 무료 패킷 분석 프로그램을 사용하면 패킷 탈취 및 분석은 손쉽게 가능하다.

무선 환경으로 통신한다는 것은 위와 같은 위험을 감수한다는 의미이다. 다행히, 암호화(cryptography)를 통하여 이를 대비할 수 있다.

The Bad Guys Can Masquerade as Someone You Trust

출발지와 도착지, 내용 등을 원하는 내용으로 만들어서, 누군가의 패킷으로 위장하는 것은 매우 간단하다. 이를 IP spoofing 이라 부른다.

이를 방지하려면 end-point authentication 이 필요하다. 즉, 수신자가 송신자의 진위 여부를 검증해야 한다는 것. TLS 통신이 이에 대한 해결책.

왜 인터넷은 이렇게 보안적으로 취약한 공간이 되었을까 (ft. 왜 처음부터 잘 만들지 않았을까?)

  • 인터넷의 최초 설계는, "상호 신뢰할 수 있는 당사자들 간의 투명한 네트워크"였기 때문
  • For example, the ability for one user to send a packet to any other user is the default rather than a requested/ granted capability, and user identity is taken at declared face value, rather than being authenticated by default.

1.7 컴퓨터 네트워크와 인터넷의 역사

쉬어가는 느낌으로, 주요 내용만 요약

1.7.1 패킷 스위칭의 개발: 1961-1972

  • 당시만 해도 전화 네트워크가 주류였고, 전화선은 circuit switch를 사용(실시간성이 강하며, 점유 방식)
  • 컴퓨터를 통한 네트워킹은 그 특성상 실제 사용하는 시간보다 미사용 및 대기 시간이 길었고, 순간적으로 트래픽이 증가하는 경우가 잦았다(bursty traffic).
  • 이러한 사용 특성을 고려하여 패킷 스위치 방식이 탄생했고, 이를 바탕으로 초기 인터넷 구조인 ARPAnet이 고안되었다.

1.7.2 보조 네트워크, 그리고 네트워크 간의 연결

  • ARPAnet는 본래 ARPA라는 단체에서만 사용하는 폐쇄망이었다.
  • ARPAnet을 필두로 다른 폐쇄망도 생겨나기 시작 - ALOHANet, DARPA의 네트워크, Telenet, Cyclades, Tymnet, SNA, ...
  • 이 네트워크들은 각기 점점 규모가 커져나갔고, 각 네트워크를 연결하는 더 큰 네트워크를 설계하기 위한 연구가 이어졌다.
    • TCP, UDP, IP 등의 프로토콜이 탄생했고, Ethernet 프로토콜이 탄생했다.

1.7.3 네트워크의 확산: 1980-1990

  • 1980년에 이르러서는 인터넷에 접속된 호스트 개수가 수십만으로 증가했다. 대학교 네트워크를 연결한 것이 큰 증가 요인이었다.
  • TCP/IP가 ARPAnet의 표준 호스트 프로토콜이 되면서, 모든 호스트가 TCP/IP로 연결해야 했다.
  • DNS가 도입되었다.
  • 정부 주도로 인터넷을 보급하는 사업이 프랑스에서 시작되었다(Minitel 프로젝트)

1.7.4 인터넷 폭발: 1990년대

  • 인터넷이 상용화되었다. ARPAnet이 운영 중단되었고, NSFNET이 공개 네트워크로 전환했고, 상용 ISP에 의하여 인터넷 트래픽이 유지되기 시작했다.
  • WWW(Web) 어플리케이션이 등장하였고, 가정과 기업의 수백만 사용자가 이를 통하여 인터넷에 접속하기 시작했다. 웹 서비스가 우후죽순 생겨나기 시작했다.
  • 웹은 CERN 연구소의 팀 버너스 리가 1989년 고안했다. 아래의, WWW을 구성하는 핵심 요소들을 고안했다:
    1. HTML 형식
    2. HTTP 프로토콜
    3. 웹 서버
    4. 브라우저
  • 이후 Mosaic에서 GUI 기반의 브라우저를 개발했고, 이는 이후 1995년 Netscape 브라우저의 출시로 이어진다. 이후 Microsoft와 Netscape 간의 브라우저 전쟁이 시작된다.
  • 이후에는... 인터넷은 폭발적으로 성장했고 시장을 형성했다.

1.7.5 신세기

오늘날 부상한 아래의 (새로운) 내용들은 눈여겨볼 만 하다:

  • 광대역 인터넷이 보급화되면서, 초고속 인터넷으로 말미암아 비디오 관련 서비스가 시장의 주목을 받기 시작했다. 영상 플랫폼, 실시간 스트리밍 서비스, 화상 회의 플랫폼 등.
  • 초고속 이동 통신의 보급(WiFi / 4G 등)은 사용자들이 언제나 인터넷에 연결될 수 있는 환경을 마련했다. 이는 즉 위치라는 특성을 활용한 서비스가 등장한다는 것을 의미한다. Tinder, Yelp 등. 또한, 동일한 이유로 휴대성을 극대화한 모바일 장치가 급부상하게 되었다.
  • 온라인 SNS 서비스의 등장으로 수많은 사람들을 네트워크 상에 등장시켰고 사람들은 이를 통하여 메시지를 교환하고 사진을 공유하는 등 소통한다. 여기서 중요한 것은 'live', 실시간성으로, SNS 서비스가 플랫폼으로서 동작하게 된다는 특성을 지닌다.
  • Google, Microsoft 등의 대형 서비스 제공자는 각자만의 사설 네트워크를 유지하며, 이를 통하여 전체 인터넷을 거치지 않고도 자신의 이용자에게 데이터를 제공한다(1.3.3의 content-provider network 참고).
  • 많은 인터넷 서비스 또는 기업들은 점점 자신의 서비스를 클라우드 환경에서 제공한다. 클라우드 서비스는 상주한 서비스에게 단지 컴퓨팅 자원을 제공하는 것뿐 아니라, 고성능의 네트워크 인프라 자원도 제공한다.

0개의 댓글