Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

CH1_Computer Networks and the Internet (1.3~1.6)

S0LL 2024. 10. 1. 17:41

1.3 The Network Core


1.3.1 Packet Switching


- 메세지를 목적지로 보내기 위해, source에서는 긴 메세지를 packet이라 불리우는 작은 데이터 조각으로 나눈다.

 

- 메세지가 전달되면서 각 패킷은 communication link 와 packet switch를 통해 이동한다.

  주요 패킷 스위치 유형 -> router , link-layer switch

 

- 패킷은 각 링크의 최대 속도로 전송된다.

 

- 패킷의 크기와 링크에 따라 전송 시간이 결정된다. ex) 크기 Lbit, 속도 Rbit/sec -> 전송속도 == L/R sec

 

 

Store-and-Forward Transmission

대부분의 packet switch는 링크를 입력할 때 store-and-forward transmisson을 사용한다.

 

-store-and-forward transmission은 패킷 스위치가 첫 번째 비트를 전송하기 전에 전체 패킷을 수신해야 하는 것을 말한다.

store-and-forward transmission을 이용한 데이터의 전송 과정

- 위 그림에서 라우터는 source에서 destination으로 데이터를 전달하는 간단한 일을 한다.

 

- 각각의 크기가 L bit인 3개의 패킷을 목적지로 보낸다고 가정해봅시다.

 

- 이때 라우터는 store-and-forward transmission 방식을 사용하기에 전체 패킷을 저장한 뒤 전송을 시작할 수 있다.

 

- 첫 번째 패킷이 라우터에 도착하는데 걸리는 시간은 L/R sec 이다.

 

- 여기서 라우터가 목적지로 패킷을 보내는데 걸리는 시간 또한 L/R sec 이다.

 

- 따라서 전체 패킷이 목적지에 도달하는 총 지연시간은 2L/R sec 이다.

 

- 만약 위 방식을 사용하지 않고 바로바로 데이터를 전송했다면 L/R sec로 더 빠르게 보낼 수 있었을 것이다. (쓰지 않는 이유는 아래서)

 

- 그럼 3개의 패킷이 모두 목적지에 도달하는 시간을 알아보자.

 

- 답은 4L/R sec 이다. 라우터에서 목적지로 패킷을 보내면서 source에서 패킷을 받아오기 때문.


Queuing Delays and Packet Loss

 

- 각각의 패킷스위치에는 여러 링크가 연결되어있다.

 

- 각 링크에 대해 임시로 패킷을 저장하는 버퍼도 가지고 있다.(ouput buffer)

 

- 이는 링크로 데이터가 전송되기 전 임시 저장소로 매우 중요한 역할을 한다. 

 

- 만약 링크가 사용중이라면 패킷은 출력 버퍼에서 대기해야 하는데

  이로 인해 store-and-forward 딜레이 뿐만 아니라 큐잉 지연(버퍼에서 대기)도 발생한다.

 

- 큐잉 지연은 네트워크의 혼잡도에 따라 변한다.

 

- 버퍼 공간은 유한하기 때문에 혼잡한 경우 새로운 패킷을 저장할 공간이 없을 수도 있다.

 

- 이때 새로운 패킷이 저장되며 이미 있던 패킷이 사라지는 현상이 발생한다.

 

- 패킷이 대기하는 것은 우리가 일상에서 어딘가에 줄을 서는 상황과 비슷하다.

 

- packet losing은 1.4에서 자세히 다룰 예정.


Forwarding Tables and Routing Protocols

 

- 앞에서는 라우터가 중간다리 역할이라고 했다.

 

- 그런데, 라우터는 어떤 링크로 패킷을 보내야 하는지 어떻게 알까?

 

- 인터넷에서는, 모든 end system은 IP주소라 불리우는 각각의 주소를 가지고 있다.

 

- 한 end system에서 packet을 보낼 떄 packet의 header에 목적지 IP주소를 담아서 보낸다.

 

- 이 주소는 우편 주소와 마찬가지로 계층적인 구조를 가지고 있다.

 

- 각각의 라우터는 forwarding table(목적지 주소를 매핑하는 테이블)을 가지고 있어서 

  패킷이 라우터에 도착하면 테이블을 뒤져 적절한 출력 링크를 찾아 내보낸다.

 

- 그렇다면 forwarding table은 어떻게 설정될까?

  이는 챕터5에서 깊게 알아본다.

 

- 간단하게만 알아보자면, 인터넷에는 forwarding table을 자동으로 설정하기 위해 사용되는 특수 라우팅 프로토콜이 있다.

 

- 라우팅 프로토콜은 각 라우터에서 목적지까지 최단 경로를 설정하고 지나치는 라우터에 forwarding table을 설정한다.


1.3.2 Circuit Switching


데이터를 전송하는 두 가지 기본 접근 방식이 있다. -> circuit switching / packet switching

 

이전에는 packet switching 에 대해 알아보았으니 이번에는 circuit switching에 대해 알아보자.

 

- circuit switched networks에서는 데이터 송수신 전에 필요한 것들이 미리 할당된다.

  아마 c언어에서 메모리 할당 후 사용하는 것과 비슷하지 않을까.

 

- packet switching -> 동적할당이므로 혼잡할 때는 대기.

 

- packet switching 예시 -> 예약없이 가는식당

 

- circuit switching 예시 -> 전화 네트워크

 

- 네트워크가 회선을 설정하면, 일정 속도가 보장된다.

- 위 그림과 같은 네트워크에서, 4개의 서킷스위치들은 4개의 링크로 서로 연결되어있다.

 

- 예를 들어, 인접한 스위치 간 전송속도가 1Mbps라면, 각각 250kbps의 속도를 가진다. (4등분)

 

- 반대로, 한 호스트가 인터넷과 같은 패킷 교환 네트워크를 통해 다른 호스트로 패킷을 전달하는 경우를 생각해보자.

 

- 서킷스위칭과 마찬가지로, 패킷은 일련의 통신 링크를 통해 전송된다.

 

- 하지만 서킷스위칭과는 달리 어떤 링크의 예약도 없이 패킷을 전송한다.

 

- 이때 네트워크가 혼잡할 경우 패킷은 버퍼에서 대기해야 한다.

 

- 인터넷은 best-effort 방식을 사용해 패킷을 전송하지만, 그 시간이 보장되지는 않는다.


Multiplexing in Circuit-Switched Networks

 

- 링크의 서킷은 FDM(Frequently-Division Multiplexing) 혹은 TDM(Time-Division multiplexing)으로 구현된다.

 

- FDM은 링크의 주파수 대역을 여러 연결이 나누어 사용하는 방식이다.

 

- TDM은 시간을 일정한 길이의 프레임으로 나누고 각 프레임은 일정 개수의 시간 슬롯으로 나뉘는 방식이다.

 

- 네트워크가 링크를 통해 연결을 설정할 때, 각 연결에 일정한 시간 슬롯이 할당된다.

 

- TDM에서 서킷의 전송 속도는 프레임 속도와 각 슬롯의 비트 수를 곱한 값이다.

  ex) link transmits 8000 frame/sec, each slot consists of 8bits -> transmission rate of each circuit = 64kbps

 

- 패킷스위치를 지지하는 사람들은 서킷스위치 방식에서 사용되지 않는 구간의 자원이 낭비된다고 지적한다.

  ex) 전화할때 말을 안하더라도 다른사람이 그 링크 사용할수 없음.

 

- 패킷스위치 지지자들은 경로를 설정하고, 예약하고, 스위치의 동작을 조정하는 데에 복잡한 소프트웨어가 필요하다고 주장한다.

 

- 서킷스위칭의 예시를 하나 들어 살펴보죠.

 

- 호스트 A에서 B로 64만비트의 파일을 전송하는 상황

  네트워크의 모든 링크는 각 속도가 1.536Mbps이고 24개의 슬롯을 가지는 TDM 방식을 사용.

  호스트 A가 파일을 전송하는 회선을 설정하는데 500msec.

 

- 각 회선의 전송 속도 = 1.536/24 = 64kbps.

  파일을 전송하는데 걸리는 시간 = 640000 / 64kbps = 10초.

  회선을 설정하는데 걸리는 시간 0.5초까지 해서 총 10.5초 소요.

 

- 서킷 스위치 방식은 링크의 개수에 상관 없이 시간이 항상 일정하다.


Packet Switching vs Circuit Switching

 

- 패킷 교환은 지연 시간이 변동성이 있어서 실시간 서비스에 적합하지 않다는 의견이 있다.

 

- 이에 패킷 스위치 방식을 지지하는 사람들은 

  1) 서킷 스위치 방식보다 전송 용량을 더 잘 공유하고

  2) 간단하고, 효율적이고 서킷 스위치 방식보다 저렴하다고 주장한다.

 

- 왜 패킷 스위칭이 더 효율적일까? 

 

- 만약 사용자들이 1Mbps 링크를 공유하고 100kbps의 일정한 속도로 데이터를 생산하기도 하고, 생산하지 않기도 한다면,

  서킷 스위칭의 경우 각 사용자들에게 항상 100kbps가 예약되어 있어야 한다. (최대 10명)

 

- 많은 사람들이 동시에 활동한다면 딜레이가 생기겠지만, 그 확률은 매우 적다.

  패킷 스위칭은 서킷 스위칭과 본질적으로 동일한 기능을 제공하지만, 더 많은 사용자를 허용하면서도 성능을 유지할 수 있다.

 

- 패킷 스위칭이 메모리를 더 효율적으로 사용할 수 있기에 요즘은 패킷 스위칭을 더 선호한다.

 

-또다른 예시

 

- 10명의 사용자가 있을 때, 그중 한명이 1000비트짜리 패킷 1000개를 생성하고 다른 사용자는 아무것도 하지 않는다.

 

- TDM방식에서는 활동하는 한 명은 하난의 슬롯만 이용할 수 있다.

 

- 당연히 그 속도도 1/10 이다.

 

- 자원을 효율적으로 사용하지 못하는 예시이다.

 

- 이러한 이유로 요즘은 전화마저도 패킷스위칭으로 옮겨가고 있는 추세이다.


1.3.3 A Network of Networks


  

- end system이 인터넷에 연결되기 위해서는 access ISP 연결이 필요하다.

 

- access ISP는 DSL, Cable, FTTH, WIFI, Cellular 등의 다양한 접속 기술을 사용해 유무선 연결을 제공한다.

 

- access ISP 는 반드시 기업일 필요 없이 대학이나 회사일 수도 있다.

 

- access ISP - end user 연결은 인터넷 전체 연결의 일부분일 뿐이다.

 

- 전체를 완성하기 위해서는 access ISP들이 서로 연결되어야 하며 이는 네트워크의 네트워크를 생성함으로써 이루어진다.

 

- 시간이 지나면서 인터넷은 점점 더 복잡해졌고 대부분 성능을 고려해서라기보다는 경제적 요인과 국가의 정책에 의해서였다.

 

- 가장 단순한 접근 방식은 각 ISP를 직접적으로 연결하는 것이지만, 이는 비용과 복잡도의 상승을 초래한다.

 

- Network Structure 1 (우리의 첫 네트워크 구조) 은 모든 access ISP를 단일 글로벌 transit ISP와 연결한다.

 

- 글로벌 ISP는 각 ISP에 비용을 요구한다. 

 

- 이것은 Network Structure 2 로 이어지고, 이 구조는 또 ISP-Global ISP로 구성된다.

 

-Global ISP는 서로 경쟁하고, ISP는 더 좋은 조건의 Global ISP를 선택할 수 있다.

 

- Network Structure 2는 Global Transit제공자가 상위에, access ISP가 하위에 있는 2계층 구조이다.

 

- 특정 지역에는 지역 ISP가 있을 수 있는데 이는 1계층 ISP에 연결된다.

 

- 1계층 ISP 는 Global transit 과 유사

 

- 1계층 ISP와 지역 ISP는 각각 여러개가 경쟁하며 존재할 수 있음.

 

- 정리하자면 하위 계층 ISP가 상위 계층 ISP에게 이용료를 내는 방식

 

- 오늘날 인터넷 구조와 유사해지기 위해서는 POP, multi-homing, peering, IXPs 등이 포함되어야 한다.

 

- Pop : 고객 ISP가 제공자 ISP에 연결할 수 있는 지점으로 하나 이상의 라우터 그룹이다.

 

- multi-homing : 두 개 이상의 제공자 ISP에 연결하는 것 (1계층 ISP는 제외)

 

- peering : ISP가 서로 직접 연결하여 비용을 줄일 수 있다.

 

- IXPs : 여러 ISP가 함께 피어랑할 수 있는 만남의 장소, 제3자가 생성 가능

 

- Network Structure 4에는 콘텐츠 제공자 네트워크를 추가하며 이들은 자체 데이터 센터를 가지고 있다.

 

- 오늘날의 인터넷은 여러 계층의 ISP들이 연결되어 복잡한 구조를 이루고 있다.

 


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


 

1.4.1 Overview of Delay in Packet-Switched Networks

이번 챕터에서 알아볼 중요한 딜레이들 

 

- nodal processing delay 

 

- queuing delay

 

- transmission delay

 

- propagation delay

 

 

Types of Delay

 

- 위 그림에서 볼 수 있듯, 패킷은 상위 노드에서 라우터A를 지나 라우터B로 전송된다.

 

- 그럼 라우터A에서 발생하는 지연에 대해 알아보자.

 

- A에서 B로 가는 링크 앞에는 버퍼(큐) 가 있다. (FIFO 의 특징을 가지고 있어 큐 라고 적음)

 

- 라우터 A가 패킷을 받으면 헤더를 보고 어디로 보내야 할지 결정한다.

 

- 위의 그림에서는 패킷이 B로 향해야 한다.

 

- 만약 링크에서 다른 패킷이 전송중이거나 대기중인 패킷이 있다면 새로 도착한 패킷은 전송될 수 없다.

 

 

Processing Delay

- 라우터가 패킷의 해더를 검사하고 출력 링크를 결정하는 데 걸리는 시간

- 비트 수준 오류 검사와 같은 추가적인 작업 시간도 포함

- 고속 라우터에서의 처리 지연은 보통 microsec단위

 

Queuing Delay

- 패킷이 출력 링크로 전송되기 위해 버퍼에서 대기하는 시간

 

Transmission Delay

- 패킷을 링크로 내보내는데 걸리는 시간

- L/R 로 계산.

- 보통 microsec~ms

 

Protogation Delay

- 링크를 통해 비트가 전파되는 데 걸리는 시간

- 링크의 물리적 매체에 따라 달라짐

- 빛의 속도와 비슷한 범위인 2*10^8 ~ 3*10^8 m/s

- 톨게이트를 라우터, 자동차를 패킷으로 비유.

 

 

nodal delay

- 위의 딜레이들은 패킷이 전송되기 시작하고 완료될 때 생기는 딜레이들이므로 모두 더하면 총 지연 시간을 구할 수 있다.

 


1.4.2 Queuing Delay and Packet Loss

queuing Delay

- 큐잉 딜레이는 위의 네가지 딜레이 중 가장 복잡하고 흥미로운 요소이다.

 

- 큐잉 딜레이는 패킷마다 다르게 나타날 수 있다.(도착한 순서에 따라.)

 

- 큐잉 딜레이를 특성화할 때는 일반적으로 평균,분산,통계적 특정치를 사용한다.

 

-  Traffic intensity : La/R (a=패킷 도착률)

 

- 만약 Traffic intensity가 1보다 크다면 딜레이가 무한대로 증가할 수도 있다.

 

 

 

 

- 위 그림은 Traffic intensity 가 1에 가까워질수록 큐잉 딜레이가 급격히 증가한다는 것을 보여주는 그래프이다.

 

 

Packet Loss

- 큐의 용량은 유한하다.

 

- 따라서, 큐가 가득 찼을 때 패킷이 도착하면 패킷을 저장할 공간이 없어 패킷이 손실되는데, 이를 패킷 드롭이라 한다.

 

- 손실되 패킷은 나중에 재전솔될 수 있으며, 이를 통해 모든 데이터가 최종적으로 목적지까지 전달되는 것을 보장할 수 있다.


1.4.2 End-to-End Delay

위에서는 노드에서 발생하는 지연인 nodal delay 에 대해 알아보았다.

이번에는 출발지부터 목적지까지 가는데 걸리는 전체 지연에 대해 알아보자.

여기서 N은 라우터의 수를 의미한다. 

 

 

Traceroute

end system간 지연을 측정하기 위한 프로그램이다.

 

이것은 traceroute의 예시이다.

 

호스트가 목적지로 향하는 특별한 패킷 N개를 보낸 뒤

1번 패킷은 1번 라우터에서 응답을, 마지막 패킷은 마지막 라우터로부터 응답을 받는다.

 

위의 예시에서는 라우터 14개를 거치는 경로를 보여주며,

각 라우터의 이름과 주소, 딜레이를 보여준다.

 

라우터의 번호가 높다고 반드시 딜레이가 더 큰 것은 아니며 이는 각 지연이 다양한 원인에 따라 변할 수 있기 때문이다.

 

 

End System, Application, and Other Delay

- 앞에서 살펴본 예시들 이외에도 end systemp에서 발생하는 중요한 딜레이들이 있을 수 있다.

 

- 예를 들어, 와이파이나 cable modem 환경에서 패킷을 전송할 때, 프로토콜이 전송을 지연시킬 수 있다.

 

- VoIP(Voide-over-IP)의 경우, 데이터를 디지털화해 패킷을 채우는 시간이 필요하고 이 지연은 통화 품질에 영향을 미칠 수 있다.


1.4.4 Throughput in Computer Networks

Throughput은 네트워크의 성능을 측정하는 또다른 중요한 지표로 end system간 처리량을 의미한다.

 

- Average Throughput = bits/sec

 

- 특정 애플리케이션에서는 일정 수준 이상의 처리량이 필요하다

  ex) 인터넷전화 24kbps이상 필요 / 실시간 비디오 애플리케이션 256kbps이상 필요

 

위 그림은 서버-라우터-클라이언트 로 이어지는 간단한 네트워크 구조를 보여준다.

 

a와 b모두 전체 처리량을 결정하는 것은 결국 가장 처리량이 적은 라우터에 의해 결정된다.

 

위 그림은 여러 링크로 이루어진 네트워크를 보여주며, 서버에서 클라이언트로 파일을 전송하는 경우이다.

 

위 그림의 경우 처리량은 min(r1, r2, ..... ,rn) 이다.

 

- 오늘날 인터넷의 경우 네트워크 코어가 일반적으로 over-provisioned 되어 매우 높은 속도를 가지고 혼잡 또한 적다.

 

- 하지만 서버->클라이언트 전송의 경우 여전히 라우터에 의해 결정된다.


1.5 Protocol Layers and Their Service Models


1.5.1 Layered Architecture

-아래 그림은 비행기를 타는 과정을 계층적으로 나눈 그림이다.

 

- 위 그림과 같이, 비행기를 타고 내리는 과정은 여러 계층으로 나눌 수 있으며, 각 계층은 특정 기능을 수행한다.

 

- 이러한 계층 구조는 다른 계층의 방식이 변화하더라도 그 계층이 제공하는 서비스는 유지할 수 있도록 한다.

 

 

Protocol Layering

네트워크 프로토콜은 계층으로 나누어져 구축된다.

 

- 각 프로토콜들은 특정 계층에 속하고, 그 계층에서 제공하는 서비스 모델에 따라 작동한다.

  ex) HTTP 와 SMTP같은 애플리케이션 계층 프로토콜은 대부분 소프트웨어로 구현되며, 물리 계층과 같은 데이터 링크 계층은 특정 링크(이더넷 혹은 와이파이 등) 에서의 통신을 처리한다.

 

계층화의 장점

- 모듈화 : 각 계층이 독립적으로 작동

- 유연성 : 하위 계층에 변동이 생겨도 상위 계층은 영향을 받지 않음

- 위 그림은 인터넷 프로토콜 5계층 스택을 나타낸 그림이다.

 

- 한 계층씩 알아보자.

 

 

Application Layer

- 네트워크 애플리케이션과 그에 해당하는 프로토콜이 존재하는 계층

 

- HTTP(웬문서 요청 및 전송) , SMTP(이메일 전송) , FTP(파일 전송), DNS(주소를 32비트 네트워크 주소로 변환) 등

 

- 전송되는 데이터 단위를 message 라고 부른다.

 

 

Transport Layer

- 애플리케이션 레이어의 계층 메세지를 애플리케이션-endpoint로 보내는 역할

 

- TCP : 연결 지향 서비스를 제공하여 신뢰성 있는 데이터 전송과 흐름 제어를 수행

 

- UDP : 신뢰성, 흐름 제어, 혼잡 제어가 없는 간단한 서비스로 빠른 전송이 필요할 때 사용한다.

 

- 전송되는 데이터 단위를 segment 라 한다.

 

 

Network Layer

- 네트워크 계층 패킷을 host-> another host 전달하는 역할

 

- transport layer 의 segment 를 받아 이를 네트워크 계층의 datagram에 담고 목적지로 전달

 

- 가장 중요한 프로토콜은 IP Protocol -> 모든 인터넷의 구성요소가 이 프로토콜을 반드시 실행해야함.

 

- 전송되는 데이터 단위를 datagram이라 함

 

 

Link Layer

- 네트워크 계층에서 받은 datagram을 다음 노드로 전송

 

- Ethernet, WIFI, DOCSIS 가 링크 계층의 프로토콜

 

- 전송되는 데이터 단위는 frame

 

 

Physical Layer

- 링크계층의 frame을 개별 비트로 변환하여 인접한 노드로 전달

 

- 프로토콜은 링크의 실제 전송 매체에 따라 달라지며 각 매체에 따라 비트전송방식이 다르다.


1.5.2 Encapsulation

- Encapsulation 은 데이터를 전송할 때 각 게층을 통해 내려가면서 각 계층의 헤더 정보가 데이터에 추가되는 과정이다.

 

과정

- application layer 에서 message 생성

 

- transport layer로 전달되고 여기서 헤더를 추가해 segment 생성

 

- network layer에서 segment를 받고 헤더(수신자의 IP주소 등)를 추가해 datagram 생성

 

- link layer에서 헤더(물리적 주소 정보 등)를 추가해 frame생성

 

- physical layer 에서 프레임을 비트단위로 변환해 물리적 매체를 통해 전송

 

알아야 할 점

- 각 계층의 데이터 = 헤더(정보를 전달하기 위해 필요한 추가 정보) + 페이로드(상위 계층의 데이터)

 

- 송신 측에서는 데이터를 캡슐화, 수신 쪽에서는 데이터를 역캡슐화(데이터복원)


1.6 Networks Under Attack


 

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

Malware

- 악성 소프트웨어는 사용자의 장치를 감염시켜 중요한 정보를 탈취할 수 있으며, 이를 통해 사용자의 컴퓨터를 봇넷의 일부로 만들 수 있다.

 

Self-Replicating Malware

- 자기 복제 악성코드는 한 컴퓨터를 감염시킨 후, 인터넷을 통해 다른 호스트에도 감염을 확산시킨다.

 

 

The Bad Guys Can Attack Servers and Network Infrastructure

DOS(Denial-Of-Service)

-Vulnerability attack : 취약부분에 특정 패킷을 보내 시스템을 멈추거나 크래시

 

- Bandwidth flooding : 대량의 패킷을 보내 서버의 네트워크 연결을 포화상태로 만듬

 

- Connection flooding : 많은 수의 TCP연결을 생성해 서버가 정상적인 연결을 처리하지 못하게 만듬

 

 

DDOS(Distributed Denial-Of-Service)

- 여러대의 감염된 장치가 동시에 공격을 가해 더 강력한 DOS공격을 수행

 

- 위 그림은 DDOS공격의 구조를 보여주고 여러 좀비PC들이 공격에 동원된다.

 

 

The Bad Guys Can Sniff Packets

Packet Sniffer

- 무선 송신기 주변에 수동 수신기를 배치해 지나가는 패킷을 감시하고 데이터를 수집.

- 유선 네트워크에서도 브로드캐스트 패킷을 캡쳐하는 방식으로 스니핑 가능

 

The Bad Guys Can Masquerade as Someone You Trust

IP Spoofing

- 패킷의 주소를 위조해 신뢰받는 사용자로 가장하는 방식

 

End-Point Authentication

- 패킷의 진위 여부를 확인하기 위해 인증 절차가 필요.