CS 공부/네트워크

Chapter 1 - Computer Networks and the Internet

James F. Kurose & Keith W. Ross의 Computer Networking - A Top-Down Approach 7th edition을 기준으로 정리합니다.

1.1 What is Internet?

1.1.1 "nuts and bolts" view (하드웨어와 소프트웨어의 구성요소 관점)

computing device 사이에는 엄청나게 많은 연결이 존재한다. Nuts 와 Bolts라는 것으로 기술해 볼 때, 이는 

  • 인터넷을 구성하는 기본적 하드웨어 및 소프트웨어 구성요소 (host, end system)
  • 분포되어있는 어플리케이션에게 서비스를 제공하는 정보망 시스템 (communitcation link)
  • 하나의 시스템에서 데이터를 전달할때 이루어지는 패킷(packet)이라는 정보의 묶음 (protocol로 제어되며, 전달 시 router 와 link layer switch를 거침)

 

인터넷이란 전세계에 퍼져 있는 수 억개의 디바이스들을 연결하는 컴퓨터 네트워크. ISP간의 연결이다.

  • ISP(Internet Service Provider) : end system들은 ISP를 통해 인터넷에 접속한다. 통신사들이 대표적인 예이다. 그리고 각각의 ISP들 끼리도 연결되어 있어야 한다. 또한 ISP 사이에도 계층이 존재한다.

프로토콜: 메시지(데이터)의 전달과 회수를 컨트롤하는 통신 규약. (TCP, IP, HTTP ...)

인터넷 표준 (Internet Standards): 인터넷에 적용되는 기술들을 동일하게 적용될 수 있도록 정하는 표준. )(RFC, IETF)

 

1.1.2 service view (분산된 어플리케이션에게 서비스를 제공하는 기반 시스템의 관점)

인터넷이란 어플리케이션이 작동할 수 있도록 서비스를 제공해 주는 인프라구조 이다.

  • Web, VoIP, email, game..
  • 어플리케이션에 프로그래밍 인터페이스를 제공해 준다.

 

1.1.3 What's a protocol?

프로토콜 : 통신 개체 간에 교환되는 메시지 포맷, 순서뿐 아니라 메시지의 송수신, 다른 이벤트에 따른 행동들을 정의한다

사람간의 의사소통같이, 네트워크 상에서 컴퓨터간의 데이터를 주고받기 위해 만들어진 규약이라고 생각하면 편하다.

 

1.2 Network edge

네트워크는 크게 세가지로 나뉠 수 있다.

  • Host(직접 통신하는 end system) : 클라이언트(client), 서버(server)
  • Access Network, physical media 
  • Network Core (네트워크를 위한 네트워크로, 상호 연결된 router들)

1.2.1 Access networks

Access network는 end system을 첫 라우터(router)부터 목적지 end system까지 물리적으로 이어주는 네트워크를 의미한다.

 

Access network의 종류는 다음과 같다. 

 

1. DSL : 인터넷에 접속할 때 지역 전화국이 제공하는 전화선을 사용한다.

  • DSLAM을 이용해 voice(전화)는 전화망으로, data는 인터넷 쪽으로 보낸다.
  • upstream(집->서버)의 전송률 < 2.5 Mbps (typically < 1Mbps)
  • downstream(서버->집)의 전송률 < 24 Mbps (typically < 10Mbps)
  • 요즘은 잘 사용하지 않는다.

2. Cable network : 케이블을 활용해 인터넷에 접속한다. 

  • HFC : 동축케이블(coaxial cable)과 광케이블(fiber cable) 둘다 사용되며, downstram의 전송률은 < 30Mbps, upstream의 전송률은 < 2Mbps로 up/down stream의 전송속도가 다르기 때문에 접속이 비대칭(asymmetric)이라 한다.
  • 케이블을 통해 ISP 라우터에 연결된다. 
    • 각 집들은 cable headend로 access network를 공유한다.
    • DSL과는 달리, shared access로 여러 집에서 공유된다.

3. Home network 

 

 

1.2.2 Enterprise access networks (Ethernet)

주로 회사, 대학 등에서 사용하며, 이더넷 유저들은 이더넷 스위치에 연결되어 있고, 이더넷 스위치는 더 큰 인터넷에 연결이 되어 있다.

 

1.2.3 Wireless access networks

무선랜으로, 와이파이등을 의미한다. 

조금 더 범위가 좁은 (빌딩 내) wireless LANs, 통신사들이 제공하는 넓은 범위의 wide-area wireless access로 나뉜다.

 

1.2.4 Hosts: sends packets of data

host는 데이터를 전달하는 기능을 가지고 있다.

  • 전송하려는 데이터를 더 작은 사이즈로 잘라서 보내는데 이것을 packet 이라 부른다.
Packet : 데이터를 전달 할 때 해당 비트수를 한번에 보내는게 아니라 나눠서 보내는 것으로 보통 데이터 앞에 컨트롤 메세지(헤더)를 붙여서 보낸다.
= 실제 전송되는 데이터 단위

전송시간 = (패킷당)비트수/전송률 = L/R
(전송률 = link transmission = link capacity = link bandwidth, 초당 보낼 수 있는 비트수로 단위 생각 잘해야 한다.)

 

1.2.5 Physical media

데이터 통신에서 정보를 저장하거나 전송하는 데 사용되는 물리적 물질(구리 또는 유리)

  • bit : 송신기와 수신기 사이에서 전파되는 데이터
  • physical link : 송신기와 수신기 사이에 존재하는 회선

physical media 의 두 종류.

  • guide media (유도체): 견고한 매체를 따라 신호가 전파됨 - 구리, 섬유, coax 등
    유선이기 때문에 속도가 느려지면 안테나를 더 설치하면 된다.
  • unguided media (비유도체): 무선으로 신호가 자유롭게 전파됨 - 라디오 등
    무선이기 때문에 신호 감쇄가 심하고 속도와 안테나의 개수와 상관 없다. (오히려 간섭이 일어남)

physical media의 종류

  • twisted pair(TP, 꼬임쌍선) : 2개의 절연 동선. 저렴하고 가장 흔히 사용되는 유도체
  • coaxial cable(동축 케이블) : 2개의 구리선. 동심원 형태를 이룸(평행 x). 특별한 shielding이 있어서 데이터 전송율이 높다.
  • fiber optic cable(광선) : 속도가 빠름. 전자파의 영향이 적고 굉장히 멀리 이동 가능(신호 감쇠가 적음).
  • radio : 무선(전자기 스펙트럼을 통한 신호 전달). 환경의 영향을 많이 받음. 간섭이 존재함(반사, 물체의 영향, 간섭 등).

 

1.3 Network core

네트워크 코어는 router들간의 연결된 집합이며, 인터넷과 인터넷의 end system을 연결 해주는 역할을 한다. End system들은 네트워크 코어를 통해서 메세지를 주고 받는다. 

 

packet switching : host는 보내야 할 메세지를 패킷이라는 단위로 나누고 라우터들을 거쳐서 패킷을 전송한다.\

  • 한 라우터로 부터 다음 라우터까지 연결된 회선이 속도가 있어서 속도에 따라 패킷을 전달하게 된다.
  • 각각의 패킷은 최대 link capacity로 전송된다.

 

1.3.1 Packet-switching : store and forward

패킷은 store-and-forward (저장 후 전달방식) 방법을 통해 전달되며, 패킷을 보내면 일단 라우터에서 받고 어디로 보낼지 판단한 후 그쪽으로 패킷을 전달한다. (대부분의 패킷 교환방식은 해당 방법을 사용한다.)

  • 이 때, L bit의 패킷을 보내고 전송율이 R bits/sec이면, 패킷을 전송하는데 걸리는 시간은 L/R sec이다.
  • end to end delay : 2 x L/R (전송 딜레이 무시했을 때)
      L/R 은 one-hop delay(한 구간 source에서 router 까지, 또는 router에서 router 까지, 또는 router에서 destination 까지 등)
     hop의 수 x transmission delay = end to end delay가 된다.
     만약 store and forward 방식이 아니었다면 바로 보내기 때문에 transmission time 없이 한번에 갈 수 있다.
  • 라우터가 패킷을 받아서 처리해야 할 문제(경로 어디로 갈지 등)가 있기 때문에 sotre and forward 방식을 사용한다.

 

1.3.2 Packet-switching : queuing delay, loss

queueing
라우터가 처리를 해서 다음 라우터로 전달하는 속도 보다 들어오는 속도가 더 빠르면 넘치는 데이터들을 라우터의 버퍼에 쌓는다.

  • 데이터가 들어오는 속도보다 회선의 속도(나가는 속도)가 느리면 라우터의 메모리(큐)에 패킷이 쌓여서 딜레이가 발생한다. 
  • 해당 딜레이는 가변적이고, 네트워크의 혼잡 정도에 따라 달라질 수 있다.

loss
큐 역시 메모리이기 때문에 한계가 있다. 즉, 저장할 수 있는 패킷의 수가 정해져 있기 때문에 큐가 꽉 차면 패킷을 더이상 받지 않고 drop(loss)한다.

  • 데이터 처리가 느려지고 손실 발생이 가능하다.

 

1.3.3 Two key network-core functions

Routing : 받은 패킷을 목적지 까지 빠르게 전달하기 위해 어디로 보낼지 판단하는 것이다. (목적지에 따른 경로 결정)

Forwarding : 아웃풋 인터페이스가 여러 개 있는데 어디로 보낼지 결정하는 것이다. (포워딩 테이블에 따른 경로 결정)

  • 데이터의 Destination address(header value랑 관련)를 보고 어떤 아웃풋 인터페이스로 보낼지 정하는데, 이 때 포워딩 테이블을 보고 판단한다.
  • 이 테이블을 만들고 관리하는 방법이 라우팅 알고리즘(어떤 라우터 끼리 연결되어 있고, 어디로 보내는 것이 가장 합리적일 지 결정)

 

1.3.4 Alternative core : circuit switching

회선 교환 방식(Circuit Switching)에서 end system간 통신이 필요할 때, 둘을 연결하는 링크들을 점거해버린다. 전통적인 전화 네트워크가 이 방식을 사용한다

circuit switching : 출발지와 목적지 사이의 경로가 정해지면 필요한 자원들(버퍼, 링크 전송률 등)이 예약된다.

  • 여러 circuit이 있을 때 라우터들 사이에 어떤 circuit을 사용할지 정하면 다른 애들은 이 circuit을 사용하지 못한다.
  • dedicated resource : no sharing -> 간섭이 없다. 보장되어 있다. queueing 딜레이가 발생하지 않는다.
  • 회선에서 아무런 정보의 이동이 없더라도 공유가 안되기 때문에 idle 한 상태로 남아있게 된다.(예를 들어 전화 중 아무 이야기도 안할 때 데이터의 전송이 없지만 그 회선을 다른사람이 사용 못함(자원 낭비))
  • 주로 전화망에서 사용된다.

FDM : frequency division multiplexing

  • 회선에 신호가 전달이 될 때 주파수를 분리해 놔서 동시 전송 가능(섞이지 않게)
  • 미리 정한 주파수만을 사용한다. (라디오 주파수 같은걸 생각하면 될듯)
  • 그림에서 유저가 5명이라면 한명은 못사용한다.

TDM : time division multiplexting

  • 모든 대역을 사용하지만 시간으로 나누는거
  • 마찬가지로 4명의 유저에게 다 할당했으므로 5명이면 한명은 사용 못한다.

 

1.3.5 Packet switching vs Circuit switching

무조건 패킷이 좋은가?

패킷의 장점

  • 트래픽이 균형 잡힌게 아닐 때 자원 공유하면 유리함 (내가 사용 안할 때 다른애가 사용 가능)
  • 서킷은 자원 예약 과정(call setup)이 필요 하지만 패킷은 이런 과정이 필요 없고 단순하다.

패킷의 단점

  • 밀리는 문제(큐잉 딜레이, 손실)
     reliable한 데이터 전송과 congestion control을 위한 프로토콜이 필요하다.
  • 오디오, 비디오와 같이 bandwidth의 보장이 필요한 경우 패킷은 보장이 안된다.

 

1.3.6 Internet structure : network of networks

end system 들은 access ISP(Internet Service Provider, 가입자망)를 통해 인터넷과 연결되어 있다

  • Access ISP 끼리 서로 연결 되어있어야 한다. (연결 되어 있어야 임의의 두 호스트가 서로 패킷을 보낼 수 있다.)
  • 네트워크의 네트워크는 매우 복잡하며, 경제적, 국가적 정책에 따라 연결 되었다.

네트워크 구성방법

1. 수백만개의 access ISP를 연결할때, 각각의 모든 내용들을 연결하는 것은 연결이 너무 많아져서 불가능하다.

2. 그렇기 때문에, 중간에 하나의 global ISP를 둠으로서 다른 망으로 갈 수 있도록 한다. 

   but, 전세계를 하나의 global ISP로 관리하는 것은 힘들다. 

3. 그렇다면 여러 ISP를 사용하면? → 어느 하나에 몰리게 되었을 시 그 ISP가 부하가 온다. 

4. IXP (ISP끼리 연결해주는 라우터)를 통해 ISP끼리 연결해주자. 

5. access net을 isp와 연결해주는 regional net을 만드는 경우도 있다. (특정 지역에서 여러 가입자망들에게 자기 망을 이용해 ISP 지원.)

6. Google, Microsoft와 같은 자체적으로 서비스를 제공해주는 네트워크의 경우 , Content Provider network 라고 불리며, 그들의 독립적인 네트워크를 사용하고 있다. ISP를 사용하지 않고 자신들이 직접 연결하며 (private 한 망), 구글이 사용자에게 서비스를 제공할 때에는 ISP와 협약을 맺는다고 한다. 

 

1.4 Delay, loss, throuput in networks

딜레이 발생 (queing delay) : 패킷의 도착속도가 나가는 속도보다 커지면 패킷들은 큐에 쌓이게되고, 자신의 순서를 기다리게 된다.

queing loss : 전송률이 너무 빠를때는 queue의 저장공간이 감당하지 못하는 경우가 생기는데, 이때는 어쩔 수 없이 데이터를 버려야 한다.

 

딜레이는 총 네가지 구성요소로 나누어 생각해볼 수 있다.

  1.  processing delay(nodal processing)
    • 패킷 전송 전에 프로세싱 하는 딜레이(비트 에러 체크, output link 결정) -> 데이터 처리에 걸리는 시간
    • 보통 1 msec 보다 적게 걸린다.(굉장히 작음)
  2. queueing delay
    • 전송을 위해 output link를 기다리는 시간(나가기 위해 걸리는 시간 -> 큐 안에서 나가기 까지 걸리는 시간)
    • 라우터에서 얼마나 밀리는 지에 따라 달라진다.
  3. transmission delay
    • dtrans = L/R
    • 패킷의 모든 비트들을 회선에 올리는 시간 -> 큐에서 link로 모든 비트를 내보내는데 걸리는 시간
  4. propagation delay
    • 한 비트가 목적지 까지 회선을 따라 이동하는데 걸리는 시간
    • d: physical link의 길이, s: propagation 속도 -> dprop = d/s

 

1.4.1 Queing delay

R : 회선의 전송 속도 = 단위시간 동안 보낼 수 있는 데이터의 양(bps) = 트래픽이 나가는 속도 
L : 패킷의 길이(크기)
a : 단위시간 당 도착하는 패킷의 개수 -> 1초에 몇개의 패킷이 라우터에 들어오는가
(모든 패킷이 L로 같다고 가정)
La : 1초에 몇비트의 데이터가 라우터에 들어오는가 -> traffic이 들어오는 속도

La/R = traffic intensity(트래픽 밀도) = 들어오는 속도와 나가는 속도의 비율

  • = 0 : queueing delay가 적다
  • => 1 : 비율은 같아서 들어오는 속도가 일정하다면 딜레이가 없을 수 있지만, 라우터로 들어올 때 일정하게 들어오는 것이 아니라 어느 때는 많이, 어느 때는 적게 들어오기 때문에(들어오는 패턴이 랜덤) 한꺼번에 트래픽이 몰리게 되면 그 순간에 queueing이 생기게 되어 delay가 커진다.
  • > 1 : 들어오는 속도가 더 크기 떄문에 queue는 끝없이 증가하고, drop이 없다고 가정하면 기다리는 시간이 무한해 진다.

 

1.4.2 "Real" Internet delays and routes

실제 인터넷에서 지연과 손실을 어떻게 확인하는가. = Traceroute를 통해

  • 세 개의 패킷을 보낸다 : ICMP
    • TTL 값을 가지고 라우터에 세 개의 패킷을 전달한다
    • 패킷을 만난 라우터는 리턴 패킷을 보낸다
    • sender는 전송과 답장 받은 시간의 주기를 측정한다

 

1.4.3 Packet Loss

큐는 유한한 용량을 가지고 있다. 그렇기 때문에 큐가 가득차면 더이상 패킷을 받지 못해서 어쩔 수 없이 드랍(=lost)하게된다. 재전송을 통해서 다시 보내거나, 잃어버리게 됨.

 

1.4.4 Throughput

sender와 receiver 사이에 비트가 전송되는 속도.

  • instantaneous : 순간적 -> 특정 지점에서의 속도
  • average : 평균적 -> 전체적인 속도

Rs < Rc : Rc가 더 빠르지만 라우터에 도달하는 Rs에서 오는 데이터들 만큼만 전송할 수 있다.

             = 속도는 Rs에 따라 결정된다.
Rs > Rc : Rs가 더 빠르기 때문에 라우터에 패킷이 도달 하더라도 Rc의 속도로 패킷을 전달하게 된다.

             = 속도는 Rc에 따라 결정된다.
bottleneck link : 앞에 있는 것의 전송 속도가 느리다면 뒤에 있는 파이프가 속도가 빠르더라도 앞의 속도에 맞춰야 한다. 마찬가지로 뒤의 것이 속도가 더 느리다면 앞에서 빨리 보내주더라도 늦게 보낼 수 밖에 없다 = end to end의 전송속도가 결정된다.

 

 internet scenario

출발지가 10개, 목적지가 10개 있고, 한 파이프를 통해 보낼 때 end to end throughput은 Rs,Rc,R/10(공유 네트워크를 여러명이 나눠 사용) 중 가장 작은 것에 따라 결정된다. 그리고 그것이 bottleneck link가 된다.
 → 보통 core는 좋은 것을 쓰기 때문에 Rs나 Rc가 bottleneck이 된다.

 

1.5 Protocol layers, service models

네트워크의 구성 요소 = hosts, routers, links of various media 등

  • 어떻게 network의 구조를 구성할 것인가? : layer 구조를 통해 각 layer는 다른 기능을 수행한다.
  • 각각의 layer는 하는일이 정해져 있다.(각 layer가 서비스를 정의, 구현하고 있다.)
  • 다른(이후의) layer에서 일처리가 잘된다고 가정(신경안씀)하고 해당 layer를 구성한다.

1.5.1 layering 모델을 사용하는 이유

네트워크는 너무 복잡하고 크기 때문에 layered된 구조를 통해 복잡한 시스템을 간단하게 만든다.

  • 각 레이어끼리의 영향을 최소화 하도록 해서 한 레이어를 수정하더라도 다른 레이어를 건드릴 필요가 없다.
  • 모듈화를 통해 유지, 업데이트가 쉽다. (모듈처럼 다른 layer들과는 독립적으로 작동을 한다)

→ 대표적인 예시 : OSI 7 계층(Application, Presentation, Session, Transport, Network, Link, Physical layers)

1.5.2 Internet protocol stack

  • application : 네트워크 application을 지원해 준다.(메세지 주고받도록 해줌)
     FTP, SMTP, HTTP등
  • transport : 프로세스 간 데이터 전달. 목적지까지 잘 전달하도록 해 준다.
     TCP, UDP 등
  • network : source부터 destination까지 패킷을 어느 경로를 통해 전달할지 결정한다.
    ip, routing protocols
  • link : 한 홉에 대해 source에서 다음 destination까지 어떻게 데이터를 잘 보낼 것인가.
     protocol : Ethernet, wifi 등
  • physical : 한 홉 사이의 데이터 전달과 관련해서 어떤 식으로 전달할지.(물리 매체)
     wire, wireless 등

 

 

1.5.3 ISO/OSI reference model

7레이어로 구성되어있으며, 그 이전의 모델이라서 현재의 모델에서는 presentation과 session은 application 모델에 담겨있다. 

  • presentation : 보안, 데이터 압축, 기계 특화 등
  • session : 동기화, 체크포인트 만들기, 데이터 복구 등

 

 

1.5.4 Encapsulation

각 레이어를 통과하며 헤더를 붙이고,  layer로 전달한다. 이 때 메세지를 전달 받은 layer는 이전 layer에서 작업한 내용을 건드리지 않고 자신의 작업을 진행한다.

캡슐화 : 상위 레이어로 부터 온 데이터에 자기 부분의 헤더를 붙이고, 레이어 올라가면서는 자기 헤더 떼버리는거

  • L2 스위치 : link와 physical 레이어(두개의 레이어)만 구현되어 있는 디바이스. 경로 결정
  • 라우터 : network, link, physical 레이어(세개의 레이어)만 구현되어 있는 디바이스. 경로 결정
     application, transport는 source랑 destinatinon에서만 필요하다.(end host에서만 구현되어 있다.) -> 중간과정에서는 프로세싱 할 필요가 없기 때문에 해당 레이어가 없다.

 

1.6 networks under attack : security

인터넷 설계시에는 모든 레이어에서 보안이 매우 중요하다!

 

악성유저들 같은 경우에는, 인터넷을 통해 다음과 같은 malware를 host에 집어넣을 수 있다.

  • virus : 스스로 증식한다. 유저에 의해 퍼진다.
  • worm : 스스로 증식한다. 스스로 동작할 수 있다.

목적 : 방문기록, 업로드 등의 정보를 빼오는 것이다. -> spyware male ware
여러 컴퓨터에 worm을 심어서 스팸이나 디도스 어택을 하도록 한다.

 

Dos : 한 컴퓨터에서 bogus traffic을 생성해서 타깃을 공격한다.
 D Dos(distribute dos) : 여러 컴퓨터에서 일정한 시간에 타겟에 데이터 트래픽을 마구 보내서 서버를 다운시킨다.

 

snuff packets : 이더넷이나 wifi같은 무선 미디어에서 정보를 가로채는 것.

 

Ip spoofing : 메세지를 보내는데 중간에서 source address를 바꿀 수 있음(추적 회피)

-> B에서 보낸 데이터를 스니핑으로 가로채고 이상하게 만들어서(메일웨어나 디도스 등) A로 보내는데, 이 때 스푸핑을 이용하여 B에서 보낸것처럼 주소를 바꿔서 보낸다.

 

 

 

참고
https://velog.io/@kms9887/%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-1.-Computer-Networks-and-Internet3 
https://island-developer.tistory.com/72 https://suhwanc.tistory.com/100?category=781986
한양대학교 컴퓨터네트워크 강의자료

 

'CS 공부 > 네트워크' 카테고리의 다른 글

Chapter 3 - Transport Layer(2)  (0) 2021.09.27
Chapter 3 - Transport Layer(1)  (0) 2021.09.26
Chapter2 - Application Layer(2)  (0) 2021.09.21
Chapter2 - Application Layer(1)  (0) 2021.09.21