1. 버퍼링과 패킷
컴퓨터를 해보신 분이라면 누구나 '버퍼링'에 대해 경험해보신 적이 있으실 겁니다. 버퍼링은 어떤 정보를 버퍼(임시 저장소)에 저장하는 작업을 하고 있다는 뜻입니다. 좀 더 자세히 알아볼까요?
컴퓨터 네트워크는 데이터 블록인 패킷(packet)을 전달합니다. 어디에 패킷을 전달할까요? 바로 라우터로 전달합니다. 위 그림에 R은 라우터입니다. 그렇다면 라우터는 어떻게 패킷을 목적지에 잘 전달할 수 있을까요?
라우터에는 라우팅 테이블이 있습니다. 라우터는 IP주소의 앞 숫자들을 보고, 패킷을 어느 방향으로 보내야할지를 판단하여 제대로 된 목적지로 패킷을 데려다 줍니다.
라우터는 store and forward 방식으로 동작합니다. 패킷이 라우터에 도착하면 잠시 저장을 하고, 패킷을 어느 링크로 전달할지 결정하게 됩니다. 어느 링크로 보낼지 결정이 되었다면 forwarding하는 방식입니다.
이 때 패킷 안의 데이터가 일부가 도착했는데, 바로 라우터로 보낼 수는 없습니다. 전체 패킷이 라우터에 도착하고 나서야 라우터가 있는 링크로 패킷을 보낼 수 있게 됩니다. 전체 패킷이 라우터에 도착하는 시간, 기다리는 시간을 우리는 buffering(버퍼링)이 된다고 하는 것입니다.
그렇다면, 이렇게 네트워크가 지연되는 이유는 무엇일까요?
2. 네트워크 지연 4가지 이유
이 그림에 네트워크 지연의 4가지 이유가 담겨 있습니다. 1)transmission delay 2)propagation delay 3)processing delay 4)queuing delay가 있습니다. 이 4가지 지연에 대해 자세하게 알아보도록 하겠습니다.
1) transmission delay
transmission delay는 링크에 데이터를 주입할 때 발생하는 지연입니다. 이 딜레이는 데이터 사이즈와 대역폭(bandwidth)에 영향을 크게 받는 지연입니다.
만약 데이터가 7.5bit/packet 즉 패킷 하나에 7.5비트의 데이터가 들어있고, 대역폭이 1.5bit/s 즉 1초에 1.5 비트의 데이터를 전달할 수 있다면, 이 데이터는 총 5초가 걸립니다. 라우터에 모든 패킷이 전달될 때까지 5초가 걸린다는 뜻이죠.
이처럼 패킷 1개를 링크에 주입하기 전까지 라우터에 모이는 패킷을 기다리는 시간 이것이 transmission delay입니다.
2) propagation delay
propagation delay는 전파가 물리적인 거리를 따라 타고 들어갈 때 발생하는 지연입니다. 이 딜레이는 노드 사이의 거리와 전파 속도에 영향을 크게 받는 지연입니다.
직관적으로 보자면, 땅의 크기와도 연관이 됩니다. node와 node 사이 거리가 짧으면 짧을수록 패킷 전달 시간은 0에 가깝지만 멀면 propagation delay를 무시할 수 없습니다. 예를 들어 한국은 땅덩어리가 작은 편입니다. 때문에 propagation delay가 작습니다. 반면 우리가 위성 통신을 썼을 땐 노드와 노드사이의 물리적인 거리가 엄청 멀어지기 때문에 통신 시간이 오래걸렸습니다. 그 이유가 prorpagation delay 때문입니다.
3) processing delay
processing delay는 라우터의 포워딩 테이블에 영향을 미치는 딜레이입니다.
라우터는 패킷의 head에서 ip를 리드하고, 라우팅 알고리즘을 기반으로 생성된 포워딩 테이블을 보고서 어느 링크로 맵핑해야하는지 판단해야합니다. 이것을 매 패킷이 도착할 때마다 이루어져야하는 판단의 과정으로 시간이 소요됩니다.
라우터에 머물며 ip를 리드하고, 포워딩 테이블을 확인하는 일련의 버퍼링 시간을 processing delay라고 합니다.
4) queueing delay
queueing delay는 processing delay와 연결됩니다. processing delay에서 어느 라우터로 가야할지 결정을 내렸다면, 그 라우터로 향하기 위해 라우터가 있는 링크를 타려고 할 겁니다. 하지만 바로 링크를 갈 수 있느냐? 그것은 아닙니다.
만약 output 링크보다 input 링크로 들어오는 속도가 더 빨랐다면 즉, 이전에 해당 링크로 가려고 하는 패킷이 많이 쌓여있다면 쌓여있는 패킷이 나갈 때 까지 큐 안에서 기다려야 합니다. 이것을 queueing delay라고 합니다.
일반적으로 processing delay는 아주 작고, queuing delay는 가변적입니다 0에서 수초까지 시간이 걸리기 때문이죠. 네트워크에 트래픽이 없고, 큐에 아무것도 쌓여있지 않다면, queueing delay는 0입니다.
너무나도 어려운 네트워크 지식!
오늘은 많은 네트워크 지식 중 네트워크가 지연되는 이유에 대해 정리했습니다.
여러분들께 많은 도움이 되었으면 좋겠습니다 : )
![](https://t1.daumcdn.net/keditor/emoticon/face/large/026.png)
이번달은 잡페어와 채용 박람회로 모두 마음 고생하셨을텐데, 너무 고생 많으셨습니다.
조급해하지말고 한 걸음씩 나아가다보면 목적지가 보이겠지요?! ㅎㅎ
화이팅입니다!!!
'대외활동 > SSAFYicial' 카테고리의 다른 글
[CS 정리는 내가 할게, 면접은 누가볼래? - 자바/Spring편] 자바/Spring 면접 질문 필수 암기 모음집 (0) | 2023.07.15 |
---|---|
[잡페어/채용박람회] 면접부터 생생한 현장 후기까지! (0) | 2023.07.15 |
[기업탐방] "꿈의 기업 삼성전자", 제가 생각하던 회사의 기준이 달라졌어요! (1) | 2023.06.21 |
[TMI] 대전을 고민하시는 예비 SSAFY인들을 위한 1학기 리얼 후기 (with 타지생활) (12) | 2023.05.13 |
[CS 정리는 내가 할게, 면접은 누가볼래? - 운영체제편] 쓰레드(Thread) 이름만 들어보신 분? (0) | 2023.05.13 |