⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
이 글에서는 앞서 언급했었던 packet loss와 delay에 대해 자세히 다룬다.
패킷이 출발지에서 목적지까지 가는 과정에서 발생하는 지연은 크게 4가지로 분류할 수 있다.
다음과 같은 두 가지 원인 때문에 라우터에서 발생하는 지연이다.
- 들어온 정보가 에러가 없는지 확인하는 작업
- routing table을 참조하여 어느 link로 보내야 하는지 판별하는 작업
두 작업 모두 매우 짧은 시간이 소요되기 때문에 지연 시간을 계산할 때는 무시하곤 한다.
라우터 큐에 먼저 도착한 패킷이 모두 처리되고 자기 차례가 올 때까지 기다리는 시간이다.
라우터의 혼잡도에 따라 달라진다.
다른 패킷들 때문에 발생하는 지연이기 때문에 패킷을 보내는 입장에서는 라우터의 혼잡도를 알기가 쉽지 않으며, 따라서 '내가 이 패킷을 목적지까지 몇 ms만에 보낼 수 있는가'
에 대한 보장을 하지 못한다.
또한, 4가지 딜레이 중 가장 예측이 힘든
딜레이이다.
라우터가 패킷을 link로 밀어내는 데 드는 시간이다.
패킷의 크기(packet length)에 비례, 또는 라우터의 성능 (transmission rate)에 반비례한다. 패킷의 크기 L
을 link transmission rate R
로 나눈 L/R
로 표현한다.
자동차를 타고 집을 나와서 다른 집으로 가는 것에 비유하자면, 시동을 걸고 도로로 나가는 데까지 걸리는 시간이라고 할 수 있다.
패킷이 전선을 타고 이동하는 시간이다.
물리적 거리, 또는 전송 매체의 종류에 비례한다. 물리적 거리 d
를 전송 매체의 propagation speed s
로 나눈 d/s
로 표현한다.
자동차를 타고 집을 나와서 다른 집으로 가는 것에 비유하자면, 도로를 달리는 시간이라고 할 수 있다.
단위 시간 당 처리할 수 있는 데이터의 양, 즉 대역폭(bandwidth)을 R
이라고 하고,
한 패킷의 길이를 L
이라고 하고,
단위 시간 당 도착하는 패킷의 수를 a
라고 하면
단위 시간 당 처리해야 하는 데이터의 양은 La
이므로 트래픽 밀도(traffic intensity)는 La/R
로 계산할 수 있다.
이 La/R
이 얼마냐에 따라 queueing delay가 결정된다.
이는 데이터가 간헐적으로, 그러나 폭발적으로 (intermittently, 'bursty') 들어오기 때문이다.
예를 들어서 1초에 1개의 패킷을 처리할 수 있다고 했을 때 (R) 1초에 1개의 패킷이 들어온다면 모든 패킷을 들어오는 족족 처리할 수 있으므로 delay가 없겠으나, 1,000초마다 한 번씩 1,000개의 패킷이 한번에 우르르 들어온다고 해 보면, 각각 2, 3, 4...1000번째 패킷은 1, 2, 3... 999초를 기다려야 한다.
그러므로 전체 대기 시간은 상당히 길어질 수 있다.
traceroute 명령은 UDP 패킷과 ICMP 오류 보고 기능을 사용하며, UDP 패킷을 경로상의 각 게이트웨이나 라우터에 세 번 전송합니다. 또한 가장 가까운 게이트웨이에서 시작하여 한 홉씩 검색을 확장합니다. 최종적으로 검색이 대상 시스템에 도달합니다. (출처 : IBM)
traceroute
를 통해 delay를 측정할 수 있다.
송신자가 라우터에 패킷을 3개 보낸다. 라우터는 그것을 받은 후 다시 송신자에게 돌려준다. 그러면 송신자는 자기가 패킷을 보낸 시간과 받은 시간을 이용해 지연 시간을 계산할 수 있다.
이를 각각의 라우터에 대해 수행해 본다. 따라서 목적지까지 가는 데 거치는 라우터와 딜레이를 확인할 수 있다.
google.co.kr
에 대해 traceroute
를 실행한 모습이다.
방문하는 라우터 경로와 그 딜레이를 확인할 수 있다.
쓰루풋(Throughput)은 네트워크 상의 어떤 노드로부터 또 다른 노드로 전달되는 단위 시간당 데이터 전송을 처리하는 양이다.
데이터가 출발지에서 목적지까지 가는 동안 여러 link를 거치게 된다.
그 중 데이터 전송이 원활한 link가 있을 것이고, 데이터 전송이 느린 link가 있을 것이다.
이 중, 데이터의 전체 전송 속도를 결정하는 부분은 데이터 전송이 가장 느린
부분이다. 이러한 부분을 병목(bottle-neck)
이라고 한다.
네트워크 통신에서 정보 보안은 매우 중요한 요소이다.
나쁜 이용자들이 정보를 변조시킬 수도 있고, 중간에서 가로챌 수도 있기 때문이다.
우리의 데이터를 괴롭히는 나쁜 아이들은 여러 가지 종류가 있다.
우리가 흔히 말하는 '악성 코드' 또는 '바이러스' 를 유식한 말로 Malicious Software, 줄여서 Malware
(멀웨어) 라고 한다.
멀웨어는 두 가지 종류가 있다.
Dos, Denial of Service
(서비스 거부 공격)은 가짜 트래픽을 엄청 많이 발생시켜 정상적인 트래픽을 이용하지 못하게 만드는 공격 수법이다.
이러한 Dos 공격이 동시다발적으로 여러 군데에서 들어오면 DDos Distributed DoS
(디도스)가 된다.
본래 '냄새 맡다' 라는 뜻의 'sniff' 에서 따온 단어로, 지나가는 패킷을 읽거나 복사해 간다.
공격자는 본인의 IP 주소를 신뢰할 수 있는 주소로 위장하여 특정 노드와 통신한다.