Computer Science/Computer Network

1. Overview

  • -
728x90
반응형

A closer look at network structure

Network edge

  • application
  • hosts
💡
흔히 말하는 웹브라우저 같은 것들이 network edge에 속한다.

좀 더 세부적으로 분류하면 다음과 같다.

  1. end systems (hosts)
    1. run application programs
    1. e.g. Web, email
  1. client/server model
    1. client host request, receives service from always on server
    1. e.g. Web browser/server; email client/server
    💡
    즉, client는 원할 때 link를 통해 server로부터 정보를 받을 수 있는 것이다. 서버는 상시 link에 연결되어있어 client로부터의 요청을 항상 기다리는 것이다.
  1. peer-peer model
    1. minimal use of dedicated servers
    1. e.g. Skype, BitTorrent

Transmission을 하는 방식은 2가지가 존재한다. 각각에 대해서 알아보면 다음과 같다.

Connection-oriented service

Goal : data transfer between end systems

TCP (Transmission Control protocol) service의 특징은 다음과 같다

  1. reliable, in-order byte stream data transfer

    → 메세지가 유실되지 않고 간다는 것. 추가적으로 in-order라는 것은 보낸 순서를 지키면서 도착지까지 간다는 것

  1. flow control

    → sender와 receiver의 속도가 다르면 조절을 해줘야 한다. 소화할 수 있는 능력에 맞춰서 전달해야한다.

  1. congestion control

    → senders “slow down sending rate” when network congested

    → 중간 네트워크 회선의 상황을 고려해서 보낸다는 것이다.

💡
대부분의 경우 TCP를 사용한다. 단 computing resource 와 network resource를 UDP보다 많이 사용하게 된다.

Connectionless-oriented service

TCP와 반대되는 개념인 UDP (User Datagram Protocol)이다. 특징은 다음과 같다.

  1. connectionless
  1. unreliable data transfer
  1. no flow control
  1. no congestion control
💡
sender 입장에서는 그냥 보내면 된다. 그래서 상대적으로 보내는 속도가 TCP보다 더 빠르다. 즉, reliable이 필요하지 않는 경우 UDP를 통해 보내주면 된다. 예를 들어 실시간 오디오 (voIP)같은 경우는 일부 유실되더라도 크게 인식하지 못하므로 UDP를 사용해도 된다.

이때, TCP와 UDP는 Protocol의 일종이다. 그렇다면 Protocol란 무엇인지 알아보도록 하자.

What is a protocol?

메세지를 주고받기 위한 준비동작정도로 이해하면 된다.

All communication in Internet coordinated by protocols

Network core

  • router : 데이터를 받아서 전송해주는 역할을 수행한다
    💡
    그림 상으로는 원판에 X 모양으로 표기된다
  • network of networks

그렇다면 정확히 어떤 방식으로 data가 network를 통해 transfer되는 것일까? 이에는 2가지 방식이 존재한다.

  1. circuit switching

    → dedicated circuit per call : telephone net

    💡
    출발지에서 목적지까지 길을 예약하고 특정 사용자만을 위해 사용할 수 있게끔 한 것
  1. packet switching

    → data sent through net in discrete “chunks”

    💡
    그때 끄때 올바른 방향으로 packet을 forwarding만 수행

Compare Packet switching versus Circuit switching

다음과 같은 상황을 생각해보자

Link의 bandwidth는 1Mbps이다. (즉, 1초에 1Mb를 전송할 수 있는 능력이 있는 것이다.) 추가적으로 각 유저는 100kb/s를 active상태일 때 필요로 하며, 전체 시간의 10%만큼만 active상태이다.

  • Circuit switch : 10명의 유저까지만 지원해줄 수 있다.
  • Packet switch : 제약이 크게 없음. 하지만 몰리면 문제가 발생할 수는 있다. 하지만, 35명이 유저라고 했을 때 10명 이상이 몰릴 가능성이 0.004보다 작다.
    💡
    잘 생각해보면 매 순간 data를 요구하는게 아니다. 네이버에서 기사를 누른다고 하면, 해당 데이터를 받고 한참 있다가 데이터를 요구하는 것이다. 즉 각자의 리듬에 맞춰서 누르게끔해도 크게 문제가 없다는 것이다.
    💡
    만약 동시에 접속하려고 하는 경우에는 문제가 발생할 수 있다.

즉 이러한 이유때문에 packet switch는 delay가 발생하게 되는 것이다.

How to loss and delay occur?

기본적으로 router가 packet를 받으면,

  1. 정상적인 packet인지 목적지가 어딘지에 대한 정보를 확인한다.

    → 이게 processing delay이다.

    1. check bit errors
    1. determine output link
    💡
    packet를 검사하는 단계라고 생각하면 된다
    💡
    router를 좋은 것으로 바꾸면 processing dealy를 줄일 수 있다.
  1. 현재 유저가 몰려서 link의 bandwidth보다 더 많은 양의 packet이 들어온 경우 router/switch안에 있는 queue (buffer 라고도 불린다)에 머무르게 된다. (안그러면 loss가 발생할 것이기 때문이다.)

    → 이게 queueing delay이다.

    💡
    주의할 점은 host에서 router로 보내는 경우에는 queueing dealy와 processing dealy가 존재하지 않는다는 것이다.
    💡
    queueing delay는 client에 의해서 지배되는 영역이다. 직접적으로 줄이기는 어렵다.
    💡
    만약 정말로 너무 몰려서 buffer의 크기보다 더 많은 packet이 들어오게 되면 유실이 발생하게 된다. 대부분 인터넷에서 유실이 발생하는 이유는 queueing delay 때문이다.
    💡
    이러한 유실이 발생하게 되면 TCP는 아예 처음부터 재전송을 하게 된다. 기본적으로 기능적인 mechanism은 network edge에 몰아넣고, 사이에 있는 router들은 단순히 packet 전달만 진행하게 된다.
  1. 2번 단계를 지나서 queue의 맨 앞에 섰다고 가정하자. 이때, 결국 packet은 bit로 구성되어 있기 때문에, 첫번째 bit부터 마지막 bit까지 link로 뿜어져 나가는데 시간이 걸린다.

    → 이게 transmission delay 이다.

    💡
    첫번째 bit가 뿜어져 나가는 시각부터 마지막 bit가 link로 뿜어져 나가는 시간까지의 간격을 transmission delay라고 하는 것이다.
    • RR  : link bandwidth (bps) : data rate이라고도 부름
    • LL  : packet length (bits)
    Transmission delay=LR\text{Transmission delay} = \frac{L}{R}
    💡
    bandwidth가 클수록 transmission delay가 작을 것이다. bandwidth는 일종의 파이프의 크기라고 생각해주면 된다. 당연히 파이프의 크기가 클수록 붓는게 걸리는 시간이 줄 것이기 때문이다.
    💡
    bandwidth를 늘림으로써 transmission delay를 줄일 수 있다.
  1. 3번을 지나서 마지막 bit가 link에 올라온 상황이다. 이 상황에서 마지막 bit가 다음 router까지 도달하는데까지 시간이 걸린다.

    → 이게 propagation delay이다.

    • dd  : length of physical link
    • ss : propagation speed in medium (빛의 속도라고 가정)
    Propagation delay=ds\text{Propagation delay} = \frac{d}{s}
    💡
    해당 값은 link의 물리적 소자의 특성에 의해서 결정된다. 여기서는 빛의 속도라고 가정한다.
    difference between propagation speed and bandwidth in digital communication
    I want to know difference between propagation speed and bandwidth in digital communication.I know bandwidth is no of bits in one second and propagation speed of signal is distance traveled by signa...
    https://cs.stackexchange.com/questions/16402/difference-between-propagation-speed-and-bandwidth-in-digital-communication
    💡
    잘 생각해보면 빛의 속도가 엄청나게 빠르기 때문에 bit를 network에 태우는 속도가 더 느리다.

Access networks, physical media

  • communication links
💡
예를 들어 router끼리의 연결을 담당하는 link는 bandwidth가 큰 것이고, 모뎀 같은 것은 bandwidth가 작다. 즉 link마다 다르다는 것을 이해해야 한다.
💡
예를 들어 무선 인터넷을 사용한다는 것은 wireless link layer 계층을 사용한다는 말이다. 즉 link의 종류가 여러가지가 존재한다.

Throughput

Throughput은 송신자와 수신자가 통신을 할 때, 전송되는 데이터의 rate 이다.

앞서 언급한 Bandwidth는 최대로 전송할 수 있는 데이터의 rate이고, Throughput은 실제로 측정하는 값이므로 Throughput < Bandwidth 라고 볼 수 있다.

참고로 Throughput은 bottleneck link라고 하는데, 이는 여러개의 link를 거쳐갈 때 가장 rate이 낮은 곳을 기준으로 Throughput이 결정되기 때문이다.

예를 들어 차가 아무리 10차선 도로로 쌩쌩 달려도 목적지 부근이 1차선 도로라면, 결국 걸리는 시간은 1차선 도로를 기준으로 측정되는 것처럼 말이다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.