2.1 네트워크의 기초
2.1.1 처리량과 지연 시간
네트워크 - 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합
- 노드: 서버, 라우터, 스위치 등 네트워크 장치
- 링크: 유선 또는 무선
좋은 네트워크 - 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크
- 처리량: 링크 내에서 성공적으로 전달된 데이터의 양 (얼만큼의 트래픽을 처리했는지)
- 트래픽: 특정 시점에 링크 내에 흐르는 데이터의 양
대역폭 - 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
지연 시간 - 요청이 처리되는 시간. 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간
- 매체 타입, 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음
2.1.2 네트워크 토폴로지와 병목현상
네트워크 토폴로지
노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 행태
트리 토폴로지 - 계층형 토폴로지라고 하며 트리 형태로 배치한 네트워크 구성
- 노드의 추가, 삭제가 쉬움
- 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음
버스 토폴로지 - 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성 (LAN에서 사용)
- 중앙 통신 회선에 노드 추가 삭제 쉬움
- 스푸핑 가능
스푸핑 - LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것
스타 토폴로지 - 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 노드를 추가하거나 에러 탐지가 쉽고 패킷의 충돌 발생 가능성이 적음. 쉽게 에러를 발견 가능하고, 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향을 끼치는 것이 적음
- 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가임
링형 토폴로지 - 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
- 데이터는 노드에서 노드로 이동. 노드 수가 증가되어도 네트워크 상의 손실이 거의 없고 충돌이 발생될 가능성이 적고 노드의 고장 발견이 쉬움.
- 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼치는 단점 존재
메시 토폴로지 - 망형 토폴로지로 그물망처럼 연결되어 있는 구조
- 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재해 네트워크를 계속 사용할 수 있고 트래픽도 분산 처리가 가능함
- 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가인 단점 존재
병목현상
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
- 병의 몸통보다 목 부분 내부 지름이 좁아서 물이 천천히 쏟아지는 것에 비유
서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 생겨 사용자가 웹 사이트로 들어가지 못함
2.1.3 네트워크 분류
규모에 따른 분류
- LAN: 근거리 통신망으로 전송 속도가 빠르고 혼잡하지 않음
- MAN: 도시 같은 넓은 지역에서 운영. 전송 속도는 평균이며 LAN보다 혼잡함
- WAN: 광역 네트워크로 전송 속도는 낮으며 MAN보다 혼잡함
2.1.4 네트워크 성능 분석 명령어
네트워크 병목 현상의 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
명령어
- ping: 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- netstat: 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용 (주로 포트 확인)
- nslookup: DNS에 관련된 내용을 확인하기 위해 쓰는 명령어 (특정 도메인에 매핑된 IP 확인)
- tracert: 목적지 노드까지 네트워크 경로를 확인할 때 사용 (어느 구간에서 응답 시간이 느려지는지 확인)
2.1.5 네트워크 프로토콜 표준화
네트워크 프로토콜 - 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
HTTP - 웹을 접속할 때 쓰이는 '서로 약속된' 인터페이스
2.2 TCP/IP 4계층 모델
2.2.1 계층 구조
TCP/IP 계층과 OSI 7계층 비교
애플리케이션 계층
FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
- SSH: 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP: World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜
- DNS: 도메인 이름과 IP 주소를 매핑해주는 서버
전송계층
송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공 가능, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할
TCP: 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결하여 신뢰성을 구축하고 수신 여부를 확인하며 가상회선 패킷 교환 방식을 사용
- 가상회선 패킷 교환 방식: 각 패킷에 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식
UDP: 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용
- 데이터그램 패킷 교환 방식: 패킷이 독립적으로 이동하며 최적의 경로를 선택해 가기 때문에 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 순서가 다를 수 있는 방식
TCP 연결 성립 과정 - 3-way handshake
- SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄 (ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호)
- SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄
- ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냄
TCP는 해당 과정이 존재 → 신뢰성이 있는 계층
UDP는 해당 과정이 존재하지 않음 → 신뢰성이 없는 계층
TCP 연결 해제 과정 - 4-way handshake
- 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보냄. 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림
- 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어감. 클라이언트는 세그먼트를 받으면 FIN_WAIT_2 상태에 들어감
- 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄
- 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제됨
TIME_WAIT 이유
- 지연 패킷이 발생할 경우를 대비 - 데이터의 무결성(데이터의 정확성과 일관성을 유지하고 보증하는 것) 문제
- 두 장치가 연결이 닫혔는지 확인하기 위함 - LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치가 LAST_ACK로 되어 있기 때문에 접속 오류 나타남
인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가짐
링크 계층
전선, 광섬유, 무선 등으로 실절적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층. 네트워크 접근 계층이라고도 함
- 물리 계층 - 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
- 데이터 링크 계층 - ‘이더넷 프레임’을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층
유선 LAN
- 전이중화 통신: 양쪽 장치가 동시에 송수신할 수 있는 방식 (현대의 고속 이더넷)
- CSMA/CD: 반이중화 통신 중 하나. 데이터를 보낸 이후 충돌이 발생한다면 일정 시간 이후 재전송하는 방식
무선 LAN
- 반이중화 통신: 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식. 둘 이상의 장치가 있을 때는 충돌 방지 시스템 필요
- CSMA/CD: 반이중화 통신 중 하나로 장치에서 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식을 사용
충돌 방지 방식
- 데이터를 송신하기 전에 무선 매체를 살핌
- 캐리어 감지: 회선이 비어 있는지 판단
- IFS(Inter FrameSpace): 랜덤 값을 기반으로 정해진 시간만큼 기다리며, 만약 무선 매체가 사용 중이면 점차 그 간격을 늘려가며 기다림
- 데이터 송신
계층 간 데이터 송수신 과정
컴퓨터를 통해 다른 컴퓨터로 데이터를 요청할 때 일어나는 일
- 애플리케이션 계층에서 전송 계층으로 보내는 요청 값들이 캡슐화 과정을 거쳐 전달
- 링크 계층을 통해 해당 서버와 통신
- 해당 서버의 링크 계층으로부터 애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송
캡슐화 과정 - 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
비캡슐화 과정 - 하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정
2.2.2 PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위
제어 관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성되어 있으며 계층마다 부르는 명칭이 다름
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있음
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC, 리피터, AP
2.3.2 애플리케이션 계층을 처리하는 기기
L7 스위치
로드밸런서라고도 하며, 서버의 부하를 분산하는 기기
- 클라이언트로 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 하며 시스템이 처리할 수 있는 트래픽 증가를 목표로 함
- URL, 서버, 캐시, 쿠키들을 기반으로 트래픽 분산
- 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능 또한 가지고 있으며 응용 프로그램 수준의 트래픽 모니터링 가능
- 클라우드 서비스(AWS 등)에서 L7 스위치를 이용한 로드밸런싱은 ALB(Application Load Balancer) 컴포넌트로 함
L4 스위치
- 전송 계층을 처리하는 기기
- 스트리밍 관련 서비스에서는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로 트래픽 분산
- 클라우드 서비스(AWS 등)에서 L4 스위치를 이용한 로드밸런싱은 NLB(Network Load Balancer) 컴포넌트로 함
헬스 체크
- 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것
- TCP, HTTP 등 다양한 방법으로 서버에 부하가 되지 않을 만큼 요청을 보냄
로드밸런서를 이용한 서버 이중화
2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공
- 로드밸런서가 제공한 0.0.0.12010이란 가상 IP에 사용자들이 접근하고 뒷단에 사용 가능한 서버인 0.0.0.12011과 0.0.0.12012를 기반으로 서빙
- 0.0.0.12011이란 서버에 장애가 발생해도 그것과는 무방하게 0.0.0.12012 서버를 기반으로 안정적인 서비스를 운용할 수 있음
2.3.3 인터넷 계층을 처리하는 기기
인터넷 계층을 처리하는 기기로는 라우터, L3 스위치가 있음
라우터
- 여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할
- 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비
L3 스위치
- L2 스위치의 기능과 라우팅 기능을 갖춘 장비, IP 주소 참조
- 하드웨어 기반의 라우팅을 담당하는 장치
2.3.4 데이터 링크 계층을 처리하는 기기
데이터 링크 계층을 처리하는 기기로는 L2 스위치와 브리지가 있음
L2 스위치
- 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
- IP 주소를 기반으로 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할
브리지
- 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리
- 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 쓰임
2.3.5 물리 계층을 처리하는 기기
물리 계층을 처리하는 기기는 NIC, 리피터, AP가 있음
- NIC: 네트워크 인터페이스 카드로 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
- 리피터: 들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치
- AP: 패킷을 복사하는 기기, AP에 유선 LAN을 연결한 후 다른 장치에서 무슨 LAN 기술을 사용해 무선 네트워크 연결 가능
2.4 IP 주소
2.4.1 ARP
ARP(Address Resolution Protocol)란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
ARP: IP(논리적 주소) → MAC(물리적 주소)
RARP: MAC - IP
장치가 ARP Request 브로드캐스트를 보내 IP주소에 해당하는 MAC 주소를 찾아, ARP Reply 유니캐스트를 통해 반환됨
2.4.2 홉바이홉 통신
- IP 주소를 통해 통신하는 과정
- 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 다음 IP로 계속해서 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신
라우팅 테이블
- 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 목적지 정보와 가기 위한 방법이 들어 있는 리스트
- 게이트 웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보 가짐
게이트웨이
서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어 (톨게이트)
2.4.3 IP 주소 체계
- IPv4 - 32비트를 8비트 단위로 점을 찍어 표기 (123.45.67.89)
- IPv6 - 64비트를 16비트 단위로 점을 찍어 표기 (2001:db8::ff00:42:8329)
클래스 기반 할당 방식
- A, B, C, D, E 다섯 개의 클래스로 구분하는 방식
- 앞에 있는 부분을 네트워크 주소, 뒤에 있는 부분을 컴퓨터에 부여하는 호스트 주소로 사용
DHCP
- IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소 할당
NAT
- NAT(Network Address Translation)는 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법
- IPv4 주소 체계만으로 많은 주소 감당하지 못하는 단점을 사설 IP와 공인 IP로 나눠 해결
- ICS, RRAS, Netfilter
- 사용 이유: 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함. 인터넷 회선 하나를 개통하고 인터넷 공유기를 여러 PC에 연결해 사용
- NAT를 이용한 보안: 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있어 내부 네트워크에 대한 어느 정도의 보안 가능
- NAT의 단점: 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 다라 접속 속도가 느려질 수 있다는 단점 존재
2.4.4 IP 주소를 이용한 위치 정보
- IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 위치 추적이 가능함
2.5 HTTP
2.5.1 HTTP/1.0
기본적으로 한 연결당 하나의 요청을 처리하도록 설계됨 → RTT 증가를 불러옴
- 서버로부터 파일을 가져올 때마다 TCP의 3-way handshake를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있다.
- RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며, 패킷 왕복 시간
RTT 증가를 해결하기 위한 방법
- 매번 연결할 때마다 RTT가 증가 → 서버에 부담이 많이 가고 사용자 응답 시간이 길어짐
- 해결 방법: 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩
- 이미지 스플리팅: 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드받고, 이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법
- 코드 압축: 코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법
- 이미지 Base64 인코딩: 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법. 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없음. 하지만 Base64 문자열로 변환할 경우 37% 정도 크기가 커지는 단점
2.5.2 HTTP/1.1
매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀌었음
- 한 번 TCP 3-way handshake가 발생하면 그 다음부터 발생하지 않음
- 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해 대기 시간이 길어지는 단점 존재
- HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거움
HOL Blocking
HOL Blocking(Head Of Line Blocking)은 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말함
2.5.3 HTTP/2
HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜
멀티플렉싱
- 여러 개의 스트림을 사용하여 송수신한다는 것
- 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작
- 스트림(stream): 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
- 단일 연결을 사용하여 병렬로 여러 요청과 응답을 주고 받을 수 있음 → HOL Blocking 해결
헤더 압축
- HTTP/1.x의 문제: 크기가 큰 헤더
- 해결: 허프만 코딩
서버 푸시
- HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일 다운로드가 가능
- HTTP/2는 클라이언트의 요청 없이 서버가 바로 리소스 푸시
2.5.4 HTTPS
- HTTP/2는 HTTPS 위에서 동작
- HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 → 통신 암호화
SSL/TLS
- SSL(Secure Socker Layer): SSL 1.0부터 시작해 버전이 올라가며 마지막으로 TLS로 명칭이 변경되었으나 보통 SSL/TLS로 많이 부름
- 전송 계층에서 보안을 제공하는 프로토콜로 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 함
- 공격자가 서버인 척하며 사용자 정보를 가로채는 네트워크상의 ‘인터셉터’를 방지할 수 있음
- 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용
보안 세션
- 보안이 시작되고 끝나는 동안 유지되는 세션을 말하고, SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유함
- 세션: 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻함
- 클라이언트에서 사이버 슈트(cypher suites)를 서버에 전달하면 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인 → 인증 메커니즘 시작 → 암호화된 데이터의 송수신
- 사이퍼 슈트: 프로토콜, AEAD 사이퍼 모드(데이터 암호화 알고리즘), 해싱 알고리즘이 나열된 규약
인증 메커니즘
- CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐
- 안전한 연결을 시작하는 데 있어 필요한 공개키를 클라이언트에 제공, 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장
암호화 알고리즘
- 키 교환 암호화 알고리즘으로는 대수곡선 기반의 ECDHE 또는 모듈식 기반의 DHE를 사용 (둘다 디피-헬만(Diffie-Hellman) 방식을 근간으로 만들어짐
- 디피-헬만 키 교환 암호화 알고리즘 y = g^(x) * mod p
- 클라이언트와 서버 모두 개인키와 공개키를 생성하고, 서로에게 공개키를 보내 공개키와 개인키가 결합하여 PSK가 생성된다면 이를 통해 키 암호화 가능
해싱 알고리즘
- 데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘
- SSL/TLS은 해싱 알고리즘으로 SHA-256 알고리즘과 SHA-384 알고리즘을 사용
HTTPS 구축 방법
- CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
- 서버 앞단의 HTTPS를 제공하는 로드밸런서 두기
- 서버 앞단에 HTTPS를 제공하는 CDN 두기
2.5.5 HTTP
- World Wide Web에서 정보를 교환하는 데 사용되는 HTTP의 세 번째 버전
- TCP 위에서 돌아가는 HTTP/2와는 달리 HTTP/3은 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아감
- 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점을 가짐
초기 연결 설정 시 지연 시간 감소
- QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-way handshake 과정을 거치지 않아도 됨
- QUIC은 첫 연결 설정에 1-RTT만 소요
- QUIC은 순방향 오류 수정 메커니즘(FEC)이 적용되어 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식, 열악한 네트워크 환경에서도 낮은 패킷 손실률 자랑
참고 자료: 면접을 위한 CS 전공지식 노트