인터넷 기반 네트워크 입문
User mode & Kernel Mode 그리고 OSI 7 Layer
User Mode & Kernel Mode
뜬금없이 운영체제의 User mode와 Kernel Mode가 나와서 당황할 수도 있지만, 이는 네트워크 이론을 이해하는 데에 중요한 개념이다.
User mode와 Kernel Mode에 대해서 자세히 설명하지는 않곘지만, 간단히만 설명하자면, 컴퓨터는 S/W와 H/W로 나뉘며, S/W는 또 운영체제(OS)라 불리는 System S/W와 유저가 사용하는 Application으로 나뉜다. Application은 User mode에서 동작하며, System call을 통해 운영체제와 상호작용하여 H/W에 접근할 수 있다. 즉, 컴퓨터는 User Mode / Kernel Mode / H/W 라는 3계층으로 이루어져 있다고 이해하자.
TCP/IP Model / OSI 7 Layer Model / DoD Model
OSI 7 Layer 모델을 알아보기 전에, TCP/IP 모델을 먼저 알아보자.
컴퓨터에는 네트워크 통신을 위한 하드웨어로 NIC(Network Interface Card, LAN 카드)
라는 것이 있다. 그리고 이를 제어하기 위한 S/W가 존재하는데 이를 '드라이버(Driver)' 라고 한다. 그런데 이 위에 운영체제(커널)을 이루고 있는 구성요소가 존재하는데, 이곳에 프로토콜이 구현된 소프트웨어가 들어있다. 그 안에 TCP/IP가 계층적으로 존재하는 것이다. 여기까지가 H/W와 OS 수준이라고 하면, User Mode Application 수준에는 실제로 사용자가 사용하는 프로그램이 있을 것이다. 이 User Mode Application이 Kernel에 접근할 수 있도록 하는 인터페이스가 있는데, 이는 보통 파일의 형태이다. 그 중 특별하게 TCP/IP를 추상화 시킨 인터페이스 파일은 소켓(Socket)
이라고 부른다.
즉, Socket의 실체는 단순 파일이다. 근데 이제, 네트워크 추상화가 곁들여진..
때문에 'Socket을 연다'라는 것은 '파일을 연다'와 같은 의미이고, 이 Socket을 여는 주체는 프로세스(실행 중인 프로그램)가 된다.
이를 그림으로 표현하면 위 그림에서 가장 오른쪽에 있는 그림이다.
OSI 7 Layer는 네트워크의 개념적인 모델로, L1 ~ L7 계층까지 존재하며, 각 계층은 앞서 설명한 요소들과 매칭이 된다.
<H/W>
- L1(Physical Layer) : NIC
- L2(Data Link Layer) : Driver(S/W)와 H/W의 일부분에 걸쳐있음
<O/S>
- L3(Network Layer) : IP
- L4(Transport Layer) : TCP
<Application>
- L5 ~ L7: 프로세스 수준으로 설명이 가능
DoD 모델은 OSI 7 Layer를 더 간략화 하여 L1 ~ L2를 Network Access Layer로 묶고, L5 ~ L7을 Application Layer로 묶어서 나타낸 것이다.
즉, OSI 7 Layer Model(or DoD Model)은 TCP/IP 모델에 대한 추상화이며, TCP/IP 모델은 OSI 7 계층 또는 DoD 모델의 구현체이다
OSI 7 Layer Model의 식별자
- L2 수준의 식별자(NIC 랜카드 ~ Driver) : MAC 주소 => NIC에 대한 식별자
- MAC 주소는 하드웨어 주소라고도 하며, 변경 가능하다
- NIC가 꽂혀있는 수 만큼 MAC 주소 할당됨 (일반적으로 무선 하나, 유선 하나)
- 16진수로 표현됨
- Window의 터미널에서
ipconfig /all
을 했을 때, ‘물리적 주소’에 해당하는 값- macOS에서는
ifconfig
입력 후, en0의 ether 부분에 해당하는 값
- macOS에서는
- L3 수준의 식별자(IP) : IP 주소 (IPv4, IPv6) => 인터넷을 사용하는 컴퓨터에 대한 식별자 == host에 대한 식별자
- L4 수준의 식별자(TCP) : Port 번호 => 계층마다 인식하는 식별자가 다를 수 있음
- User mode: Process 식별자?
- Kernel mode: Service 식별자? (Ex, HTTP)
- H/W: Interface 식별자? (Ex, 공유기의 유선 랜)
MAC 주소의 구조
- 6 bytes(48 bits)
- ex)
fe:1b:63:84:45:36
- 첫 3 바이트: IEEE에서 기업이나 단체에 할당해준다.
- ex)
a8:8f:d9
은 애플에 할당된 값이다. - 256 * 256 * 256 = 16777216 → 약 1680만개
- ex)
- 뒤 3 바이트: 차례대로 기업이나 단체에서 할당해준다. - 고유값
- 256 * 256 * 256 = 16777216 → 약 1680만개
- 첫 3 바이트: IEEE에서 기업이나 단체에 할당해준다.
- ex)
IEEE: MAC 주소를 관리하고, 인터넷 기술 연구 등을 하는 단체라고 생각하자.
⇒ 전 세계에 존재할 수 있는 MAC 주소의 수는 16777216^2 = 약 280조 개
Host란?
Host는 쉽게 말해 네트워크에 연결된 컴퓨터를 의미한다.
Host의 구분
- 네트워크 이용주체 → End-point (단말기)
- Client, Server, Peer, ..
- 네트워크 자체 (해당 컴퓨터가 네트워크 장비로 사용되는 경우) -> Switch
- Router, IPS, Tab Switch, Aggregation Switch, …
Switch란?
Switch와 Switching에 대해 이해하기 위해 네트워크를 도로망에 비유하여 알아보자.
Switch
는 네트워크라는 거대한 도로망에서 ‘교차로’와 같은 역할을 한다.
우리는 Switch에서 ‘근거’에 맞게 적절한 경로 선택(switching)을 통해, 목적지까지 가야 한다.
이때, ‘근거’라는 것은 도로에서는 네비게이션이나 이정표가 될 수 있듯이, 네트워크에서는 ‘IP주소’가 스위칭의 근거가 될 수 있는데, 이렇게 IP 주소를 기반으로 스위칭하는 것을 L3 Switching
이라고 한다. (IP 주소는 L3 계층의 식별자이다)
MAC 주소를 통해 스위칭을 하면 L2 스위칭, Port를 통해 스위칭을 한다면 L4 스위칭일 것!
그리고 이 L3 Switching을 하도록 해주는 호스트 중 하나가 Router
이다.
Router 내부에는 Routing Table
이라는 이정표가 들어있다. 이를 참조하여 경로를 선택한다.
즉, 패킷은 출발 호스트에서 목적 호스트까지 네트워크 상엥서 이동하게 되는데, 이동 과정에서 중간 중간에 switch 들을 만나는데, 이때 L3 Switchining을 하며 이동한다. 여기서, 네트워크망(고속도로)에서 이동하고 있는 주체(자동차?)가 패킷(Packet)
여기서 하나만 더 신경써줄 것이 있는데, 바로 ‘비용’이다.
도로에서 이동을 한다고 할 때, 우리는 꼭 한 가지 길만 있는 것은 아니다. 목적지까지 갈 수 있는 방법은 다양하고, 우리는 이 중 최선의 선택, 최저 비용을 들여서 가고 싶을 뿐이다.
네트워크 상에서돋 마찬가지이다. 네트워크 상에서도 스위치 간 이동 비용이 적은 것을 선택해야 하는데, 이런 비용을 Matric
이라고 한다. 즉, Matric이 낮은 쪽으로 이동을 하게 된다.
윈도우의 경우 터미널에서 route PRINT을, macOS의 경우 netstat -nr을 입력하면 라우팅 테이블을 확인할 수 있고, 여기서 경로 대상, 인터페이스, 매트릭 등을 확인할 수 있다.
L2 핵심
NIC, L2 Frame, LAN 카드 그리고 MAC 주소
NIC
NIC(Network Interface Card)
== LAN 카드- 유/무선 NIC이 있지만 굳이 구별하지 않고, NIC라고 할 때가 많다
- NIC는 H/W이며, MAC 주소를 갖는다
- NIC는 여러개 가질 수 있는데, 보통 노트북의 경우 기본으로 무선 NIC 한 개가 필수로 꽂혀있고, 여기에 사용자가 USB 유선 NIC를 추가로 꽂을 수도 있다
L2 Frame
Packet이라는 단어를 앞서 한번 언급했는데, 이는 L3 수준에서 언급하는 인터넷에서의 데이터 단위이다. (자세한건 나중에)
우리가 흔히 유선이라 부르는 ‘이더넷 네트워크’라는 L2 수준에서 유통되는 데이터의 단위도 있는데, 이를 (L2, Ethernet) Frame
이라고 한다.
L2 Frame의 크기는 보통 1514 바이트 정도밖에 하지 않는다. 이를 통해 속도를 얘기할 수 있는데, 1Gbps라고 하면 초당 1Gbit급 전송을 한다는 의미이다.
L2 Frame의 구조
앞서 섬령한 것처럼 우리는 컴퓨터에서 다른 컴퓨터로 정보를 보낼 때 “프레임” 형식으로 정보를 보낸다. (L1 -> L2로 나가는 순간에 프레임으로)
IEEE 802.3 ETHERNET Frame Format
- LAN에서 가장 대중적으로 쓰이는 포맷
- 구조
PREAMBLE
- 7 bytes(56 bits)
- 0과 1이 번갈아가며 등장하는 패턴
- frame의 시작을 알려주는 역할과
- 데이터를 보내는 속도와 데이터를 받는 속도를 동기화 시키는 역할을 함.
Start of frame delimiter(SFD)
- 항상
10101011
로 고정 - 여기서부터 정보가 시작된다는 것을 알려줌.
- 항상
Destination Address
- 목적지 MAC 주소Source Address
- 송신지 MAC 주소Length
- 2 Bytes(16 bits)
- Frame의 총 길이를 알려주며, 보통 1500 Bytes 이하이다.
Data
- 보내려는 데이터Cyclic Redundancy Check(CRC)
- 데이터가 잘 전달되었는지 체크해주는 역할
L2 Switch
허브에서 스위치로의 변천사
스위치 사용 이전에는 허브(Hub)라는 것을 사용했었다.
과거의 허브는 단순히 연결된 모든 기기로 데이터를 전송하는 장비였다. 모든 기기가 동일한 전송 매체를 공유하고 데이터를 주고받을 때 충돌(Collision)이 발생할 수 있었으며, 이를 해결하기 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식을 사용했다. CSMA/CD는 각 기기가 전송 전에 네트워크가 비어 있는지 확인하고, 충돌이 발생하면 재전송을 시도하는 방식이다. 하지만 여러 기기가 동시에 데이터를 보내려 하면 충돌이 자주 발생하고 전송 속도가 느려지는 문제가 있었다.
스위치는 이러한 단점을 해결하기 위해 개발되었다. 스위치는 각 포트가 별도의 전송 경로를 갖기 때문에 특정 기기 간의 데이터 전송이 다른 기기에 영향을 미치지 않는다. 이렇게 전송 경로를 분리해 충돌을 방지하면서 네트워크 성능을 크게 향상시킬 수 있었다. 또한 스위치는 기기 간의 전송을 더욱 효율적으로 관리하고 처리할 수 있기 때문에, 대규모 네트워크 환경에서 허브보다 훨씬 유리한 장비로 자리 잡았다.
스위치의 특징
- MAC 주소들을 기억하고 있다
- 때문에, Frame을 모든 기기에게 전달하는 것이 아닌, 목적지로 바로 전달할 수 있다.
- 충돌이 일어나지 않는다
- 케이블이 2개가 연결되어 있으며, 하나는 데이터 전달 용도, 하나는 데이터 받는 용도로 사용하기에 충돌이 일어나지 않는다
L2 Switch의 구분
L2 Access Switch
- End-point와 직접 연결되는 스위치!
- L2 Switch라고 위에서 불렀지만, 실제로는 L2 Access Switch라고 함
- MAC 주소를 근거로 스위칭
- 이 스위치는 보통 여러개의 Port(인터페이스)에 LAN 케이블을 꽂을 수 있는 허브 형태
- LAN 케이블이 연결되어 녹색불이 들어오면, ‘Link-up’되었다고 함. (연결 안되면 Link-down)
- L2 스위치에서 나와 더 상위 L3 스위치(ex. Router)로 연결될 때, 연결되는 선을 ‘Uplink’라고 한다.
L2 Distribution swtich
- 여러 Access Switch를 연결하고 집계하는 역할을 하는 스위치
- 보통 PC NIC에서 선이 나오고, L2 Acesss Switch를 만난 후, 거기서 다시 또 다른 스위치를 만난 다음에야 L3 switch(Router)를 만나는 것이 일반적이다. (
PC -> L2 Access Switch -> 또 다른 Switch -> Router
) - 이 때, 중간에 End-point(PC)와 직접 붙지 않고 L2 Access 스위치와 연결되는 스위치를 위한 스위치를
L2 Distribution Switch
라고 한다.
- 보통 PC NIC에서 선이 나오고, L2 Acesss Switch를 만난 후, 거기서 다시 또 다른 스위치를 만난 다음에야 L3 switch(Router)를 만나는 것이 일반적이다. (
- 같은 L2라 하더라도 한 단계 위에 있는 고성능 스위치이다.
- 보통 건물이 있다고 하면, 한 방에 L2 Access Switch가 하나 있고, 해당 층에 L2 Distribution Switch가 하나 있으며, 모든 층의 L2 Distribution Switch를 모아 해당 건물의 Router에 연결된다.
- VLAN(Virtual LAN) 기능을 제공하는 것이 일반적
- 여러 Access Switch를 연결하고 집계하는 역할을 하는 스위치
외에도 Core Switch(때로는 L2 Core로 불리기도 함)라는 것이 있는데, 대규모 네트워크에서 Distribution Switch를 통합하여 트래픽을 백본으로 전달하는 고성능 스위치이다. 고속의 대용량 트래픽 처리를 위해 설계되며, 네트워크의 중심에서 트래픽을 최대한 빠르게 전송한다. 소규모 네트워크에서는 초기 비용 절감과 유지보수의 간소화를 위해 잘 사용하지 않는다.
LAN과 WAN의 경계, 그리고 Broadcast
Boradcast는 연결된 모든 호스트에 데이터를 보내는 것으로 보통 네트워크 통신 효율을 떨어뜨린다..
Broadcast와 반대되는 개념은 Unicast로 한 곳을 콕 찝어서 대화하는 형태
Broadcasting을 하는 순간, 다른 호스트들은 해당 Broadcasting이 끝날 때까지 통신을 할 수 없다는 문제가 있다.. 때문에 Broadcasting의 사용을 최소화하는 것이 중요하며, 불가피하다면 Broadcasting의 범위를 최소화하는 것이 중요
Broadcast 주소
Broadcast 주소라는 매우 특별한 주소가 존재한다. (MAC, IP 모두 존재)
- MAC 주소의 경우, 48비트 전체가 1로 되어있으면 Broadcasting이다. (
FF-FF-FF-FF-FF-FF
) - 즉, 목적지 주소가
FF-FF-FF-FF-FF-FF
라면 Broadcast를 사용한다는 것으로, 모두 다 데이터를 받으라는 의미
네트워크 규모
논리적 == Logical == Virtual => S/W 단의 범위를 말함물리적 == Physical => H/W 단의 범위를 말함
H/W를 S/W로 구현한 것을 Virtual Machine이라고 하며 이러한 구현 기술을 ‘가상화’라고 한다.
네트워크 규모 이해 요령(정답 X)
LAN => Physical로 설명되는 부분이 보통 LAN으로 묶임 (보통 L1 ~ L2)WAN == Internet => 구현 계층이 S/W에 속함 -> 인터넷은 논리적(L3)
'Network' 카테고리의 다른 글
[Network] L4 핵심 (TCP & UDP) (10) | 2024.11.13 |
---|---|
[Network] L3 핵심 (11) | 2024.11.12 |
[Network] HTTP 헤더와 캐시 (1) | 2024.10.11 |
[Network] HTTP 메서드와 상태코드 (1) | 2024.10.10 |
[Network] HTTP 기본 (3) | 2024.10.10 |