네트워크란?
노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합
- 노드: 서버, 라우터, 스위치 등 네트워크 장치를 의미
- 링크: 유선, 무선을 의미
처리량
- 처리량은 링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼마 큼의 트래픽을 처리했는지를 나타냄
- 단위는 bps를 사용함 - 초당 전송 또는 수신되는 비트 수
- 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙 등에 영향을 받음
지연 시간
지연 시간은 요청이 처리되는 시간을 의미함
네트워크 토폴로지
네트워크 토폴로지는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미
- 트리 토폴로지: 트리 형태로 배치한 네트워크 구성
- 노드의 추가, 삭제가 쉬움
- 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음
- 버스 토폴로지: 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성. LAN에서 사용
- 설치 비용이 적고 신뢰성이 좋음.
- 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉬움
- 스푸핑이 가능하다는 문제점이 있음
- 스푸핑: LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시켜 해당 패킷이 오도록 처리하는 것
- 스타 토폴로지: 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 노드를 추가하거나 에러를 탐지하기 쉽고 패킷의 충돌 발생 가능성이 적음
- 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없음
- 링형 토폴로지: 각가의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 연결된 구성
- 데이터는 노드에서 노드로 이동함.
- 노드 수가 증가되어도 네트워크상의 손실이 거의 없고 충돌이 발생되는 가능성이 적음
- 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 끼칠 수 있음
- 메시 토폴로지: 그물망처럼 연결되어 있는 구조
- 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용가능.
- 트래픽 분산처리 가능
- 노드의 추가가 어렵고 고비용
토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문이다.
병목 현상
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말함.
네트워크 분류
- LAN: 근거리 통신망을 의미(캠퍼스정도). 전송 속도가 빠르고 혼잡하지 않음
- MAN: 대도시 지역 네트워크. 전송 속도는 평균이며 LAN보다는 혼잡함
- WAN: 광역 네트워크(국가, 대륙) 전송 속도는 낮으며 MAN보다 혼잡함
네트워크 성능 분석 명령어
네트워크 병목 현상의 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
ping: 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령. 이를 통해 수신 상태 및 도달 시간을 알 수 있음
netstat: 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용. 주로 서비스의 포트가 열려있는지 확인할 때 씀
nslookup: DNS 관련 내용을 확인하기 위해 쓰는 명령어
tracert: 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어
네트워크 프로토콜 표준화
다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
서로 약속된 인터페이스인 HTTP라는 프로토콜을 통해 노드들은 웹 서비스를 기반으로 데이터를 주고받을 수 있음
TCP/IP 4 계층 모델
TCP/IP 계층은 OSI 7 계층과 많이 비교함.
애플리케이션 계층
FTP, HTTP, SSH, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일등 서비스를 질실적으로 사람들에게 제공하는 층이다.
전송 계층
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공
애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계역할을 함 대표적으로 TCP, UDP가 있음
TCP: 연결지향 프로토콜을 사용해서 연결을 하여 신뢰성을 구축해서 수신 여부를 확인하는 "가상회선 패킹 교환 방식"을 사용함
UCP: 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 "데이터그램 패킷 교환 방식"을 사용함
가상회선 패킷 교환 방식
각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 전송된 "순서대로" 도착
데이터그램 패킷 교환 방식
패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 "순서가 다를 수"있는 방식을 뜻함
TCP 연결 성립 과정
3-way handshake라는 작업을 진행함.
1. SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄. ISN은 새로운 TCP연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있음
2. SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다.
3. ACK 단계: 클라이언트는 서버의 ISN + 1 한 값인 승인번호를 담아 ACK를 서버에 보낸다.
- SYN: SYNchronization의 약자, 연결 요청 플래그
- ACK: ACKnowledgement의 약자, 응답 플래그
- ISN: Initial Sequence Numbers의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호
TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며 UDP는 이 과정이 없다.
TCP 연결 해제 과정
4-way-handshake 과정이 발생한다.
1. 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보낸다. 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다린다.
2. 서버는 클라이언트로 ACK라는 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT 상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어간다.
3. 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보낸다.
4. 클라이언트는 TIME_AIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 된다. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다.
그냥 연결을 닫으면 되지 왜 TIME_WAIT으로 상태를 변경할까?
1. 지연 패킷이 발생한 경우를 대비하기 위함. 패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제가 발생함.
2. 두 장치가 연결이 닫혔는지 확인하기 위함. 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타남.
인터넷 계층
장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층이다. IP, ARP, ICMP
패킷을 수색해야 할 상대의 주소를 지정하여 데이터를 전달함.
상대방이 제대로 받았는지에 대한 보장하지 않는 비연결형적인 특징이 있음
링크 계층
전선, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층
이를 물리 계층과 데이터 링크 계층으로 나누기도 함.
물리 계층: 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
데이터 링크 계층: 이더넷 프레임을 통해 에러확인, 흐름 제어, 접근 제어를 담당하는 계층
전이중화 통신
유선 LAN: 유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며 전이중화 통신을 사용
양쪽 장치가 동시에 송수신할 수 있는 방식을 말함.
반이중화 통신
무선 LAN: 수신과 송신에 같은 채널을 사용하기 때문에 반이중화 통신을 사용함
양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식을 말함.
CSMA/CD
이전에는 유선 LAN에 반이중화 통신인 CSMA/CD방식을 썼음.
이 방식은 데이터를 보낸 이후 충돌이 발생한다면 일정 시간 이후 재전송하는 방식임.
송수신 경로를 각가 둔 것이 아니고 한 경로를 기반으로 데이터를 보내기에 충돌에 대비해야 했음.
CSMA/CA
반이중화 통신 중 하나로 장치에 데이터를 보내기 전에 캐리어 감지등으로 사전에 가능한 충돌을 방지하는 방식
1. 데이터를 송신하기 전에 무선 매체를 살핌
2. 캐리어 감지: 회선이 비어있는지를 판단
3. IFS: 랜덤 값을 기반으로 정해진 시간만큼 기다리며, 만약 무선 매체가 사용 중이면 점차 그 간격을 늘려가며 기다림
4. 이후에 데이터를 송신함.
와이파이
와이파이는 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술.
이를 사용하려면 무선 접속 장치가 있어야 함. 이를 흔히 공유기라고 함
이를 통해 유선 LAN에 흐르는 신호를 무선 LAN 신호로 바꿔주어 신호가 닿는 범위 내에서 무선 인터넷을 사용할 수 있게 됨
BSS
기본 서비스 집합을 의미.
동일 BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조를 말함.
근거리 무선 통신을 제공하고 하나의 AP만을 기반으로 구축이 되어 있어 사용자가 한 곳에서 다른 곳으로 자유롭게 이동하며 네트워크에 접속하는 것이 불가능함.
ESS
하나 이상의 연결된 BSS 그룹
장거리 무선 통신을 제공하며 BSS보다 더 많은 가용성과 이동성을 지원함
즉 사용자는 한 장소에서 다른 장소로 이동하며 중단 없이 네트워크에 계속 연결할 수 있음
이더넷 프레임
데이터 링크 계층은 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화하며 아래와 같은 구조를 가짐
- Preamble: 이더넷 프레임이 시작임을 알림
- SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
- DMAC, SMAC: 수신, 송신 MAC 주소
- EtherType: 데이터 계층 위의 계층인 IP 프로토콜을 정의 ex) IPv4, IPv6
- Payload: 전달받은 데이터
- CRC: 에러 확인 비트
계층 간 데이터 송수진 과정
사용자가 컴퓨터를 통해 다른 컴퓨터로 데이터를 요청하면 다음과 같은 과정이 일어난다.
애플리케이션 계층에서 전송 계층으로 요청값들이 캡슐화되고 다시 링크 계층을 통해 서버와 통신을 하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비 캡슐화 과정을 거쳐 데이터가 전송된다.
캡슐화 과정
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
비캡슐화 과정
하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정
프레임화 된 데이터는 패킷화, 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어난다.
그 이후 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달된다.
PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 PDU(Protocol Data Unit)이라 함
PDU는 제어 관련 정보들이 포함된 헤더와 데이터를 의미하는 페이로드로 구성되어 있으며 계층마다 부르는 명칭이 다름
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임, 비트
PDU 중 아래 계층인 비트로 송수신하는 것이 모든 PDU 중 가장 빠르고 효율성이 높다.
하지만 애플리케이션 계층에서는 문자열을 기반으로 송수신하는데, 헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문이다.
네트워크 기기
네트워크 기기는 계층별로 처리 범위를 나눌 수 있다.
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC, 리피터, AP
애플리케이션 계층을 처리하는 기기
애플리케이션 계층을 처리하는 기기로는 L7 스위치가 있다.
L7 스위치
스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신고를 보내 데이터를 전송하는 통신 네트워크 장비이다.
- L7 스위치는 로드밸런서라고도 하며, 서버의 부하를 분산하는 기기이다.
- 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 하며 시스템이 처리할 수 있는 트래픽 증가를 목표로 한다.
- URL, 서버, 캐시, 쿠키 들음 기반으로 트래픽을 분산한다.
- 또한. 바이러스, 불필요한 외부 테이터 등을 길러내는 필터링 기능 또한 가지고 있으며 응용 프로그램 수준의 트래픽 모니터링도 가능하다.
- 만약 장애가 발생한 서버가 있다면 이를 트래픽 분산 대상에서 제외해야 하는데, 이는 정기적으로 헬스 체크(health check)를 이용하여 감시하면서 이루어진다.
L4스위치와 L7 스위치 차이
- 로드밸런서로는 L7 스위치뿐만 아니라 L4 스위치도 있다.
- L4 스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로(특히 포트를 기반으로) 트래픽을 분산한다.
- 반면 L7 로드밸런서는 IP, 포트 외에도 URL, HTTP 헤더, 쿠키 등을 기반으로 트래픽을 분산한다.
- 클라우드 서비스(AWS 등)에서 L7 스위치를 이용한 로드밸런싱은 ALB(Application Load Balancer) 컴포넌트로 하며, 14 스위치를 이용한 로드밸런싱은 NLB(Network Load Balancer) 컴포넌트로 한다.
헬스 체크
- L4 스위치 또는 L7 스위치 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별하는데, 헬스 체크는 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것을 말한다.
- 이때 서버에 부하가 되지 않을 만큼 요청 횟수가 적절해야 한다.
- TCP, HTTP 등 다양한 방법으로 요청을 보내며 이 요청이 정상적으로 이루어졌다면 정상적인 서버로 판별한다.
- 예를 들어 TCP 요청을 보냈는데 3-way handshake 정상적으로 일어나지 않았다면 비정상을 뜻한다.
로드밸런서를 이용한 서버 이중화
로드밸런서는 대표적인 기능으로 서버 이중화가 있다.
에러가 발생하여 서버 1대가 종료되면 다른 서버로 트래픽을 관리한다.
인터넷 계층을 처리하는 기기
인터넷 계층을 처리하는 기기로는 라우터, L3 스위치가 있다.
라우터
라우터는 여러 개의 네트워크를 연결, 분할, 구분시켜 주는 역할을 한다.
다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비이다.
L3 스위치
L2의 스위치의 기능과 라우팅 기능을 갖춘 장비이다. L3를 라우터라고 해도 무방
라우터는 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나눠지고 하드웨어 기반의 라우팅을 담당하는 장치가 L3 스위치이다.
구분 | L2 스위치 | L3 스위치 |
참조테이블 | MAC 주소 테이블 | 라우팅 테이블 |
참조 PDU | 이더넷 프레임 | IP 패킷 |
참조 주소 | MAC 주소 | IP 주소 |
데이터 링크 계층을 처리하는 기기
데이터 링크 계층을 처리하는 기기로는 L2 스위치와 브리지가 있다.
L2 스위치
장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
IP 주소를 이해하지 못하여 IP 주소를 기반으로 라우팅이 불가능하다.
단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다.
목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하고 MAC 주소 테이블의 주소는 일정 시간 이후 삭제하는 기능도 있음
브리지
두 개의 LAN을 상호 접속할 수 있도록 하는 통신망 연결 장치이다.
포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리
물리 계층을 처리하는 기기
물리 계층을 처리하는 기기는 NIC, 리피터, AP가 있다.
NIC
LAN카드라고 하는 네트워크 인터페이스 카드는 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용한다.
네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드이다.
고유의 식별번호인 MAC주소를 가지고 있음
리피터
들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치이다.
이를 통해 패킷을 더 멀리 갈 수 있지만, 현재는 광케이블의 보급으로 인해 잘 사용되지 않음
AP
패킷을 복사하는 기기이다.
AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술을 사용하여 무선 네트워크 연결을 할 수 있다.
IP 주소
ARP
컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다.
ARP(Address Resolution Protocol)란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜이다.
ARP: 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환
RARP: 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환
1. 장치 A가 ARP요청 브로드캐스트를 보내서 IP 주소에 해당하는 MAC 주소를 찾는다.
2. 해당 주소가 맞는 장치인 B가 ARP 응답 유니캐스트를 통해 MAC주소를 반환하는 과정을 거쳐 IP 주소에 맞는 MAC 주소를 찾게 된다.
- 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
- 유니캐스트: 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식
홉바이홉 통신
IP 주소를 통해 통신하는 과정을 홉바이홉 통신이라 한다.
통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 네이밍이다.
서브 네트워크 안에 있는 라우터의 라우팅 테이블 IP를 기반으로 패킷을 전달하고 또 전달해 나가며 라우팅을 수행하며 최종 목적지까지 패킷을 전달한다.
라우팅: IP 주소를 찾아가는 과정
라우팅 테이블
송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 리스트를 뜻한다.
게이트웨이
서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어이다.
사용자가 인터넷에 접속하기 위해 수많은 게이트웨이를 거쳐야 한다.
이때 게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해 주는 역할을 한다.
IP 주소 체계
IP 주소는 IPv4와 IPv6로 나뉜다.
IPv4는 32비트를 8비트 단위로 점을 찍어 표기한다.
IPv6는 64비트를 16비트 단위로 점을 찍어 표기한다.
클래스 기반 할당 방식
IP 주소 체계는 발전해오고 있으며 처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 방식을 사용했다.
A, B, C는 일대일 통신으로 사용되고 클래스 D는 멀티캐스트 통신, 클래스 E는 앞으로 사용할 예비용으로 사용된다.
맨 왼쪽에 있는 비트를 구분 비트라고 한다. 즉 A의 경우 맨 왼쪽에 있는 비트가 0이다.
B는 10이고 C는 110이다. 클래스 A가 가질 수 있는 IP 범위는 0.0.0.0 ~ 127.255.255.255이다.
네트워크의 첫 번째 주소는 네트워크 주소로 사용되고 마지막 주소는 브로드 캐스트용 주소로 네트워크에 속해있는 모든 컴퓨터에 데이터를 보낼 때 사용된다.
예를 들면 클래스 A로 12.0.0.0이란 네트워크를 받으면 첫 번째 주소인 12.0.0.0은 네트워크 구별 주소로 사용되고 12.255.255.255는 브로드캐스트용으로 사용된다. 즉 12.0.0.1 ~ 12.255.255.254를 컴퓨터에 부여할 수 있는 호스트주소로 사용할 수 있다.
이 방식은 사용하는 주소보다 버리는 주소가 많다는 단점이 있어 이를 해결하기 위해 DHCP, IPv6, NAT가 나왔다.
DHCP
IP주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다.
이 기술을 통해 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.
NAT
패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP주소를 다른 주소로 매핑하는 방법이다.
IPv4 주소 체계만으로 많은 주소들을 모두 감당하지 못하는 단점이 있는데, 이를 해결하기 위해 NAT으로 공인 IP와 사설 IP를 나눠서 많은 주소를 처리한다.
NAT를 쓰는 이유는 주로 여러 대의 호스트가 하나의 공인 IP를 사용하여 인터넷에 접속하기 위함이다.
NAT를 이용하면 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도 보안이 가능하다.
NAT는 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다.
HTTP
HTTP/1.0
기본적으로 한 연결당 하나의 요청만 처리하도록 설계됨
서버로부터 파일을 가져올 때마다 TCP의 3-wayhandshake를 계속해서 열어야 하기에 RTT가 증가함
RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간
RTT를 줄이기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하기도 했음
이미지 스플리팅: 많은 이미지를 다운받으면 과부하가 걸리기에 많은 이미지가 합쳐있는 하나의 이미지를 다운받고 이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법
코드압축: 개행 문자, 빈칸을 없애서 코드의 크기를 최소화
이미지 Base64 인코딩: 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법
HTTP/1.1
매번 TCP를 연결하는 것이 아닌 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀜
이제 한 번 연결을 하면 다시 연결을 진행하지 않음
하지만 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기 시간이 길어지는 단점이 있다.
HOL Blocking
네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상이다.
또한 HTTP/1.1의 헤더는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거웠다.
HTTP/2.0
HTTP/1.x 보다 지연시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜이다.
멀티플렉싱
여러 개의 스트림을 사용하여 송수신하는 것이다.
특정 스트림의 패킷이 손실되어도 해당 스트림에만 영향을 미치고 나머지는 멀쩡하게 동작한다.
이를 통해 단일 연결을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄일 수 있다.
이 덕분에 HOL Blocking을 해결할 수 있다.
헤더 압축
허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가진다.
허프만 코딩: 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트양을 줄이는 원리이다.
서버 푸시
1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운 받을 수 있었다.
2는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.
html에는 css나 js가 포함되는데 html을 읽으면 그 안에 있던 css파일을 서버에서 푸시하여 클라이언트에 먼저 줄 수 있다.
HTTPS
HTTP/2는 HTTPS위에서 동작한다.
HTTPS는 애플리케이션 계층과 전송계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다.
SSL/TLS
전송 계층에서 보안을 제공하는 프로토콜이다.
클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 한다.
보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
보안 세션
보안이 시작되고 끝나는 동안 유지되는 세션을 말하고, SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유한다.
세션: 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻함
클라이언트와 서버와 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는 단 한 번의 1-RTT가 생긴 후 데이터를 송수신한다.
클라이언트에서 사이퍼 슈트를 서버에 전달하면 서버는 암호화 알고리즘 리스트를 제공할 수 있는지 확인한다.
제공할 수 있다면 서버에서 클라이언트로 인증서를 보내는 인증 메커니즘이 시작되고 이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작된다.
사이퍼 슈트: 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
AEAD 사이퍼 모드
데이터 암호화 알고리즘이다.
예를 들면 AES_128_GCM은 128비트의 키를 사용하는 표준 블록 암호화 기술과 병렬 계산에 용이한 암호화 알고리즘 GCM이 결합된 알고리즘을 뜻함
인증 메커니즘
CA에서 발급한 인증서를 기반으로 이루어짐
CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 공개키를 클라이언트에 제공하고 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장함
CA 발급 과정: 자신의 사이트 정보와 공개키를 CA에 제출해야 함. 이후 CA는 공개키를 해시한 값인 지문을 사용하여 CA의 비밀키 등을 기반으로 인증서를 발급
암호화 알고리즘
키 교환 알고리즘은 대수곡선 기반의 ECDHE 또는 모듈식 기반의 DHE를 사용한다. 둘 다 디피-헬만 방식을 근간으로 만들어졌다.
디피-헬만 키 교환 알고리즘
암호키를 교환하는 하나의 방법이다.
y = g^2 mod p
g와 x와 p를 안다면 y를 구하기 쉽지만 g와 y와 p만 안다면 x를 구하기 어렵다는 원리에 기반한 알고리즘이다.
해싱 알고리즘
데이터를 추정하기 힘든 더 작고, 섞여 있는 조각로 만드는 알고리즘이다.
SHA-256 알고리즘
해시 함수의 결괏값이 256비트인 알고리즘이며 비트 코인을 비롯한 많은 블록체인 시스템에서도 쓰인다.
해싱을 해야 할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환한다.
HTTPS 구축방법
직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스를 구축한다.
서버 앞단의 HTTPS를 제공하는 로드밸런서를 두거나, 서버 앞단에 HTTPS를 제공하는 CDN을 둬서 구축한다.
HTTPS/3
QUIC라는 계층 위에서 돌아가며, TCP기반이 아닌 UDP 기반으로 돌아간다.
QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-way-handshake를 하지 않아도 된다.
QUIC은 첫 연결 설정에 1-RTT만 소요한다.
클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 거기에 응답하기만 하면 바로 본 통신을 시작할 수 있다.
QUIC은 순방향 오류 수정 메커니즘이 적용되어 있다.
이는 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식이다.
출처
면접을 위한 CS 전공지식 노트
'CS' 카테고리의 다른 글
REPEATBLE READ에서의 PHANTOM READ 현상 (3) | 2024.03.04 |
---|---|
인덱스 (3) | 2023.09.28 |
트랜잭션과 잠금 (0) | 2023.09.26 |
이터레이터 패턴(Iterator Pattern) (0) | 2023.05.16 |
프록시 패턴(Proxy Pattern) (0) | 2023.05.12 |