혼자 정리

[네트워크이론] 1. 컴퓨터 네트워크와 인터넷 본문

네트워크

[네트워크이론] 1. 컴퓨터 네트워크와 인터넷

tbonelee 2023. 12. 23. 00:49

(Computer Networking a top-down Approach 7th 내용입니다)

1.1 인터넷이란 무엇인가?

  • 구성요소(하드웨어, 소프트웨어 등)로 설명하는 방법
  • 분산되어 있는 어플리케이션에 서비스를 제공하는 인프라로 설명하는 방법

1.1.1 구성요소로 본 인터넷

  • hosts/end systems : 컴퓨터, 핸드폰, 인터넷 연결 가능 가전 등 모든 인터넷에 연결되는 장치들
  • End system들은 communication linkpacket switch 의 네트워크로 서로 연결된다. ([[#1.2]])
    • 각각의 link는 bits/second(bps) 단위로 측정된 transmission rate 으로 data를 transmit한다.
  • 하나의 end system이 다른 end system으로 data를 보낼 때, 보내는 쪽은 data를 segment로 나누고 각 segment에 header byte를 추가한다. 그렇게 만들어진 정보의 묶음은 컴퓨터 네트워크 용어로 packets라고 부른다. packets는 네트워크를 통해 목적지 end system으로 보내지고 그곳에서 original data로 재조립된다.
  • packet switch는 incoming communication link쪽에서 들어온 packet을 받아서 outgoing communication links 중 하나로 forward한다.
    • 오늘날 packet switch의 가장 흔한 형태로는 routers, link-layer switches 가 있다.
    • link-layer switches는 보통 access networks에서 사용되고, routers는 보통 network core에서 사용된다.
  • packet이 sending end system로부터 communication links, packet switch를 거쳐서 receiving end system으로 도착하는 sequence를 route 또는 path라 부른다.
  • End system은 Internet Service Providers (ISPs) 를 통해 인터넷에 접근한다.
    • 가정 ISP, 법인 ISP, 대학 ISP 등 다양하게 존재
    • 각 ISP는 그 자체로 packet switches와 communication links의 네트워크
    • ISP는 다양한 네트워크 접근을 end system에 제공 (케이블 모뎀, DSL, 고속 local area network, 모바일 무선 access)
    • ISP는 서버를 인터넷에 연결함으로써 컨텐츠 제공자에게도 인터넷 접근을 제공.
  • 인터넷에서 end system끼리 연결되어 있기 위해 ISPs는 서로 연결되어 있어야 한다.
    • end system과 연결되어 있는 lower-tier ISPs는 국가 ISPs, 국제 upper-tier ISPs를 통해 서로 연결되어 있고, 이러한 upper-tier ISPs는 서로 직접 연결되어 있다.
  • 각각의 ISP 네트워크는 개별적으로 관리되고 IP 프로토콜을 운영한다. ([[#1.3]])
  • End systems, packet switches 등 인터넷의 여러 다른 부분들은 인터넷에서 정보를 주고 받는 것을 조정하는 protocols를 운영한다.
    • Transmission Control Protocol (TCP)Internet Protocol (IP) 가 인터넷에서 가장 중요한 두 가지 프로토콜.
    • IP 프로토콜은 router와 end system 사이에서 주고받는 packets의 형식을 명시한다.
    • 인터넷의 가장 주요한 protocols를 묶어서 TCP/IP로 부른다.
  • 인터넷은 표준이 중요
    • 사람들이 프로토콜에 대해 서로 동의해야 상호작용하는 시스템과 제품을 만들 수 있기 때문
    • Internet standards는 Internet Engineering Task Force(IETF)에서 개발하고 IETF 표준 문서는 Requests for comments (RFCs) 라고 부른다.
      • TCP, IP, HTTP, SMTP 등을 정의
    • 다른 기관에서도 네트워크 컴포넌트에 대한 표준을 명시. (특히 네트워크 링크에 대한)
      • IEEE 802 LAN Standards Committee는 Ethernet과 무선 WiFi 표준에 대해 기술한다.1.1.2 서비스로 설명한 인터넷
  • An infrastructure that provides services to applications.*
  • 메일, 인터넷, 멀티플레이어 게임, 음악 스트리밍 등 여러 서비스를 제공.
    • 이러한 어플리케이션들은 여러 end system과 연관된다는 측면에서 distributed applications라고 부른다.
  • 어플리케이션은 패킷 스위치가 아닌 end system에서 실행된다는 점을 기억.
  • End system은 그 위에서 동작하는 프로그램이 다른 end system상의 프로그램에 데이터 전송을 요청할 수 있는 socket interface를 제공한다.
    • 소켓 인터페이스는 데이터를 보내는 프로그램이 지켜야 할 규칙 ([[Ch.2]])

1.1.3 프로토콜이란?

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은 데스크톱 컴퓨터, 서버, 모바일 기기 등을 포함
  • End system은 애플리케이션을 host하기 때문에 _hosts_라고 불리기도 한다.
    • host = end system
  • Host는 clientsservers의 두 개 카테고리로 따로 분류되기도 한다.

1.2.1 접속 네트워크 (Access Networks)

  • End system을 다른 end system과 연결하는 path 상에서 첫번째 라우터(edge 라우터)에 연결하는 네트워크
  • 가정에서의 접근 : DSL, Cable, FTTH, 5G Fixed Wireless
  • 기업 및 가정에서의 접근 : Ethernet, WiFi

1.2.2 물리 매체

1.3 네트워크 코어

1.3.1 패킷 스위칭

종단 시스템이 메시지를 보낼 때 메시지는 패킷으로 쪼개진다.
패킷은 커뮤니케이션 링크와 패킷 스위치를 통해 목적 종단 시스템에 도달한다.
커뮤니케이션 링크에서 패킷은 링크의 full transmission rate속도로 transmitted된다.
따라서 L bit의 패킷을 R bits/sec의 transmission rate를 가진 링크를 통해 보내게 되면, transmit에 L/R 초가 걸리게 된다.

Store-and-Forward Transmission

보통의 패킷 스위치가 패킷을 전송하는 방법

스위치가 특정 패킷의 첫 비트를 전송하기 위해서는 해당 패킷 전부를 모두 받아서 저장한 상태여야 함을 의미.

(단순화를 위해 전파 지연; propagation delay는 없다고 일단 가정)
ex)
L bits 크기의 패킷이 목적지에 도달하기 위해의 N개의 링크를 거쳐야 하는 상황을 가정해 보자. (N-1개의 패킷 스위치)
모든 패킷 스위치가 L bits 의 패킷을 R초에 송신할 수 있다고 해보자.
해당 패킷이 목적지에 도달하려면 N개의 스위치를 거쳐야 한다.
스위치가 패킷의 첫 비트를 보내려면 해당 패킷을 전부 저장해야 한다. 따라서 특정 패킷이 하나의 스위치를 거치려면 일단 패킷이 거기에 전부 쌓일 때까지 기다려야 한다.
=> N개의 링크 / L bits 패킷을 R초에 송신
=> 종단간 지연은 다음과 같다.$$d_{end-to-end} = N {L\over{R}}$$
store-and-forward하지 않고 바로 전송했다면 L/R의 시간이 걸렸을 것이 N배가 된 것.

큐잉 지연과 패킷 손실

패킷 스위치는 각 링크에 대해 출력 버퍼(출력 큐; output buffer, output queue) 를 가짐
해당 링크에 이미 다른 패킷을 보내고 있다면 동일 링크로 보내질 다른 패킷은 출력 버퍼에서 대기해야 함
=> 큐잉 지연(queuing delay)
새로운 패킷이 전송을 위해 대기하고 싶지만 이미 버퍼가 꽉 차 있는 경우? 기존 큐의 패킷 일부 or 새로운 패킷을 drop
=> 패킷 손실(packet loss)

전달 테이블과 라우팅 프로토콜 (Forwarding Tables and Routing Protocols)

라우터는 수신 통신 링크로 패킷을 받아서 송신 통신 링크로 전달
이 때 해당 패킷을 어느 패킷으로 전달해야 하는지 결정?

소스 엔드 시스템에서 목적지 종단 시스템으로 패킷을 보낼 때 패킷의 헤더에 목적지의 IP 주소를 넣는다.
라우터가 패킷을 받으면 목적지 주소(or 그 일부분)를 통해 전달 테이블(forwarding table) 에서 알맞은 출력 링크를 찾아서 보내게 된다. (IP 주소는 계층 구조를 가지므로 주소의 일부만으로도 맵핑이 가능한 것?)

맵핑 테이블은 어떻게 생성하는지?
=> 라우팅 프로토콜 이 존재 ([[Ch.5]])

1.3.2 Circuit switching (회선 교환)

패킷 교환과 달리 회선 교환에서는 엔드 시스템 간 통신을 위해 경로 상의 필요한 자원을 '예약' 한다.
(패킷 교환은 온디맨드 방식. 따라서 큐에서 대기할 수도 있음)

ex) 전통적인 전화망 (전통 방식의 음성, 팩스 등)
송신자가 정보를 보내기 전에 네트워크가 송신자 <-> 수신자 연결을 설정해야 함
=> 이를 회선(circuit) 이라 부름
이 때 네트워크는 일정한 전송률을 예약
=> guaranteed constant rate로 데이터를 보낼 수 있음

반면 패킷 교환은 혼잡한 시간에는 버퍼에서 지연이 발생할 수 있기 때문에 일정 시간 내 전달을 보장하지 못함

회선 교환 네트워크에서의 다중화

Frequency-Division Multiplexing, FDM(주파수-분할 다중화)

  • 링크의 주파수 대역을 분할
  • Time-Division Multiplexing, TDM*(시-분할 다중화)
  • 시간을 일정 주기의 프레임으로 구분하고, 각 프레임을 고정된 수의 시간 슬롯으로 나눔
  • 네트워크가 연결을 설정할 때 모든 프레임에서 특정 시간 슬롯 한 개를 해당 연결에 할당

패킷 교환 대 회선 교환

네트워크 사용자의 활동 시간 비중이 비활동 시간 대비 적다면 전송 시간 측면에서 패킷 교환이 유리
(회선 교환은 다른 회선이 비어 있더라도 사용할 수 없음)

1.4 Delay, Loss, and Throughput in Packet-Switched Networks

1.4.1 Overview of Delay in Packet-Switched Networks

패킷이 시작 종단 지점에서 목적지까지 가기 위해서는 여러 노드(호스트 or 라우터)를 거친다.
개별 노드에서 노드 처리 지연(nodal processing delay), 큐잉 지연(queuing delay), 전송 지연(transmission delay), 전파 지연(propagation delay) 등 여러 지연을 겪게 되고 이 지연들이 누적된 지연을 전체 노드 지연(total nodal delay)이라 부른다.

처리 지연 (Processing Delay)

  • 패킷 헤더를 조사해서 어디로 보낼지 결정하는 시간, 패킷의 비트 단위 에러 검사 등으로 인한 지연
  • 고속 라우터에서 처리 지연은 일반적으로 마이크로세컨드 단위
  • 노드가 이러한 처리를 마친 후에야 전송할 링크에 해당하는 큐로 보내게 된다.

큐잉 지연 (Queuing Delay)

  • 큐에서 링크로 전송되기를 대기하면서 생기는 지연
  • 큐가 비어있으면 큐잉 지연은 0
  • 보통의 큐잉 지연은 마이크로세컨드 단위에서 밀리세컨드 단위 정도

전송 지연 (Transmission Delay)

  • L 비트 길이의 패킷, 라우터 A에서 라우터 B까지 링크의 전송률을 R bps라 하자.
  • ex) 10 Mbps 이더넷 링크의 R은 10 Mbps.
  • 전송 지연은 L/R <=> 패킷의 모든 비트를 링크로 밀어넣기 위해 걸리는 시간.
  • 보통 마이크로세컨드에서 밀리세컨드 단위

전파 지연 (Propagation Delay)

  • 비트가 링크로 밀어넣어진 후에 다음 라우터로 전파되기까지 걸리는 시간.
  • 전파 속도는 링크의 물리 매체에 따라 다르다 (광섬유 등)
    • $2 \cdot 10^{8} meters/sec$ to $3 \cdot 10 ^{8} meters/sec$
    • 빛의 속도와 같거나 약간 느린 정도
  • 전파 지연은 라우터 간의 거리/속도 (d/s)
  • 일반적으로 밀리세컨드 단위

전송 지연과 전파 지연 비교

  • 전송 지연은 일정 길이의 차량을 톨게이트에서 처리해서 통과시키기 위해 걸리는 시간
  • 전파 지연은 한 톨게이트에서 다음 톨게이트까지 차량 한 대가 이동하는 데 걸리는 시간

전체 노드 지연은 다음과 같이 나타낼 수 있음
$$d_{nodal} = d_{proc} + d_{queue} + d_{trans} + d_{prop}$$
각 지연의 기여도는 환경에 따라 크게 다를 수 있음
(ex. 동일 대학 캠퍼스 간에서 $d_{prop}$은 무시할 만한 수준이지만 정지 위성 링크로 연결된 라우터 사이에서는 수백 msec로 기여도가 클 수 있음)

1.4.2 Queuing Delay and Packet Loss

큐잉 지연은 다른 지연과 다르게 패킷마다 다를 수 있음.
=> 평균 큐잉 지연, 큐잉 지연의 분산 등 통계 값을 이용하여 측정

큐잉 지연은 '트래픽이 큐에 도착하는 비율(패킷/시간)', '링크의 전송률(비트/시간)', '트래픽의 분산(burst가 얼마나 있는지)'에 의해 결정된다.

다음을 가정

  • a를 패킷이 큐에 도착하는 평균 비율(packets/sec)
  • R은 전송률(bits/sec)
  • 패킷의 길이는 L bits

1초에 평균적으로 도착하는 비트의 크기는 $La$ bits/sec
Traffic intensity(트래픽 강도) 는 $La/R$ 로 나타낸다.
$La/R>1$ 이면 큐잉 지연은 무한대로 발산
=> 트래픽 엔지니어링에서 중요한 규칙 : 트래픽 강도가 1을 넘지 않게 설계

$La/R \le 1$이더라도 이는 평균 값이기 때문에 큐잉 지연은 발생할 수 있다.
패킷이 도착하는 특성이 여기서 중요.
패킷이 주기적으로 도착한다면 (Uniformly distributed) 큐잉 지연은 생기지 않는다.
반대로 한 번에 몰린다면(burst) 큐잉 지연이 발생.
ex) $N$개 패킷이 $(L/R)N$초마다 도착한다고 해보자.
첫번째 패킷의 큐잉 지연은 0, 두번째 패킷의 큐잉 지연은 $(L/R)$초, ... , $N$번째 패킷의 큐잉 지연은 $(N - 1)(L/R)$초가 된다.

일반적으로 큐에 도착하는 시계열 프로세스는 _랜덤_하다. 따라서 트래픽 강도만으로는 큐잉 지연을 완벽히 알 수는 없지만 일반적인 이해를 얻는데는 도움이 된다.
트래픽 강도가 1에 가까워질수록 평균 큐잉 지연의 크기는 커질 것이다.
여기서 중요한 점은 트래픽 강도 증가에 대한 평균 큐잉 지연의 증가는 트래픽 강도가 1에 가까워질수록 더 크게 증가한다는 점이다 ($f'' > 0$)

패킷 손실

큐의 크기가 무한하다면 트래픽 강도가 1에 접근함에 따라 큐잉 지연은 무한대가 될 것이다.
하지만 현실에서 큐의 크기는 유한하기 때문에 큐가 꽉 찬 경우 라우터는 도착한 패킷을 drop한다. (lost)
따라서 큐잉 지연은 어느 정도 상방이 존재한다. 대신 그만큼의 값이 패킷 손실로 나타나게 된다.
=> 트래픽 강도가 커질수록 패킷 손실 확률도 증가

1.4.3 종단간 지연

단순하게 보면 모든 라우터에 대해 노드의 지연을 더한 값

1.4.4 컴퓨터 네트워크에서의 처리율(Throughput in Computer Networks)

  • 가장 전송 속도가 낮은 링크에 의존
  • 같은 링크를 공유하는 트래픽에도 의존 (혼자 링크를 쓰지 않으면 최대 전송 속도를 쓸 수 없기 때문?)

1.5 프로토콜 계층과 서비스 모델

1.5.1 계층 구조(Layered Architecture)

왜 계층화?

  • 명확한 구조는 시스템의 각 부분들을 명확하게 인식, 부분들 간의 관계를 파악하는 것을 편하게 한다.
  • 모듈화를 통해 시스템의 유지, 업데이트를 편하게 한다.

Layered Internet protocol stack

  • application
    • 네트워크 애플리케이션을 지원
    • HTTP, IMAP, SMTP, DNS
    • message : 애플리케이션 계층의 정보 패킷
  • transport
    • 프로세스 - 프로세스 간의 데이터 전송
    • TCP, UDP
    • segment : 트랜스포트 계층 패킷
  • network
    • 소스에서 목적지까지 데이터그램을 라우팅
    • IP, Routing protocol
  • link
    • 네트워크 노드 간 데이터 전송
    • Ethernet, 802.11 (WiFi), PPP(Point-to-Point Protocol)
  • physical
    • 각 비트를 노드에서 노드로 전달
    • bits "on the wire"

캡슐화

  • 데이터는 애플리케이션 계층에서 물리 계층까지 데이터가 전달되고 각 노드마다 다시 계층을 타고 올라가서 전달된다.
  • 각 계층에서는 상위 계층에서 받은 데이터에 헤더를 붙인 다음 하위 계층으로 보낸다.
  • 데이터를 받은 노드에서는 계층마다 해당 계층에서 필요한 헤더를 떼서 확인한 다음 상위 계층으로 보낸다.