네트워크의 정의
컴퓨터 네트워크 (Computer Network) 또는 간단하게 네트워크(Network)라고 부른다.
다른 하드웨어 장치들간의 상호연결, 물리적이거나 논리적으로 연결되어 서로 소통하고 자원과 정보를 공유할 수 있도록 하는 시스템을 일컫는다.
이러한 네트워크는 특수한 하드웨어와 소프트웨어를 통해 구성되며, 데이터 교환과 효율적인 자원 활용을 가능하게 해준다.
Node와 Node를 서로 연결해 주는 것을 '링크(Link)' 라고 하며, bits가 지나가는 통로이다.
Direct Link
Point-To-Point link (점대점 링크): 두 노드(컴퓨터 또는 호스트)간에 직접 연결된 링크이다. 이 연결을 통해 두 컴퓨터가 데이터를 주고 받을 수 있다.
Multiple-access link (다중 접속 링크): 여러 노드가 하나의 링크를 공유하는 구조로, 여러 컴퓨터가 하나의 통신 회선을 통해 데이터를 주고 받을 수 있다.
이러한 노드(Host)들은 응용 프로그램을 실행하며, 서로에게 ‘패킷(Packet)’이라고 불리는 데이터 블록을 전송한다.
Indirect Link
간접 링크(Indirect Links): 여러 노드가 직접 연결되지 않고, 스위치(Switch)라는 장비를 통해 연결된다. 각 노드는 스위치를 통해 데이터를 다른 노드로 전송하며, 스위치는 데이터를 저장하고 전달하는 역할을 한다.
스위치 네트워크(Switched Network): 스위치(Switch)장치는 패킷을 저장하고 전달한다. 즉, 스위치는 네트워크상의 데이터를 받아 적절한 목적지로 보내는 중요한 역할을 수행한다.
패킷(Packet)
패킷(Packet): 네트워크에서 데이터를 전송할 때 사용하는 ‘데이터 조각의 단위’이다. 데이터를 작은 단위로 나누어 ‘패킷(Packet)’이라는 형식으로 전송하며, 이를 통해 더 효율적인 전송과 오류 검사가 가능하다.
웹페이지, 이미지, 비디오 등과 같은 다양한 데이터는 바이트 스트림 데이터(Byte stream data)로 변환되어 네트워크를 통해 전송된다. 이러한 데이터는 일정한 크기로 나뉘어 패킷으로 전송되게 된다.
패킷(Packet)의 구성요소
네트워크 패킷은 헤더(Header), 페이로드(Payload), 트레일러(Trailer) 세 부분으로 크게 구성된다.
1. 헤더(Header):
패킷의 제어 정보가 들어있는 부분으로, 전송 경로를 설정하는 데 필수적인 정보를 포함한다.
출발지 및 목적지 주소: 패킷이 어디서 왔고, 어디로 가야 하는지를 나타낸다.
프로토콜 정보: 어떤 프로토콜을 사용하는지에 대한 정보(IP, TCP등)
순서 번호: 패킷이 순서대로 다시 조립될 수 있도록 각 패킷에 대한 번호
오류 검사 코드: 데이터가 손상되었는지 확인하는 코드
2. 페이로드(Payload):
실제로 전송하려는 데이터가 담긴 부분이다. 패킷은 데이터가 많을 때 여러 개로 나뉘어 각각 페이로드에 데이터를 담아 전송한다.
3. 트레일러(Trailer):
일부 네트워크 프로토콜에서는 패킷의 끝에 트레일러가 추가되며, 오류검사를 위한 정보가 포함된다.
패킷의 동작 원리
데이터가 전송될 때, 송신 장치(예:컴퓨터)는 데이터를 여러 패킷으로 쪼개고 각 패킷에 헤더와 오류 검사 정보를 추가한다.
이러한 패킷은 네트워크를 통해 독립적으로 전송되며, 서로 다른 경로로 전달될 수 있다.
패킷이 목적지에 도착하면, 수신 장치는 패킷을 다시 조립하여 원래의 데이터로 복원한다.
손실된 패킷이 있을 경우, 송신 장치에서 해당 패킷을 다시 요청할 수 있다.
패킷의 장점
1. 효율성: 대용량 데이터를 한꺼번에 전송하지 않고 여러 작은 패킷으로 나누어 전송함으로써, 네트워크 대역폭을 효율적으로 사용할 수 있게 된다.
2. 안정성: 네트워크에서 오류가 발생하더라도 손상된 패킷만 다시 전송하면 되므로, 전체 데이터의 손실을 방지할 수 있다.
3. 병렬 처리: 패킷은 서로 다른 경로를 통해 독립적으로 전송될 수 있으므로, 네트워크 혼잡을 줄이고 더 빠른 전송을 가능하게 한다.
인터네트워크(Inter-network 또는 인터넷)
서로 다른 네트워크들의 연결망을 의미한다. 즉, 여러 개의 작은 네트워크가 모여서 더 큰 네트워크를 형성한 것이 ‘인터넷(Internet’)이다.
이러한 작은 네트워크들은 라우터(Router) 또는 게이트웨이(Gateway)를 통해 서로 상호 연결된다.
라우터(Router)와 라우팅(Routing)
라우터(Router):
라우터(Router)는 서로 다른 네트워크를 연결하는 장비이다. 네트워크와 인터넷 간의 연결을 관리하는 역할을 수행한다.
또한, 라우터는 패킷을 목적지로 전달하는 역할을 하며, 각 패킷이 올바른 경로로 이동할 수 있도록 중간에서 경로를 설정해 준다.
라우팅(Routing):
라우팅(Routing)은 출발지에서 목적지까지 최적의 경로를 찾아 패킷을 전달하는 과정이다. 이 작업은 라우터가 수행하며, 네트워크의 효율적인 통신을 위해 필수적인 과정이다.
이러한 라우터(Router)는 패킷을 전달할 경로를 찾기 위해 여러 알고리즘을 사용하여 패킷이 가장 빠르고 안정적인 경로로 전달되도록 도와준다.
Any-to-any connectivity
Any-to-Any Connectivity는 네트워크 상에서 모든 노드(컴퓨터, 장치 등)들이 다른 모든 노드들과 연결될 수 있는 상태를 의미한다. 즉, 네트워크에 연결된 어떤 장치도 다른 장치와 데이터를 주고받을 수 있는 상태를 말한다. 이는 현대 네트워크에서 중요한 개념이며, 네트워크 인프라의 공유를 통해 실현된다. 이러한 ‘Any-to-any Connectivity’는 분명 이상적인 기술이지만, 많은 데이터가 동시에 전송되면 네트워크 혼잡(Network Congestion)이 발생할 수 있다. 그래서 나온 기술이 ‘Multiplexing(다중화)’이다. Multiplexing은 여러 데이터를 하나의 통로로 묶어 보내고, 반대편에서 다시 분리해 각 장치로 전달하는 방식으로, 네트워크 자원을 효율적으로 사용하면서도 Any-to-any 연결의 장점을 최대한 살리는 역할을 한다.
Multiplexing(다중화)에는 크게 TDM(Time Division Multiplexing)과 FDM(Frequency Division Multiplexing)이 있다.
TDM (Time Division Multiplexing): 시간 단위로 자원을 나누어 각 사용자에게 할당해준다.
FDM (Frequency Division Multiplexing): 주파수 단위로 자원을 나누어 각 사용자에게 할당해준다.
프로토콜(Protocol)
네트워크에서 데이터를 주고받기 위해서는 일정한 규칙과 절차가 필요하다. 이 규칙과 절차를 프로토콜(Protocol)이라고 한다. 간단히 말해, 프로토콜은 ‘컴퓨터 간의 통신 규칙’을 의미한다. 이러한 프로토콜이 없다면, 각 컴퓨터가 서로 다른 방식으로 데이터를 주고받으려고 할 것이고, 그로 인해 데이터 통신이 불가능하게 된다. 프로토콜은 이러한 혼란을 방지하고, 모든 장치가 정해진 규칙에 따라 데이터를 주고받을 수 있도록 하는 역할을 수행한다.
프로토콜의 계층 구조 (OSI 모델)
프로토콜은 서로 협력하여 작동하며, 이를 계층 구조를 통해 설명할 수 있다.
가장 대표적인 계층 구조는 OSI 7계층 모델이다.
1. 물리 계층: 데이터를 전기 신호나 빛의 형태로 변환하여 실제로 전송하는 계층
(예시: 이더넷 케이블, 광섬유 케이블, 네트워크 카드(NIC) 및 허브(Hub) 등)
데이터 링크 계층: 물리 계층에서 전송된 데이터를 오류 없이 상위 계층으로 전달
하는 역할을 하며, 데이터 전송 시 발생할 수 있는 프레임 단위의 오류 검출 및
수정을 담당한다. MAC 주소를 사용하여 물리적 주소를 관리한다.
(예시: MAC주소, 스위치, 이더넷 등)
네트워크 계층: 데이터를 목적지까지 전달하기 위해 경로를 설정하고, 라우팅(Routing)을 통해 패킷을 전송한다. 또한 IP 주소를 사용하여 데이터 패킷을 목적지 네트워크로 전달하는 역할을 수행한다. (예시: IP주소, 라우팅 등)
전송 계층: 종단 간 통신을 제공하고, 데이터 전송의 신뢰성을 보장한다. 패킷을 세그먼트(Segment)로 나누고, 흐름 제어, 오류 복구 등을 수행한다. TCP와 UDP프로토콜이 사용된다. (예시: TCP, UDP 등)
세션 계층: 네트워크 통신 세션을 설정, 관리, 종료하는 역할을 한다. 여기서 ‘세션(Session)’이란, 네트워크 통신에서 두 장치 간의 연결 상태 또는 통신이 이루어지는 일련의 상호작용을 의미한다. 세션(Session)은 네트워크에서 데이터를 주고받는 동안의 논리적인 연결을 유지하고, 그 연결을 관리하는 것을 뜻한다. (예시: RPC, NetBIOS 등)
표현 계층: 데이터를 사용자가 이해할 수 있는 형식으로 변환하는 계층이다. 데이터의 압축, 암호화, 인코딩 및 변환을 처리한다.
(예시: JPEG, TLS, MPEG 등)
응용 계층: 사용자가 직접적으로 접하는 계층으로, 네트워크 서비스와 애플리케이션이 상호 작용하는 부분이다. 이메일, 웹 브라우징, 파일 전송 등이 이 계층에서 이루어진다. (예시: HTTP/HTTPS, FTP, SMTP, DNS 등)
MAC주소
네트워크 장치의 고유한 하드웨어 주소로, 일반적인 네트워크 카드(Network Interface Card, NIC)에 할당된다. 각 네트워크 장치가 네트워크상에서 식별될 수 있도록 하는 역할을 한다. 이 주소는 전 세계적으로 고유하며, 제조업체에 의해 장치에 할당된다. MAC 주소는 48비트로 구성되어 있으며, 16진수(0-9,A-F)로 표현된다.
IP주소
IP 주소는 네트워크 상에서 장치를 식별하는 데 사용되는 고유한 숫자 식별자이다. 네트워크 상에서 데이터를 주고받을 때, IP주소는 송신지와 수신지의 위치를 지정하여 데이터를 목적지까지 전달할 수 있도록 해준다.
IP 주소의 특징
• 32비트 주소: IPv4(Internet Protocol Version 4)에서는 IP주소가 32비트로 구성된다. 이는 총 2^32개의 고유한 IP 주소를 만들 수 있음을 의미하며, 약 43억 개의 주소를 지원한다.
• 글로벌 주소: IP 주소는 전 세계적으로 고유하며, 인터넷을 통해 통신할 때 장치가 서로 식별하기 위해 사용된다.
• 표기법: IP 주소는 보통 점으로 구분된 10진수 형식으로 표기된다. 예를 들어 169.34.11.56이라는 주소는 4개의 8비트 숫자로 구성된 IP 주소로 169와 34, 11, 56은 각각 8비트 숫자(바이트)를 나타낸다.
IP 주소의 분류
공인 IP 주소 (Public IP Address):
인터넷에서 전 세계적으로 고유한 주소이다. 공인 IP 주소는 인터넷 서비스 제공업체(ISP)에 의해 할당되며, 인터넷에 직접 연결된 장치에 부여된다.
사설 IP 주소 (Private IP Address):
내부 네트워크(예: 가정 또는 회사)에서 사용되는 주소이다. 공인 IP 주소 없이도 내부 네트워크 내에서 장치 간의 통신을 가능하게 한다. 라우터는 이 사설 IP 주소를 통해 내부 장치 간 통신을 관리한다. 사설 IP 주소는 외부 인터넷에서는 사용되지 않으며, NAT(Network Address Translation)을 통해 공인 IP로 변환되어 외부와 통신한다.
예시: 192.168.x.x, 10.x.x.x
IPv4와 IPv6
IPv4 (Internet Protocol version 4): 현재 가장 널리 사용되는 인터넷 프로토콜 버전으로, 32비트 주소 체계를 사용한다. 그러나 사용 가능한 주소 공간이 거의 소진되어, 새로운 프로토콜인 IPv6가 도입되었다.
IPv6: 128비트 주소 체계를 사용하여 더 많은 주소를 제공한다. IPv6는 IP 주소 부족 문제를 해결하기 위해 도입되었으며, 현재는 IPv4와 함께 사용되고 있다.
IP 주소의 중요한 개념
서브넷 마스크(Subnet Mask): IP 주소를 네트워크 ID와 호스트 ID로 구분하는 데 사용된다. 서브넷 마스크는 네트워크가 크기별로 나뉘어 관리되도록 돕는 역할을 수행한다.
DHCP (Dynamic Host Configuration Protocol): 네트워크 장치에 자동으로 IP 주소를 할당하는 프로토콜이다. DHCP는 수동으로 IP 주소를 설정하는 대신, 네트워크에 연결될 때마다 동적으로 IP 주소를 할당한다.
IP 주소의 구조
IPv4 주소는 두 가지 주요 부분으로 나뉜다.
네트워크 부분 (Network ID): 네트워크가 속해 있는 구역을 나타낸다. 같은 네트워크 ID를 가진 장치는 동일한 네트워크에 속한다.
호스트 부분 (Host ID): 해당 네트워크 내에서 특정 장치를 식별하는 데 사용된다. 각 네트워크 내의 장치(컴퓨터, 프린터 등)마다 고유한 호스트 ID를 가진다.
회선 교환(Circuit Switching)과 패킷 교환(Packet Switching)
데이터를 두 장치 간에 전달할 때 사용하는 방식에는 크게 회선 교환(Circuit Switching)과 패킷 교환(Packet Switching) 두 가지 주요 방법이 있다. 이 두 방식은 통신에서 데이터가 전송되는 방법에 따라 다르게 작동하며, 각각의 방식은 통신의 목적에 따라 선택되게 된다.
• Propagation Delay (전파 지연):
Caller와 Boston Switch 사이에 발생하는 지연이다. 전파 지연은 데이터가 네트워크를 통해 물리적으로 이동하는 데 걸리는 시간이다. 이는 통신 거리에 따라 다르며, 거리(보스턴에서 LA까지)가 길수록 지연 시간이 증가한다.
• Processing Delay at Switch (스위치에서의 처리 지연):
데이터가 스위치를 통과할 때 발생하는 지연이다. 스위치에서 데이터를 처리하고 다음 목적지로 전달하는 데 걸리는 시간이다. 스위치가 데이터를 처리하는 속도에 따라 처리 지연이 발생할 수 있다.
(1) 설정 단계: 통신을 시작하기 위해 회선 설정이 이루어지는 단계이다. 통신이 시작되기 전에 Caller와 Callee 간의 고정 경로가 설정된다.
(2) 데이터 전송 단계: 회선이 설정된 후 데이터(음성 또는 정보)가 양방향으로 전달된다. 이 단계에서 통화 내용이 전송된다.
(3) 종료 단계: 통신이 완료되면 회선이 해제되고, 그 회선은 다른 통신에 사용할 수 있게 된다.
예시
전화 통신: 전화 통신은 회선 교환 방식을 대표적으로 사용한다. 전화를 걸 때, 송신자와 수신자 간에 하나의 회선이 설정되고, 그 회선은 통화가 끝날 때까지 유지된다.
장점
지연 시간 없음: 회선이 한 번 설정되면, 데이터를 연속적으로 전송할 수 있으므로 지연 없이 빠르게 통신할 수 있다.
단점
비효율적인 대역폭 사용: 통화 중 대화가 없는 시간에도 회선이 유지되므로, 자원 사용이 비효율적이다.
설정 시간 필요: 통신 전에 고정된 경로를 설정해야 하므로 초기 설정 시간이 소요된다.
저장-전달 방식이란?
저장-전달(Store-and-Forward)방식은 패킷이 라우터에 도착하면, 전송되기전에 패킷 전체가 도착해야 한다는 원칙을 따른다. 즉, 라우터는 패킷의 전체 데이터가 도착한 후, 다음 라우터로 전달되며, 이 과정에서 패킷이 완전히 버퍼링될 때까지 기다려야 한다.
지연 시간
패킷을 전송할 때는 L비트의 패킷이 네트워크 링크에서 전송 속도 Rbps로 전송되므로, 패킷을 전송하는 데 걸리는 시간을 L/R초이다.
여러 라우터를 거쳐 목적지까지 도달하는 경우, 각 홉에서 발생하는 전송 지연을 계산할 수 있다.
지연 계산 예시:
L = 7.5Mbits, R = 1.5Mbps일 때, 한 홉의 전송 지연은 약 5초이다.
이는 패킷이 하나의 라우터에서 다음 라우터로 전달되기까지 걸리는 시간을 의미한다.
큐잉 지연(Queueing Delay)
큐잉 지연의 원인:
네트워크의 출력 링크로 데이터를 전송할 때, 입력되는 패킷의 속도(R)가 출력 링크의 전송 속도보다 높을 경우 패킷은 대기 상태에 놓이게 된다.
예를 들어, 그림에서는 A에서 패킷이 10Mb/s로 전송되지만, 출력 링크는 1.5Mb/s의 속도를 가지고 있다. 이로 인해 출력 링크의 처리 속도가 부족해지면 패킷은 큐(queue)에 저장되며, 처리되기까지 대기한다.
대기열 발생:
패킷이 출력 링크로 즉시 전송되지 못하면, 패킷은 라우터의 버퍼(buffer)에 쌓인다. 버퍼는 대기 중인 패킷을 저장하는 공간으로, 패킷들이 순서대로 출력 링크로 전송되기를 기다린다.
이 대기 상태를 큐잉(Queueing)이라고 하며, 패킷은 큐에 들어가 전송될 차례를 기다리는 동안 지연이 발생한다.
지연 시간:
큐잉 지연은 네트워크가 혼잡할 때 더 많이 발생하며, 대기열이 길어질수록 지연 시간이 길어진다. 이는 패킷 교환 방식의 단점 중 하나로, 네트워크 트래픽이 많을 때 패킷 전송 속도가 느려질 수 있다.
패킷 손실(Packet Loss)
패킷 손실의 원인:
라우터 또는 스위치의 버퍼 용량은 한정되어 있다. 따라서, 대기열이 가득 차면 새로운 패킷을 수용할 공간이 없기 때문에 더 이상 패킷을 받아들일 수 없다.
이때 발생하는 현상이 패킷 손실이다. 새로운 패킷은 버퍼에서 제거되거나 폐기된다.
손실된 패킷의 처리:
손실된 패킷은 네트워크 상에서 복구될 수 없는 상태가 된다. 하지만 TCP와 같은 신뢰성 있는 프로토콜을 사용할 경우, 손실된 패킷은 다시 전송 요청이 되어 재전송될 수 있다.
반면, UDP와 같은 프로토콜을 사용할 경우, 패킷 손실이 발생하면 해당 데이터는 재전송되지 않고 손실된 채로 남을 수 있다.
큐잉 지연과 패킷 손실의 해결 방법
네트워크 자원 확장:
네트워크의 출력 링크 속도를 증가시켜 더 많은 패킷을 동시에 처리할 수 있도록 해야 한다. 이는 큐잉 지연을 줄이는 데 도움이 될 수 있다.
버퍼 크기 조정:
라우터나 스위치의 버퍼 크기를 늘려, 더 많은 패킷을 대기시킬 수 있다. 하지만, 버퍼 크기가 너무 커지면 지연 시간이 길어질 수 있기 때문에 적절한 크기 조정이 필요하다.
혼잡 제어 및 관리:
혼잡 제어(congestion control) 메커니즘을 통해 네트워크 트래픽을 관리할 수 있다. TCP 프로토콜은 이러한 혼잡 제어를 제공하며, 네트워크 상태를 감지하여 패킷 전송 속도를 조절할 수 있다.
예시
인터넷: 인터넷 통신은 패킷 교환 방식을 사용한다. 웹 페이지를 요청할 때, 그 요청은 여러 개의 패킷으로 나뉘어 전송되며, 각각의 패킷은 목적지로 가는 가장 빠르고 효율적인 경로를 선택한다.
장점
효율성: 여러 사용자가 동일한 네트워크 자원을 효율적으로 사용할 수 있어, 네트워크 대역폭을 절약할 수 있다.
확장성: 패킷 교환 방식은 대규모 네트워크에서 더 효과적이다. 네트워크가 확장되어도 패킷은 독립적으로 처리되므로 유연하게 대응할 수 있다.
단점
지연 발생 가능성: 패킷이 서로 다른 경로를 통해 전송되기 때문에, 일부 패킷이 늦게 도착할 수 있다. 이로 인해 지연(latency)이 발생할 수 있다.
재조립 필요: 각 패킷을 수신자가 다시 원래의 데이터로 조립해야 하므로, 복잡성이 높아진다.