Search
Duplicate

네트워크 시작하기

목차

1. 네트워크 구성도 살펴보기

네트워크는 서비스를 받는 입장과 제공하는 입장이 다르고, 가정 집에서의 구성과 데이터 센터의 구성 역시 다르다.
서비스를 제공받는 입장
: 집에서 인터넷을 접속, 회사에서 인터넷에 접속, 출근길에 모바일로 인터넷 접속
서비스를 제공하는 입장
: 클라우드, 데이터센터, 회사 서버실에 서버를 놓고 API를 제공
다음으로 환경별 네트워크 구성을 살펴보자.

1.1 홈 네트워크

홈 네트워크 구성도
홈 네트워크 구성에서 인터넷 회선은 무엇을 연결하던 같다. 심지어 무선인터넷도 크게 다르지 않다.
유선일 경우 유선 랜 카드와 랜 케이블(랜선)이 필요하고 무선일 경우 무선 랜 카드와 매체가 될 공기가 차이점이다.

1.2 데이터 센터 네트워크

데이터 센터 네트워크 구성 과거(왼쪽)와 현재(오른쪽)
데이터 센터 네트워크는 대상이 불특정 대다수이기 때문에 빠르고 안정적이어야 한다.
안정적인 서비스 제공을 위해서는 이중화 기술이 필요하고 많은 서버와 서비스가 하나의 네트워크에 연결되어 있기에 높은 통신양을 수용할 수 있어야 한다.
즉, 이중화 기술로 안정성을 높히고 고속 이더넷 기술(10G, 25G, 40G, 100G, 400G)로 높은 통신양을 수용할 수 있어야 한다.
과거에는 3계층 구성을 주로 사용했지만, 현재는 가상화 기술과 높은 대역폭(통신에서 이용가능한 최대 전송속도) 을 요구하는 스케일 아웃(Scale-Out)기반의 애플리케이션과 서비스가 등장하면서 2계층 구성인 스파인-리프(Spine-Leaf)구조로 데이터 센터 네트워크가 변화되었다.

스파인-리프(Spine-Leaf) 구조

높은 트래픽을 감당하기 위해 제안된다.
스파인-리프 구조, 리프 스위치는 랙에 장착되어 해당 랙의 서버 통신을 책임진다.
최근에는 일반 서버에서도 기본적으로 10G Base-T 이더넷 포트가 제공되기에 TOR(Top of Rack) 스위치와 연결되고 리프스위치인 TOR 스위치는 스파인 스위치와 40G, 100G로 연결되는 추세다.
더 높은 대역폭을 위해서 400G 네트워크도 표준화되어 더 높은 대역폭을 사용하는 데이터 센터에 사용되고 있다.
생소한 단어 몇가지는 책의 뒷 부분에 나오기에 몇몇 키워드에 대한 상세 내용은 아래 링크 참조.
10G Base-T (아직 미작성)
스파인-리프 구조와 TOR, 스파인 스위치, 리프 스위치, 데이터 센터의 디자인 (아직 미작성)

2. 프로토콜

프로토콜: 규정이나 규약과 관련된 내용으로 네트워크에선 통신할 때의 규약에서 사용.
과거에는 어떤 회사냐, 어떤 표준이냐, 어떤 워킹그룹이냐에 따라 다른 특징의 다양한 프로토콜이 존재했는데, 현재는 이더넷-TCP/IP 기반 프로토콜로 획일화 되고있는 추세다.
물리적 측면: 데이터 전송 매체, 신호 규약, 회선 규격등에서 이더넷이 많이 쓰인다.
논리적 측면: 장치들끼리 통신하기 위한 프로토콜 규격으로 TCP/IP가 많이 쓰인다.
과거에는 네트워크의 속도나 컴퓨터의 자원이 매우 제한적이였기 때문에 프로토콜은 2진수 비트(bit)기반으로 만들어져야 했고, 또한 프로토콜은 매우 엄격하게 정의해서 작성을 해야 했다.
하지만, 이런 비트기반 프로토콜은 사용자가 읽는것이 쉽지 않기에 애플리케이션 레벨에서는 문자 기반 프로토콜이 사용되고 있는데, 헤더와 헤더 값, 데이터 등을 비트가 아닌 문자로 작성해서 전송한다. 다음은 대표적인 문자 기반 프로토콜인 HTTP 프로토콜의 헤더 부분이다.
GET / HTTP/1.1 Host: mav.mosition.co.kr:8443 Connection: keep-alive sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90" sec-ch-ua-mobile: ?0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate, br Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Plain Text
복사
HTTP 프로토콜 - Request Header
문자기반이기에 비트기반 프로토콜에 비교해서 효율성이나 속도 측면에서는 떨어진다. 하지만, 사람이 읽을 수 있는데, 이는 즉 다양한 확장이 가능하다는 의미가 된다.

TCP/IP 프로토콜 스택

TCP/IP는 프로토콜 스택이라 부른다.
TCP와 IP는 별도의 레이어(TCP는 트랜스포트 계층, IP는 네트워크 계층)에서 동작하지만 함께 사용하고 있으며 이런 프로토콜 묶음을 프로토콜 스택이라 부른다.
TCP/IP 프로토콜 스택에는 실제로 TCP, IP뿐 아니라 다양한 애플리케이션 계층 프로토콜도 있다.
⇒ Ex: UDP, ICMP, ARP, HTTP, SMTP, FTP
TCP/IP 프로토콜 스택은 다음과 같은 구성으로 4개 부분으로 나뉜다.

3. OSI 7계층과 TCP/IP

네트워크의 구성을 명시적으로 OSI 7계층과 TCP/IP 프로토콜 스택으로 나눠서 단계별로 이해하기 쉽게 한다. OSI 7 계층부터 차례대로 알아보자.

OSI 7 계층

현대에 와서 통신용 규약을 최대한 하나로 통합한 것이 OSI 7 계층이다.
네트워크의 동작을 7 계층으로 나눠서 이해하고 학습하는데 도움이 되지만 사실 현재는 대부분 TCP/IP 프로토콜 스택 기반으로 되어있다.
이렇게 프로토콜이 계층별로 표준화되면 나뉜 템플릿을 통해서 네트워크 프로토콜을 모듈별로 개발할 수가 있다. 객체지향과 비슷한데, 모듈화된 요소는 기존에 개발된 프로토콜과 연동해서 사용도 가능하다.
OSI 레퍼런스 모델
또한, OSI 7계층은 두 가지 계층으로 묶어서 나눌 수 있다.
1~4계층: 데이터 플로 계층(Data Flow Layer) / 하위 계층(Lower Layer)
5~7계층: 애플리케이션 계층(Application Layer) / 상위 계층(Upper Layer)
이 책의 용어 표기법 및 계층 구분
이 표에서 상위 계층과 하위 계층을 나눈 분류는 각 계층의 역할과 목표에 따라 구분했다.
데이터 플로 계층(하위 계층)
⇒애플리케이션 개발자가 해당 계층 프로토콜을 개발할 때 하위 계층을 고려하지 않고 데이터를 표현하는데 초점을 맞춘다.
애플리케이션 계층(상위 계층)
⇒데이터를 상대방에게 잘 전달하는 역할을 가지며 네트워크 엔지니어는 데이터를 전송하는데만 집중하지 애플리케이션의 데이터 표현은 고려하지 않는다.
이런 역할의 차이로인해 애플리케이션 계층을 맡는 개발자와 데이터 플로 계층을 맡는 네트워크 엔지니어는 OSI 7 계층을 각각 개발자는 하향식(Top-Down), 네트워크 엔지니어는 상향식(Bottom-up)형식으로 네트워크를 인식한다.
포지션에 따른 네트워크를 바라보는 형식

TCP/IP 프로토콜 스택

이론보다 실용성에 중심을 둔 프로토콜인 TCP/IP 는 OSI 7계층과 다르게 4계층으로 구분을 한다.
OSI 7계층과 TCP/IP 4계층
OSI 7계층은 데이터플로 하위 계층과 애플리케이션 상위 계층으로 묶어서 구분할 수 있는데, 이는 데이터를 전달하는데 집중하는 영역과 애플리케이션에 집중하는 영역으로 구분을 한 것이다.
그래서 서버 엔지니어와 에트워크 엔지니어가 고려할 부분이 다르고 그렇기에 상향식, 하향식 개발 관점으로 보는데, TCP/IP모델은 이러한 구분이 더 확연히 드러난다.
상위 3개의 계층을 하나의 애플리케이션 계층으로 묶고, 1, 2계층을 하나의 네트워크 계층으로 구분한다. 이는 현실에 더 쉽게 반영할 수 있도록 하고자 하는 의도를 볼 수 있다.

4. OSI 7계층별 이해하기

지금까지 OSI 7계층과 TCP/IP 프로토콜 스택에 대해 개념적으로 알아봤는데, OSI 7 계층을 각 계층별로 조금 더 상세히 알아보자. TCP/IP 프로토콜 스택도 다 분리해서 상세히보면 OSI 7 계층이기에 OSI 7 계층을 기준으로 설명한다.

1계층(피지컬 계층)

물리적 연결과 관련된 정보를 정의하는 계층
주로 전기 신호를 전달하는데 초점이 맞춰져 있다.
주요 장비로 허브(Hub), 리피터(Repeater), 케이블(Cable), 커넥터(Connector), 트랜시버(Tranceiver), 탭(TAP)등이 있다.
⇒ 허브, 리피터는 네트워크 통신 중재 장비
⇒ 케이블, 커넥터는 케이블을 연결하는 장치
⇒ 트랜시버는 컴퓨터의 랜 카드와 케이블을 연결하는 장치.
⇒ 탭은 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제한다.
1계층은 들어온 전기 신호를 잘 전달하는 것이 목적이다.
주소의 개념이 없어서 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송한다.

2계층(데이터 링크 계층)

전기 신호를 우리가 알 수 있는 데이터 형태로 처리하는 계층
주소 정보를 정의하고 정확한 주소로 통신이 되도록하는데 초점을 맞춘다.
출발지와 도착지 주소를 확인하고 내게 보낸게 맞는지 내가 처리해야하는지를 검사한 뒤 데이터 처리를 수행한다.
여러 통신이 한 번에 이뤄지는 것을 구분하기 위한 기능이 정의된다.
전기 신호를 모아 데이터 형태로 처리하기에 데이터에 대한 에러 탐지및 수정 역할을 수행한다.
⇒ 현재 이더넷 기반 네트워크의 2계층에서는 에러를 탐지하는 역할만 한다.
받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업(Flow control)을 수행해야 한다.
간단한 2계층의 플로 컨트롤(Flow Control)
2계층에서 동작하는 네트워크 구성요소는 네트워크 인터페이스 카드(1)와 스위치이다.
(중요) 2계층에서는 MAC 주소라는 주소 체계가 있다.
MAC주소를 보고 통신해야 할 포트를 지정해 내보낼 수 있다.
네트워크 인터페이스 카드에는 고유 MAC주소가 있어서 이를 이용해 전기신호가 자신에게 들어오는게 맞는지 확인 후 맞을 경우 상위 계층에서 처리 할 수 있도록 메모리에 적재한다.
스위치는 주소 습득과정을 통해 단말이 어떤 MAC주소인지, 연결포트는 무엇인지 알 수 있다.
스위치의 필터링과 포워딩 기능으로 불필요한 처리가 감소하면서 이더넷 네트워크 효율성이 크게 향상되어 이더넷 기반 네트워크가 급증하는 계기가 되었다.
참고: 네트워크 인터페이스 카드 동작 방식
1.
전기 신호를 데이터 형태로 만든다.
2.
목적지 MAC주소와 출발지 MAC주소 확인
3.
네트워크 인터페이스 카드의 MAC주소 확인
4.
두 MAC주소가 맞으면 데이터를 처리하고 아니면 데이터를 폐기한다.

3계층(네트워크 계층)

논리적인 주소(IP)가 정의되며 라우터로 최적 경로를 찾아 패킷을 전송하는 역할을 한다.
라우터의 최적 경로 검색 및 패킷 포워딩
3계층에서는 IP주소와 같은 논리적인 주소가 정의된다.
IP주소는 변경이 가능하고, 네트워크 주소 부분과 호스트 주소 부분으로 나뉜다.
IP 주소 체계
라우터를 이용해 IP주소를 이해할 수 있다.
라우터를 이용해 IP주소를 분석해나온 네트워크 주소정보로 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고, 원격지 네트워크를 가기위한 경로를 지정하는 능력이 있다.

4계층(트랜스포트 계층)

해당 데이터들이 잘 보내지도록 확인하는 역할을 맡는 계층
패킷의 유실 및 순서 변경을 검사하고 바로잡는 역할을 한다.
4계층에서 패킷을 분할 할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신한다.
⇒ 해당 정보를 이용해서 패킷 유실및 순서 변경을 바로잡을 수 있다.
패킷에 보내는 순서를 명시한 것을 시퀀스 번호(Sequence Number)라 한다.
패킷에 받는 순서를 나타낸 것을 ACK 번호(Acknowledgement Number)라 한다.
포트 번호(Port Number)를 사용해 상위 애플리케이션을 구분한다.
4계층에서는 로드밸런서와 방화벽이 사용된다.

5계층(세션 계층)

양 끝단의 프로세스를 안정적인 연결 및 끊어주는 역할을 한다.
TCP/IP 세션을 생성 및 삭제하는 책임을 가진다.
에러로 중단된 통신에 대한 복구와 재전송을 수행한다.

6계층(프레젠테이션 계층)

표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕는 번역 역할을 맡는다.
사용자 시스템의 응용 계층에서 데이터의 형식상 차이를 다루는 부담을 줄여준다.
MIME인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이뤄진다.

7계층(애플리케이션 계층)

애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행한다.
네트워크 소프트웨어의 UI부분이나 사용자 IO부분을 정의한다.
애플리케이션 계층의 프로토콜은 매우 다양하다.
⇒ Ex: FTP, SMTP, HTTP, TELNET ...

참고: 계층별 주요 프로토콜 및 장비

5. 인캡슐레이션과 디캡슐레이션

인캡슐레이션

: 상위 계층에서 하위 계층으로 데이터를 보내면서 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보내는 과정

디캡슐레이션

: 전기 신호를 받아 데이터화하여 하위계층에서 상위계층으로 전달하는 과정
현대 네트워크는 패킷 기반 네트워크로 데이터를 패킷 단위로 나눠서 보내는데 이렇게 함으로써 통신회선 독점을 막고 여러 단말이 동시에 통신 할 수 있게된다.
그리고 이렇게 나뉜 패킷에 데이터를 분할해서 넣는 과정을 인캡슐레이션이라 부른다.
그리고 이렇게 데이터를 패킷에 담을 때 각 계층별로 자신이 필요한 정보를 헤더에 붙혀넣는데, 4계층→ 3계층 → 2계층으로 내려가면서 필요한 헤더정보를 비트 단위(0 or 1)로 작성한다.
그렇기에 데이터 하나를 전송하면 데이터 플로 계층에서만 3개의 헤더정보(4,3,2계층)가 추가된다.
받는 입장에서는 디캡슐레이션 과정을 수행하는데, 받은 전기 신호를 데이터 형태로 2계층으로 올려보내면 2계층에서는 2계층 헤더에 포함된 정보를 확인하고 목적지가 자신이 맞는지 확인을 한다.
그리고 목적지가 맞다면 2계층의 헤더정보는 벗겨내고 내용물을 3계층으로 올려보내고 3계층 4계층도 동일한 과정을 거쳐 데이터를 애플리케이션에 올려보낸다.
즉, 데이터는 상위 계층하위 계층, 하위 계층상위 계층으로 전달되며 각각 계층의 헤더정보는 각 계층끼리 전달된다.
여기서 각 계층별로 헤더에 넣는 정보들은 꽤 많기 때문에 모두 이해하긴 힘들지만, 몇가지 규칙이 있으며 그 중 하나가 헤더에 다음 두 가지 정보가 반드시 포함되야 한다는 점이다.
현재 계층에서 정의하는 정보
⇒ Ex: 4계층의 목적인 큰 데이터를 분할/조립하는데 필요한 패킷의 순서 및 빠진 패킷을 검증하는 정보를 헤더에 적는다. TCP/IP 의 4계층인 TCP에서는 시퀀스와 애크번호 필드로 이 데이터를 표현한다.
상위 프로토콜 지시자
⇒ 프로토콜 계층은 상위 계층으로 올라갈수록 종류가 많아지기 때문에 디캡큘레이션 과정에서 헤더에 상위 프로토콜 지시자가 없으면 어떤 상위 프로토콜로 올려 보내야 할 지 결정할 수 없다.

참고: 잘 알려진 상위 프로토콜 지시자

각 계층마다 상위 프로토콜 지시자가 있는데 이름이 달라 4계층은 포트 번호, 3계층은 프로토콜 번호, 2계층은 이더 타입이라 부른다.
포트 번호
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(Revers 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)

참고: MSS, MTU(데이터 크기 조절)

MTU와 MSS의 차이
MSS(Maximum Segment Size)
: 네트워크에서 수용할 수 있는 크기를 역산해 데이터가 4계층으로 데이터가 내려올 때 적절한 크기로 쪼개질 수 있도록 유도하는 크기로 4계층에서 가질 수 있는 최대 데이터 값
MTU(Maximum Transmission Unit)
:네트워크에서 한 번에 보낼 수 있는 데이터 크기로 2계층의 데이터 값으로 일반적인 이더넷에서 수용할 수 있는 크기는 1,500 바이트이다.
(1): 네트워크 인터페이스 카드는 결국 PC나 서버에서 네트워크를 연결해주는 카드나 인터페이스를 지칭하며 다음과 같은 경우가 있다.
⇒ 랜 카드라구 부른다. 과거에 이더넷은 LAN(Local Area Network)에서만 사용되다보니 네트워크 인터페이스 카드를 랜 카드라 부르게 되었다.
⇒ 물리 네트워크 인터페이스(Physical Network Interface)라 부른다. 물리적으로 컴퓨터의 내부와 외부를 연결해주는 중간지점이라는 의미.
⇒ 이더넷 카드(Ethernet Card)라고 부른다. 대부분의 네트워크가 이더넷으로 이뤄져있어 일반적인 네트워크 연결 시 이더넷을 연결하는 네트워크 인터페이스 카드가 사용되었기에 이더넷 카드라 명칭을 사용하기도 한다.
⇒ 네트워크 어댑터(Network Adapter)라 부르기도 한다.

다음 챕터로