network edge: 컴퓨터
network core: 라우터
network link: 무선 링크, 유선 링크..
대부분의 경우 신뢰성이 필요하기 때문에 TCP 이용(ex. 웹브라우저)
computing resource(비용)가 더 많이 듦
받아들이는 쪽과 관계없이 데이터를 쏟아부을 수 있기 때문에 속도가 빠를 수 있지만 그게 장점이라고 하긴 힘듦
신뢰성이 굳이 필요없는 경우에는 UDP를 사용 (ex.Voice of IP-VoIP)
기계들 간의 communication을 위해 사전에 지정해둔 약속
프로토콜이 서로 맞지 않으면 통신을 할 수 없다.
라우터들의 집합
circuit switching
: 출발지에서 목적지까지 가는 길을 미리 예약해두고 특정 사용자만을 위해 준비해둔 것 (ex. 옛날 유선 전화망)packet switching
: 사용자가 보내는 데이터를 패킷 단위로 받아서 그때그때 목적지로 forwarding해주는 방식 (ex. 인터넷)인터넷의 초기 디자이너들이 패킷 스위칭을 채택한 이유?
실제로 유저들이 링크를 사용하는 패턴은 한번 쓰고 한참 안쓰고.. 그런 식이기 때문에 몇명의 제한된 유저에게 링크를 할당해주는 것은 자원의 낭비가 된다
이게 운이 나쁘면 문제가 생길 수 있지만(갑자기 접속이 너무 많아지면) 그럴 확률이 매우 낮다.
라우터에서 패킷을 받아서 제대로 된지 확인하고, 이걸 보내는데 이로 인한 지연을 processing delay
라고 한다.
-> 줄이는 방법: 라우터 성능 개선
라우터에서 나가는 패킷이 차례로 나갈 수 있도록 줄을 설 수 있는 queue
(buffer)가 존재한다. 이로 인해 걸리는 시간을 queuing delay
라고 한다.
-> 줄이는 방법: queue에 줄이 길어지고 짧아지고는 패킷이 얼마나 많은지(사람들이 인터넷을 얼마나 많이 쓰는지)에 좌우되기 때문에 어떻게 할 수 없다.
-> queue의 제한된 크기로 인해 패킷이 너무 많아지게 되면 패킷 유실이 생기게 된다. 인터넷에서 생기는 유실의 90% 이상의 원인은 이 큐에서 일어난다.
-> 그렇다면 TCP에서는 어떻게 reliable한 전송을 해줄 수 있을까?
sender와 receiver(network edge, client와 server)에서 보낸 데이터와 받은 데이터를 비교해서 유실이 된 경우 sender가 재전송을 해준다.
큐에서 패킷의 첫번째 bit가 나가는 시간부터 마지막 bit가 나가는 시간까지를 transmission delay
라고 한다. 이 시간은 packet length/link bandwidth이다.
-> 줄이는 방법: link bandwidth를 늘린다(케이블 공사)
마지막 bit가 링크에 올라와서 다음 라우터까지 도달할 때까지의 시간을 propagation delay
라고 한다. 이 속도는 빛의 속도이기 때문에, 라우터 간 거리가 멀면 자연스럽게 길어진다.
cf)
패킷은 비트의 집합인데 일부 비트만 라우터에 도착했다고 진행될 수 있는게 아니라 모든 비트가 다 도착할 때까지 기다려야한다.