⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
네트워크 상에서 데이터를 주고받는 방법에는 패킷 교환(packet switching
), 회선 교환(circuit switching
)이 있다.
패킷이란 네트워크 전송의 용량 단위이다.
송신자(sender)가 수신자(receiver)에게 메시지를 보내면, 호스트는 이를 패킷 단위로 쪼개어 보낸다.
메시지를 잘 전달하기 위한 정보가 들어 있다. 보내야 하는 주소가 적혀 있고, 라우터는 이 주소를 routing table
에서 참조하여 올바른 link로 보낸다.
택배 상자의 '운송장' 같은 것이라 보면 된다. 택배 기사가 택배 상자 안에 무엇이 들어있나 관심이 없고 전달만 하듯, 라우터 역시 패킷의 헤더만 볼 뿐 안에 있는 메시지 내용은 관심이 없다.
이 메시지가 각 계층을 거치면서 전송되는 동안 올바른 전송을 위해 필요한 정보를 덧붙이거나 제거하는 과정도 발생한다. (나중에 다룸)
실질적으로 전달하고자 하는 메시지 내용이 들어 있다. 택배 상자 안의 '내용물' 이라고 이해하면 쉽다.
한 컴퓨터에서 다른 컴퓨터로 데이터를 전송할 때 여러 개의 라우터를 거치고 거쳐 전송된다. 이 때 데이터를 패킷 단위로 쪼개어 전송하는 방식이다.
패킷 교환 방식은 한 링크에서 다른 링크로 보낼 때 일단 패킷들을 모두 저장하고, 버퍼에 저장되어 있는 패킷들을 하나씩 꺼내어 보내는
store-and-forward
방식을 따른다.
즉 패킷이 다음 링크로 전송되기 전에 꼭 전체 패킷이 라우터에 도착한 후에 다음 링크로 출발할 수 있다.
또한, 패킷이 들어온 순서대로 처리되기 때문에 (선입선출, 큐 방식) 자신보다 먼저 들어온 패킷들을 처리하느라 일정 시간 기다려야 하는데, 이러한 지연 시간을 queueing delay
라고 한다.
각 라우터에 저장할 수 있는 큐(버퍼)의 크기는 유한하다. 그러나 이 데이터들을 처리하는 tranmission rate
보다 데이터가 들어오는 arrival rate
가 더 크면 큐가 가득 찰 우려가 있다.
이렇게 큐가 가득 찬 상황에서 추가로 들어오려는 데이터가 있으면, 그 데이터는 큐에 들어오지 못하고 소실(drop)된다. 이를 packet loss
라고 한다.
네트워크의 중요한 두 가지 기능은 Forwarding
과 Routing
이다. 두 가지 모두 '적절한 길을 찾아 보낸다' 라는 느낌은 비슷하지만 조금 다르다.
포워딩(Forwarding)이란 input link를 통해 들어온 패킷을
적절한
output link로 보내는 것을 말한다.
이 때 적절한 link라는 것은, 패킷에 쓰여 있는 주소를 routing table
에서 찾은 것이다.
Routing table, 또는 local forwarding table
이라고도 하는 것은, 라우팅 알고리즘을 통해 어떤 주소로 가려면 어떤 링크로 가야 하는지
를 표시해 놓은 표 같은 것이다.
이렇듯 포워딩은 라우터 하나에서 들어오는 데이터를 적절하게 내보내는 작업이므로 지역적 (local action)이다.
라우팅(Routing)이란 라우팅 알고리즘을 사용해 출발지부터 목적지까지의 경로를 정하는 과정이다.
다르게 말하면 라우팅 테이블을 만드는 과정이라고 할 수 있다. 패킷을 보고 이 패킷의 도착지를 결정하므로 전역적 (global action)이다.
나중에 delay 부분을 다루면서 설명하겠지만 여기서 transmission delay
와 propagation delay
에 대해 간단히 짚고 넘어가고자 한다.
라우터가 패킷을 link로 밀어내는, 즉 전파(propagate)를 시작하는 데 드는 시간이다.
이 시간은 패킷의 길이 L
과 단위 시간 당 처리할 수 있는 데이터의 양을 나타내는 transmission rate R
로 표현할 수 있으며 L/R
로 나타낼 수 있다.
즉 패킷 사이즈가 클수록, transmission rate가 낮을수록 데이터를 처음부터 끝까지 링크로 내보내는 시간이 길어진다.
예를 들어, 100Mbps의 transmission rate을 가지고 있는 라우터에서 10kb의 패킷을 링크로 내보낼 때 걸리는 시간은 10kb / 100 x 1000kb = 1/10000 sec = 0.1ms이다.
데이터가 실질적으로 전선을 타고 전파되는 데 걸리는 시간이다.
이 시간은 두 링크 간의 물리적 거리, 그리고 전송 매체가 무엇이냐에 의존적이다.
물리적 거리 d
와 propagaion speed s
를 이용하여 d/s
로 표현한다.
패킷 교환과 상반된 개념은 회선 교환(circuit switching) 이다.
회선 교환 방식은 데이터를 전송하기 전 출발지에서 목적지까지의 회선을 미리 확보해 두고 그 회선을 따라 데이터를 전송하는 방식이다.
자원(회선)을 먼저 할당받기 전까지는 데이터를 보내지 않는다.
그리고 할당받은 회선은 다른 사람이 끼어들 수 없이 나만 독점해서 사용할 수 있다.
한 번 할당받은 회선은 데이터 전송이 완료될 때까지 나만 사용할 수 있으므로 속도와 성능이 일정하게 보장된다.
회선 교환은 다시 두 가지 방식으로 나뉜다.
하나의 회선 안에서 주파수를 나누어 할당해 주는 방식
한 사람에게 할당되는 주파수 대역은 좁지만, 중간에 누군가의 개입 없이 온전히 사용할 수 있다.
전체 회선을 단위 시간 간격으로 나누어 할당해 주는 방식
한 사람은 본인 차례에 회선을 100% 사용할 수 있지만, 여러 사람이 시간을 기준으로 나누어 사용한다는 특징이 있다.
예를 들어 1Gbps의 대역폭을 가지고 있는 회선이 있다고 가정한다.
그리고 각각의 사용자는 100Mbps만큼의 대역폭을 사용하고, 전체 사용 시간의 10% 정도만 사용한다. (active 하다)
이런 상황에서 회선 교환 방식은 최대 10명의 사용자에게 회선을 할당해 줄 수 있을 것이다. 그러나 각각의 사용자는 본인이 할당받은 회선을 100% 활용하지 않고 10%만 활용하므로 나머지 대부분의 시간은 회선이 사용되지 않을 것이므로 비효율적이다.
반면 패킷 교환 방식은 10명보다 더 많은 사람들을 수용할 수 있다. 예를 들어 35명의 사용자들 중에 10명 이상이 동시에 active할 확률은 0.04%보다 작다. 즉 회선의 사용률을 최대화하면서 회선 교환 방식보다 훨씬 더 많은 사용자를 수용할 수 있다.
그러나 너무 많은 사람들이 동시에 회선을 사용하려고 하면 queueing delay가 발생하다가 결국 큐가 가득 차 packet loss
가 발생할 우려가 있다.