본 내용은 Computer networking : a top-down approach 책을 바탕으로 정리하였습니다.
Index
- 1. 인터넷, 네트워크 프로토콜이란 무엇인가?
- 2. Network edge, core
- 3. 네트워크에서의 딜레이, 손실, 처리량
- 4. 프로토콜 레이어
- 5. 네트워크의 역사
1. 인터넷, 네트워크 프로토콜이란 무엇인가?
1.1 인터넷이란?
"수많은 네트워크들을 연결하는 네트워크"라는 의미에서부터 시작되었으며 클라이언트와 서버가 있고, TCP/IP라는 기본 프로토콜을 통해 제공되고 있다.
1.2 인터넷의 구성 요소
구조적 관점에서 인터넷을 구성하는 요소들은 크게 3가지가 있다.
1. host : end system 이라고도 하며, 연결된 수많은 컴퓨팅 단말들을 의미한다. ex) 컴퓨터, 서버, 스마트폰
2. link : 위 host들을 연결하는 매개체로 우리가 일반적으로 아는 구리선, 광 섬유, 더 나아가 인공위성 등을 의미하며 link의 성능을 결정하는 중요한 요소 중 하나로 "얼마나 빠르게 패킷을 전달하느냐?" 를 의미하는 전송률(transmission rate)이 있다. (link의 대역폭에 따라 다르다)
3. packet switch : 패킷(데이터)을 포워딩하는 역할을 하며 대표적으로 라우터와 스위치가 있다.
(포워딩은 들어온 패킷의 헤더 정보를 이용하여 최종 목적지 네트워크을 향해 패킷을 내보내 주는 일련의 단계)
서비스적 관점에서는 2가지가 있는데
1. 여러 애플리케이션들이 서비스를 제공하게 해주는 인프라를 구축하고 있으며 (ex. 웹, 게임, 이메일 등..)
2. 애플리케이션들이 서로 상호 연결될 수 있도록 도와주는 역할을 한다. (ex. API)
1.3 네트워크 프로토콜이란?
우선 간단히 성질을 정의하자면, 인간적 관점보다는 기계적 관점으로 된 사람들의 소통이라고 볼 수 있다.
예를 들어서, 길을 가다가 친구를 만나 "밥 먹었어?"라고 하면 우리는 "응 먹었지 너는?", "아니, 무야호 먹었어!" 등 여러 가지 대답을 할 수 있는데 이를 네트워크 프로토콜로 생각한다면, "예", "아니오", "잘못 들었습니다. 다시 말해주세요"와 같이 기계적으로 대답하게 된다는 것이다.
따라서 프로토콜의 사전적 의미는 다음과 같다.
-> 네트워크 프로토콜은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계이다.
이 프로토콜의 양식 또는 규칙 안에는 메시지를 전달하는 순서, 취해야할 행동, 데이터 포맷(어떤 식으로 말을 해야 하는가?) 등이 있다.
2. Network edge, core
2.1 What's network edge and core?
네트워크 구조를 좀 더 자세히 보자면, 네트워크는 나무와 같이 기둥과 이파리가 있는 모양으로 생각할 수 있다.
먼저, 이파리를 먼저 보자면 각각 따로따로 만들어져 있고 그 자체로 무언가를 연결시켜주지는 않는다.
이를 network edge라고 하며 여기서 edge는 "가지"라는 의미로, host들과 서버들을 말한다.
두 번째로, 나무의 중간 가지(?)가 있는데 네트워크에서 이를 연결 네트워크 또는 physical media라고 하며 아까 위에서 말한 link들을 의미한다.
마지막으로 나무의 기둥이 network core가 되겠다. 네트워크의 중심점 역할을 하며 뿌리가 어디로 향하느냐에 따라 나무의 성장 방향이 결정되듯, core에서 패킷의 방향을 결정하게 된다. 보통 라우터를 network core라 한다.
2.2 연결 네트워크와 physical media
위에서 말했듯 link와 같은 의미로
여러 이파리(가정집 네트워크, 기업 또는 연구소 네트워크, 휴대폰)들을 묶어주는 역할을 한다.
연결 네트워크에서 가장 중요한 보는 것은 bandwidth로 초 당 비트 전송률, 즉 대역폭이라고 하는 부분이다. 이 부분은 차후 설명하도록 하겠다.
2.3 연결 네트워크 : DSL
DSL은 Digital Subscriber Line의 약자로 지역 전화망을 통해 디지털 데이터 전송을 제공하는 기술이다.
보통 높은 주파수를 사용하며, 일반 전화는 낮은 주파수를 사용한다.
여기서 데이터의 전송 흐름을 볼 수 있는데, 보통 upstream, downstream으로 구분되며
upstream은 data가 로컬 기기에서 서버로 전송되는 속도(<2.5 Mbps)
downstream은 반대로 서버에서 로컬 기기로 전송되는 데이터의 흐름(<24 Mbps)을 말한다.
-> 올라가는 것과 내려가는 것은 비대칭으로 되어 있다!
2.4 연결 네트워크 : cable network
보통 케이블 네트워크는 여러 개의 주파수들을 하나의 선에 합치는 다중화(multiplexing) 과정을 통해 전송된다.
HFC (hybrid fiber coax)
광케이블과 동축케이블을 모두 포함하는 혼합망으로, 일정 구역마다 사용하는 케이블의 종류가 다르게 하여
각각 케이블의 장점을 골라 쓸 수 있게 해 준다.
* (참고) shared, dedicated fiber
www.jumpfiber.com/6-differences-between-a-dedicated-connection-and-cable-sharing/
2.5 이더넷 (Ethernet)
빛의 매질이라고 불리던 에테르(ether)에서 유래되었으며, 근거리 통신망 (LAN) 환경에서 쓰이는 네트워크 구성 방식이다. 주로 기업이나 대학 등 큰 규모의 공간에서 사용되며 다양한 대역폭을 가지고 있다.
2.6 Wireless 연결 네트워크
Wireless 연결 네트워크는 말 그대로 선 없이 네트워크를 연결, 공유하는 것을 말하며
근거리 통신망(LAN), 장거리 통신망(WAN)등이 있다.
2.7 Transmission rate
이번엔 계속 말로만 듣던 전송률을 계산하는 방법을 알아보고자 한다.
보통 단위는 bps로 실생활에서는 10 Mbps와 같이 앞에 큰 단위가 붙게 된다.
bps는 bit per second의 약자로 초 당 전송량이 얼마큼 되느냐~ 를 의미한다. 따라서 초당 비트가 몇 개 옮겨지는지 보면 바로 구할 수 있다.
2.8 호스트의 데이터 패킷 전송률
만약 호스트가 다른 곳에 L 만큼의 비트를 가진 패킷을 2개 보낸다고 하면, 가장 먼저 알아야 하는 것은
연결된 link의 transmission rate가 얼마인지를 알아야 한다. 만약 transmission rate가 R이라면
호스트가 다른 곳으로 전송하는 시간은 L을 R로 나눈 값이 되기 때문이다.
2.9 Physical media
이번엔 physical media에 대해 자세히 알아보자. 그전에 간단히 용어를 다시 정리할 필요가 있다.
- bit : media에서 bit는 송신자와 수신자 사이 전파되는 데이터를 의미한다. (전송이 아니라 전파!)
- physical link : 송신자에서부터 수신자까지 연결되어있는 링크이다.
- guided media : 유선 link로 copper, fiber, coax 등이 있다.
- unguided media : 무선 link로 radio, satellite 등이 있다.
- 추가. twisted pair(TP) : 유선이며, 두 개의 copper 선을 꼬아서 만들어졌다. 선을 꼬은 이유는 두 선이 신호선과 ground선 역할을 하는데 만약 noise가 발생하여 스파크가 튀게 되면 둘의 전하(?) 차이로 오차가 발생한다고 한다. 하지만 꼬으면 두 선이 동일하게 영향을 받기 때문에 오차가 덜 한다고 한다.
coax vs fiber 비교
1) coaxial cable
- 두 개의 동심 케이블 (동축 케이블)
- 양방향
- HFC 대역폭
2) fiber optic cable
- 사실 광 섬유 -> 유리로 이루어져 있음
- 요즘은 거의 다 이거 쓴다 너도 꼭 써라
- 높은 속도의 전송률
- 낮은 에러 발생률
2.10 패킷 스위칭
패킷 스위칭은 Network core에서 이루어지는데,
여기서 core는 위에서 말했듯, 상호 연결 지점의 라우터들을 통칭하는 그물망을 의미한다.
패킷 스위칭이란?
패킷 스위칭이란 호스트의 메시지를 잘게 나누어 담은 패킷들을 출발지로부터 목적지까지 라우터를 통해 이동시키는 과정을 말한다.
홉(hop)이란?
홉은 컴퓨터 네트워크에서 출발지와 목적지 사이에 위치한 경로의 한 부분이다.
하나의 라우터를 지날 때 홉(hop)이라는 단위를 사용하는데, 이는 링크의 개수와 동일하다.
패킷 스위칭 : queueing delay, loss
보통 패킷 스위칭 과정에서는 많은 양의 데이터를 전송하기 위해 router 앞에 queue를 두고,
link의 transmission rate가 호스트의 전송 스피드를 맞추지 못할 때 queue 메모리에 데이터를 쌓아 저장 후 보낸다.
(지금 밀려서 못보내니까 저장 공간에 쌓아둔다는 의미로 이해하면 될 것 같다.
queueing delay는 큐에 데이터를 push 하고 pop 하는 과정에서 딜레이가 걸리는 시간을 의미한다.
하지만 전송률이 너무 빠를 때에는 queue의 저장공간이 감당하지 못하는 경우가 생기는데,
이 때는 어쩔 수 없이 데이터를 버려야 한다. 이 과정을 queueing loss라고 한다.
혹시 큐(queue)를 모른다면, 자매품도 애용해보도록 하자 🤭
* 항공대 알고리즘 학회 Koala - 큐, 덱 이론 강의
2.11 routing, forwarding
1) routing : 출발지(source)에서 목적지(destination)까지의 경로를 결정하는 것이다. 출발지에는 여러 가지의 경로가 있는데, 컴퓨터 네트워크에서는 이 중 가장 이득이 되는 경로를 선택하는 과정이 필요하며, routing algorithm을 통해 경로를 선택하게 된다. 이 부분도 차후 설명할 예정이다.
2) forwarding : 라우터의 입력 포트에서 출력 포트로 패킷을 이동시키는 것이다. 앞서 라우팅이 경로를 결정했다면 포워딩은 직접 이동시키는 마치 행동대장 같은 느낌이 되겠다. 하지만 완전히 분리시키면 안 되는 게 routing algorithm을 통해 forwarding table을 만들기 때문에 routing과 forwarding은 밀접한 관련이 있다.
2.12 Circuit switching
서킷 스위칭은 지금까지 배운 바로는 별로 쓰이지 않아 보이는 네트워크 스위칭이다.
과정이 참으로 얍삽한 놈인데, 한 번 연결되면 남이 쓰지 못하게 한다.
이는 예전에 쓰던 전통적인 휴대폰 네트워크라고 한다.
FDM vs TDM
서킷 스위칭의 데이터 통신 다중화 기법에는 FDM과 TDM이 있다.
1) FDM : frequency division multiplexing으로 주파수 분할 다중화이다. 전송되는 신호들의 대역폭보다 링크의 대역폭이 매우 클 때 적용하며, 한 전송로의 대역폭을 여러 개의 주파수로 분할하는 방식이다. ex) 라디오의 주파수
2) TDM : time division multiplexing으로 그림에서 가로축인 시간을 기점으로 분할하는 기법이다.
2.13 패킷 스위칭, 서킷 스위칭 비교
앞에서 살짝 언급한 것처럼 패킷 스위칭의 장점이 압도적으로 많다.
바로 한 가지 씩만하는 서킷 스위칭보다 훨씬 효율적이기 때문이다.
패킷 스위칭의 장점
동시다발적으로 패킷을 전송하기 때문에 서킷 스위칭보다 매우 빠르다.
서킷 스위칭의 장점
- 가변적이고 예측할 수 없는 delay가 없음 -> 실시간 서비스에 유리하다!
예시
- 링크는 1Mb/s
- 각 유저는 "active" 상태일 때 100kb/s 이며 active가 될 확률은 10%라고 가정한다.
서킷 스위칭
active 확률이 10% 이므로 오직 10명의 사용자만 허용한다.
패킷 스위칭
우선 35명의 사용자가 사용한다고 생각해보자.
이들이 만약 11명 이상 동시에 이용하면 문제가 생길텐데, 일단 11명 이상 동시에 이용할 확률을 계산해야한다.
확률은 1 - (0 ~ 10 명의 사람이 동시에 이용할 확률의 합) 을 구하면 되며 결론적으로 0.0004% 가 된다.
즉, 35명까지 사용하는데 별 문제 없다고 봐도 된다는 것이다.
결과적으로 패킷 스위칭이 더 좋다!
* 확률 계산 참고 자료 (binomial distribution)
3. 네트워크에서의 딜레이, 손실, 처리량
3.1 패킷 딜레이의 4가지 요인
위 그림은 호스트에서 패킷을 전송할 때 나타나는 4가지 딜레이 현상을 보여준다.
1. propagation delay : 라우터 간의 전파에서 발생하는 전파 딜레이로, "전파" 이기 때문에 무시할 만큼 적다. 계산은 physical link의 길이를 미디어의 고유 전송 속도를 나누면 구할 수 있다.
2. queueing delay : 큐의 push, pop 과정에서 발생하는 큐잉 딜레이이다.
3. transmission delay : 데이터를 전송할 때 발생하는 딜레이다.
4. nodal processing delay : 라우터 내부에서 노드를 처리하면서 생기는 딜레이로 주로 에러 비트를 체크할 때, 출력 링크를 결정할 때 발생하게 된다.
3.2 Throughput (처리량)
통신 과정에서 네트워크 상의 송신자 - 수신자로 전달되는 시간당 데이터 전송량을 의미하며
단위는 주로 bps가 쓰인다.
처리량은 네트워크 전송의 전체적인 성능을 가늠할 때 쓰이며
"작은 것에 의해서 영향을 받는다"는 법칙으로 계산된다.
4. Protocol Layer
4.1 인터넷 프로토콜 스택
5 계층으로 구성되며 각각에 대해서는 다음 챕터에서 세부적으로 설명할 예정이다.
- application : 네트워크 애플리케이션을 지원해준다. ex) FTP, SMTP, HTTP
- transport : 프로세스 간 데이터 전송이다. ex) TCP, UDP
- network : 출발지 - 도착지 간 라우팅 ex) IP, routing protocols
- link : 주변 네트워크 요소들 사이의 데이터 연결을 지원한다. ex) 이더넷, 와이파이, PPP
- physical : 비트들을 선으로 연결한다.
4.2 ISO/OSI reference model
7 계층으로 구성되며, 인터넷 프로토콜 스택에서 2개가 추가된 것이 아니라, 그 이전의 모델이다.
따라서 인터넷에 없는 presentation과 session은 현재 사라졌는데, 이 둘은 각각 데이터를 해석해 표현하는 역할, 데이터의 변화를 감지하고 체크하는 역할을 담당한다. 현재 이 둘은 application layer에 담겨 있다.
4.3 Encapsulation & Decapsulation
위의 그림은 캡슐화와 역 캡슐화를 설명하기 위한 그림이다.
1) 캡슐화
- 보내고자 하는 데이터에 필요한 정보 (헤더들)를 붙여서 다음 계층에 보내는 기술이다.
- 헤더에는 각 계층에서 수행한 정보들이 담겨있고, 이후 꺼낼 때 식별하기 위해 사용된다.
- 윗부분이 캡슐화 과정에 해당되며, 각 계층을 내려오면서 헤더가 하나씩 추가되는 모습을 볼 수 있다.
2) 역 캡슐화
- 캡슐화와 정반대 되는 개념으로 계층을 지날 때마다 헤더를 제거하는 기술을 의미한다.
- 반대로 밑에서부터 시작되며 application layer에 도달하게 되면 송신자가 보내고자 했던 데이터만 남게 된다.
* 자세한 내용(어떤 부분에 뭘 붙이고, 제거하는지) 은 차후 설명할 예정입니다!
5. 인터넷의 방향성
인터넷을 최초로 만든 Vint Cerf 씨와 Rovert Kahn 씨는 특정 원칙을 세워 인터넷을 개발했다고 전해진다.
원칙은 다음과 같다.
- 간결화 : 무언가가 변화해 부작용이 일어나는 것을 방지하고자 최대한 미니멀리즘 하게 인터넷을 만든다.
- 자율성 : 어떤 사람이 자율적으로 사용할 수 있고, 열심히 할수록 많은 서비스들을 누릴 수 있다.
- 탈 중앙화 : 각자가 알아서 컨트롤할 수 있도록 한다.
- 무상태 프로토콜 : 어떠한 이전의 요청과도 무관한 각각의 요청을 독립시킨다.
'Computer Network' 카테고리의 다른 글
6. TCP - transport's view (0) | 2020.06.03 |
---|---|
5. Transport layer (6) | 2020.06.02 |
4. P2P, video streaming (0) | 2020.05.29 |
3. FTP, electronic mail, DNS (0) | 2020.05.28 |
2. application layer (2) | 2020.05.27 |