이 글은 "IT 엔지니어를 위한 네트워크 입문" 책을 읽고 공부한 내용들을 두고두고 보기 위해 정리하는 글이다.
읽을 때마다 그 날의 내용들을 꾸준히 이어서 업데이트 할 예정이다.
🗓️ 2023.07.23 작성 ▽
네트워크는 크게 서비스를 받는 입장과 서비스를 제공하는 입장으로 나뉨
서비스를 받는 입장
서비스를 제공하는 입장
이 장에서는 간단한 홈 네트워크 구성과 데이터 센터 네트워크 구성을 예시로 자주 사용되는 물리적인 연결 기술과 구성 요소를 소개
이러한 물리적인 연결 위에서 실제 통신이 일어나는 과정과 나아가 네트워크 장비를 통해 네트워크를 확장하는 방법을 간단히 소개
홈 네트워크 구성은 어떠한 인터넷 회선(FTTH, 케이블 인터넷, VDSL)을 연결하더라도 같음
최근 모바일 단말기의 증가와 노트북 사용의 보편화로 대부분의 가정에서 공유기를 사용
공유기를 통해 일반 사용자도 손쉽게 홈 네트워크를 구성
모뎀, 공유기, 단말 간에 물리적 연결이 필요
무선 연결은 무선 랜 카드와 무선 신호를 보낼 수 있는 매체(공기)가 필요
유선 연결은 유선 랜 카드(이더넷 랜 카드), 랜 케이블(랜선)이 필요
자세한 홈 네트워크 구성
인터넷 =케이블=> 네트워크 장비(모뎀) =케이블=> 공유기 =케이블/매체=> 단말기(노트북, 스마트폰, ,,,)
데이터 센터 네트워크는 안정적이고 빠른 대용량 서비스 제공을 목표로 구성
안정적 서비스 제공을 위한 다양한 이중화 기술을 사용
많은 서버와 서비스가 한 네트워크에 연결되어 있어 높은 통신량 수용 기술 필요
-> 10G, 25G, 40G, 100G, 400G 등의 고속 이더넷 기술 사용
데이터 센터 구성은 기존에는 3계층 구성이 일반적(Core-Aggregation-Access)
가상화 기술과 높은 대역폭을 요구하는 스케일 아웃(Scale-Out) 기반의 애플리케이션과 서비스가 등장하면서 2계층 구성인 스파인-리프(Spine-Leaf) 구조로 데이터 센터 네트워크가 변화
스파인-리프 구조는 서버 간 통신이 늘어나는 최근 트래픽 경향을 지원하기 위해 제안됨
최근에는 일반 서버에 10G Base-T 이더넷 포트가 기본적으로 제공되어 TOR 스위치와 연결되고 리프 스위치인 TOR 스위치는 스파인 스위치와 40G, 100G로 연결되는 추세
🗓️ 2023.07.30 작성 ▽
보통 규정이나 규약과 관련된 내용을 언급할 때 프로토콜이라는 용어를 사용
네트워크에서는 통신할 때의 규약을 의미
프로토콜에는 다양한 특징과 종류가 있지만 최근에는 여러 프로토콜 기술이 이더넷-TCP/IP 기반 프로토콜들로 변경
네트워크와 컴퓨팅 환경이 열악했던 1900년대에는 최소한의 비트로 내용을 전송하기 위해서 매우 치밀하게 서로 간의 약속을 정의
몇 번째 전기 신호는 보내는 사람 주소, 몇 번째 전기 신호는 상위 프로토콜 지시자 등
그 후 HTTP와 SMTP와 같은 문자 기반 프로토콜들이 많이 사용됨
비트로 메시지를 전달하지 않고 문자 자체를 이용해 헤더와 헤더 값, 데이터를 표현하고 전송
GET /api HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://zigispace.net/
,,,
,,,
효율성은 비트 기반 프로토콜보다 떨어지지만 다양한 확장이 가능
또한 일반적으로 TCP/IP는 프로토콜이라고 부르지 않고 프로토콜 스택이라고 부름
TCP와 IP는 별도 계층에서 동작하는 프로토콜이지만 함께 사용됨 -> 이런 묶음이 프로토콜 스택
TCP/IP 프로토콜 스택에는 TCP, IP 뿐만 아니라 UDP, ICMP, ARP, HTTP, SMTP, FTP와 같은 매우 다양한 애플리케이션 레이어 프로토콜들이 존재
TCP/IP 프로토콜 스택은 총 4개 부분으로 나뉨
네트워크를 잘 이해하기 위해 필수로 공부해야 하는 사항
복잡한 네트워크를 단계별로 나누어 이해하기 쉽도록 도와줌
과거에는 통신용 규약이 표준화되지 않았고 각 벤더에서 별도로 개발
-> 호환되지 않는 시스템이나 애플리케이션이 많았고 통신이 불가능했음
이를 하나의 규약으로 통합하려는 노력이 현재의 OSI 7계층
네트워크 동작을 나누어 이해하고 개발하는 데 많은 도움이 되므로 네트워크의 주요 레퍼런스 모델로 활용되고 있지만 현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 되어 있음
복잡한 데이터 전송 과정을 OSI 7계층으로 나누어 보면 이해하기 쉬움
계층별로 표준화된 프로토콜 템플릿을 통해 네트워크 프로토콜을 전부 개발하는 대신 계층별로 프로토콜을 개발해 네트워크 구성 요소들을 모듈화할 수 있음
모듈화된 요소는 기존에 개발된 프로토콜과 연동해 사용할 수 있음
OSI 7계층은 다시 두 가지 계층으로 구분이 가능함
실무에서는 6계층 프레젠테이션 계층을 표현 계층으로, 4계층 트랜스포트 계층은 전송 계층으로, 1계층 피지컬 계층은 물리 계층으로 부르는 경우가 많음
애플리케이션 개발자는 애플리케이션 계층 프로토콜을 개발할 때 하위 데이터 플로 계층을 고려하지 않고 데이터를 표현하는 데 초점을 맞춤
반대로 네트워크 엔지니어는 애플리케이션 계층을 심각하게 고려하지 않음
-> 애플리케이션 개발자는 하향식 형식으로, 네트워크 엔지니어는 상향식 형식으로 네트워크를 인식하는 경우가 많음
현대 네트워크는 대부분 TCP/IP와 이더넷으로 이루어짐
값이 싸고 성능이 우수하며 이론보다 실용성에 중점을 둔 프로토콜
OSI 레퍼런스 모델은 7계층으로 이루어진 반면, TCP/IP 모델은 4계층으로 구분
OSI 7계층에서 하위 계층, 상위 계층 구분이 되는 것과 비슷한데 더 확연히 드러나는 구분을 제시함
상위 3계층을 하나의 애플리케이션 계층으로 묶고 하위 2계층을 하나의 네트워크 계층으로 구분
물리 계층으로 물리적 연결과 관련된 정보를 정의
전기 신호를 전달하는 데 초점이 맞추어져 있음
들어온 전기 신호를 그대로 잘 전달하는 것이 목적
전기 신호가 1계층 장비에 들어오면 이 전기 신호를 재생성하여 내보냄
1계층 장비는 주소의 개념이 없어 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송
전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리
전기 신호를 정확히 전달하기보다는 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 데 초점
1계층과 달리 출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지, 또는 내가 처리해야 하는지에 대해 검사한 후 데이터 처리를 수행
2계층에서는 주소 체계가 생기면서 여러 통신이 한꺼번에 이루어지는 것을 구분하기 위한 기능이 주로 정의
전기 신호를 모아 데이터 형태로 처리하고 데이터에 대한 에러를 탐지하거나 고치는 역할을 수행
과거에는 2계층에서 에러를 탐지하고 고치거나 재전송햇지만 이더넷 기반 네트워크의 2계층에서는 에러를 탐지하는 역할만 수행
주소 체계가 생겨 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있어 무작정 데이터를 던지는 것이 아닌 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 해야 함
-> 이 역할을 플로 컨트롤(Flow Control)이라고 부름
2계층에서 동작하는 네트워크 구성 요소는 네트워크 인터페이스 카드와 스위치
2계층의 가장 중요한 특징은 MAC 주소라는 주소 체계가 있다는 것
네트워크 인터페이스 카드와 스위치 모두 MAC 주소를 이해할 수 있음
스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있음
네트워크 인터페이스 카드를 부르는 또 다른 이름
네트워크 인터페이스 카드 동작 방식
네트워크 인터페이스 카드에는 고유 MAC 주소가 있음
입력되는 전기 신호를 데이터 형태로 만들고 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인
자신에게 들어오는 전기 신호가 아니라면 폐기하고 맞으면 이 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재
스위치는 단말이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 슥듭 과정에서 알 수 있음
이 데이터를 기반으로 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩할 수 있음
1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전기 신호를 전달하다 보니 전체 네트워크에서 오직 하나의 장비만 데이터를 보낼 수 있음
이를 보완하는 스위치의 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 네트워크 전체에 불필요한 처리가 감소하면서 이더넷 네트워크 효율성을 크게 향상시켜줌
-> 이더넷 기반 네트워크의 급증
IP 주소와 같은 논리적인 주소가 정의됨
데이터 통신 중 사용되는 두 가지의 주소는 2계층의 물리적인 MAC 주소와 3계층의 논리적인 IP 주소임
MAC 주소와 달리 IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있고 네트워크 주소 부분과 호스트 주소 부분으로 나뉨
ex) 174.31.0.1: 174.31이 네트워크 주소 부분, 0.1이 호스트 주소 부분
3계층을 이애할 수 있는 장비나 단말은 네트워크 주소 정보를 이용해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고 원격지 네트워크를 가려면 어디로 가야 하는지 경로를 지정하는 능력이 있음
3계층에서 동작하는 장비는 라우터
라우터는 IP 주소를 이해할 수 있음
IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할을 함
상위 계층과 하위 계층 사이의 데이터들이 정상적으로 잘 보내지도록 확인하는 역할
패킷 네트워크가 데이터를 분할해 패킷에 실어보내는 과정에서 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있음
-> 이것을 바로잡아 주는 역할을 담당
패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신하므로 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있음
4계층에서 동작하는 장비로는 로드 밸런서와 방화벽이 있음
애플리케이션 구분자(포트 번호)와 시퀀스, ACK 번호 정보를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단하는 기능 수행
양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할
"세션"을 관리하는 역할, TCP/IP 세션을 만들고 없애는 책임
에러로 중단된 통신에 대한 에러 복구와 재전송 또한 수행
표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 역할
일종의 번역기나 변환기 역할을 수행하는 계층
사용자 시스템의 응용 계층에서 데이터의 형식적인 차이를 다루는 부담을 덜어줌
MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐
애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행하는 역할
네트워크 소프트웨어의 UI 부분이나 사용자 입/출력 부분을 정의하는 역할
대표적인 프로토콜로 FTP, SMTP, HTTP, TELNET이 있음
🗓️ 2023.08.07 작성 ▽
상위 계층에서 하위 계층으로 데이터를 보내면 1계층 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보냄
받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보냄
이렇게 데이터를 보내는 과정을 인캡슐레이션(Encapsulation), 받는 과정을 디캡슐레이션(Decapsulation)이라고 함
현대 네트워크는 대부분 패킷 기반 네트워크
데이터를 패킷이라는 작은 단위로 쪼개서 보내 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신하도록 해줌
패킷으로 쪼개진 데이터가 네트워크를 통해 목적지로 보내지고 받는 쪽에서는 패킷을 다시 큰 데이터 형태로 결합해 사용
애플리케이션에서 데이터를 데이터 플로 계층(1~4 계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분한하는 과정을 인캡슐레이션이라고 부름
네트워크 상황을 고려해 적절한 크기로 데이터를 쪼개고 네트워크 전송을 위한 정보를 헤더에 붙여 넣어줌
헤더 정보는 4, 3, 2 계층에서 각각 자신이 필요한 정보를 미리 정의된 비트(사람이 사용하는 문자가 아닌) 단위로 써서 추가함
데이터 한 개를 전송하는 작업에서 데이터 플로 계층에서만 3개(4, 3, 2 계층)의 헤더 정보가 추가
반대로 받는 쪽에서는 디캡슐레이션 과정 수행
받은 전기 신호를 데이터 형태로 만들어 2계층으로 올려보냄
2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보 확인
적힌 정보 중 목적지가 자신이 아니라면 버리고(2계층 장비인 랜 카드의 역할) 자신이 맞다면 3계층으로 정보를 보내줌(이 때 2계층의 세더 정보는 더 이상 필요가 없으므로 벗겨내고 올려보냄)
3계층에서는 3계층의 헤더 정보를 확인해 자신에게 온 것이 맞는지 확인하고 맞으면 3계층 헤더 정보를 제거하고 4계층으로 보냄
4계층에서도 같은 과정으로 애플리케이션에 데이터를 올려보냄
위의 복잡한 작업은 2가지 정보 흐름으로 설명 가능
실제로 데이터는 상위 계층에서 데이터 플로 계층으로 패킷 형태를 가지면서 하나씩 인캡슐레이션 되면서 내려오고 랜 카드에서 전기 형태로 변환되어 목적지로 전달
목적지에서는 데이터 형태로 변환해 상위 계층으로 올려주고 이 패킷들을 조합해 데이터 형태로 만들게 됨
(상위 계층 -> 하위계층) -> (하위계층 -> 상위계층) 의 데이터 흐름
각 계층에서 인캡슐레이션 과정에서 수행했던 것처럼 현재 계층에서 추가하는 헤더 정보는 받는 상대방이 확인해야 하는 정보
만약 4계층에서 헤더를 추가했다면 그 정보는 받는 쪽의 4계층에서 확인하고 참고 후 버림
🗓️ 2023.08.08 작성 ▽
데이터를 인캡슐레이션하는 과정에서는 위처럼 헤더에 넣는 정보들이 많음
또한 프로토콜마다 트것ㅇ이 달라 적어 넣는 정보가 다름
이러한 복잡한 정보들에도 규칙이 있으며 헤더에 두 가지 정보는 반드시 포함되어야 함
현재 계층에서 정의하는 정보
현재 계층에서 정의하는 정보는 OSI 7계층의 각 계층에서 목적에 맞는 정보들이 포함
4계층의 목적은 보내는 쪽에서는 큰 데이터를 잘 분할하고 받는 쪽에서는 잘 조립하는 것
잘 분할하고 잘 조립하기 위해 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할이 중요해져 이 정보를 헤더에 넣는 것
TCP/IP의 4계층 프로토콜인 TCP에서는 시퀀스(Sequence), 애크(ACKnowledgement) 번호 필드로 이 데이터를 표현
3계층 헤더에는 3계층에서 정의하는 논리적인 주소인 출발지, 도착지 IP 주소를 헤더에 적음
2계층은 MAC 주소를 정의하는데 3계층처럼 출발지, 도착지 MAC 주소를 헤더에 적음
상위 프로토콜 지시자
프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아짐
3계층 프로토콜인 IP는 4계층에서는 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서는 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 다시 나뉨
인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 올려보내 주어야 할지 결정할 수 없음
이러한 문제가 발생하지 않도록 인캡슐레이션하는 쪽에서는 헤더에 상위 프로토콜 지시자 정보를 포함시킴
포트 번호 | 서비스 |
---|---|
TCP 20, 21 | FTP(File Transfer Protocol) |
TCP 22 | SSH(Secure Shell) |
TCP 23 | TELNET(Telnet Terminal) |
TCP 25 | SMTP(Simple Mail Transport Protocol) |
UDP 49 | TACACS |
TCP 53/UDP 53 | DNS(Domain Name Service) |
UDP 67, 68 | BOOTP(Bootstrap Protocol) |
TCP 80/UDP 80 | HTTP(HyperText Transfer Protocol) |
UDP 123 | NTP(Network Time Protocol) |
UDP 161, 162 | SNMP(Simple Network Management Protocol) |
TCP 443 | HTTPS |
TCP 445/UDP 445 | Microsoft-DS |
프로토콜 번호 | 프로토콜 |
---|---|
1 | ICMP(Internet Control Message) |
2 | IGMP(Internet Group Management) |
6 | TCP(Transmission Control) |
17 | UDP(User Datagram) |
50 | ESP(Encap Security Payload) |
51 | AH(Authentication Header) |
58 | IPv6용 ICMP |
133 | FC(Fibre Channel) |
이더 타입 | 프로토콜 |
---|---|
0x0800 | IPv4(Internet Protocol version 4) |
0x0806 | ARP(Address Resolution Protocol) |
0x22F3 | IETF TRILL Protocol |
0x8035 | RARP(Reverse ARP) |
0x8100 | VLAN-tagged frame(802.1Q) |
Shortest Path Bridging(802.1aq) | AH(Authentication Header) |
0x86DD | IPv6(Internet Protocol version 6) |
0x88CC | LLDP(Link Layer Discovery Protocol) |
0x8906 | FCoE(Fibre Channel over Ethernet) |
0x8915 | RoCE(RDMA over Converged Ethernet) |
각 계층마다 이 상위 프로토콜 지시자를 가지고 있지만 이름이 달라 4계층은 포트 번호, 3계층은 프로토콜 번호, 2계층은 이더 타입이라고 부름
포트 번호는 4계층 헤더에 적힌 정보이지만 애플리케이션 계층에서 프로토콜 종류를 나타내주는 정보임
디캡슐레이션할 때 상위 프로토콜 지시자 정보를 이용해 어느 상위 계층 프로토콜로 보내야 할지 구분해야 하므로 동작하는 계층보다 한 계층 위의 정보가 적혀 있게 됨
⭕️ 참고 - MSS & MTU (데이터 크기 조절)
네트워크에서 수용할 수 있는 크기를 역산정해 데이터가 4계층으로 내려올 때 적절한 크기로 쪼개질 수 있도록 유도하는데 이 값을 MSS(Maximum Segment Size)라고 부름
네트워크에서 한 번에 보낼 수 잇는 데이터 크기를 MTU(Maximum Transmission Unit)라고 부름
일반적으로 이더넷에서 수용할 수 있는 크기는 1500바이트
MTU, MSS 모두 데이터 크기를 지칭하는 것이므로 MTU 값은 2계층의 데이터 값, MSS는 4계층에서 가질 수 잇는 최대 데이터 값
2계층에서는 2계층 헤더들의 크기를 제외한 데이터 크기를 MTU 크기라고 부름
IP 헤더와 TCP 헤더의 표준 헤더 크기는 일반적으로 각각 20바이트 이므로 일반 이더넷의 경우 MSS 값을 1460바이트로 사용
정보 감사합니다.