컴퓨터 네트워킹: 하향식 접근 (챕터 1: 컴퓨터와 네트워크 인터넷)

Kim JuYoung·2023년 10월 12일
0

Computer Networking

목록 보기
1/3
post-thumbnail

✏️ 학부 과정을 공부하면서 정리하는 과정에서 잘못된 정보가 표기될 수 있습니다. 해당 부분은 댓글을 통해 지적해주시면 감사하겠습니다.

Computer Networking: A TOP-DOWN APPROACH 책을 통해 컴퓨터 네트워크 공부를 하면서 이해한 내용을 정리하려고 한다. 이번 글에서는 Chapter 1: Computer Networks and the Internet 컴퓨터와 네트워크 인터넷에 관해서 정리한다.



챕터 1: 컴퓨터와 네트워크 인터넷

1.1 인터넷이란 무엇인가

인터넷의 두 가지 관점으로 설명할 수 있으며, 그 두 가지 관점이란, 기본 구성 요소 관점, 그리고 서비스 관점로 설명할 수 있다.


기본 구성 요소 관점에서의 인터넷

💡 이 책에서는 "nuts and bolts" view 라고 소개하고 있다.

기본 구성 요소 관점에서의 인터넷을 설명하기 전에 기본 구성 요소라는 말이 어떻게 나왔는지 살펴볼 필요가 있다.

nuts and bolts는 관용구인데 이것을 인터넷에 검색하면 the practical facts about a particular thing, rather than theories or ideas about it 라고 나온다. 번역하자면, 특정 사물에 관한 이론이나 생각이 아닌 실제적인 사실 이라고 한다. 즉, 기계의 근간이 되는 부품으로서 기본 구성 요소라고 할 수 있다.

그래서, 인터넷의 기본 구성 요소 관점이란 인터넷이 물리적으로 어떻게 구성되고, 각 구성 요소가 어떻게 상호 작용하는지 기본 원리와 메커니즘(체제)의 기술적인 측면에 중점을 둔 관점이라고 할 수 있다.

결론적으로 기본 구성 요소 관점에서의 인터넷은 무엇인가 라고 하면, 전 세계 수십억 개의 컴퓨팅 장치를 상호 연결 하는 컴퓨터 네트워크 이며, 엔드 시스템, 통신 링크, 패킷 스위치, 프로토콜과 같은 다양한 구성 요소로 이루어져 있다고 할 수 있다.

💡 원문에서는 The Internet is a computer network that interconnects billions of computing devices throughout the world. 라고 설명하고 있다.

💡 그렇다면 서비스 관점에서 인터넷이란 무엇인가, 종단 시스템에서 실행되는 분산 애플리케이션에 서비스를 제공하는 인프라라고 볼 수 있다.


컴퓨팅 장치(Computing Devices)

인터넷 용어에서 컴퓨팅 장치란 보통 Hosts 그리고 End Systems 라고 불리며, 네트워크에 연결된 장치를 의미한다. 예를들면, 컴퓨터, 태블릿과 같은 물리적인 장치가될 수도 있고 크롬과 같은 익스플로러 또는 유틸리티 앱과 같은 소프트웨어 프로그램이 될수도 있다.

💡 저자는 hosts와 end system은 같다 라고 표기하고 있다.


종단 시스템(End Systems), 호스트(Hosts)

종단 시스템이란, 인터넷의 가장자리에 위치한 컴퓨팅 디바이스를 의미한다. 컴퓨터가 될 수도 있고, 스마트폰이 될수도 있다.

그리고 종단 시스템은 통신 링크(Communication Links)패킷 스위치(Packet Switches)를 통해 네트워크에서 상호 연결된다.


통신 링크는 종단 시스템이 네트워크에 연결될 수 있도록 구성되는 다양한 유형의 물리 매체(physical media)이다.

동축 케이블(coaxial cable), 구리 선(copper wire), 광 섬유(optical fiber) 그리고 전파 스펙트럼(radio spectrum)의 다양한 타입의 매체가 존재한다.

💡 전파 스펙트럼(radio spectrum)은 대기, 외부 공간 등을 통해 전파되는 물리적 신호라고 볼 수 있기 때문에 물리적인 매체라고 간주할 수 있다.

각각의 통신 링크는 서로 다른 전송률(transmission rate)로 데이터를 전송할 수 있으며, 한 종단 시스템에 다른 종단 시스템으로 전송할 데이터가 있는 경우 송신 종단 시스템은 데이터(패킷)을 세그먼트 단위로 분할하고 각 세그먼트(패킷 보다 더 작은 단위)에 헤더 바이트를 부착하여 전송한다. 데이터는 네트워크를 통해 수신 종단 시스템으로 전송되고 그곳에서 다시 원래의 데이터로 재조립된다. 여기서 전송률은 데이터를 얼마나 많이 보낼 수 있는 용량 즉, 대역폭(bandwidth)으로 불리기도 한다.

💡 패킷이란 간단히 네트워크에서 데이터를 전송하기 위해 메시지를 작은 덩어리로 분할한 것이다. 즉, 네트워크의 전송 용량 단위


패킷 스위치(Paket Switches)

패킷 스위치의 역할은 들어오는 통신 링크 중 하나에 도착하는 패킷을 가져와서 나가는 통신 링크 중 하나로 해당 패킷을 전달한다. 대표적으로 2가지 유형이 있는데, 라우터(네트워크 코어에 사용)와 데이터 링크 계층(OSI 7계층의 2계층)의 스위치(접속 네트워크에 사용) 등이 있으며, 모두 패킷을 최종 목적지로 전달한다.

💡 종단간 시스템 사이에 패킷이 송수신되기 위해 이동된 일련의 통신 링크와 패킷 스위치를 경로(route, path)라고 한다.


ISP(Internet Service Provider)

종단 시스템은 인터넷 서비스 제공자(인터넷 서비스 제공 업체)를 통해 인터넷에 접속할 수 있다. 인터넷은 종단 시스템을 서로 연결하는 것 이므로 종단 시스템에 대한 액세스를 제공하는 각각의 ISP들도 서로 연결되어있어야 한다. 그래서 상위 ISP를 Global ISP (KT, SKT, LG U+ 등등) 그리고 하위 ISP를 Regional ISP (서경 방송 등등) 라고 한다.

각 ISP 네트워크는 ISP 마다 독립적으로 관리되고, IP(Internet Protocol)를 통해 인터넷에 접속할 수 있도록 연결해준다.

💡 인터넷은 독립적으로 관리되는 각각의 ISP 네트워크와 다른 ISP 네트워크간의 상호 연결되는 구조 형태로 연결되기 때문에 네트워크의 네트워크(network of networks)라고도 한다.


규약, 규범(Protocol)

인터넷에서 프로토콜이란, 정보(메시지)의 송신과 전송을 제어할 수 있도록 미리 약속된 규약 및 규범 등의 집합이라고 할 수 있는데, 프로토콜에서 중요한 부분을 고려한다면 우선적으로 "모든 사람들이 동의해야한다" 라는 부분일 것이다.

3-way handshake

이러한 프로토콜의 장점은 컴퓨터 및 네트워크 시스템의 통신을 원할하게 하고 데이터를 안정적으로 전송할 수 있다.

요즘 인터넷에서 가장 많이 사용되는 가장 중요한 프로토콜 두 가지는 TCP/IP라고도 불리는 IP(Internet Protocol)TCP(Transmission Control Protocol)이 있다.

  • IP : 라우터와 종단 시스템간의 송수신되는 패킷의 형식을 지정한다.

  • TCP : 클라이언트와 서버간의 통신을 위해 SYN, SYN-ACK, ACK의 3단계 (3-way handshake) 과정을 지정한다.

💡 무선 와이파이 네트워크 표준 IEE 802.11, 이더넷 표준 IEE 802.3



1.2 네트워크 엣지(Edge)

앞에서 인터넷을 컴퓨팅 장치가 연결된 컴퓨터 네트워크라고 했고, 이렇게 인터넷에 연결된 컴퓨팅 장치를 종단 시스템(End Systems) 또는 호스트(Hosts)라고 했다. 컴퓨팅 장치가 종단 시스템이라고 불리는 이유는 무엇일까. 바로 인터넷의 가장자리(Edge)에 연결되어 있기 때문이다. 그래서 네트워크 엣지란 인터넷의 가장자리에 존재하는 구성 요소이다. 여기에는 컴퓨팅 장치에 포함되는 종단 시스템, 호스트(클라이언트, 서버, 데이터 센터)와 접속 네트워크(Access networks), 링크(물리 매체) 등등이 포함된다.


접속 네트워크(Access nteworks)

접속 네트워크란, 종단 시스템을 엣지 라우터(네트워크 엣지의 가장 말단에 설치되어 사용되는 라우터)에 물리적으로 연결하는 네트워크를 의미한다.

이러한 접속 네트워크에는 거주지 접속, 기업 접속, 무선 접속 등등이 있다.


거주지 접속(Residential access networks)

오늘날 가정 환경에서 접속 네트워크를 통해 인터넷에 연결하는 유형은 두 가지가 있는데, DSL(디지털 가입자 회선)케이블(Cable)이 있다.

여기서 DSL(디지털 가입자 회선)이란, 지역 전화 회사(통신사)의 인프라(전화선)를 통해 인터넷에 접속할 수 있게 하는데, DSLAM(DSL Access Multiplexer)과 연결된 전화선은 Splitter를 통해 전화기와 DSL 모뎀에 각각 연결되며, 컴퓨팅 디바이스는 DSL 모뎀을 통해 인터넷을 사용할 수 있게 된다. 그래서 전화선을 통해 전화 신호와 인터넷 데이터 신호가 동시에 전송되는 것이다. 여기서 DSLAM은 디지털 가입자 회선 접속 다중화기라고 불리는데 흔히 DSLAM이라고 불리며 수천, 수백 가구가 하나의 DSLAM에 연결된다. 그리고 이 DSLAM은 전화국(CO)과 연결된다.

💡 DSL 표준은 업스트림과 다운스트림 같은 전송 속도를 정의한다. 보통 다운스트림이 업스트림보다 빠르며 이렇게 속도가 다르기 때문에 비대칭 접속이라고 한다.

그리고 또 한 가지 유형의 케이블 네트워크(Cable Network)란, 케이블 TV 회사의 인프라를 사용하는데, TV 영상이나 인터넷 데이터는 FDM(주파수 분활 다중화)기법을 통해 서로 다른 주파수 대역에서 전송된다. 각 가정에서는 동축 케이블을 통해 연결되며 중간 교차점에서 광섬유와 연결된다. 광섬유는 Cable head end와 연결된다. 이렇게 혼합된 망 연결 방식을 HFC(Hybrid Fiber Coax), 광동축 혼합망이라고 한다.

또한 케이블 인터넷 접속의 중요한 특징이 있는데, 바로 공유된 방송 매체라는 것이다. 이러한 매체 특성을 브로드캐스트(Broadcast) 매체 특성이라고 하며, 전용선을 이용하는 DSL과는 다른점이 있다. DSL은 사용자가 몰리더라도 인터넷 속도에 영향을 미치지 않지만, 여러 사용자가 동일한 케이블 대역폭(Bandwidth)을 공유하기 때문에 많은 사용자가 동시에 인터넷을 사용할 경우 속도가 느려질 수 있다. 그럼에도 일반적인 상태일 때 DSL보다 빠른 방식이 케이블이라고 한다.


기업 접속(Institutional access networks)

책에서 해당 구역을 기업 접속이라고 나누었음에도 기업(및 가정)에서의 액세스라고 설명하고 있으므로 명확하게 나누기가 애메한 부분인 것 같다.

일반적으로 근거리 통신망(LAN)이라고 하는 것은 종단 시스템에서 엣지 라우터로 연결하는 데 사용된다. LAN의 일종인, 이더넷(Ethernet)은 주로 기업, 학교, 가정에서 널리 사용되는 네트워크 접속 기술이라고 할 수 있다. 이더넷은 구리심 연동선(Twisted Pair Copper Wire)을 통해 이더넷 스위치에 연결된다.

💡 이더넷은 IEEE 802.3 표준으로 정의되어있다.


무선 접속(Wireless access networks)

모바일 접속이라고도 하는 무선 접속은 근거리 무선 네트워크와 이보다 더 빠른 광역 무선 네트워크 등이 있다. 우리가 흔히 아는 3G, 4G(LTE), 5G 등등이라고 할 수 있다. 이러한 무선 액세스는 무선 스펙트럼을 통해 전송된다.

💡 wireless LAN은 IEEE 802.11 표준으로 정의되어있다.


컴퓨팅 디바이스를 인터넷에 연결하기 위해 사용되는 물리 매체는 이전까지도 계속 나왔는데, 예를 들면 HFC(광동축 혼합망) 등이 있다. 그리고 DSL과 이더넷은 구리선을 사용하고 모바일 액세스는 무선 스펙트럼을 사용한다고 했다. 책에서 링크 파트는 이러한 물리 매체에 관해 설명하고 있다.

데이터의 패킷 전송

호스트는 애플리케이션 메시지를 작은 덩어리로 분할한다. 이렇게 분할된 덩어리 단위를 패킷이라고 하며, 이 패킷의 길이를 L 라고 하고 패킷이 전송된 비율을 전송률(transmission rate) R 이라고 할 때 패킷 전송 지연은 L (bits) / R (bits/sec) 으로 계산된다.


물리 매체

물리 매체의 종류는 guided media, unguided media, twisted pair, coaxial cable, fiber optic cable, radio 등등 여러 매체가 존재한다. 이러한 물리 매체는 데이터 비트를 전송하는 방식에 다양한 유형으로 분류된다. 모든 매체에 관해 정리하는 것 보다 가장 많이 쓰이는 매체만 정리하려고 한다.

먼저, Twisted pair(연선)이란 선이 두 가닥으로 꼬인 형태를 말하는데, 일반적으로 우리가 알고 있는 랜선이 바로 이러한 종류이다.

연선의 종류는 다양한데, 이렇게 생긴 케이블을 UTP(Unshielded Twisted Pair)라고 하며, 일반적으로 선의 피복을 제외하고는 보호되는 재질이 따로 없는 선을 의미한다.

그리고 이렇게 개별 선마다 호일로 보호되어 차폐가 되어있는 선들을 STP(Shielded Twisted Pair) 선이라고 한다. 그리고 전체 케이블을 차폐하는 FTP(Foiled Twisted Pair) 선도 존재한다. UTP, STP, FTP 모두 연선의 유형이며 유형에 따라 선을 보호하거나 노이즈를 차폐하는 등의 효과가 있다.

그리고, Coaxial Cable(동축 케이블)이란 연선과 마찬가지로 두 개의 구리 도체로 구성되지만, 두 도체는 평행하지 않고 동심원 형태로 배열되어 있다. 이러한 구조와 특수 절연 및 차폐를 통해 동축 케이블은 높은 데이터 전송 속도가 특징이다.

Fiber Optic Cable(광섬유 케이블)이란, 빛의 펄스를 전달하는 섬유 매체로 각 펄스는 비트를 나타낸다, 광섬유는 수백 기가바이트의 엄청난 비트 전송률을 지원할 수 있으며, 전자기 간섭에 면역이고 신호 감쇠가 매우낮아 이러한 특성으로 해외 링크에 있어서 최선의 선택으로 꼽히는 매체가 되었다고 할 수 있다. 실제로 국가간 인터넷 연결에 있어서 해저 케이블이라는 말을 들어봤을 텐데 그것이 바로 해저 광케이블 이다.

마지막으로 라디오 스펙트럼이란, 라디오 채널이라고도 하는데, 전자기 스펙트럼을 의미한다. 다른말로 전파라고 할 수 있는데, 라디오를 우리나라말로 번역하면 전파로 번역될 수도 있다. 전파는 선으로 연결되는 것이 아닌 무선이 특징이지만, 방향성을 가지고 있고 벽을 통과할 수 있다. 그러나 주변 환경에 의해 데이터가 손실되거나 외부 간섭으로 인한 노이즈(잡음)가 생길 수 있다.



1.3 네트워크 코어(Core)

네트워크 코어란 한마디로 상호 연결된 라우터들의 망(Mesh)라고 한다. 종단간 시스템간 데이터 통신을 위해 라우터와 링크의 연결 방식을 패킷 교환 혹은 회선 교환 과정을 통해서 설명한다.


패킷 교환

패킷 교환(Packet Switching)이란, 종단간 시스템에서 메시지(데이터)를 보내기 위해 사용되는 방법 중 하나로서, 패킷을 라우터로 이뤄진 네트워크를 통해 전송 경로를 결정하고 통신하는 방법 중 하나이다.

패킷 스위칭의 과정에서 우선적으로 일어나는 단계는 메시지(데이터)가 여러 개의 패킷으로 나눠진다는 것이다. 즉, 메시지는 호스트(송신 종단 시스템)를 통해 애플리케이션 레이어(응용 계층)에서 여러 개의 패킷으로 나눠진다. 그리고 패킷이 목적지(Destination)까지 여러 라우터와 통신 링크를 거쳐 전송되며 해당 링크의 최대 용량(전송량)과 같은 속도로 패킷이 전송된다.


Store-and-Forward Transmission

저장 후 전달 전송(또는 저장 및 전달 전송)은 전체 패킷이 라우터에 도착해야만 다음 링크를 통해 전송되는 방식이다. 패킷은 여러 라우터와 여러 통신 링크를 통해 전송 되는데, 라우터에서 다른 라우터로 거쳐갈 때 이전 라우터에 있던 패킷의 모든 부분이 다음 라우터의 버퍼에 저장된 후에 그 패킷이 전송된다는 패킷 전송의 기본 원리라고 할 수 있다.

여기서 패킷이 소스에서 목적지 까지 전송되는 데 걸리는 전체 시간을 end-end delay(종단간 지연)라고 하는데, 전파 지연은 무시하고 L-bit 패킷을 R bps의 링크로 전송할 때 one-hop 전송 지연L / R로 계산된다. 여기서 홉이란 라우터를 거쳐가는 행위인데, 종단간 시스템에 라우터가 하나라면 홉 카운트는 2가 된다. 결론적으로, end-end delay는 (홉 + 1) * L / R이 되고 위 그림에서 L = 7.5 Mbits, R = 1.5 Mbps라면, one-hop transmission delay = 5 sec이고 end-end delay 는 10이다.


Queueing Delay and Loss

아까 라우터의 버퍼에 패킷을 저장한다고 했는데, 각 통신 링크에 연결된 패킷 스위치는 출력 버퍼(또는 출력 큐)를 가지고 있고, 라우터가 해당 링크로 보내려고 하는 패킷을 저장하는 용도로 사용된다.

만약, 도착하는 패킷을 링크로 전송해야 하지만 링크가 다른 패킷의 전송으로 사용 중인 경우 도착하는 패킷은 출력 버퍼에서 기다려야한다. 따라서 저장 후 전달 지연 외에도 패킷에는 출력 버퍼에서 대기하는 대기열 지연(Queueing Delay)가 발생한다.

여기서 컴퓨터 구조론을 배웠다면 의문이 생길 수 있다. 큐의 용량은 무한하지 않은데 라우터 용량이 다차면 어떻게 되는가. 간단한데, 그냥 버려진다. 만약 라우터에서 패킷을 저장할 공간이 없으면 일반적으로 라우터는 현재 새로 도착하는 패킷은 저장되지 못하고 폐기처리된다. 라우터 방식에 따라서 랜덤으로 버려지거나 가장 오래된 패킷을 버리거나 한다.


Routing and Forwarding

패킷 교환은 라우터를 이용하여 통신 링크 중 하나에 도착하는 패킷을 가져와서 다른 통신 링크로 전달한다고 설명했다. 이러한 통신 링크를 어떻게 결정할 수 있을까. 이 책에서는 두 가지 키워드로 설명하고 있는데, 라우팅(Routing)포워딩(Forwarding)이 있다.

  • 라우팅 : 패킷이 소스에서 목적지 까지 이동할 경로를 결정한다. 이러한 결정 과정에는 라우팅 알고리즘에 의해 전체 네트워크의 상태와 구조 그리고 포워딩 테이블이 고려되어 이뤄진다.

  • 포워딩 : 패킷을 라우터의 입력에서 적절한 라우터 출력으로 이동시킨다. 즉, 패킷을 전달하는 것이다. 각 라우터의 포워딩 테이블에 대상 IP 주소가 매핑되는데, 이를 통해 적절한 경로로 이동된다.


회선 교환

회선 교환(Circuit Switching)이란, 일반적으로 전화선 네트워크라고 보통 설명되는데 특징은 출발지와 목적지의 통신 세션 지속 시간 동안 통신을 위해 필요한 경로(버퍼, 링크 전송률)의 자원이 예약되어 할당된다. 그래서 이미 할당된 자원은 다른 통신에 사용될 수 없게된다. 연결이 끝날 때 까지 물리적 경로가 독점되고 이 경우 사용하지 않더라도 회선은 공유되지 않는다. 그래서 패킷의 순서가 바뀔 염려를 하지 않아도 되는 장점이 있다.


FDM vs TDM

회선 교환에는 FDM(주파수 분활 다중화, Frequency Division Multiplexing) 그리고 TDM(시분할 다중화, Time Division Multiplexing)로 구현된다. FDM은 전송 대역폭을 여러개의 작은 채널로 분할 하여 여러 단말기가 동시에 사용가능하게 하며, TDM은 전송 대역폭을 Time Slot(고정된 기간의 프레임)으로 나누어 사용한다.


패킷 교환 vs 회선 교환

그렇다면 어떤 방식이 더 좋을까. 책에서는 패킷 스위칭이 더 많은 유저가 네트워크를 사용할 수 있게한다고 설명한다. 데이터를 많이 보내야할 때, 한정적인 자원으로 인한 자원 공유를 해야 할 때, 간단하며, 할당이 필요없는 패킷 교환 방식은 현재까지 자주 쓰이는 통신 방식이라고 볼 수 있다. 그렇지만, 패킷 교환은 패킷 지연 및 손실이 발생하기 때문에 신뢰성 있는 전송 프로토콜이 필요하고 패킷을 제어하기 위한 혼잡 제어가 필요하다.


네트워크의 네트워크

Access ISPs

접속 ISP(Internet Service Providers)란, 종단 시스템을 인터넷으로 연결하는 역할을 하는데, 다양한 유무선 접속 기술을 사용하여 연결을 제공한다. 인터넷을 제공하기 위해서 접속 ISP들은 반드시 상호 연결되어 있어야 한다. 여기서 ISP간 연결을 Peering Link라고 한다. 우리나라의 ISP에는 KT, SKT, LG U+, 서경 방송 등등이 있는데, 이러한 ISP에도 급(티어)가 존재하며 규모에 따라 정해진다고 한다. KT, SKT, LG U+는 Level 2, 서경 방송은 Level 3라고 한다. 그래서 이러한 ISP가 연결되어 네트워크가 형성되고 ISP와 ISP가 연결되어 네트워크의 네트워크가 인터넷이 된다고 한다.



1.4 네트워크 지연, 손실, 처리율

컴퓨터 네트워크는 종단간 시스템의 처리량을 제한하고 지연율을 도입하며 라우터에서 패킷이 손실될 수 있다는 것을 알게 되었다. 이제 이러한 지연에는 어떤 종류가 있는지 알아보려고 한다.


지연 종류

패킷은 각 노드에서 여러 유형의 지연을 겪는데, 노드 처리 지연, 대기 지연, 전송 지연, 전파 지연 등등의 지연 종류가 있다.

각각의 지연율을 전부 합하면 Total nodal delay(총 노드 지연)이 된다.

처리 지연(Processing Delay)

처리 지연이란, 패킷의 헤더를 검사하고 패킷을 어디로 보낼지 결정하는데 지연되는 시간이다. 즉, 패킷의 에러 비트를 체크하고 출력 링크를 결정한다. 처리 지연은 일반적으로 마이크로초 이하의 단위라고 한다.


대기 지연(Queuing Delay)

대기 지연이란, 패킷이 다른 링크로 전송되기를 라우터의 버퍼(큐)에서 기다리는 동안 발생하며, 현재 버퍼에 따라서 변경되는 가변 딜레이다. 만약 대기열이 비어있고 현재 전송 중인 다른 패킷이 없으면 패킷의 대기 지연은 0이 된다. 반면, 트래픽이 많고 다른 패킷도 전송되길 기다리고 있다면 대기 지연은 증가된다. 즉, 라우터의 혼잡도에 의존된다. 실제로 큐잉 지연은 마이크로초에서 밀리초 정도가 될 수 있다고 한다.


전송 지연(Transmission Delay)

전송 지연은 아까 패킷 교환의 store and forward 원리에 따른 지연이다. 패킷이 선착순 방식으로 전송된다고 가정하면, 라우터에 패킷이 모두 도착해야 전송될 수 있고 그동안 기다리는 딜레이가 전송 지연이다. 이 과정은 일반적으로 전송지연 또한 마이크로초에서 밀리초 정도라고 한다.


전파 지연(Propagation Delay)

이전 라우터에서 비트가 링크로 보내지면 다른 라우터로 전파되어야 한다. 전파 지연은 링크의 시작 부분 부터 다른 라우터로 전파되는데 필요되는 시간이다. 비트는 링크의 전파 속도에 따라서 전파되며 전파 속도는 링크의 물리 매체에 따라 달라진다.


경로 추적

Traceroute란, 인터넷을 통해 목적지 호스트까지 경로를 추적하는 네트워크 진단도구라고 한다. 사용자가 대상 호스트 이름을 지정하면 소스 호스트의 프로그램은 대상을 향해 특수 패킷을 여러개 전송하는데, 이러한 패킷은 이동하면서 일련의 라우터를 통과하게 된다. 그리고 라우터는 이러한 특수 패킷을 수신하면 라우터의 이름과 주소가 포함된 짧은 메시지를 소스 호스트로 재전송한다.


패킷 손실

각 노드에서 성능 측정의 척도란 무엇인가라고 하면, 바로 앞에 나왔던 지연 정도와 패킷의 손실률이라고도 할 수 있다. 패킷 교환에서 패킷이 손실되는 경우가 바로 라우터의 큐가 꽉찼을 때 이며, 들어오려고 했던 패킷은 폐기된다. 이로인해 손실 패킷은 네트워크 트래픽 강도가 증가함에 따라 증가된다고 할 수 있다. 손실된 패킷은 모든 데이터가 출발지에서 목적지로 전송될 수 있도록 보장하기 위해 재전송 된다고 한다.


처리율(Throughput)

처리율은 대역폭과 비슷하게 사용되나 엄밀히 따지면 다른 의미라고 한다. 처리율이란, 컴퓨터 네트워크의 성능 척도로서 실제로 데이터가 특정 시간 동안 성공적으로 전송되었는지 나타내는 현재의 전송 속도이며 네트워크의 상태, 트래픽, 병목 등등의 다양한 요인으로 변동될 수 있다. 그러나 대역폭은 네트워크 연결이 한 번에 처리할 수 있는 최대 데이터 용량을 나타낸다.

병목 현상

책에서는 병목 현상에 대한 직접적인 정의는 없었지만, 병목 현상의 정의는 시스템에서 데이터의 흐름이 제한되는 지점을 의미한다. 병목 현상은 처리율을 계산하는데 고려되어야할 부분이며, 그 이유는 각 링크간 전송률은 완전히 같다고 보장할 수 없기 때문이다. 그렇다면, 종단간 시스템에서 평균 처리율은 어떻게 될까. 출발지에서 목적지 까지 흐르는 평균 처리율은 해당 링크의 전송률의 최솟값과 같다고 한다. 즉, min(Rs, Rc)

💡 병목 현상의 "병목"은 bottleneck을 한국어로 번역한 것이다.

그렇다면, 위 상황에서 각각의 평균 처리율은 어떻게 될까? Rs < Rc 인 상황에서는 Rs 가 평균 처리율이 될 것이고, Rs > Rc 인 상황에서는 Rc 가 평균 처리율이 될 것이다.



1.5 프로토콜 계층, 서비스 모델

지금까지 인터넷의 구조를 살펴보았는데 굉장히 복잡하게 얽혀있는 형태인 것을 확인했다. 인터넷은 프로토콜로 정해진 각 계층에 따라 동작하는데 이러한 프로토콜에 대해 알여볼 것이다.

프로토콜 계층화

네트워크는 계층(Layer)이라고 하는 형태로 구성되어 있으며, 프로토콜 또한 각 계층의 구조에 맞춰 설계되었다. 계층화된 설계는 인터넷 구조의 복잡성을 관리하고 유지 보수를 쉽게 한다. 또한, 각 계층에서 독립적으로 기능을 수행할 수 있게한다. 계층화된 프로토콜은 흔히 OSI 7계층, TCP/IP 프로토콜로 알려져있다.


Internet Protocol stack

인터넷 프로토콜 스택은 초기 인터넷을 계층화 하기 위해 설계 되었다. 프로토콜은 여러개가 있고,
현재까지 진화되고 있다. 인터넷 프로토콜 스택물리 계층, 링크 계층, 네트워크 계층, 전송 계층, 응용 계층으로 총 5-layer로 구성되어있다.


OSI/RM

우리가 흔히 알고 있는 OSI 7계층의 정식 명칭은 Open Systems Interconnection Reference Model이고, ISO(국제표준화기구)에서 개발한 모델이다. OSI/RM은 7개의 계층으로 설계되었으며, 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 구성되어있다.


각 계층의 설명은 다음과 같다.

  • 애플리케이션 계층(응용 계층) : 사용자와 직접 상호 작용하는 네트워크 애플리케이션과 해당 애플리케이션의 계층 프로토콜이 존재하며, HTTP, SMTP(이메일 메시지 전송 제공), FTP(두 서버 간 파일 전송 제공)과 같은 프로토콜이 포함되어 있다. 전송 단위는 메시지(Message) 또는 데이터이다.

  • 프레젠테이션 계층(표현 계층) : 송수신간 데이터의 일관된 표현을 보장하기 위해 Machine-specific conventions(데이터의 의미를 해석), Compression(데이터 압축), Encryption(데이터 암호화) 및 Decryption(복호화)를 수행한다. 흔히 알고 있는 ASCII, 유니코드, JPG, UTF-8과 같은 프로토콜이 있다. 또한, 전송 단위는 메시지(Message) 또는 데이터이다.

  • 세션 계층 : 종단간 응용 프로세스의 통신을 관리하기 위해 동시 송수신(Duplex), 반이중(Half-Duplex), 전이중(Full-Duplex) 방식의 통신 방식과 데이터 교환의 구분 및 동기화를 제공한다. 체크 포인팅 및 데이터 오류 복구 체계와 같은 기능도 구현된다. 흔히 우리가 알고 있는 TCP, UDP 프로토콜이 있다. 전송 단위는 메시지(Message) 또는 데이터이다.

  • 전송 계층 : 세션 계층과 마찬가지로 종단간 통신을 다루고 TCP, UDP 프로토콜이 존재한다. 일반적으로 TCP, UDP의 위치를 물어보면 4계층인 전송 계층을 뜻한다. TCP는 메시지 전달 보장 신뢰성과 흐름 제어, 혼잡 제어, 중복 검사를 통해 애플리케이션에 연결 지향 서비스를 제공한다. UDP는 신뢰성, 흐름 제어, 혼잡 제어를 제공하지 않지만 매우 간단하고 빠른 비연결성 서비스를 제공한다. 대표적으로 L4 스위치를 사용하고 여기서부터 전송 단위는 바뀌는데 세그먼트(Segment)이다.

  • 네트워크 계층 : 한 호스트에서 다른 호스트로 네트워크 계층의 전송 단위인 데이터그램을 이동시킨다. 여러 개의 노드를 거쳐갈 때 경로를 찾아주는 역할을 수행하는데 앞서 설명한 라우팅 과정이 포함된다. 네트워크 계층의 프로토콜은 우리가 흔히 아는 IP(Internet Protocol)이 있으며, 이외에 ARP, RIP, OSPF 등등이 있다. 대표적으로 라우터(Router), L3 스위치(요즘은 라우터가 스위치 기능을 대신함)장치를 사용한다.

  • 데이터 링크 계층 : 데이터 계층의 전송 단위는 프레임이며, L2 스위치, 모뎀, 와이파이 공유기 등등을 통해 사용되는데, 우리가 정말 흔히 스위치라고 하는 장치가 바로 L2 스위치이다. 패킷을 한노드에서 다음 노드로 이동하기 위해 네트워크 계층은 데이터 링크 계층에 의존하는 관계에 있다. 프로토콜은 CSMA/CD, CDMA/CA, MAC Address, Aloha 등등 다양한 프로토콜이 있다.

  • 물리 계층 : 물리 계층에서 전송 단위는 비트(bit)인데 프레임 내의 개별 비트를 한노드에서 다음 노드로 이동시킨다. 실제 물리 매체(연선 구리선, 광섬유 등등)를 통해 전송한다. 이러한 물리 매체에 따라 이더넷, Wi-Fi, 5G 등등의 프로토콜이 사용된다.


캡슐화(Encapsulation)

프로그래밍에서 일반적으로 캡슐화란 객체 지향 프로그래밍에서 객체의 변수와 메서드를 하나로 묶어서 데이터를 보호하고, 유지보수를 용이하게 하는 것 이지만, 이 책에서 캡슐화는 다른 의미로서 정의한다.

컴퓨터 네트워킹에서 캡슐화란, 데이터 패킷이 송신 호스트에서 수신 호스트로 이동하는 할 때, 일련의 프로토콜 계층을 통과하면서 패킷에 헤더 정보가 추가되는 과정을 의미한다.

위 사진 처럼은 각 헤더가 사용되는 부분을 설명하는데, 송신 호스트(source)의 응용 계층부터 메시지에 각 헤더를 부착하여 전송되고 다시 수신 호스트(destination)의 각 계층부터 각각의 헤더를 사용하면서 제거된다.

예를 들어, 소스 호스트의 응용 계층에서 전송 계층으로 메시지가 전달될 때, 전송 계층에서 메시지에 전송 계층의 헤더를 부착한다. 이 헤더는 목적지 호스트에서 전송 계층에서 사용되어 응용 계층으로 이동할 때 제거되어 전달된다.



1.6 네트워크 공격, 보안

네트워크 보안, 프로그램 보안 이러한 보안 부분은 실제로는 우리의 생각보다 훨씬 중요하다. 그래서 다른 개발자 보다 보안전문가들의 연봉이 높은 이유다.


멀웨어(Malware)

일반적으로 우리가 생각하는 바이러스 및 악성코드는 바로 멀웨어를 뜻한다. 멀웨어는 컴터, 서버 등등 이러한 컴퓨팅 장치를 비롯한 네트워크에 악영향을 끼치며, 사용자의 동의 없이 장치에 설치되거나, 데이터를 도용 및 수집 하거나, 시스템을 손상시키는 등의 악의적인 행동을 수행한다. 멀웨어는 바이러스, 웜, 트로이 목마, 스파이웨어, 랜섬웨어 등등 다양한 형태로 존재하며 책에서는 가장 대표적인 바이러스와 웜에 대해 설명하고 있다. 이러한 멀웨어는 동작 방식에 따라 이름이 다르게 붙여졌다.

바이러스(Virus)

바이러스는 장치를 감염시키기 위해서는 어떠한 형태로든 사용자와 상호 작용이 필요한 악성 코드이다. 한마디로 스스로 동작을 할 수 없다는 뜻이다. 하지만 특정 상호 작용을 한번이라도 하게 되면 그 순간 시스템은 감염되어 사용자의 정보와 같은 데이터가 탈취되거나 악영향을 끼치게된다.


웜(Worm)

웜은 명시적인 사용자의 상호작용 없이 스스로(독립적으로) 동작하고 시스템이 접속할 수 있는 악성코드이다. 예를 들어, 바이러스와 차이점은 바이러스는 그 어떤 프로그램이든 붙어 있는 형태로 동작하지만, 웜은 독립적으로 실행되며 스스로 시작하거나 할 수 없는 바이러스와 달리, 독립적으로 실행되는 형태가 웜이다.

💡 바이러스와 웜 둘 다 스스로 복제할 수 있는 능력을 가질 수 있다. 이 둘의 차이점은 복제하고 전파되는 방식에 차이점이 있는 것이다.


서비스 거부 공격(Dos)

서비스 거부 공격(Denial of Service)는 악성 코드가 아니라 합법적인 방법으로 네트워크, 호스트 및 기타 인프라를 사용할 수 없게 만든다. 웹 서버, 이메일 서버, DNS 서버 등등 이러한 모든 것들이 Dos 공격을 받을 수 있다.

  • 취약점 공격(Vulnerability attack) : 공격에 취약한 애플리케이션 또는 호스트에서 실행되는 시스템에 조작되어 만들어진 메시지를 보낸다. 이런 패킷 일련이 시스템으로 전송되면 서비스가 중지되거나 다운될 수 있다.

  • 대역폭 범람(Bandwidth flooding) : 공격자는 대상 호스트에 엄창난 양의 패킷을 보내면, 이 많은 패킷으로인해 대상의 액세스 링크가 포화상태가 되어 다른 합법적인 패킷이 서버에 도달하지 못하게 한다.

  • 연결 범람(Connection flooding) : 공격자는 대상 호스트에 대해 많은 수의 반 개방형 또는 완전 개방형 TCP를 구축한다. 이러한 가짜 연결로 많은 자원이 낭비되어 실제로 유효한 연결이 받아들이지 못할 수 있다.


DDoS(Distributed Denial of Service)

많은 사람들이 디도스라는 말을 들어봤을 것이다. DDoS는 분산 서비스 거부 공격 이라고 번역할 수 있는데, DoS와 마찬가지로 대상의 서비스나 네트워크 자원을 포화 상태로 만들어 합법적인 사용자들이 해당 서비스나 자원을 사용할 수 없게 만든다.

그렇다면, DoS와 차이점은 무엇인가. 차이점은 단일 소스인 DoS와 달리 여러 소스를 제어하고 각 소스로부터 대상 호스트에 대량의 트래픽을 발생시킨다. 이러한 DDoS 공격은 여러 소스를 감지하고 대응하는 것이 어렵게 만드는 것이 특징이다.


스니핑(Sniffing)

스니핑이란, 가로채기라고 이해하면 편한데, 패킷의 복사하여 대상의 민감한 정보를 탈취하는 것이다. 일반적으로 스마트폰이나 노트북과 같은 장치는 와이파이 기기와 같은 무선 장치를 통해 인터넷에 접속하는데 이러한 장치 근처에 수신기를 배치하면 전송되는 모든 패킷의 복사본을 얻을 수 있다. 이러한 수신기를 패킷 스니퍼(Packet sniffer)라고 한다. 또한, 유선 환경에서도 배치될 수 있다. 이러한 스니핑에 대한 최선의 방어는 암호화이다.


스푸핑(Spoofing)

스푸핑이란, 다른 사용자나 장치로 인식되도록 가장하는 것이다. 대표적으로 IP 스푸핑이 일반적인데, 데이터 패킷의 소스나 주소를 조작하여 송신하는 것이다. 이러한 스푸핑의 목적은 다른 시스템에 접근할 목적으로 IP 주소를 변조한 후 합법적인 사용자 인 것 처럼 위장하여 나중에 IP 주소의 추척을 회피하기 위함에 있다.



1.7 컴퓨터 네트워킹 역사

한국 역사를 외우는 것도 어려운데 컴퓨터 역사는 때려치운다.




profile
안드로이드와 인공지능에서 살아남기

1개의 댓글

comment-user-thumbnail
2023년 10월 13일

비밀 댓글입니다.

답글 달기