[ 학습 목표 ]
- 네트워크의 물리적인 연결 기술 및 구성 요소
- 네트워크 이론적 기반이 되는 OSI 7계층
- 패킷이 실제로 전송되는 인캡슐레이션/디캡슐레이션 과정

1.1 네트워크 구성도 살펴보기
- 네트워크는 크게 서비스를 받는 입장과 서비스를 제공하는 입장으로 구분
1.1.1 홈 네트워크
- 구성요소
- 모뎀, 공유기, 단말(노트북, 스마트폰, 태블릿, 데스크톱 등)
- 물리적 연결 방법
- 무선 연결 : 무선 랜 카드와 무선 신호를 보낼 수 있는 매체(공기)가 필요
- 유선 연결 : 유선 랜 카드(=이더넷 랜 카드), 랜 케이블(=랜선)이 필요
1.1.2 데이터 센터 네트워크
- 데이터 센터 네트워크는 안정적이고 빠른 대용량 서비스 제공을 목표로 구성
- 이를 위해 다양한 이중화 기술을 사용해야 하며, 높은 통신량을 수용할 수 있어야만 함
- 이런 조건을 만족하기 위해 10G, 25G, 40G, 100G, 400G와 같은 고속 이터넷 기술 사용
- 기존엔 3계층 구성이 일반적이었지만, 가상화 기술과 높은 대역폭을 요구하는 스케일아웃 기반의 애플리케이션과 서비스가 등장하면서 2계층 구성인 스파인-리프 구조로 변화

💡 계층적 디자인 VS 스파인-리프 구조
- 계층적 네트워크 구조
: 전통적인 네트워크 디자인인 캠퍼스 네트워크와 같이 단말의 트래픽이 외부영역으로 이동하기 위해 코어 영역으로 집중(North-South 트래픽)되는 환경에서 효율적
: 각 지역간 링크를 최소화하고 두대의 장비가 각 Layer에 이중화로 구성되어 Fail-Over 수행
: 성능 개선을 위해선 트래픽이 집중되는 코어와 분산 스위치의 업그레이드 필요(Scale-Up)
- 스파인-리프 구조 (Spine-Leaf)
: Spine-Leaf 구조는 데이터센터의 트래픽이 수직적(North-South)에서 수평적(East-West / 서버 간 통신 증가)으로 변화되는 것을 효과적으로 대응하기 위해 적용
: 성능 개선을 위해서는 트래픽 분산을 위해 SPINE 스위치를 추가연결하는 구조(Scale-Out)
: SPINE-LEAF 구조는 CLOS 네트워크와 동일한 구조
: 작은 포트수의 고정형 스위치로 non-blocking 기반의 대규모 네트워크 패브릭 구축가능
💡 서버확장을 위한 2가지 방법 : 스케일 아웃 & 스케일 업
- 스케일 아웃 (Scale-Out)
: 서버를 여러 대 추가하여 시스템을 확장하는 방법
: 각 서버에 걸리는 부하를 균등하게 해주는 ‘로드밸런싱’이 필수적으로 동반되어야 함
: 서버 한 대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능
: 반면 모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터 변화가 적은 ‘웹 서버’에 적합한 방식
- 스케일 업 (Scale-Up)
: 서버에 CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법
: 서버에 추가 부품을 장착할 수 있는 여유 슬롯이 있어야 함
: 여유 슬롯이 없는 경우, 서버 자체를 고성능으로 교체하는 방법으로 확장 가능
: 서버 한 대에 모든 부하가 집중되므로 장애 시 영향을 크게 받을 수 있는 위험성이 있음
: 한 대의 서버에서 모든 데이터를 처리하므로 데이터 갱신이 빈번하게 일어나는 ‘데이터베이스 서버’에 적합한 방식
1.2 프로토콜
-
프로토콜(Protocol)
- 사전에 정해 놓은 순서
- 통신 프로토콜 : 컴퓨터가 서로 통신하기 위해 정한 규약
-
발전 역사
: 네트워크 서비스들이 처음 개발되었던 1900년대의 적은 컴퓨팅 자원과 매우 느린 네트워크 속도를 이용해 최대한 효율적으로 통신하는것이 목표로 구현되다 보니,대부분의 프로토콜이 문자가 아닌 2진수 비트 기반으로 만들어짐.
: 최소한의 비트로 내용을 전송하기 위해 매우 치밀하게 서로 간의 약속을 정의
: 애플리케이션 레벨의 프로토콜은 비트 기만이아닌 문자 기반 프로토콜들이 많이 사용
(ex. HTTP, SMTP 등)
: 최근에는 복잡하고 산재되어 있는 여러 가지 프로토콜 기술이 이더넷-TCP/IP 기반 프로토콜들로 변경되고 있는 추세
-
규정 요소
: 물리적 측면 : 데이터 전송 매체,신호 규약, 회선 규격 등. 이더넷이 널리 쓰임
: 논리적 측면 : 장치들끼리 통신하기 위한프토코몰 규격. TCP/IP가 널리 쓰임
💡 프로토콜 스택
: 별도 계층에서 동작하는 프로토콜이지만 함께 사용하는프로토콜 묶음
: 데이터 통신에 활용되는 프로토콜의 구조에 관한 개념으로 계층화된 구조로 모여 있는 프로토콜의 집합으로, 프토토콜 슈트(Protocol Suite) 또는 프로토콜 패밀리(Protocol Family)라 불리기도 한다.
1.3 OSI 7계층과 TCP/IP
1.3.1 OSI 7계층
- OSI 7계층 모델
- OSI(Open Systems Interconnection)라는 통신 규약을 만들 때 고안된 OSI 통신 기능을 7개의 계층으로 나눈 것
- OSI 자체는 현재 사용되고 있지 않지만, 다양한 분야에서 공통적으로 잠조할 수 있는 '참조 모델'로 현재도 사용되고 있음
- 참조 모델이 되면서 엔지니어가 서로 공용할 수 있는 공통 언어 역할도 함
- 계층별로 표준화된 프르토콜 템플릿을 개발하는 대신 계층별로 프로토콜을 개발해 네트워크 구성 요소들을 모듈화하여 사용

1.3.2 TCP/IP 프로토콜 스택

[ TCP/IP 프로토콜 스택 구성 ]

1.4 OSI 7계층별 이해하기
1.4.1 1계층 (피지컬 계층)
- 물리적 연결과 관련된 정보를 정의
- 주로 전기 신호를 전달하는 데 초점
- 주요 장비
- 허브(Hub), 리피터(Repeater) : 네트워크 통신을 중재하는 네트워크 장비
- 케이블(Cable), 커넥터(Connector) : 케이블
- 트랜시버(Tranceiver) : 컴퓨터의 랜 카드와 케이블을 연결하는 장치
- 탭(TAP) : 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복재하는 장치
- 들어온 전기 신호를 그대로 잘 전달하는 것이 1계층의 목적
- 전기 신호가 1계층 장비에 들어오면 이 신호를 재생성하여 내보냄
- 1계층 장비는 주소 개념이 없으므로, 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호 전송
1.4.2 2계층 (데이터-링크 계층)
-
전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리
-
주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는데 초점
-
출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지, 또는 내가 처리해야 하는지에 대해 검사한 후 데이터 처리 수행
-
데이터에 대한 에러를 탐지하거나 고치는 역할 수행 가능
-
이더넷 기반 네트워크의 2계층에서는 에러를 탐지하는역할만 수행
-
플로 컨트롤 (Flow Control) : 주소 체계가 생겨나므로 여러 명과 통신할 수 있게 되는데, 무작정 데이터를 던지는 것이아니라, 받는 사람이 현재 데이터를 받을수 있는지 확인하는 작업

-
2계층의 가장 주요한 특징은 'MAC 주소' 체계가 존재한다는 것
-
구성 요소
- 네트워크 인터페이스 카드
: PC나 서버에서 네트워크를 연결해주는 카드나 인터페이스 지칭
: 고유 MAC 주소를 가짐
= 네트워크 인터페이스 컨트롤러 = NIC
= 네트워크 카드
= 랜 카드
= 물리 네트워크 인터페이스
= 이더넷 카드
= 네트워크 어뎁터
- 스위치(Switch) : MAC 주소를보고 통신해야 할 포트를 지정해 내보내는 능력
: 스위치는 주소 습득(Address learning)과정을 통해 단말이 어떤 MAC주소인지, 연결포트는 무엇인지 알 수 있다.
: 이 데이터를 기반으로 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩
: 스위치의 필터링과 포워딩 기능으로 불필요한 처리가 감소하면서 이더넷 네트워크 효율성이 크게 향상되어 이더넷 기반 네트워크가 급증하는 계기가 됨.

- 입력되는 전기 신호를 데이터 형태로 변환.
- 데이터에서 도착지 MAC 주소 확인
- 네트워크 인터페이스 카드의 MAC 주소 확인
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재, 주소가 틀릴 경우 데이터 폐기
1.4.3 3계층 (네트워크 계층)
- IP주소와 같은 논리적인 주소가 정의 됨
- 3계층을 이해하는 장비나 단말은 네트워크 주소 정보를 이용해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고 원격지 네트워크를 가려면 어디로 가야 하는지 경로를 지정하는 능력이 있음
- 구성 장비
- 라우터(Router) : IP 주소를 이용해 최적의 경로를 찾아주고, 해당 경로로 패킷을 전송하는 역할
IP 주소
- 사용자가 환경에 맞게 변경해 사용할 수 있는 주소
- 네트워크 주소 부분과 호스트 주소 부분으로 구성됨
- 구분점 3개로 주소가 나뉘어 짐
1.4.4 4계층 (트랜스포트 계층)
- 실제로 데이터들이 정상적으로 잘 보내지도록 확인하는 역할
- 패킷이 유실되거나 순서가 바뀌었을 때 바로잡아 주는 역할 담당 by using 시퀀스번호, ACK번호
- 시퀀스 번호 (Sequence Number) : 패킷 해더에 보내는 순서를 명시한 것
- ACK 번호 (Acknowledgement Number) : 받는 순서를 나타낸 것
- 포트 번호 (Port Number) 를 사용해 상위 애플리케이션 구분
- 구성 장비
- 로드 밸런서 : 포트번호, 시퀀스, ACK 번호를 이용해 부하 분산
- 방화벽 : 보안 정책을 수립해 패킷을 통과, 차단하는 기능 수행
1.4.5 5계층 (세션 계층)
- TCP/IP 세션을 만들고 없애는책임을 지는 역할
- 에러로 중단되 통신에 대한 에러 복구와 재전송도 수행
1.4.6 6계층 (프레젠테이션 계층)
- 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 톱기 위해 하나의 통일된 구문 형식으로 변환시키는 기능 수행
- 사용자 시스템의 응용 계층에서 데이터의 형식상 차이를 다루는 부담을 줄임
- MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작 수행
1.4.1 7계층 (애플리케이션 계층)
- 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행
- 네트워크 소프트웨어의 UI 부분이나 사용자 IO부분 정의
- 대표적인 프로토콜로 PTP, SMTP, HTTP, TELNET이 존재
1.5 인캡슐레이션과 디캡슐레이션

패킷 기반 네트워크
- 데이터를 패킷 단위로 쪼개 전달
- 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신 하도록 기능함
인캡슐레이션 (Encapsulation)
- 상위 계층에서 하위 계층으로 데이터를 보내면서 물리 계층(f랜 카드)에서 전기 신호 형태로 네트워크를 통해 신호를 보내는 과정
- 네트워크 상황을 고려해 적절한 크기로 데이터 분할하여 패킷 생성
- 4계층, 3계층, 2계층에서 각각 자신이 필요한 정보를 비트 단위로 추가
디캡슐레이션 (Decapsulation)
- 전기 신호를 받아 데이터화하여 하위계층에서 상위계층으로 전달하는 과정
- 1계층에서 전기 신호를 데이터화 하여 2계층으로 전달
- 2계층 헤더에 포하된 정보를 확인하여 목적지가 자신이 맞는지 확인
: 맞을 경우, 2계층 해더 정보를 벗겨낸 뒤, 3계층으로 전달
: 아닐 경우, 랜 카드가 데이터 폐기
- 3계층의 헤더 정보 확인 후, 3계층 헤더를 벗겨낸 뒤 4계층 전달
(반복하여 애플리케이션단까지 전달)
🚨헤더에 반드시 정의되어야 하는 사항🚨
- 현재 계층에서 정의하는 정보
- 4계층 : 시퀀스 번호, ACK 번호
- 3계층 : 출발지, 도착지 IP 주소 정보
- 2계층 : 출발지, 도착지 MAC 주소
- 상위 프로토콜 지시자 정보
- 프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아지는데, 헤더에 아무 정보가 없으면 디캡슐레이션시 어떤 상위 프로토콜로 전달해야할 지 결정할 수 없는 문제 발생
- 4계층 : 포트 번호 (애플리케이션 계층의 프로토콜 종류 지정)
- 3계층 : 프로토콜 번호
- 2계층 : 이더 타입
