시스템끼리 연결되어 있으면 우리는 이를 Link라고 부른다.
이 때 주고 받는 것이 메시지라고 가정하자.
어떠한 메시지를 전송하기 위해서는 해당 메시지의 단위가 있어야한다.
우리는 이를 packet이라고 부른다.
host는 메시지를 패킷 단위로 쪼개서 보낸다.
이 때, packet transmission delay라는 개념이 나오는데, 이는 '링크를 활용해서 내가 주어진 시간에 몇 bit를 보낼 수 있는가?`라는 말과 같다.
Packet transmission delay = L(bit)/R(bits/sec)
(여기서 transmission이랑 propagation이랑 헷갈릴 수 있는데 transmission은 꺼내는 것(?), propagation이 옮기는 것이다. 꺼낸다는 의미는 나중에 뒤에서 설명하겠다.)
그리고 Link의 종류에 따라 보낼 수 있는 transmission way가 다 다른데 간략하게 짚고 넘어가겠다.
Packet Switching은 한 컴퓨터에서 다른 컴퓨터로 데이터를 전송 할때 여러 개의 라우터를 거치고 전송되는데, 이 때 데이터를 패킷 단위로 쪼개어 전송하는 방식이다.
Pacekt Switching은 store-and forward 방식을 따른다.
그런데 Forwarding이 될 때까지 기다리는 것은, 즉 내 차례가 될 때까지 기다리는 것은 큐잉이 된다라고 이야기 한다. 패킷이 들어온 순서대로 처리되기 때문에 (선입선출, 큐 방식) 자신보다 먼저 들어온 패킷들을 처리하느라 일정 시간 기다려야 하는데, 이러한 지연 시간을 queueing delay라고 한다.
패킷은 기다리기 위해서 buffer에 들어간다. buffer의 크기가 다 차면, 결국엔 패킷을 폐기 처분할 수 밖에 없다. 우리는 이를 Packet loss라고 부른다.
데이터는 송신, 수신을 반복하면서 여러 라우터를 거쳐야 하는데, 지나 갈 때마다 큐잉 딜레이 등등 여러가지 딜레이가 존재하게 된다. 그 딜레이를 겪어야 하니 결국은 끝에서 끝까지 보낼 때 end to end라는 용어를 쓴다.
local action이다. 라우터에서 라우터로 패킷이 이동하는 형태이다. 라우터의 input link에서 적절한 router output link로 도착 패킷이 이동한다.
여기서 적절한 link라는 것은 패킷에 쓰여 있는 주소를 routing table이라는 개념에서 찾은 것이다.
routing table에는 라우팅 알고리즘을 통해서 어떤 주소로 가려면 어떤 링크로 가야 하는지를 표시가 있다.
global action이다. 그러니까 라우팅은 처음 출발지부터 최종 목적지까지의 이야기라고 생각하면 된다. 패킷에 의해 전송되는 source-destination 경로를 설정하는 것이다.
Routing은 보내는 입장에서 결국 목적지까지 길을 찾아가는 것이고, 라우터 입장에서 여기에 받았던 것을 내보내는 행위는 Forwarding이라고 한다.
출발지와 목적지 사이의 통신을 위해 Resource를 예약하는 것이다.
예를 들면, 옛날에는 전화를 위해서 다이어를 돌렸다. 그 이후에 교환수가 받아서, 어떤 사람과 통화하고 싶은지를 물어본다. 그러면 교환수가 연결을 해준다. 요즘에는 전화 회사를 만들어서 숫자에 따라 연결을 해준다. 무언가를 주고 받기 위해서는 중간중간에 회선을 만들어야 한다. 이것인 통신을 위한 Resource를 예약하는 것이다.
할당받은 circuit은 데이터 전송이 완료될 때까지 나만 사용할 수 있으므로 속도와 성능이 일정하게 보장된다.
Circuit switching은 두 가지 방식이 있다.
FDM은 영어의 말 그대로 하나의 회선에서 주파수를 나누는 것이다. 한 사람에게 주어진 주파수는 좁지만, 중간에 누군가의 개입 없이 온전히 사용할 수 있다.
한 사람은 본인 차례에 회선을 온전히 혼자 쓸 수 있지만, 여러 사람이 시간을 기준으로 나누어서 사용한다.
Packet Switching을 사용하면, 데이터를 보낸 순서 그대로 받지 못할 수도 있다. Packet Switching을 통해 네트워크에서 목적지까지 이동하는 동안, 경로를 결정하는 데 사용되는 라우팅 테이블의 내용이 변경될 수도 있기 때문에 순서가 오락가락할 수도 있다. Packet Switching은 burst 데이터에 적합하다. 그리고 circuit의 사용률을 최대화 하고 circuit switching 방식보다 훨씬 더 많은 사용자를 수용할 수 있다. 너무 많은 사람들이 동시에 사용하려고 하면 queueing delay가 발생하다가 결국 큐가 가득 차서 packet loss가 발생할 수도 있다.
Circuit Switching은 사용자의 사용률이 떨어질 가능성이 크다. 본인이 할당받은 시간에 회선이 사용되지 않을 수도 있기 때문이다.