해당 글은 한양대학교 이석복 교수님의 과목 "컴퓨터 네트워크"를 공부하고 작성한 글입니다. 해당 강의를 직접 수강하시려면 다음 링크를 참고해주세요.
컴퓨터 네트워크의 구조
인터넷 네트워크의 노드는 최초에는 4개부터 시작했다.
그러나 현재에 와서는 무수히 많아졌다.
저 위의 그림은 인터넷의 주요 서비스 제공자를 그림으로 표현한 것이다.
위의 개념적인 그림에서 서비스를 이용하는 우리는 가장자리 끝(Edge)에 위치하게 된다.
서버는? 서버도 가장자리에 위치하고 있다.
중심은 라우터가 위치하여 네트워크와 네트워크를 연결해주게 된다.
- 네트워크 엣지(network edge) : 서비스를 이용하는 우리와 서버와 같은 애플리케이션과 호스트
- 네트워크 코어(network core) : 라우터
네트워크 엣지(network edge)
인터넷의 가장자리(edge)를 차지하는 end system은 네트워크에 접속된 장비를 말한다.
end system은 웹 브라우저나 이메일 같은 인터넷 응용 프로그램을 실행시킨다. 인터넷 응용 프로그램을 실행, 즉 호스트(host) 하기 때문에 end system은 호스트(host)라고 부르기도 한다.
네트워크 엣지: 데이터를 전송하는 방법
우리는 유튜브로 실시간으로 음악을 듣거나 이메일을 주고받으며 먼 곳의 컴퓨터, 스마트폰과 데이터를 주고받는다.
그런데 우리는 네트워크 엣지에서 어떻게 데이터를 전송할까?
대표적인 방법으로 TCP 서비스가 있는데 TCP 서비스는 다음과 같은 특징을 갖는다.
TCP(Transmission Control Protocol) 서비스
reliable, in-order byte stream data transfer
신뢰성 있고 순서대로 바이트 스트림 데이터를 전송한다
TCP는 데이터를 전송한 그대로 받을 수 있게 신뢰성을 보장한다.
우리가 파일을 전송하면 파일 데이터의 순서가 바뀌거나, 텍스트의 글자 순서가 갑자기 뒤바뀌는 일이 없게 한다.
flow control: sender won't overwhelm receiver
순서 제어: 송신자는 수신자가 받을 수 있는 속도보다 빨리 전달할 수 없다
아무리 보낼 수 있는 속도가 빨라도 받는 쪽에서 모두 수용할 수 없다면 의미가 없다.
TCP는 신뢰성을 보장하기 때문에 수신 속도보다 전송 속도가 빠를 수 없다.
congestion control: senders "slow down sending rate" when network congestion
혼잡 제어: 송신자는 네트워크가 혼잡할 땐 전송 속도가 느려지게 된다.
UDP(User Datagram Protocol) 서비스
또 UDP 서비스도 데이터를 전송할 수 있게 해 준다.
그러나 TCP와 달리 UDP는 신뢰성이 낮다(unreliable).
순서대로 전송되지 않고 데이터가 전송한 그대로 도착한다는 보장도 없다.
겉보기엔 TCP보다 UDP가 나은 점이 하나도 없는 것 같다.
그렇지만 TCP 대신 UDP를 사용하는 이유도 있다.
TCP는 신뢰성을 보장하고 순서대로 전송될 수 있게 한다.
그러나 신뢰성을 보장하기 위해 네트워크 자원이 소모가 된다.
따라서 반드시 신뢰성을 보장할 필요가 없다면 TCP 서비스 대신 UDP 서비스를 이용해서 네트워크 자원을 아낄 수 있다.
프로토콜(Protocol)?
TCP, UDP의 마지막 글자는 P로, 두 단어 다 공통적으로 프로토콜이라는 단어가 들어간다.
프로토콜은 간단히 말해 사람과 사람, 또는 기계와 기계 간의 약속이다.
전화를 받으면 "여보세요?"라는 말로 시작하고 그다음으론 왜 전화했는지 또는 누가 전화했는지를 묻곤 한다.
이는 상대방과 암묵적으로 약속한 것으로, 사람과 사람 간에 소통할 때에는 서로 약속이 필요하다.
마찬가지로 컴퓨터가 소통할 때에도 약속이 필요한데, 그 약속 중 하나가 바로 TCP, UDP이다.
네트워크 코어(network core)
네트워크의 가장자리를 알아봤으니 다음은 네트워크의 중심부이다.
네트워크 코어에는 라우터가 있다.
네트워크의 중심은 위 그림처럼 수많은 라우터로 연결되고, 네트워크 가장자리에는 실제로 네트워크에 접속하는 장비들이 있다.
데이터를 어떻게 전송할까?
그러면 컴퓨터는 데이터를 어떻게 네트워크를 통해 전송할까?
그 방법에는 두 가지가 있다.
첫째, 회선 교환(Circuit switching) 방식은 전송할 데이터망을 미리 예약하는 방식이다.
위키백과에 따르면 다음과 같다.
회선 교환망은 발신자와 수신자 간에 독립적이며 동시에 폐쇄적인 통신 연결로 구성되어 있다. 이러한 1대 1 연결을 회선(circuit) 또는 채널(channel)이라고 말한다.
Circuit switching은 미리 데이터가 전송될 경로를 예약해놓고 전송하는 셈이다.
둘째, 패킷 교환(packet-switching)은 데이터를 패킷(packet)이라는 단위로 포장해서, 각 라우터는 패킷이 들어오는 대로 전송한다.
위키백과에 따르면 다음과 같다.
패킷 교환(Packet switching)은 컴퓨터 네트워크와 통신의 방식 중 하나로 현재 가장 많은 사람들이 사용하는 통신 방식이다. 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법을 말한다.
인터넷에서는 두 번째 방식을 사용한다.
그 이유는 바로 속도 때문이다.
다음과 같은 상황을 가정해보자.
- 라우터에서는 1 Mbps의 속도로 데이터를 전송한다.
(Mbps 또는 Mb/s: megabits per second의 약자로, 1 Mbps는 초당 1백만 비트를 전송함을 말한다.) - 유저는 활성화되어 있을 때, 100kb/s만큼의 자원을 이용한다.
- 각 유저는 전체 시간의 10%만큼 활성화되어 있다.
그렇다면 두 방식은 몇 명만큼의 유저를 수용할 수 있을까?
회선 교환(circuit switching) 방식은 1 Mbps / 100 kbps = 10명의 유저만이 사용할 수 있다.
미리 회선을 예약해놓고, 예약된 회선은 반드시 그 사람만이 이용할 수 있다. 따라서 사용하지 않을 때에도 다른 유저는 그 회선을 이용할 수 없다.
그에 반해 패킷 교환(packet switching)은 무한히 많은 유저가 사용할 수 있다.
인터넷 사용자 패턴에 따르면 모든 유저가 동시에 인터넷을 사용하지는 않기 때문이다.
다만 많은 유저가 동시에 네트워크를 이용하면, 라우터의 데이터 전송량보다 유저의 데이터 전송 요구량이 더 많아져서 문제가 생긴다.
위 같은 경우에는 10명보다 많은 유저가 접속하면 문제가 발생하므로, 확률적으로(여기서는 0.04%) 라우터가 혼잡해지게 된다.
회선 교환은 낭비하는 네트워크 자원이 너무 많으므로 네트워크에서는 패킷 교환(packet-switching) 방식으로 데이터를 전송한다.
패킷 전송에서의 시간 지연
컴퓨터 네트워크에서는 패킷 전송(packet-switching)으로 통신을 한다.
우리는 광속도로 데이터를 전송한다고 한다.
그런데 왜 대학 수강 신청 시즌에는 사이트가 터질까? 빛의 속도라면서 왜 유튜브가 느려지는 일이 발생할까?
패킷 전송에서 시간 지연이 발생하는 원인은 네 가지가 있다.
1. 노드 처리 지연(nodal processing delay)
각 네트워크 노드(라우터)에서 데이터를 처음 받으면 제대로 전달되었는지, 전송받은 비트에 에러가 없는지 확인한다.
이 과정에서 발생한 지연을 Processing delay라 한다.
2. 큐잉 지연(queueing delay)
전송받은 패킷을 아예 저장하지 않는다면 어떻게 될까? 데이터 전송 속도보다 수신 속도가 느리면, 데이터를 모두 보내기 전에 다 유실되어 버릴 것이다.
따라서 라우터에서는 데이터를 전송받으면 큐에다가 집어넣는다.
패킷 데이터를 큐에 순서대로 넣어서, 다른 패킷이 모두 전송될 때까지 대기하는 데 시간이 걸리게 된다.
이 지연 시간을 queueing delay라 한다.
3. Transmission delay
첫 비트부터 마지막 비트까지를 링크(outgoing edge)에 올리는 데에 걸리는 시간을 말한다.
4. Propagation delay
링크를 따라 다음 라우터까지 전달되는 데에 걸리는 시간을 말한다.
여기서 이 지연시간을 줄이고 인터넷 속도를 개선하려면 어떻게 할까? 우리는 첫 번째, 두 번째 지연만을 줄일 수 있다.
1. Processing delay : 라우터를 좋은 걸 쓴다.
2. Transmission delay : 케이블 밴드를 확장한다.
우선 네 번째 Propagation delay는 전자기파의 속도(=빛의 속도)에 따라 바뀌므로 절대 줄일 수 없다.
그리고 세 번째 Queueing delay도 사용자의 데이터 전송량에 따라 달라지므로 해결할 수 없다.
queueing delay는 얼마나 많은 데이터가 queue에 저장되어 있는지에 따라 달라진다.
놀이공원으로 예를 들면, 대기열이 짧으면 사람들이 대기하는 시간이 짧고 대기열이 길어지면 대기하는 시간이 길어진다.
이는 얼마나 많은 사람이 그걸 이용하려고 하는지에 따라 달라진다.
마찬가지로 많은 사람이 네트워크를 이용하고 있다면 queue에서 각 패킷이 대기해야 할 시간이 길어질 수 있다.
심지어 너무 많은 데이터를 수신하게 되면, queue의 용량이 부족해질 수도 있다. 라우터의 queue의 용량은 무제한이 아니기 때문이다.
이때 queue가 꽉 차게 되면, 전송된 데이터를 받지 못하는 일이 생길 수 있다.
즉, 패킷 유실(Packet loss)이 발생한다.
그런데 TCP에서는 신뢰성 있게 데이터를 전송해준다고 하는데, TCP는 어떻게 데이터가 목적지까지 정상적으로 도달될 수 있게 보장할 수 있을까?
TCP라고 해서 달리 방법은 없다. TCP에서는 제대로 데이터가 목적지까지 도달하는지 지켜보고 있다가, 전송 도중 문제가 발생하게 되면 재전송을 하게 된다.
A -> 라우터 1 -> 라우터 2 -> 라우터 3 -> B
A, B는 end system
라우터 2에서 packet loss 발생
만약 A에서 B로 데이터를 전송하다가 중간지점인 라우터 2에서 packet loss가 발생했다 하자.
이때 TCP에 따르면 packet loss가 일어난 지점, 즉 라우터 1부터 시작해서 라우터 2에 재전송을 시작하는 것이 아니라 A에서 다시 재전송을 시작하게 된다.
이건 Network edge에서만 TCP를 사용하고 있고 Network core(라우터)에서는 TCP를 사용하지 않기 때문이라고 한다.
라우터에서 TCP를 이용하기엔 (1) 너무 많은 비용이 들고 (2) 라우터에서 데이터를 전송하는 것만으로도 부하가 심하기 때문이라고 한다.
라우터에서는 데이터를 전송하는 역할만을 하기 때문에 dumb core라고도 부른다.
출처
회선 교환 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
패킷 교환 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
Internet Mapping Project: Map gallery (cheswick.com)
[컴퓨터네트워크] 3일차 컴퓨터 네트워크와 인터넷 (3) : 네이버 블로그 (naver.com)
'컴퓨터과학 > 네트워크' 카테고리의 다른 글
3-3. 전송(Transport) 계층: 파이프라인 프로토콜 (0) | 2021.10.14 |
---|---|
3-2. 전송(Transport) 계층: 신뢰성 있는 데이터 전송(RDT) (0) | 2021.10.10 |
3-1. 전송(Transport) 계층: 다중화(Multiplexing)/역다중화(Demultiplexing) (0) | 2021.10.10 |
2. 소켓 프로그래밍 (0) | 2021.10.06 |
1-2. 컴퓨터 네트워크 기본 2 (0) | 2021.10.03 |
댓글