1. 네트워크 구성도
- 홈 네트워크
[인터넷] - 케이블 - [모뎀] - 케이블 - [공유기] - 케이블/매체(무선 연결: 공기) - [노트북/스마트폰/태블릿/데스크톱] - 데이터 센터 네트워크
- 안정적이고 빠른 대용량 서비스 제공을 목표로 구성함
- 다양한 이중화 기술 사용, 많은 서버와 서비스가 한 네트워크에 연결돼 있어 높은 통신량 수용 가능해야 함
- 고속 이더넷 기술 사용됨 (40G, 100G, 400G)
- 과거에는 3계층 디자인이었지만 현재는 2계층 디자인(스파인-리프)으로 바뀜
2. 프로토콜
통신할 때의 규약
최근에는 이더넷-TCP/IP 기반 프로토콜들로 변경되고 있음
- 물리적 측면 : 데이터 전송 매체, 신호 규약, 회선 규격 등 (이더넷)
- 논리적 측면 : 장치끼리 통신하기 위한 프로토콜 규격 (TCP/IP)
대부분의 프로토콜이 2진수 비트 기반으로 만들어졌음
애플리케이션 레벨의 프로토콜은 문자 기반이 많이 사용되고 있음 - HTTP, SMTP
프로토콜 스택
- 별도 계층에서 동작하는 프로토콜인데 함께 사용되는 프로토콜 묶음
- TCP/IP 프로토콜 스택
(여기에 UDP, ICMP, ARP, HTTP, SMTP, FTP 같은 다양한 애플리케이션 레이어 프로토콜도 있음)
애플리케이션 계층 (Application) | FTP, SSH, TELNET, DNS, SNMP |
트랜스포트 계층 (Transport) | TCP, UDP |
네트워크 계층 (Network) | ICMP, IP, ARP |
데이터링크 계층 (Data Link) 피지컬 계층 (Physical) |
이더넷 (Ethernet) |
3. OSI 7계층과 TCP/IP
OSI 7계층
네트워크 동작을 나눠 이해하고 개발하는 데 많은 도움이 돼서 주요 레퍼런스 모델로 활용됨
현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 되어 있음
7계층 | 애플리케이션 계층 (Application) | 애플리케이션 계층 상위 계층 |
6계층 | 프레젠테이션 계층 (Presentation, 표현 계층) | |
5계층 | 세션 계층 (Session) | |
4계층 | 트랜스포트 계층 (Transport, 전송 계층) | 데이터 플로 계층 하위 계층 |
3계층 | 네트워크 계층 (Network) | |
2계층 | 데이터 링크 계층 (Data Link) | |
1계층 | 피지컬 계층 (Physical, 물리 계층) |
데이터 플로 계층 : 데이터를 상대방에게 잘 전달하는 역할 가짐
애플리케이션 개발자 : 하향식 형식 (Top-Down) 으로 네트워크 바라봄
네트워크 엔지니어 : 상향식 형식 (Bottom-Up) 으로 네트워크 인식함
TCP/IP 프로토콜 스택
TCP/IP는 이론보다 실용성에 중점을 둔 프로토콜
OSI 모델 | TCP/IP 모델 | |
애플리케이션 계층 (Application) | 애플리케이션 계층 상위 계층 |
애플리케이션 계층 |
프레젠테이션 계층 (Presentation, 표현 계층) | ||
세션 계층 (Session) | ||
트랜스포트 계층 (Transport, 전송 계층) | 데이터 플로 계층 하위 계층 |
트랜스포트 계층 |
네트워크 계층 (Network) | 인터넷 | |
데이터 링크 계층 (Data Link) | 네트워크 액세스 | |
피지컬 계층 (Physical, 물리 계층) |
TCP/IP 모델은 애플리케이션 개발자가 고려할 부분과 서버/네트워크 엔지니어가 고려할 부분이 더 잘 구분됨
현실에 쉽게 반영하도록 간단히 구분함
4. OSI 7계층별 이해하기
1계층 (피지컬 계층)
물리 계층
- 물리적 연결과 관련된 정보를 정의함
- 주로 전기 신호 전달함
- 주요 장비
- 허브, 리피터 : 네트워크 통신 중재하는 네트워크 장비
- 케이블, 커넥터 : 케이블
- 트랜시버 : 컴퓨터의 랜 카드와 케이블 연결하는 장치
- 탭 : 네트워크 모니터링, 패킷 분석을 위해 전기 신호를 다른 장비로 복제함 - 들어온 전기 신호를 잘 전달하는 것이 목적
- 전기 신호가 들어오면 재생성해 내보냄
- 주소의 개념이 없음 -> 전기 신호가 들어온 포트 제외하고 모든 포트에 같은 전기 신호 전송함
2계층 (데이터 링크 계층)
- 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리함
- 주소 정보 정의, 정확한 주소로 통신 되도록 하는 데 초점 맞춰짐
- 출발지, 도착지 주소를 확인하고 검사 후 데이터 처리를 수행함
- 주소 체계가 생김 -> 여러 통신 한번에 이뤄지는 것 구분하기 위한 기능 정의됨
- 전기 신호를 모아 데이터 형태로 처리함 (데이터에 대한 에러 탐지, 고치기 ㄱㄴ)
- 플로 컨트롤
받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업 - 네트워크 구성 요소
- 네트워크 인터페이스 카드
- 네트워크 인터페이스 컨트롤러 (NIC) - 고유 MAC 주소 있음
(네트워크 카드, 랜 카드, 물리 네트워크 인터페이스, 이더넷 카드, 네트워크 어댑터) - 동작 방식
- 전기 신호를 데이터 형태로 만듬
- 목적지 MAC 주소와 출발지 MAC 주소 확인
- 네트워크 인터페이스 카드의 MAC 주소 확인
- 목적지 MAC 주소 == 네트워크 인터페이스 카드가 갖고 있는 MAC
-> 데이터 처리, 아니면 데이터 폐기
- 네트워크 인터페이스 컨트롤러 (NIC) - 고유 MAC 주소 있음
- 스위치
- MAC 주소 보고 통신해야 할 포트 지정해 내보내는 능력 있음
- 단말(Terminal)이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득 과정에서 알 수 있음
- 이 데이터 기반으로 단말들이 통신할 때 포트 적절히 필터링, 정확한 포트로 포워딩 해줌
- 네트워크 전체에 불필요한 처리 감소하면서 이더넷 네트워크 효율성 크게 향상함
- 네트워크 인터페이스 카드
- MAC 주소 체계
서버 | 1. 데이터 전송 -> |
스위치 |
2. 스위치 혼잡 상황 발생, 포즈(Pause) 프레임 전송 | ||
<- 3. 포즈 프레임 수신 후 대기 |
- 2계층의 플로 컨트롤
3계층 (네트워크 계층)
172.31.0.1 (172.31 : 네트워크 주소 부분, 0.1 : 호스트 주소 부분)
- IP 주소와 같은 논리적인 주소 정의됨
(데이터 통신 시 물리적인 MAC 주소(2계층)와 논리적인 IP 주소(3계층) 사용됨) - 사용자가 환경에 맞게 변경해 사용 가능
- 네트워크 주소 부분, 호스트 주소 부분으로 나뉨
- 주소 나누는 구분점이 3개
- 라우터
- 3계층에서 정의한 IP 주소 이해 가능
- IP 주소 사용해 최적 경로 찾고 해당 경로로 패킷 전송하는 역할
4계층 (트랜스포트 계층)
- 해당 데이터들이 정상적으로 잘 보내지는지 확인하는 역할
(1,2,3계층은 신호, 데이터 올바른 위치로 보내고 실제 신호 잘 만들어 보내는데 집중함) - 패킷 유실되거나 순서 바뀌었을 때 바로잡아 줌
- 패킷 분할할 때 패킷 헤더에 보내는 순서, 받는 순서 적어 통신
-> 패킷 유실 시 재전성 요청, 순서 바뀔 시 바로잡기 ㄱㄴ - 시퀀스 번호 : 패킷에 보내는 순서 명시한 것
- ACK 번호 : 받는 순서 나타낸 것
- 포트 번호 : 장치 내의 많은 애플리케이션 구분 ㄱㄴ
- 장비
- 애플리케이션 구분자 (포트 번호), 시퀀스, ACK 번호 정보를 이용해 부하 분산, 보안 정책 수립해서 패킷 통과, 차단하는 기능 수행함
- 로드 밸런서, 방화벽
5계층 (세션 계층)
- 양 끝단의 프로세스가 연결 성립하게 도와줌, 연결 안정적으로 유지되게 관리, 작업 완료 후 연결 해지
- 세션 관리가 주요 역할
- TCP/IP 세션 만들고 없앰
- 에러로 중단된 통신에 대한 에러 복구, 재전송
6계층 (프레젠테이션 계층)
- 표현 방식이 다른 애플리케이션, 시스템 간의 통신 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능 수행
- MIME 인코딩, 암호화, 압축, 코드 변환
- 사용자 시스템의 응용 계층에서 데이터의 형식상 차이 다루는 부담 덜어줌
7계층 (애플리케이션 계층)
- 애플리케이션 프로세스 정의, 애플리케이션 서비스 수행
- 네트워크 소프트웨어 UI, 사용자 입출력 부분 정의
- 대표적인 프로토콜
- FTP, SMTP, HTTP, TELNET
계층별 주요 프로토콜 및 장비
계층 | 주요 프로토콜 | 장비 |
애플리케이션 계층 | HTTP, SMP, SMTP, STUN, TFTP, TELNET | ADC, NGFW, WAF |
프레젠테이션 계층 | TLS, AFP, SSH | |
세션 계층 | L2TP, PPTP, NFS, RPC, RTCP, SIP, SSH | |
트랜스포트 계층 | TCP, UDP, SCTP, DCCP, AH, AEP | 로드 밸런서, 방화벽 |
네트워크 계층 | ARP, IPv4, IPv6, NAT, IPSec, VRRP, 라우팅 프로토콜 | 라우터, L3 스위치 |
데이터 링크 계층 | IEEE 802.2, FDDI | 스위치, 브릿지, 네트워크 카드 |
피지컬 계층 | RS-232, RS-449, V.35, S 등의 케이블 | 케이블, 허브, 탭(TAP) |
5. 인캡슐레이션과 디캡슐레이션
인캡슐레이션 : 상위 -> 하위 데이터 보냄 (물리 계층->전기 신호 형태로 네트워크 통해 신호 보냄)
디캡슐레이션 : 받는 쪽에서 다시 하위 -> 상위 데이터 보냄
- 현재 네트워크는 대부분 패킷 기반 네트워크
- 데이터를 패킷이라는 작은 단위로 쪼개 보냄
- 이 기법으로 하나의 통신이 회선 전체 점유하지 않고 동시에 여러 단말 통신하게 해줌
- 데이터 패킷으로 쪼개고 네트워크 이용해 목적지로 보냄, 받는 쪽에서 패킷을 큰 데이터 형태로 결합해 사용함
- 인캡슐레이션 (보낼 때)
- 애플리케이션에서 데이터 플로 계층(1~4)으로 데이터 내려보내면서 패킷에 데이터 넣을 수 있게 분할하는 과정
- 4계층부터 네트워크 전송 위한 정보를 헤더에 붙여 넣음
- (4,3,2 계층에서 각각 필요한 정보 추가, 비트 단위)
- 2계층에서 정보 추가 후 전기 신호로 변환해 수신자에게 전송함
- 디캡슐레이션 (받을 때)
- 받은 전기 신호를 데이터 형식으로 만들어 2계층으로 올려보냄
- 2계층에서는 송신자가 작성한 헤더 정보 확인 (목적지가 자기가 아니면 버림 (랜 카드가 담당))
- 3계층에서 헤더 정보 확인 후 자기에게 온 것이면 3계층 헤더 정보 제거 후 4계층으로 보냄
- 4계층도 같은 과정으로 애플리케이션에 데이터 올려줌
- 2가지 정보 흐름
- 인,디캡슐레이션 통해 데이터 전송되는 과정
- 각 계층 헤더 이용해 송신자와 수신자 계층 간의 논리적 통신 과정
- 실제 데이터는 상위 -> 하위 계층, 하위 -> 상위 계층 으로 전달됨, 헤더 정보는 각 계층끼리 전달됨
- 헤더에 포함되어야 하는 정보
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자
- TCP/IP 헤더 예시
- TCP (4계층) : 시퀀스, 애크, 번호 필드로 데이터 표현
- 3계층 헤더 : 출발지, 도착지 IP 주소
- 2계층 헤더 : MAC 정의함 - 출발지, 도착지 MAC 주소
- 디캡슐레이션 할 때 헤더 정보가 없다면 어떤 상위 프로토콜로 보내야 할지 알 수 X
-> 인캡슐레이션 할 때 헤더에 상위 프로토콜 지시자 정보 포함해야 함 - 상위 프로토콜 지시자 (동작하는 계층보다 한 계층 위의 정보 적혀 있음)
- 4계층 : 포트 번호 (애플리케이션에서 프로토콜 종류 나타내주는 정보)
- 3계층 : 프로토콜 번호
- 2계층 : 이더 타입
- MSS & MTU (데이터 크기 조절)
- MSS : 네트워크에서 수용할 수 있는 크기 역산정해 데이터가 4계층으로 내려올 때 적절 크기로 쪼개질 수 있도록 유도하는 값
2계층 데이터 값 - MTU : 네트워크에서 한 번에 보낼 수 있는 데이터 크기
4계층에서 가질 수 있는 최대 데이터 값
2계층에서 2계층 헤더 크기 제외한 데이터 크기를 MTU라고 부름
- MSS : 네트워크에서 수용할 수 있는 크기 역산정해 데이터가 4계층으로 내려올 때 적절 크기로 쪼개질 수 있도록 유도하는 값