SECTION 1 네트워크의 기초
네트워크: 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합
- 노드: 서버, 라우터, 스위치 등 네트워크 장치
- 링크: 유선 or 무선
1. 처리량과 지연 시간
좋은 네트워크: 처리량 ↑ 처리, 지연 시간 ↓, 장애 빈도 ↓, 좋은 보안 갖춘 네트워크
- 처리량(throughput)
- 링크 ~> 전달되는 단위 시간당 데이터양
- 단위: bps(bits per second) - 초당 전송 or 수신되는 비트 수
- 사용자들 ↑ 접속 -> 트래픽 ↑/ 네트워크 장치 간의 대역폭/ 네트워크 중간에 발생하는 에러/ 장치의 하드웨어 스펙 영향 받음
대역폭: 주어진 시간 동안 네트워크 연결 ~> 흐를 수 있는 최대 비트
- 지연 시간(latency)
- 요청이 처리되는 시간
- 어떤 메시지가 두 장치를 완복하는 데 걸린 시간
- 매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음
2. 네트워크 토폴로지와 병목 현상
네트워크 토폴로지(network topology)
노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태 의미
- 트리(tree) 토폴로지 = 계층형 토폴로지
- 트리 형태로 배치한 네트워크 구성
- (+) 노드의 추가/삭제 쉬움
- (-) 특정 노드에 트래픽 집중 -> 하위 노드에 영향 O
- 버스(bus) 토폴로지
- 중앙 통신 회선 하나에 여러 개의 노드가 연결돼 공유하는 네트워크 구성
- 근거리 통신망(LAN)에서 사용
- (+) 설치 비용 ↓, 신뢰성 ↑
- (+) 중앙 통신 회선에 노드 추가/삭제 쉬움
- (-) 스푸핑 가능
스푸핑: LAN 상에서 송신부의 패킷을 송신과 관련 X 다른 호스트에 가지 않도록 하는 스위칭 기능 마비 or 속임
-> 특정 노드에 해당 패킷이 오도록 처리하는 것
- 스타(star, 성형) 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
- (+) 노드 추가, 에러 탐지 쉬움/ 패킷의 충돌 발생 가능성 ↓
- (+) 어떤 노드에 장애 발생해도 쉽게 에러 발견, 장애 노드가 중앙 노드 X -> 다른 노드에 영향 ↓
- (-) 중앙 노드에 장애 -> 전체 네트워크 사용 X, 비용 ↑
- 링형(ring) 토폴로지
- 각각의 노드가 양 옆의 두 노드와 연결 -> 전체적으로 고리처럼 하나의 연속된 길을 통해 통신
- 데이터: 노드에서 노드로 이동/ 각각의 노드는 고리 모양 길을 통해 패킷 처리
- (+) 노드 수 ↑ -> 네트워크상 손실 거의 X, 충돌 발생되는 가능성 ↓, 노드의 고장 발견 쉬움
- (-) 네트워크 구성 변경 어려움, 회선에 장애 발생 -> 전체 네트워크에 영향
- 메시(mesh) 토폴로지 = 망형 토폴로지
- 그물망처럼 연결되어 있는 구조
- (+) 장애 발생해도 여러 개의 경로 존재 -> 네트워크 계속 사용 O, 트래픽 분산 처리 O
- (-) 노드 추가 어려움, 구축 비용과 운용 비용 ↑
병목 현상(bottleneck)
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
ex. 병의 몸통보다 병의 목 부분 내부 지름 좁아서 물이 상대적으로 천천히 쏟아지는 것
서비스에서 이벤트를 열었을 때 트래픽 ↑, 트래픽 관리 X -> 병목 현상 => 사용자 웹 사이트로 들어가지 못함
네트워크가 어떤 토폴로지 갖는지, 어떠한 경로로 이뤄졌는지 알아야 병목 현상 올바르게 해결
3. 네트워크 분류
규모를 기반으로 분류
- LAN(Local Area Network): 근거리 통신망
- 같은 건물 or 캠퍼스 같은 좁은 공간에서 운영
- 전송 속도 ↑, 혼잡 X
- MAN(Metropolitan Area Network): 대도시 지역 네트워크
- 도시 같은 넓은 지역에서 운영
- 전송 속도: 평균, LAN보다 혼잡
- WAN(Wide Area Network): 광역 네트워크
- 국가 or 대륙 같은 더 넓은 지역에서 운영
- 전송 속도 ↓, MAN보다 혼잡
4. 네트워크 성능 분석 명령어
네트워크 병목 현상의 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
-> 네트워크 관련 테스트 / 네트워크 무관 테스트 ~> 네트워크로부터 발생한 문제점인 것을 확인 후 네트워크 성능 분석
- `ping`(Packet INternet Groper)
- 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- 해당 노드의 패킷 수신 상태, 도달하기까지 시간 등 알 수 있음
- 해당 노드까지 네트워크가 잘 연결되어 있는지 확인
- TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작
- ICMP 프로토콜을 지원 X 기기 대상 X
- 네트워크 정책상 ICMP or traceroute를 차단하는 대상 X
- `netstat`
- 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트 보여줌
- 서비스의 포트가 열려 있는지 확인할 때 사용
- nslookup
- DNS에 관련된 내용을 확인하기 위해 사용하는 명령어
- 특정 도메인에 매핑된 IP를 확인하기 위해 사용
- 윈도우: `tracert` / 리눅스: `traceroute`
- 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어
- 목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 등 확인할 수 있음
`ftp`: 대형 파일 전송하여 테스팅
`tcpdump`: 노드로 오고가는 패킷을 캡처하는 명령어
네트워크 분석 프로그램: wireshark, netmon
5. 네트워크 프로토콜 표준화
네트워크 프로토콜
- 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
- 기업이나 개인이 발표 X IEEE or IETF 표준화 단체가 정함 O
- IEEE802.3: 유선 LAN 프로토콜
- 유선으로 LAN을 구축할 때 쓰이는 프로토콜
- 만든 기업이 다른 장치라도 서로 데이터 수신할 수 있음
- ex. HTTP
- 서로 약속된 인터페이스
- 웹 서비스를 기반으로 데이터를 주고 받을 수 있음
SECTION 2 TCP/IP 4계층 모델
인터넷 프로토콜 스위트(internet protocl suite): 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜의 집합
-> TCP/IP 4계층 모델로 설명 or OSI 7 계층 모델로 설명
1. 계층 구조
특정 계층이 변경되었을 때 다른 계층 영향 X
애플리케이션(application) 계층
FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
- FTP: 장치와 장치간의 파일을 전송하는 데 사용하는 표준 통신 프로토콜
- SSH: 보안 X 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP: World Wide Web을 위한 데이터 통신의 기초, 웹 사이트를 이용하는 데 쓰는 프로토콜
- SMTP: 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS: 도메인 이름과 IP 주소를 매핑해주는 서버
전송(transport) 계층
- 송신자와 수신자를 연결하는 통신 서비스 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공
- 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할
- TCP: 패킷 사이의 순서 보장/ 연결지향 프로토콜 사용 -> 신뢰성 구축 => 수신 여부 확인/ 가상회선 패킷 교환 방식
- UDP: 순서 보장 X/ 수신 여부 확인 X/ 단순히 데이터만 주는 데이터그램 패킷 교환 방식
- 가상회선 패킷 교환 방식
- 각 패킷에는 가상회선 식별자 포함, 모든 패킷 전송 -> 가상회선 해제
- 패킷들은 전송된 순서대로 도착하는 방식
- 데이터그램 패킷 교환 방식
- 패킷이 독립적으로 이동, 최적의 경로 선택
- 하나의 메시지에서 분할된 여러 패킷 -> 서로 다른 경로로 전송될 수 있음
- 도착한 순서가 다를 수 있는 방식
<TCP 연결 과정: 3-way handshake>
- SYN 단계: 클라이언트) 클라이언트의 ISN 담아 SYN 서버에 보냄
- ISN: 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호/ 장치마다 다를 수 있음
- SYN + ACK 단계: 서버) 클라이언트의 SYN 수신, 서버의 ISN 보냄, 승인번호(클라이언트의 ISN + 1)
- ACK 단계: 클라이언트) 승인번호(서버의 ISN + 1) -> ACK를 서버에 보냄
*SYN(SYNchronization): 연결 요청 플래그/ ACK(ACKnowledgement): 응답 플래그
/ ISN(Initial Sequence Nubmers): 초기 네트워크 연결을 할때 할당된 32비트 고유 시퀀스 번호
<TCP 연결 해제 과정: 4-way handshake>
- 클라이언트가 연결 닫으려고 할 때 FIN으로 설정된 세그먼트 보냄/ FIN_WAIT_1 상태, 서버 응답 기다림
- 서버) ACK 승인 세그먼트 -> 클라이언트에 보냄/ CLOSE_WAIT 상태/ 클라이언트) 세그먼트 받으면 FIN_WAIT_2 상태
- 서버) ACK 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트 보냄
- 클라이언트) TIME_WAIT 상태/ 다시 서버로 ACK 보냄 -> 서버) CLOSED 상태
/ 클라이언트) 어느 정도 시간 대기한 후 연결 닫히고 클라이언트와 서버의 모든 자원의 연결 해제
Q. 왜 일정 시간 뒤에 닫을까?
1. 지연 패킷이 발생할 경우 대비
패킷이 뒤늦게 도달, 이를 처리 X -> 데이터 무결성 문제(data integrity) 발생
데이터 무결성: 데이터의 정확성과 일관성을 유지하고 보증하는 것
2. 두 장치가 연결이 닫혔는지 확인하기 위해
IF. LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 LAST_ACK -> 접속 오류
인터넷(internet) 계층
- 장치로부터 받은 네트워크 패킷 -> IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터 전송
- 비연결형적인 특징
- 상대방이 제대로 받았는지에 대해 보장 X
링크 계층 = 네트워크 접근 계층
- 전선, 광섬유, 무선 등으로 실질적으로 데이터 전달
- 장치 간에 신호를 주고받는 규칙을 정하는 계층
- 물리 계층 / 데이터 링크 계층
- 물리 계층: 무선 LAN, 유선 LAN ~> 0과 1로 이뤄진 데이터를 보내는 계층
- 데이터 링크 계층: 이더넷 프레임 ~> 에러 확인, 흐름 제어, 접근 제어
<유선 LAN>
- IEEE802.3이라는 프로토콜 따르며 전이중화 통신 사용
- 전이중화(full duplex) 통신: 양쪽 장치가 동시에 송수신할 수 있는 방식
- 송신로/수신로 나눠서 데이터 주고받음, 현대의 고속 이더넷은 이 방식을 기반으로 통신
- CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
- 반이중화 통신 중 하나로 수신로/수신로 각각 X 한 경로를 기반으로 데이터 보냄 -> 데이터를 보낼 때 충돌에 대비
- 전이중화(full duplex) 통신: 양쪽 장치가 동시에 송수신할 수 있는 방식
- TCP 케이블이라고 하는 트위스트 페어 케이블과 광섬유 케이블이 대표적
- 트위스트 페어 케이블(twisted pair cable): 하나의 케이블처럼 보이지만 8개의 구리선을 2개씩 꼬아서 묶은 케이블
- 광섬유 케이블: 광섬유로 만든 케이블
- 레이저를 이용해서 통신 -> 구리선과 비교할 수 없을 만큼의 장거리 및 고속 통신 가능
- 보통 100Gbps의 데이터 전송, 광섬유 내부와 외부를 다른 밀도를 가지는 유리나 플라스틱 섬유로 제작
-> 한 번 들어간 빛이 내부에서 계속적으로 반사하며 전진 -> 반대편 끝까지 가는 원리 이용 - 빛의 굴절률 ↑ 부분: 코어(core) / ↓부분: 클래딩(cladding)
<무선 LAN>
- 수신과 송신에 같은 채널 사용 -> 반이중화 통신 사용
- 반이중화 통신(half duplex): 양쪽 장치는 서로 통신 O, 동시에 X/ 한 번에 한 방향만 통신
- CSMA/CA
- 와이파이(wifi): 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술
- 무선 접속 장치(AP; Access Point)가 있어야 함 = 공유기
- 유선 LAN에 흐르는 신호 -> 무선 LAN => 신호가 닿는 범위 내에서 무선 인터넷 사용할 수 있게 됨
- + 무선 LAN을 이용한 기술: 와이파이, 지그비, 블루투스 등
- 무선 접속 장치(AP; Access Point)가 있어야 함 = 공유기
- BSS(Basic Service Set): 기본 서비스 집합
- 단순 공유기 ~> 네트워크에 접속 X 동일 BSS 내에 잇는 AP들과 장치들이 서로 통신이 가능한 구조
- 근거리 무선 통신 제공, 하나의 AP만을 기반으로 구축
- 사용자) 한 곳에서 다른 곳으로 자유롭게 이동하며 네트워크 접속 X
- ESS(Extended Service Set): 하나 이상의 연결된 BSS 그룹
- 장거리 무선 통신 제공, BSS보다 ↑ 가용성, 이동성 지원
- 사용자) 한 장소에서 다른 장소로 이동하며 중단 X 네트워크에 계속 연결 O
- 장거리 무선 통신 제공, BSS보다 ↑ 가용성, 이동성 지원
<이더넷 프레임>
데이터 링크 계층은 이더넷 프레임 ~> 전달받은 데이터의 에러 검출, 캡슐화
- Preamble: 이더넷 프레임이 시작임을 알림
- SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
- DMAC, SMAC: 송신, 수신 MAC 주소
MAC 주소: 네트워크에 연결하기 위한 장치(LAN 카드)를 구별하기 위한 식별번호/ 6바이트(48비트) - EtherType: 데이터 계층 위의 계층인 IP 프로토콜 정의(IPv4/IPv6)
- Payload: 전달받은 데이터
- CRC: 에러 확인 비트
2. PDU(Protocl Data Unit)
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 대 한 덩어리의 단위
헤더(: 제어 관련 정보 포함) + 페이로드(: 데이터)
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
SECTION 3 네트워크 기기
1. 네트워크 기기의 처리 범위
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC, 리피터, AP
2. 애플리케이션 계층을 처리하는 기기
L7 스위치(= 로드밸런서)
여러 장비 연결, 데이터 통신 중재, 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비
- 서버의 부하를 분산하는 기기
- 클라이언트로부터 오는 요청 -> 뒤쪽의 서버로 나누는 역할, 시스템이 처리할 수 있는 트래픽 증가를 목표로 함
- IP, 포트, URL, 서버, 캐시, 쿠키 기반으로 트래픽 분산
- 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능
- 응용 프로그램 수준의 트래픽 모니터링
- 장애가 발생한 서버 O -> 트래픽 분산 대상에서 제외 => 정기적으로 헬스 체크(health check) 이용해서 감시
- 정상/비정상적인 서버 판별
- 전송 주기, 재전송 횟수 등 설정 -> 반복적으로 서버에 요청을 보내는 것
- 서버에 부하가 되지 않을 만큼 요청 횟수 적절해야 함
- TCP, HTTP 등 다양한 방법으로 요청, 요청 정상 -> 정상적인 서버
- ex. TCP 요청: 3-way handshake 정상 X -> 비정상적인 서버
- 장애가 발생한 서버 O -> 트래픽 분산 대상에서 제외 => 정기적으로 헬스 체크(health check) 이용해서 감시
<L4 스위치 vs. L7 스위치>
- 전송 계층을 처리하는 기기
- 스트리밍 관련 서비스에서 사용 X
- 메시지를 기반으로 인식 X
- IP와 포트 기반으로 트래픽 분산
L7 스위치를 이용한 로드밸런싱: ALB(Application Load Balancer) 컴포넌트
/ L4 스위치를 이용한 로드밸런싱: NLB(Network Load Balancer) 컴포넌트
<로드밸런서를 이용한 서버 이중화>
- 서비스를 안정적으로 운용 -> 2대 이상 서버 필수적
- 에러 발생 -> 서버 1대가 종료되더라도 서비스는 안정적으로 운용되어야 함
- 2대 이상의 서버를 기반으로 가상 IP 제공, 이를 기반으로 안정적인 서비스 제공
- ex. 로드밸런서가 제공한 가상 IP: 0.0.0.12010 에 사용자들이 접근
- 뒷단에 사용 가능한 서버인 0.0.0.12011, 0.0.0.12012를 기반으로 서빙
- 0.0.0.12011이란 서버에 장애가 발생해도 0.0.0.12012를 기반으로 안정적인 서비스 운용할 수 있음
- ex. 로드밸런서가 제공한 가상 IP: 0.0.0.12010 에 사용자들이 접근
3. 인터넷 계층을 처리하는 기기
라우터(router)
- 여러 개의 네트워크 -> 연결/분할/구분
- 다른 네트워크에 존재하는 장치끼리 서로 다른 데이터를 주고받을 때 패킷 소모 최소화, 경로 최적화
- -> 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비
- 소프트웨어 기반 라우팅
- 하드웨어 라우팅 -> L3 스위치(L2 스위치 기능 + 라우팅 기능)
4. 데이터 링크 계층을 처리하는 기기
L2 스위치
- 장치들의 MAC 주소 -> MAC 주소 테이블로 관리
- MAC 주소 테이블의 주소 일정 시간 이후 삭제하는 기능
- 연결된 장치로부터 패킷이 왔을 때 패킷 전송 담당
- IP 주소 이해 X -> IP 주소를 기반으로 라우팅 X
- 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할
- 목적지가 MAC 주소 테이블에 X -> 전체 포트에 전달
브리지(bridge)
- 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리 역할
- 장치에서 받아온 MAC 주소 -> MAC 주소 테이블로 관리
- 통신망 범위 확장, 서로 다른 LAN 등으로 이뤄진 하나의 통신망 구축할 때 사용
5. 물리 계층을 처리하는 기기
NIC(Network Interface Card)
- LAN 카드, 각각을 구분하기 위한 고유의 식별번호인 MAC 주소 있음(~= 주민등록번호)
- 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
- 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
리피터(repeater)
- 들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치
- 패킷이 더 멀리 갈 수 있게 함
- But, 광케이블 보급 -> 현재 잘 사용 X
AP(Access Point)
- 패킷을 복사하는 기기
- AP에 유선 LAN 연결 -> 다른 장치에서 무선 LAN 기술(와이파이 등) 사용 => 무선 네트워크 연결