네트워크의 구성 요소(Edge vs Core)부터 패킷 교환의 원리, 그리고 지연(Delay)을 유발하는 4가지 요소를 수식과 함께 분석합니다.
네트워크 프로그래밍을 공부하기 이전에, 우리가 사용하는 인터넷이 어떤 '부품'들로 구성되어 있고, 어떤 '원칙'을 갖고 흐르는지 알아봅시다.
네트워크는 크게 가장자리(Edge)와 중심(Core), 두 가지 영역으로 나뉩니다.
우리가 위치한 곳입니다.
네트워크를 공부하다 보면 OSI 7계층, TCP/IP 5계층 같은 복잡한 모델을 먼저 마주합니다. 왜 이렇게 굳이 나눠놨을까요?
인터넷 역사에서 가장 중요한 결정은 **회선 교환(Circuit Switching)**을 버리고 패킷 교환을 택한 것입니다.
라우터는 패킷을 받자마자 바로 토스하지 않습니다.
패킷의 첫 번째 비트부터 마지막 비트가 도착할 때까지 기다립니다.
패킷 전체(L비트)가 메모리에 들어올 때까지 버퍼에 저장합니다.
오류가 없는지 확인한 뒤, 다음 목적지(Link)로 밀어냅니다.
회선 교환(전화망)은 전용선을 점유하기 때문에 내가 통신을 안 해도 남들이 그 선을 못 씁니다. 반면 패킷 교환은 **"필요한 사람이 그때그때 남는 자원을 공유"**하므로, 한정된 대역폭에서 훨씬 더 많은 사용자를 수용할 수 있습니다.
네트워크가 느려지는 이유는 무엇일까요? 데이터가 이동할 때 겪는 전체 지연($d_{nodal}$)은 다음 4가지의 합입니다.
지연 시간을 계산하기 위해서는 물리적인 거리와 데이터의 크기를 알아야 합니다.
| 변수 | 명칭 | 설명 및 특징 | 공식 |
|---|---|---|---|
| $d_{proc}$ | 노드 처리 | 헤더를 조사하여 경로를 결정하고 에러를 체크하는 시간. ($mu s$ 단위로 매우 짧음) | - |
| $d_{queue}$ | 큐잉 | 라우터가 바빠서 대기열(Queue)에서 기다리는 시간. 가장 변동성이 크고 예측 불가. | - |
| $d_{trans}$ | 전송 (Transmission) | 패킷을 링크(파이프)로 밀어 넣는 시간. **대역폭($R$)**과 **패킷 크기($L$)**에 좌우됨. | $L/R$ |
| $d_{prop}$ | 전파 (Propagation) | 비트가 매체를 타고 건너편으로 이동하는 시간. **거리($d$)**와 **속도($s$)**에 좌우됨. | $d/s$ |
많은 개발자가 이 둘을 헷갈려 합니다. 고속도로 톨게이트를 상상해 보세요.