[기술면접] 네트워크 1
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
접은 글을 통해 먼저 답변을 해보시고 제가 정리한 답을 확인해보시기 바라겠습니다!!
면접 리스트
OSI 7 계층과 TCP/IP 4 계층의 차이점은 무엇인가요?
TCP/IP 4 계층과 달리 OSI 7 계층은 애플리케이션 계층을 세개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눕니다. 또 OSI 7계층에서는 인터넷 계층을 네트워크 계층이라고 부릅니다.
HTTP/1.1와 HTTP/2를 설명하고 차이점은 무엇인가요?
HTTP/1.1은 매번 TCP 연결을 하는 것이 아닌 한번의 연결 이후 여러개의 파일을 송수신 할 수 있는 프로토콜입니다. 핸드셰이크가 없어져 오버헤드가 적어지지만 리소스가 많아질 수록 대기시간이 길어지는 단점이 있습니다.
HTTP/2는 HTTP/1.x보다 지연시간을 줄이고 응답시간을 더 빠르게 하는 프로토콜로 멀티 플렉싱, 헤더 압축 등 요청의 우선순위를 처리하는 프로토콜입니다. 장점으로는 멀티 플렉싱과 서버 푸시가 있습니다. 멀티 플렉싱은 여러개의 스트림을 사용하여 송수신하고 서버 푸시란 클라이언트의 요청 없이 서버가 클라이언트로 데이터를 먼저 줄 수 있습니다.
www.google.com을 주소창에 입력하면 어떻게 될까요?
- 브라우저에 www.goggle.com을 친다.
- 브라우저는 사용자가 주소창에 입력한 정보가 사이트 주소인지 검색어인지 확인한다.
- 브라우저는 캐싱된 DNS 기록을 통해 www.google.com에 대응되는 ip주소가 있는지 확인한다.
- DNS ⇒ 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP주소로 변환한다.
- 과정
- 브라우저 캐시를 확인한다.
- 브라우저는 일정기간동안의 DNS 기록을 가지고 있다.
- 브라우저는 OS캐시를 확인한다.
- 브라우저 캐시에서 웹 사이트의 이름의 ip 주소가 발견이 안될경우 system call을 통해 OS가 저장하는 DNS 기록들의 캐시에 접근한다.
- Router 캐시를 확인한다.
- 컴퓨터에 DNS 기록을 찾지 못하면 브라우저는 DNS 기록을 캐싱하는 Router와 통신하여 찾는다
- ISP 캐시를 확인한다.
- DNS 서버를 구축하고 있는 ISP에서 DNS 기록을 찾는다.
- 브라우저 캐시를 확인한다.
- 캐시의 이유 ⇒ 네트워크 트래픽을 조절하고 데이터 전송시간을 줄일 수 있다.
- 요청한 URL 캐시가 없으면 ISP의 DNS 서버가 www.google.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 보낸다.
- DNS query
- 여러 다른 서버들을 검색하여 특정 사이트의 IP 주소를 찾는다. ⇒ recursive search
- IP 주소를 찾을 때까지 DNS 서버에서 다른 DNS 서버를 오가면서 반복적으로 검색하던지 찾지 못해서 에러가 발생할 때까지 검색을 진행.
- ISP의 DNS 서버
- DNS recursor라고 부른다
- 인터넷을 통해 다른 DNS 서버들에게 물어 도메인 이름의 올바른 IP 주소를 찾는 책임을 가진다.
- 다른 DNS서버(name server)는 계층적으로 관리한다.
- www.google.com
- DNS recursor가 root name server에 연락한다
- root name server는 `.com 도메인 name server로 redirect한다
- .com name server는 google.com name server로 redirect한다
- google.com name server 는 DNS 기록에서 www.google.com 에 매칭되는 IP주소를 찾고, DNS recursor로 보낸다
- 위 모든 요청들은 작은 데이터 패킷을 통해 보내진다.
- 패킷 = 보내는 요청의 내용 + DNS recursor 의 IP 주소 으로 이뤄짐
- 패킷들은 원하는 DNS 기록을 가진 DNS 서버에 도달할 떄까지 클라이언트와 서버를 여러 번 오간다
- 이때 패킷들은 routing table에 기반하여 가장 빠른 경로로 움직인다.
- 도중에 패킷이 loss되면 request fail error가 발생한다
- 위 모든 요청들은 작은 데이터 패킷을 통해 보내진다.
- DNS query
- 브라우저가 서버와 TCP connection을 한다
- 브라우저는 올바른 IP 주소를 받게 되면 서버와 connection을 한다.
- 인터넷 프로토콜
- 브라우저는 인터넷 프로토콜 중 TCP를 사용하여 서버와 연결한다.
- TCP/IP 3-way handshake
- 클라이언트와 서버간의 데이터 패킷들이 오고 가기 위해 TCP-Connection이 되어야 한다.
- TCP/IP 3-way handshake 프로세스를 통해 클라이언트와 서버간의 connection이 이뤄진다.
- 클라이언트와 서버가 SYN과 ACK 메시지들로 3번의 프로세스를 거친 후 연결된다.
- 클라이언트 머신이 SYN 패킷을 서버에 보내고 connection을 open해달라고 요청한다
- 서버가 새로운 connection을 시작할 port가 있다면 SYN/ACK 패킷으로 응답한다
- 클라이언트는 SYN/ACK 패킷을 서버로부터 받게 되면 서버에게 잘 받았다는 의미로 ACK 패킷을 응답한다
- 브라우저가 웹 서버에 HTTP 요청을 한다.
- TCP connection이 완성되면 데이터를 전송한다
- Request
- 클라이언트의 브라우저는 GET 방식으로 www.google.com 웹 페이지를 요청한다
- 요청시 다른 부가적인 정보들도 함께 전달된다.
- Accept 헤더: 받아들이는 요청의 종류
- user-agent 헤더: browser identification
- connection 헤더: 추가적 요청을 위해 TCP Connection dbwlfmf dycjd
- 브라우저에서 얻은 쿠키 정보
- 서버가 요청을 처리하고 Response를 생성한다.
- 서버는 Apache와 같은 웹 서버를 가지고 있다.
- 웹 서버는 브라우저로부터 Request를 받고 Request Handler에게 전달하여 Request를 읽고 Response를 생성하게 된다.
- Request handler
- Request, request의 헤더, 쿠키를 읽어 요청을 파악한다.
- 필요에 따라 서버에 정보를 업데이트한다.
- Response를 특정 포맷으로 작성한다
- 서버는 Apache와 같은 웹 서버를 가지고 있다.
- 서버가 HTTP Response를 보낸다,
- 첫 줄에는 Response의 상태를 의미하는 status code가 나타난다
- 1xx은 정보만 담긴 메세지라는 것을 의미한다
- 2xx response가 성공적이라는 것을 의미한다
- 3xx 클라이언트를 다른 URL로 리다이렉트함을 의미한다
- 4xx 클라이언트 측에서 에러가 발생했음을 의미한다
- 5xx 서버 측에서 에러가 발생했음읠 의미한다
- 브라우저가 HTML content를 보여준다.
정리[네트워크 기초]
네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미.
- 노드: 서버, 라우터, 스위치 등 네트워크 장치
- 링크: 유무선의 리소스가 흐르는 통로
처리량과 지연시간
좋은 네트워크 구축을 위해서는 많은 리소스를 처리하면서 지연시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 의미.
처리량(throughput)
- 링크 내에서 성공적으로 전달된 트래픽 량 (많은 트래픽을 처리했다 = 처리량이 높다)
- 초당 수신되는 비트 수를 의미하는 단위인 bps(bits per second)를 사용
- 대역폭: 주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
지연시간(latency)
- 요청이 처리되는 시간. 메시지가 두 장치를 왕복하는데 걸리는 시간.
- 매체 타입(유무선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음.
네트워크 토폴로지와 병목 현상
노드와 링크가 어떻게 배치 되어있는지에 대한 방식이자 연결 형태.
트리 토폴로지

- 계층형 토폴로지라고도 하며 트리 형태로 배치한 네트워크 구성.
- 노드의 추가, 삭제가 쉬우며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 미칠 수 있음.
버스 토폴로지

- 중앙 통신 회선 하나에 여러개의 노드가 연결되어 공유하는 네트워크 구성
- LAN에서 사용
- 설치 비용이 적고 신뢰성이 우수하며 노드 추가 삭제가 쉬움.
- 스푸핑이 가능한 단점
스푸핑
- LAN 상에서 송신부의 패킷을 캐치하여 악의적인 노드를 통해 수신하는 것.
정상: src -> desc
스푸핑: src -> hacker -> desc
스타 토폴로지

- 중앙에 있는 노드에 모두 연결된 네트워크 구성을 의미
- 노드 추가 및 에러 탐지가 용이
- 패킷 충돌 가능성이 낮고 에러를 쉽게 탐지 가능.
- 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가.
링형 토폴로지

- 각 노드가 양 옆의 노드와 연결되어 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성방식.
- 데이터는 노드에서 노드로 처리
- 노드 수가 증가되어도 네트워크 상의 손실이 거의 없고 충돌이 발생되는 가능성이 적고 노드의 고장을 쉽게 파악 가능.
- 네트워크 구성 변경이 어렵고 회선에 장애가 생기면 전체 네트워크에 영향을 미침
메시 토폴로지

- 망형 토폴로지라고도 하며 그물망처럼 연결되어 있는 구조
- 한 단말 장치에 문제가 생겨도 다른 경로를 통해 네트워킹 가능 -> 분산처리
- 노드의 추가가 어려우며 구축 비용과 운용비용이 고가.
병목 현상
네트워크 토폴로지를 사용하는 주된 이유는 병목 현상을 줄이기 위함.
병목현상이 일어났을 때 네트워크 토폴로지를 확인해보면 답이 나오기도 함.
- 전체 시스템의 성능이나 용량이 하나의 구성요소로 인해 제한을 받는 현상
네트워크 분류
네트워크는 규모를 기반으로 분류 가능
LAN
- 사무실과 개인적으로 소유 가능한 규모
- 근거리 통신망. 전송 속도가 빠르며 혼잡하지 않음.
MAN
- 시 정도의 대도시 네트워크 규모
- 전송 속도는 평균이며 LAN보다 혼잡
WAN
- 세계적인 광역 규모
- 전송 속도는 낮으며 MAN보다 혼잡
네트워크 성능 분석 명령어
병목 현상의 주된 원인
- 네트워크의 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
Ping
- 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- 해당 노드의 패킷 수신 상태와 도달하기까지의 시간을 확인
- ICMP protocol 기반

netstat
- 접속되어 있는 서비스들의 네트워크 상태를 표시하는데 사용
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여줌

nslookup
- DNS에 관련된 내용을 확인하기 위해 사용하는 명령어.

tracert
- 윈도우는 tracert 리눅스는 traceroute
- 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어.

네트워크 프로토콜 표준화
- 네트워크 프로토콜: 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
정리[TCP/IP 4계층 모델]
인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜 집합
- TCP/IP 4 계층
- OSI 7 계층이 존재
계층 구도
각 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계.
애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 프로토콜이 존재
- 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사용하는 계층
FTP
- 장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜
SSH
- 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
HTTP
- World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 쓰이는 프로토콜
SMTP
- 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
DNS
- 도메인 이름과 IP 주소를 매핑시켜주는 서버
전송 계층
- TCP, UDP, QUIC 과 같은 프로토콜이 존재
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공
TCP
- 패킷 사이의 순서를 보장
- 연결 지향 프로토콜 사용
- 수신 여부 확인을 통해 신뢰성 => 가상 회선 패킷 교환 방식 사용
가상 회선 패킷 교환 방식
- 각 패킷에는 가상회선 식별자가 포함되어 모든 패킷을 전송하면 가상 회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식
UDP
- 순서 보장 X
- 수신 여부 확인 X => 데이터그램 패킷 교환 방식 사용
데이터그램 패킷 교환 방식
- 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 순서가 다를 수 있는 방식
TCP 연결 성립과정
- 3way handshake 과정을 거침
- SYN
- 클라이언트가 서버로 ISN을 담아 SYN을 보냄
- SYNACK
- 서버는 SYN에 대한 대답으로 ISN + 1을 보냄 + 서버의 ISN도 담아 보냄
- ACK
- 클라리언트는 서버의 ISN + 1로 응답을 진행
- UDP는 위와 같은 동작이 없음.
TCP 연결 해제 과정
- 4way handshake
- 1번
- 클라이언트가 연결을 닫기 위해 FIN을 보냄. 클라이언트는 FIN_WAIT 단계로 도입
- 2번
- 서버는 FIN에 대한 대답 ACK를 보냄. 서버는 CLOSE_WAIT 단계로 도입
- 3번
- 서버는 클라이언트로 FIN 패킷을 보냄
- 4번
- 클라이언트는 TIME-WAIT 상태가 되고 서버로 ACK를 보내서 서버는 CLOSED가 됨.
- 어느 정도의 시간을 대기한 후 연결을 닫음.
- 어느정도의 시간 대기 후 close 하는 이유
- 지연 패킷이 발생할 경우를 대비
- 두 장치가 연결이 닫혔는지 확인하기 위해서
인터넷 계층
- IP, ARP, ICMP와 같은 프로토콜
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있음.
링크 계층
- 이더넷
- 실질적인 데이터를 전달하며 장치간에 신호를 주고받는 규칙을 정하는 계층
유선 LAN(IEEE802.3)
- 전이중화 통신(full duplex)
- 양쪽 장치가 동시에 송수신할 수 있는 방식
CSMA/CD
- 반이중화 통신 중 하나
- 데이터를 보낸 이후 충돌이 발생한다면 일정시간 이후 재전송 하는 방식
광섬유 케이블
- 광섬유로 만들어진 케이블로 레이저를 이용하여 통신
- 장거리 및 고속 통신 가능.
- 유선 LAN을 이루는 케이블
무선 LAN(IEEE802.11)
- 반이중화 통신
- 양쪽 장치는 서로 통신할 수 있지만 동시에 통신할 수 없음.
- 한번에 한 방향만 통신 가능
- 응답하기 전까지 기다려야 하며 전송하면 충돌로 인해 데이터 손실 및 왜곡 발생 가능.
CSMA/CA
- 반이중화 통신 중 하나로 데이터를 보내기 전에 일련의 과정을 기반으로 사전에 가능한 한 충돌을 방지하는 방식
- 사용중인 채널이 있다면 채널을 감지하다가 쉬는 채널을 발견
- 프레임간 공간 시간인 IFS(InterFrame Space) 시간만큼 기다린 후 랜덤 상수 기반으로 결정된 시간 이후 프레임을 보냄.
- 프레임을 보낸 후 ACK 패킷을 받았다면 마치지만 받지 못했으면 반복. 일정 한계를 넘으면 프레임 drop
PDU
Protocol Data Unit으로 헤더 + 페이로드로 구성. 각 계층에서 부르는 PDU가 다름
- 애플리케이션 계층: 메시지
- 전송계층: 세그먼트, 데이터그램
- 인터넷 계층: 패킷
- 링크 계층: 프레임
정리[네트워크 기기]
네트워크 기기의 처리 범위
네트워크 기기는 계층 별로 처리 범위를 나눌 수 있음.
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC, 리피터, AP
애플리케이션 계층을 처리하는 기기
L7 스위치
- 스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내
데이터를 전송하는 통신 네트워크 장비. - 로드 밸런서라고도 하며 서버의 부하를 분산하는 기기.
- 트래픽 처리량의 증가를 목표
- URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산.
- 필터링 기능 + 트래픽 모니터링 가능
- 헬스 체크를 통해 장애 탐지 가능
L4 스위치와 L7 스위치의 차이
- L4 스위치는
- 전송계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용 불가.
- IP와 포트를 기반으로 트래픽을 분산
- AWS에서의 NLB(Network Load Balancer)
- L7 스위치는
- IP, URL, HTTP 헤더, 쿠키 등을 기반으로 트래픽 분산
- AWS에서의 ALB(Application Load Balancer)
헬스 체크
- L4, L7 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별
- 전송주기와 재전송 횟수를 설정한 이후 반복적으로 서버에 요청을 보내는 것.
로드 밸런서를 이용한 서버 이중화
- 서비스를 안정적으로 운용하기 위해서는 2대 이상의 서버는 필수적
- 가상의 IP를 제공하고 이를 기반으로 안정적인 서비스 제공.
인터넷 계층을 처리하는 기기
라우터
- 여러개의 네트워크를 연결, 분할, 구분시켜주는 역할
- 패킷 소모를 최소화하고 경로를 최적화하고 최소 경로로 패킷을 포워딩
L3 스위치
- L2 스위치 기능과 라우팅 기능을 갖춘 장비
데이터 링크 계층을 처리하는 기기
L2 스위치
- MAC 주소를 기반으로 MAC 주소 테이블을 관리하며 패킷 전송을 담당
- IP 주소를 기반으로 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할.
브리지
- 두개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리.
물리 계층을 처리하는 기기
NIC
- Network Interface Card는 2대 이상의 컴퓨터 네트워크를 구성하는데 사용
- 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
- MAC 주소가 존재
리피터
- 약해진 신호 정도를 증폭하여 다른쪽으로 전달하는 장치
AP
- 패킷을 복사하는 기기
- 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술을 사용하여 무선 네트워크 연결 가능.
정리[IP 주소]
ARP
IP주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신
- ARP: IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
- 가상 주소인 IP주소를 실제 주소인 MAC 주소로 변환.
- RARP: 실제 주소인 MAC을 통해 IP주소로 변환하는 프로토콜
- 브로드캐스트(Request) 후 응답받은 머신은 유니캐스트(Response)
홉바이홉 통신
- IP 주소를 통해 통신하는 과정
- 라우팅 테이블의 IP를 통해 시작 주소로부터 시작하여 다음 IP로 계속해서 이동하는 라우팅 과정을 통해
최종 목적지로 도달하는 통신.
라우팅 테이블
- 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가있는 목적지 정보들과
그 목적지로 가기 위한 방법이 들어있는 리스트
게이트웨이
- 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어
IP 주소 체계
IPv4 IPv6로 나뉨
- IPv4는 32비트를 8비트 단위로 점을 찍어 표기
- IPv6는 64비트를 16비트 단위로 점을 찍어 표기
클래스 기반 할당 방식
- 처음에는 A, B, C, D, E 다섯개의 클래스를 구분하는 classful network addressing을 사용
- 앞에있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 사용.
DHCP
- IP 주소 및 기타 통신 매개 변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- 네트워크 장치의 IP 주소를 수동으로 설정할 필요없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당.
NAT
Network Address Translation은 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의
IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법.
- IPv4의 한계를 넘어 NAT으로 공인 IP와 사설 IP로 나누어 많은 주소를 처리
- 사용이유
- 여러대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함.
NAT을 이용한 보안
- 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기에 내부 네트워크에 대한 어느정도 보안이 가능
- 단점: 접속하는 호스트의 숫자에 따라 접속 속도가 느려질 수 있음.
정리[HTTP]
기본적으로 HTTP는 웹 서비스 통신에서 사용.
HTTP/1.0
한 연결당 하나의 요청을 처리 ⇒ RTT의 증가.
서버로부터 파일을 가져올 때마다 TCP 3way handshake를 계속해서 해야하기 때문에 RTT가 증가
해결하기 위한 방법
- 이미지 스플리팅
- 많은 이미지를 다운로드 받게 되면 과부화가 걸리기 때문에 이미지가 합쳐있는 하나의 이미지를 다운받고 position을 이용하여 이미지를 표기하는 방법
- 코드 압축
- 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법
- 이미지 Base64 인코딩
- 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법
- 크기가 37퍼센트 정도 증가
HTTP/1.1
- 매번 TCP 연결을 하는 것이 아닌 한번 TCP 연결 이후에 keep-alive 옵션을 통해 여러개의 파일을 송수신할 수 있게 변경
- 3way handshake가 한번만 발생
- 무거운 헤더 구조를 가짐(헤더에 쿠키 등 많은 메타 데이터 포함)
HOL Blocking
- Head Of Line Blocking: 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상.
HTTP/2
- HTTP/1.x 보다 지연시간을 줄이고 응답시간을 더 빠르게 할 수 있으며 멀티 플렉싱, 헤더 압축, 서버 푸시, 요청의 우선 순위 처리를 지원하는 프로토콜
멀티 플렉싱
- 여러개의 스트림을 사용하여 송수신
- 이를 통해 특정 스트림의 패킷이 손실되어도 나머지 스트림은 멀쩡하게 동작 가능.
- 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있음. ⇒ HOL Blocking 문제 해결
헤더 압축
- HTTP/2에서는 헤더 압축을 하는데 허프만 코딩 압축 알고리즘 사용.
- 허프만 코딩: 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트수를 사용하여 표기, 빈도가 낮은 정보는 비트수를 많이 사용하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
서버 푸시
- 클라이언트의 요청없이 서버가 클라이언트에게 바로 푸시 가능
HTTPS
- HTTPS위에서 HTTP/2가 동작.
- 애플리케이션 계층과 전송 계층 사이에 신뢰계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 ⇒ 통신을 암호화
SSL/TLS
- TLS 1.3을 기반으로 정리
- 전송 계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신을 할 때 SSL/TLS를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록.
- 인증 메커니즘, 키 교환 알고리즘, 해싱 알고리즘이 주로 사용
보안 세션
- 보안이 시작되고 끝나는 동안 유지되는 세션을 의미.
- SSL/TLS는 핸드 셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보등을 공유
- 클라리언트와 서버가 키를 공유하고 이를 기반으로 인증, 인증확인등의 작업이 일어나는 1RTT이후 데이터를 송수신
- 클라이언트에서 Cypher suites를 서버에 전달하면 서버는 받은 사이퍼 수트의 암호화 알고리즘 리스트를 제공할 수 잇는지 확인.
- 제공할 수 있다면 인증 매커니즘이 시작되고 암호화된 데이터의 송수신이 시작
인증 매커니즘
- CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐.
- CA에서 발급한 인증서는 안전한 연결을 시작하는데 있어 필요한 공개키를 클라이언트에 제공하고 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장.
- 인증서는 서비스 정보, 공개키, 지문, 디지털 서명으로 이루어짐.
암호화 알고리즘
- 타원 곡선 알고리즘 ECDHE
- 디피 헬만 알고리즘 DHE
- 암호키 교환 알고리즘
HTTP/3
- QUIC 계층 위에서 돌아가며 UDP 기반
- 멀티 플랙싱 + 초기 연결 설정 시 지연시간 감소
- 3way handshake를 거치지 않음
- QUIC은 1RTT만 소요
- 클라이언트가 서버에 신호를 한번만 주고 서버도 거기에 응답하면 바로 통신 시작 가능
- 순방향 오류 수정 매커니즘(FEC, Forword Error Correction)이 적용.
- 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식.
- 낮은 패킷 손실률
참조
- 면접을 위한 CS 전공지식 노트(주홍철 저) -길벗