네트워크
네트워크는 컴퓨터들이 통신망을 통해 데이터를 주고받으며 서로 그물처럼 연결된 체계를 말합니다.
1.1 인터넷
인터넷은 네트워크들의 네트워크로, 매우 많은 computing device들이 연결된 광범위한 네트워크입니다.
인터넷은 end system / communication links / packet swiches 로 구성됩니다.
- end system (host) : PC, 서버, 노트북, 스마트폰과 같이 인터넷에 연결되어 네트워크 어플리케이션을 실행시키는 기기를 말합니다.
- communication links : 광섬유나 동축케이블 같은 유선케이블 혹은 라디오, 무선통신과 같은 무선 연결장치를 의미합니다. end system과 packet switch 들을 서로 연결해주는 역할을 수행합니다.
- packet switch : 라우터나 스위치를 의미합니다. communication link를 통해 들어온 패킷을 올바른 방향의 communication link로 전달해주는 역할을 수행합니다.
프로토콜
다른 사람에게 전화를 걸 때 여보세요 등의 인사말을 하는 것처럼, 인터넷에서도 컴퓨터들간에 원활한 통신을 위해서는 미리 정의된 규칙(프로토콜!)을 따라야합니다.
이렇게 컴퓨터 네트워크 환경에서 기기 사이에 메세지를 주고받는 방식 혹은 데이터의 양식을 정의하는 규약을 프로토콜이라고 합니다.
즉, 프로토콜은 네트워크 기기 사이에 송수신하는 메세지의 양식(format)과 순서 그리고 메세지가 송수신되었을 때 이루어져야하는 행동에 대해 정의합니다.
이런 프로토콜에는 TCP, IP, HTTP, Skype 등의 다양한 종류가 있습니다.
네트워크를 좀 더 자세히 살펴보면, network edge, access network, network core로 나눌 수 있습니다.
- Network Edge : 클라이언트와 서버같은 end system 들이 존재하는 네트워크의 말단에 존재하는 구성요소들
- Access Network : 사용자가 인터넷에 접근하기 위해 사용하는 네트워크로, 유무선 communication links로 이루어집니다. 기기를 와이파이에 연결하거나 랜선을 꽂는 것 등을 통해 인터넷에 접근할 수 있고, ISP(Internet Service Provider) 가 보통 access network를 제공해줍니다.
- Network Core : 네트워크의 중앙에 위치한 부분으로, 라우터들이 상호연결되어있는 구조입니다.
1.2 Access Network
Access Network는 사용자가 인터넷에 접근하기 위해 사용하는 네트워크, 즉 end system을 edge router에 연결하는 네트워크입니다.
Edge router (Gateway) 는 end system이 외부 네트워크와 연결되는 첫번째 라우터입니다.
Access network의 종류에 따라 공유될 수도 있고, 혹은 한 사용자가 전적으로 사용할 수도 있습니다.
1. DSL (Digital Subscriber Line)
DSL은 널리 사용되는 Home Access Network 중 하나로, 기존 전화선을 이용하여 인터넷에 접속하는 방식입니다.
디지털 데이터는 DSL 모뎀을 통해 높은 주파수로 변환되어 전화선을 통해 central office의 DSLAM (DSL Access Multiplexer)으로 전달되고, DSLAM에서는 다시 이를 다시 디지털 데이터로 변환해줍니다.
그리고 중간에 splitter가 존재하여 음성과 디지털 데이터를 분리해주는 역할을 합니다.
전화 신호와 컴퓨터 데이터는 각각 다른 주파수로 전달되어 충돌하지 않고 동시에 전달될 수 있으며, 전화선은 dedicated line으로 전화선을 다른 집과 공유해서 사용하지 않습니다.
또한 집에서 전화망 방향으로 데이터가 전달되는 upstream 방향보다 전화망에서 집으로 전달되는 downstream 방향의 전송속도가 훨씬 빠릅니다. 이는 보통 인터넷에서 업로드하는 것보다 다운로드 하는 상황이 더 많기 때문이라고 할 수 있습니다.
2. 케이블 네트워크
TV 케이블을 이용하여 인터넷에 접속하는 방식입니다.
- Frequency division multiplexing : 하나의 회선에 여러 개의 signal이 같이 전송되는 것을 multiplexing이라 하고, frequency division multiplexing은 동시에 전송되는 여러 채널들이 서로 다른 주파수를 통해 전송되는 것을 말합니다.
이 방식에서 여러 집들은 cable headend까지의 access network를 공유합니다. 따라서 TV와 인터넷 데이터는 동일한 케이블 네트워크에서 서로 다른 주파수를 이용해 전송됩니다.
- HFC(hybrid fiber coax) : 케이블 네트워크에서 앞쪽 케이블은 동축 케이블(coax)를 사용하고, 뒤쪽(cable headend쪽) 케이블은 광케이블(fiber)을 사용합니다. 이렇게 fiber과 coax를 함께 사용하는 방식을 HFC라고 합니다.
3. 이더넷, Ethernet (Enterprise access networks)
기업이나 대학교에서 주로 사용되며, LAN 에서 가장 많이 사용되는 기술입니다.
여러 개의 장치들이 이더넷스위치에 연결되어있고, 이더넷 스위치들은 또 다시 더 큰 라우터에 연결됩니다.
4. Wireless access networks
Wireless LAN(Local Area Network) 은 근거리에서 작동하는 무선 통신망이며, Wifi라고도 합니다.
LAN에서 End system들은 라우터에 AP(Access Point)를 통해 연결됩니다.
Wireless WAN 은 원거리에서도 동작하는 무선 통신망이며, 3G, 4G, LTE등이 있습니다.
Physical Media
네트워크에서 수신자와 발신자 사이에는 physical link가 존재하며, 이 링크를 따라 bit들이 전송됩니다.
- Guided media : 신호들이 solid media를 통해 전송되며, 구리선(copper), fiber(광섬유), coax(동축케이블) 등이 있습니다.
- Unguided media : 자유롭게 전송되는 신호로, radio파 등이 있습니다.
- TP (Twisted Pair) : 랜선에 흔히 사용되는 것으로, Guided media의 한 종류입니다. 두개의 구리 선에 절연체가 씌워진채로 꼬아져있습니다.
1.3 Network Core
네트워크 코어는 상호연결된 라우터들로 이루어져있습니다.
Packet Switching
네트워크 상의 호스트들은 전송할 메세지를 packet들로 쪼개서 시작점부터 도착점까지의 경로 상에 있는 라우터들을 따라 패킷들을 전송합니다.
그리고 수신 측에서 이렇게 조각조각 분해되어 온 패킷들을 모두 받아 합치게 됩니다.
1. Store-and-forward
Store and Forward은 패킷스위칭의 한 방법으로, 전체 패킷은 우선 첫번째 라우터에 도착해야합니다.
한 패킷의 크기가 L bits이고 link의 bandwidth가 Rbps일 때, L > R이라면 패킷의 일부가 우선 전송됩니다.
그러면 먼저 도착한 패킷은 라우터에 Store되어있다가 전체 패킷이 모두 도착하면 그때서야 다음 link로 forward합니다.
이때 L-bits짜리 패킷을 R bps 링크를 통해 전송하는데 걸리는 시간(transmission delay)은 L/R 초 입니다.
따라서 위의 그림에서 end-end delay = 2L/R이 됩니다.
(여기서 L/R은 비트를 전송링크에 올려놓는 시간인 transmission delay이고, 비트가 링크를 통해 전파되는 시간은 propagation delay인데, 이 propagation delay는 매우 빠르므로 무시할 수 있다고 가정합니다.)
2. Queueing and loss
만약 라우터에 도착하는 링크의 속도가 라우터에서 나가는 링크의 속도보다 빠르면, 패킷들이 라우터에 쌓이게 됩니다.
이를 위해 라우터에는 queue를 갖고 있어서 넘치는 패킷을 큐에 저장할 수 있습니다. 패킷이 큐에 저장되어있는 동안 발생되는 delay를 queueing delay라고 합니다.
또한 트래픽이 과도하게 발생하여 큐(버퍼)마저 꽉차게되면, 이후 들어오는 패킷들은 버려지게 됩니다. (packet loss 발생)
Two key network-core functions
라우터가 수행하는 두 가지의 주요한 기능은 Forwarding과 Routing 입니다.
1. Routing
라우팅 알고리즘을 통해 라우팅 테이블 (Forwarding table)을 업데이트하고, 이를 통해 source-destination으로 가기 위해 패킷이 이동해야하는 적절한 경로를 결정하는 것을 의미합니다.
2. Forwarding
라우터의 input으로 들어온 패킷을 적절한 output link로 밀어내는 것을 말합니다.
따라서 forwarding이 모이면 결국 routing이 되는 것입니다.
이에 대한 자세한 내용은 챕터3에서 더 공부해보겠습니다.
Alternative core : circuit switching
Packet switching을 대체할 수 있는 방식으로 circuit switching이 존재합니다.
이 방식은 source와 destination 사이에 전용 curcuit을 잡아두고, bit stream으로 데이터를 쭉 전송하는 방식입니다.
이 방식은 전통적인 전화망 네트워크에서 사용되었던 방식이고, 인터넷에서는 packet swiching을 사용합니다.
Circuit switching을 구현하는 방법, 즉 물리적 회선을 나누는 방식으로 두가지가 있습니다.
- FDM (Frequency Division Multiplexing) : 앞에서 설명했다시피 주파수를 통해 회선을 분할하는 방식입니다.
- TDM (Time Division Multiplexing) : 시간을 기준으로 회선을 분할하여 사용하는 방식입니다.
Packet switching VS Circuit switching
1 Mbps 링크를 N명의 유저가 사용하는 상황을 생각해보겠습니다.
각 유저는 활동 상태일 때 100 kb/s의 트래픽을 발생시키며 전체 시간의 10%만 활동을 합니다.
- Circuit switching : 최대 10명의 유저를 수용할 수 있습니다.
- Packet switching : N=35 일때, 10명 이상의 사용자가 동시에 활동할 확률은 0.0004보다 적습니다. 따라서 Circuit switching 방식보다 훨씬 많은 사용자가 네트워크를 사용할 수 있습니다.
위의 예시를 보면 패킷스위칭이 무조건 좋은 것이라고 생각할 수 있습니다.
패킷스위칭은 데이터가 한꺼번에 많이 발생했다가 멈췄다가 반복하는 식으로 불규칙하게 발생하는 bursty data 상황에서 효율적으로 작동합니다.
패킷스위칭은 여러 사용자가 자원을 공유할 수 있으므로 더 많은 사용자를 수용 가능하고,
전용회선을 확보하는 과정이 필요없으므로 더 간단합니다.
하지만 과도한 congestion 상황에서 패킷이 큐에 계속 쌓이게되면 queueing delay 가 발생하고 packet loss도 발생할 수 있습니다. (이런 상황에 대처하기 위해 reliable data transfer, congestion control 기능을 수행하는 프로토콜이 필요하고, TCP가 이런 기능을 수행할 수 있습니다.)
Internet structure : Network of networks
End system들은 access ISP를 통해 인터넷에 연결됩니다.
그리고 Access ISP들은 상호 연결되어있어서 임의의 두 호스트는 서로 패킷을 주고받을 수 있습니다.
이렇게 연결연결되어 이루어지는 네트워크는 매우 복잡해집니다.
모든 Access ISP들이 서로서로 연결되도록 네트워크를 구성하게되면 $O(N^2)$ 개의 연결이 생길 것이고, 이런 네트워크는 scale이 불가능해집니다. 즉 ISP의 개수가 커짐에 따라 필요한 연결이 기하급수적으로 늘어나서 사용할 수 없게됩니다.
따라서 경제적인 합의에 따라 Customer / Provider ISP들이 생겨났습니다.
Customer ISP들은 Provider ISP에 연결되고, Provider ISP들이 서로 연결되어 global ISP가 생성됩니다.
그리고 이런 global ISP사업이 경쟁력있는 비즈니스가 되면서 여러개의 global ISP들이 생겨났고, 이런 global ISP들은 또 다시 상호연결됩니다.
경우에 따라 중간에 Regional network를 추가하는 경우도 있습니다.
그리고 구글이나 마이크로소프트와같은 곳에서는 end user에게 가까운 곳에서 컨텐츠를 고속으로 전달하기 위해서 Content Provider Network를 구축하기도 합니다.
간단하게 알아보면, 레플리카라는 컨텐츠의 복제판을 만들어 잠재적인 client의 근처에 두고, 요청이 들어오는 경우 인터넷을 통해 멀리 떨어진 서버에 접속하는 대신 가까운 곳에 있는 복제판을 빠르게 전송해주도록 하는 방식입니다.
ISP의 구조는 아래와 같이 계층적으로 구성됩니다.
Tier-1 ISP는 국가적으로 제공하는 ISP 혹은 KT, SKT등과 같은 통신사에서 제공하는 ISP입니다.
구글과 같은 CDN은 보통 tier-1이나 regional ISP 등을 우회하고 데이터센터에 연결되는 private network입니다.
1.4 Delay, loss, throughput in networks
라우터에서 패킷의 도착속도가 output link capacity보다 크면 패킷이 버퍼에 queueing되고 delay가 발생합니다.
packet을 delay시키는 4가지 요소에 대해 알아보겠습니다.
1. $d_{proc}$ (Nodal processing)
패킷이 들어오면 라우터가 패킷을 해석하여 bit 에러를 체크하고, forwarding 테이블에 매칭하여 output link를 결정하는데 걸리는 시간입니다. 일반적으로 msec보다 적은 시간이 소요됩니다.
2. $d_{queue}$ (Queueing delay)
패킷이 큐에서 대기하는 시간으로, 라우터의 혼잡 정도에 따라 달라집니다.
3. $d_{trans}$ (Transmission delay)
패킷을 링크에 싣는데 걸리는 시간으로, 패킷이 L-bits이고 link bandwidth가 R bps일 때 L/R입니다.
4. $d_{prop}$ (Propagation delay)
link를 통해 패킷이 한쪽 라우터에서 다른쪽 라우터로 전파되는 시간입니다.
physical link의 길이가 d이고 link의 propagation speed가 s일 때, d/s 입니다.
그리고 보통 s가 매우 크기 때문에 propagation delay는 작은 값을 갖습니다.
Queueing Delay를 자세히 살펴보면
R: link bandwidth
L: 패킷 길이 (bits)
a: 평균 패킷 도착률
일 때, 라우터의 input은 L*a이고, output은 R이 됩니다.
가로축은 La/R 즉 input의 속도 / output의 속도, 세로축은 평균 queueing delay로 하여 그래프로 나타내면 오른쪽과 같이 나타낼 수 있습니다.
input이 output에 비해 작은 상황, 즉 La/R 이 0에 가까운 상황에서는 queueing delay가 작습니다.
그리고 1에 가까워질수록 queueing delay가 점점 커지고 La/R이 1을 넘으면 평균 딜레이는 무한하게 커집니다.
그런데 La/R < 1 인 상황에서는 input 속도보다 output속도가 빠르다는 것인데 왜 delay가 발생할까요?
이것은 average arrival rate를 상정한 것이고, 실제로 트래픽은 한꺼번에 많이 발생했다 적게 발생했다를 반복하기 때문에 한꺼번에 많은 트래픽이 발생하는 경우 delay가 생길 수 있기 때문입니다.
고속도로가 꽉차지 않아도 막히는 이유는 차들이 정속으로 달리는 것이 아니라 브레이크를 밟아서 속도를 줄였다 높였다 하기 때문인 것과 비슷한 이유입니다.
Troughput
sender와 receiver 사이에 bit가 전송되는 속도입니다.
sender에서 receiver로 가는 경로에 여러 개의 링크가 있을 때, throughput이 낮은 쪽의 링크가 평균 end-end throughput을 결정합니다. 이런 링크를 bottleneck link라고 합니다.
1.5 Protocol layers, service models
네트워크는 호스트, 라우터, physical media, 프로토콜 등 많은 조각들과 함께 매우 복잡하게 이루어져 있습니다.
이런 네트워크를 레이어를 통해 구조화하는 것에 대해 알아보겠습니다.
어떤 구조를 layer로 계층화했을 때, 각 레이어는 내부의 동작을 통해 하나의 서비스를 제공합니다.
그리고 바로 아랫단계에 있는 레이어가 제공하는 서비스를 이용합니다.
복잡한 시스템을 레이어링하면 시스템의 유지보수가 쉬워집니다.
하지만 레이어링을 너무 완벽하게 적용하려고하면 최적의 성능을 내는게 어려워질 수도 있습니다.
OSI 7 layers model (Open Systems Interconnection model)
국제표준화기구인 ISO에서 개발한 모델로, 컴퓨터 네트워크 전반에 관한 표준을 계층을 나누어 설명한 모델입니다.
Application |
Presentation |
Session |
Transport |
Network |
Data link |
Physical |
위와 같이 7개의 레이어로 나뉘며 각 레이어를 간단하게 살펴보면 다음과 같습니다.
- Application layer : 네트워크 리소스에 대해 접근할 수 있도록 함
- Presentation layer : 데이터를 변환하거나 암호화, 압축해주는 작업을 수행
- Session layer : 세션을 구축, 관리, 종료하는 역할을 수행. (ex. 에러가 발생하는 경우 연결 복구를 시도하는 등의 작업)
- Transport layer : Reliable한 process 간의 메세지 전송을 제공하고 packet loss등의 에러를 복구하는 등의 서비스를 제공
- Network layer : 패킷을 source에서 destination으로 옮기는 라우팅, 포워딩 등의 작업을 수행
- Data link layer : bits를 frame 단위로 묶어서 hop-to-hop delivery를 제공
- Physical layer : bits를 medium을 통해 전송하는 역할을 수행
TCP/IP 5 layers model
Application |
Transport |
Network |
Link |
Physical |
TCP/IP 5계층 모델은 OSI 의 상위 세단계를 하나로 통합하여 더 간단하게 표현된 모델입니다.
- Application : 네트워크 어플리케이션에 인터페이스를 제공함. HTTP, SMTP, FTP 등의 프로토콜이 존재
- Transport : process간 데이터 전송을 담당. TCP, UDP 프로토콜이 있음
- Network : 라우팅 & 포워딩을 이요해 Source에서 Destination까지 패킷을 전달. IP, routing 프로토콜
- Link : 이웃한 네트워크 요소 간에 데이터 전송을 담당. 이더넷, Wifi, PPP 등의 프로토콜
- Physical : 물리적으로 wire를 통해 비트를 전송함
Application과 Transport 레이어는 end system을 위해 만들어진 레이어이고, network core에 있는 라우터와 스위치는 하위 3개의 레이어만을 수행합니다.
Encapsulation
상위계층에서 하위계층 쪽으로 데이터를 전달하려면 위의 그림과 같이 각 계층에서 필요한 정보들을 추가적으로 덧붙여야합니다.
이렇게 계층을 따라 데이터가 이동하면서 필요한 정보(Header)들이 덧붙여지는 것을 encapsulation이라고 합니다.
따라서 각 계층마다 패킷을 부르는 이름이 다릅니다.
- Application 레이어 👉 Message
- Transport 레이어 👉 Segment
- Network 레이어 👉 Datagram
- Link 레이어 👉 Frame
반대로 하위계층에서 상위계층으로 데이터를 전달할 때는 앞에서 덧붙인 헤더들을 버리며 전달하는데, 이 과정은 Decapsulation입니다.
1.6 Network Security
원래 인터넷은 보안에 대해서는 크게 고려하지 않고 디자인되었습니다. 하지만 나쁜 마음을 먹은 사람들이 인터넷을 통해 악성프로그램을 설치하는 등 보안과 관련한 문제가 발생할 수 있습니다.
malware는 다음의 두가지 방식을 통해 호스트에 감염될 수 있습니다.
- 바이러스 : 어떤 object를 사용자가 실제로 실행함으로써 감염되는 악성코드 (Ex. 이메일 첨부파일)
- Worm : 사용자가 아무것도 하지 않아도 object를 수신하는 것만으로 자체적으로 전파되는 악성코드
이렇게 감염된 호스트는 DDoS 공격 등에 사용되는 botnet으로 사용될 수 있습니다.
(botnet은 해커의 명령대로 움직이는 봇들의 네트워크를 의미)
DoS (Denial of Service)
Botnet을 통해 공격 지점에 다량의 패킷을 전송하여 대상 시스템을 마비시켜 정상적인 자원의 사용을 방해하는 공격입니다.
DoS는 공격지점이 한두군데인 공격이고 DDoS (Destributed DoS) 는 여러 지점에서 공격하는 것을 말합니다.
Packet sniffing
공유 이더넷이나 와이파이 등의 브로드캐스트 미디어에서 지나가는 패킷을 캡쳐하여 내용을 들여다보는 기술을 말합니다.
Wireshark같은 소프트웨어가 대표적인 packet-sniffer입니다.
IP Spoofing
패킷의 Source IP 주소를 거짓으로 작성해 다른 컴퓨터인 것처럼 속이는 공격방식을 말합니다.
Computer Networking: A Top Down Approach 7th Generation, Global Edition 을 참고하였습니다.
'컴퓨터 네트워크' 카테고리의 다른 글
03. 컴퓨터 네트워크 - Transport Layer(1) (0) | 2023.01.19 |
---|---|
02. 컴퓨터 네트워크 - Application Layer (0) | 2022.08.18 |