HTTP/1.1과 HTTP/2의 차이점은 무엇인가요?
HTTP/1.1
-
연결 한 개당 하나의 요청을 처리하도록 설계됨
- 요청과 응답이 순차적으로 이루어짐
- 동시에 리소스를 주고 받는 것이 불가능
- 다수의 리소스를 처리하려면 대기시간이 길어짐
-
HOL(Head Of Line) Blocking이 발생할 수 있다
HOL 블로킹이란 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하
-
RTT(Round Trip Time)
- 매번 요청별로 연결을 만들게 되고 HTTP의 특성상 3-way handshake가 반복적으로 일어나며 불필요한 RTT의 증가와 네트워크 지연을 초래
-
무거운 Header구조
- 매 요청마다 중복된 헤더 값을 전송
- 서버 도메인에 관련된 쿠키 정보도 헤더에 함께 포함되어 전송
개선 방법
-
Image Spriting
다양한 아이콘 이미지 파일의 요청 횟수를 줄이기 위해 아이콘을 하나의 큰 이미지로 만든 다음 CSS에서 해당 이미지의 좌표값을 지정하여 표시하는 방법
-
Domain Sharding
브라우저들이 여러 개의 연결을 생성해 병렬로 요청을 보내는 것
-
Minified CSS/JS
데이터의 용량을 줄이기 위해 CSS, JS를 축소
-
Load Faster
head 태그에 자바스크립트를 삽입하고 async나 defer옵션을 사용해 브라우저 파싱을 block하지 않고 로드
-
Data URI Scheme
HTML 문서 내 이미지 리소스를 Base64로 인코딩된 이미지 데이터로 직접 기술하는 방법으로 서버로의 요청을 줄임
-
구글의 SPDY
Throughtput이 아닌 Latency 관점에서 고속화한 새로운 프로토콜
HTTP/2.0
특징
- Multiplexed Streams: 연결 한개로 동시에 여러 개의 메시지를 주고 받을 수 있으며, 응답은 순서에 상관없이 스트림으로 받는다.
- Steam Prioritization: 리소스 간의 의존관계에 따른 우선순위를 설정하여 리소스 로드 문제를 해결
- Server Push: 클라이언트가 요청하지 않은 리소스를 서버가 사전에 푸쉬를 통해 전송할 수 있다.
- Header Compression : 헤더의 중복이 발생할 경우 Static/Dynamic Header Table 개념을 이용해 중복을 검출하고, 중복되지 않은 index값 + Header 정보를 허프만 인코딩 방식으로 데이터를 전송한다.
HPACK 압축 방식
HOL Blocking 에 대해 설명해 주세요.
HOL Blocking이란 같은 큐에 있는 패킷에 대해 첫번째 패킷의 전송 지연으로 인해 발생하는 성능 저하를 의미한다.
HTTP/3.0의 주요 특징에 대해 설명해 주세요.
- HTTP/2.0은 1.1에 비해 많이 개선되었으나 Handshake과정에서 발생하는 지연시간과 재전송으로 인한 HOL Blocking이 발생한다.
- 이를 개선하기 위해 구글은 QUIC 프로토콜을 고안하게 된다.
Why UDP?
- QUIC 프로토콜은 Quick UDP Internet Conntections, 즉 UDP기반의 프로토콜
TCP 구조적 한계
- TCP는 네트워크 환경을 바꾸어가며 서버와 클라이언트가 소통하는 것을 고려하고 만들어진 것이 아님
- 신뢰성을 위해 패킷을 순서대로 처리해야함, 이로 인해 패킷이 중간에 유실되거나 수신 측의 패킷 파싱 속도가 느리다면 병목이 발생한다.
- UDP는 패킷의 목적지만 정해진다면 중간 경로를 신경쓰지 않기 때문에 핸드쉐이크 과정이 필요없음.
UDP는 신뢰성이 없는게 아니라 탑재를 안했을 뿐
- 애플리케이션에서 구현을 통해 신뢰성을 제공할 수 있음
개선점
연결 시 레이턴시 감소
- TLS + TCP에서는 TLS 연결을 위한 핸드쉐이크와 TCP를 위한 handshake 발생
- QUIC는 이를 1 RTT만에 할 수 있다. 그 이유는 연결 설정에 필요한 정보와 함께 데이터도 보내기 때문이다.(TLS 인증서를 내포)
RTT란 요청(SYN)을 보낼 떄부터 요청에 대한 응답(SYN + ACK)을 받을 때까지의 왕복시간을 의미한다.
- QUIC는 세션키를 교환하기 전에 데이터를 교환할 수 있다.
- 다만 최초의 요청을 보낼 때에는 클라이언트는 서버의 세션 키를 모르기 때문에 서버의 Connection ID를 사용하여 생성한 초기화 키를 사용해 통신을 암호화한다.
- 한번 연결에 성공했다면 설정을 캐싱해놓고 있다가 캐시를 불러와 연결하기 때문에 바로 통신을 시작 할 수 있다.
HOLB 현상 해결
- HTTP/2를 사용하더라도 TCP 레이어의 HOLB 문제가 잔존해있다.
- TCP 연결 한개로 데이터를 전송하더라도 패킷이 유실된다면 없어진 패킷을 다시 전송하고 목적지를 찾는 동안 전체 TCP 연결이 중단되게 된다.
- QUIC에서는 이를 독립 스트림으로 HOLB를 단축한다.
패킷 손실 감지에 걸리는 시간 단축
- 흐름제어 하는 시간까지 단축하였다.
- 위처럼 HTTP/2에서는 한 패킷이 막히면 나머지 패킷이 모두 막힌다.
- HTTP/3 에서는 패킷의 전송 순서를 나타내는 별도의 패킷 번호를 부여해 패킷이 유실되더라도 해당 파일의 스트림만 정지되도록 할 수 있다.
더욱 향상된 멀티 플렉싱
- 독립 스트림으로 인해 멀티플렉싱을 더욱 강화시켰다.
보안 강화
- TLS를 기본적으로 사용
- QUIC 내에 TLS가 포함되어 헤더영역도 같이 암호화 된다.
네트워크가 변경되어도 연결이 유지
- TCP에서는 클라이언트와 서버가 서로를 구분하기 위해 클라이언트 IP, 클라이언트 PORT, 서버 IP, 서버 PORT가 필요, 따라서 IP가 달라지면 다시 연결
- QUIC는 Connection ID를 사용
- 랜덤할 값일 뿐 IP와 무관하기 떄문에 기존의 연결을 유지할 수 있다.
- 같은 Connection ID를 사용하면 해커가 네트워크를 통해 추적할 수 있기 때문에 새 네트워크가 사용될 때 마다 Connection ID를 변경한다. 하지만 이를 이전 Connection ID와 동일하다고 인지하기 때문에 연결을 유지할 수 있다.
TCP와 UDP의 차이에 대해 설명해 주세요.
TCP
- 연결 지향적 프로토콜
- 3-way handshaking 과정을 통해 연결 설정
- 4-way handshaking 과정을 통해 연결을 해제
- 흐름 제어
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우 방지
- 혼잡 제어
- 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
- 신뢰성 보장
- 전이중, 점대점 방식
- 전이중 : 전송이 양방향에서 동시에 일어남
- 점대점 : 연결이 정확히 2개의 종단점을 가지고 있음
UDP
- 비연결형 서비스로 데이터그램 방식을 제공
- 데이터의 전송 순서가 바뀔 수 있다.
- 데이터의 수신여부를 확인하지 않는다.
- 신뢰성이 낮다.
- 속도가 빠르다
- 1:1, 1:N, N:N 통신이 가능하다.
왜 HTTP는 TCP를 사용하나요?
모르겠음
그렇다면, 왜 HTTP/3 에서는 UDP(QUIC) 를 사용하나요? 위에서 언급한 UDP의 문제가 해결되었나요?
- handshaking과정으로 인한 지연 및 신뢰성 확보를 위한 HOLB 현상을 없앨 수 있음
- 커스텀이 가능해 애플리케이션 단에서 신뢰성을 확보해 줄 수 있음
- IP 변경으로 인한 재연결과정이 없음
본인이 새로운 통신 프로토콜을 TCP나 UDP를 사용해서 구현한다고 하면, 어떤 기준으로 프로토콜을 선택하시겠어요?
- 속도 및 IP 변경으로 인한 재연결과정이 없기 때문에 PC환경 뿐만이 아닌 모바일 환경에 더 적합한 UDP를 선택
Checksum이 무엇인가요?
- 송신된 자료의 무결성을 보호하는 방법
- IP Checksum 계산 방법
1. word 단위로 다 더한다
- 캐리가 발생한다면 더한다.
- 1의 보수를 얻는다.
- 전달받은 체크섬과 비교한다.
TCP와 UDP 중 어느 프로토콜이 Checksum을 수행할까요?
- TCP와 UDP 둘다 수행하지만 TCP 에서는 필수적이고 UDP는 선택적이다.
그렇다면, Checksum을 통해 오류를 정정할 수 있나요?
- 불가능하다. 오류를 정정하기 위해서는 해밍코드 기법을 활용해야한다.
TCP가 신뢰성을 보장하는 방법에 대해 설명해 주세요.
- TCP는 데이터에 대해 응답 패킷을 받아야 통신이 정상적으로 이뤄졌다고 판단
- 응답 패킷을 받지 못하면 유실되었다 판단하고 패킷을 다시 보낸다.
TCP의 혼잡 제어 처리 방법에 대해 설명해 주세요.
AIMD
- 처음에 패킷을 하니씩 보내고 문제없이 도착하면 윈도우의 크기를 하니씩 증가시켜가며 전송
- 전송에 실패하면 윈도우 크기를 반으로 줄인다.
Slow Start
- 윈도우의 크기를 2의 승수로 증가시킨다.
- 혼잡 발생시 1로 변경
- Threshold
- 윈도우의 크기를 지수적으로 증가시키다보면 크기가 기하급수적으로 늘어나 제어가 힘들다
- 임계점에 도달하면 선형적으로 1씩 증가시킨다.
빠른 재전송
빠른 회복
- 혼잡한 상태가 되면 윈도우 크기를 반으로 줄임
- AIMD방식으로 동작
TCP Tahoe
- 처음은 slow start 임계점에 도달하면 AIMD
- 혼잡일떄는 임계점을 윈도우 크기의 절반, 윈도우 크기는 1로 변경
TCP Reno
- 처음은 Tahoe와 동일
- 3 ACK Duplicated일시에는 빠른 회복, 임계점을 줄어든 윈도우 값으로 설정
- 타임아웃 발생시에는 임계점을 변경하지 않고 윈도우 크기를 1로 줄이고 slow start
DHCP가 무엇인지 설명해 주세요.
- 호스트의 IP주소와 각종 TCP/IP프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜
- 동적으로 호스트를 설정
- 네트워크 안에서 컴퓨터에 자동으로 네임 서버 주소, IP, 게이트웨이 주소를 할당해 임대해주는 동적 주소 할당 프로토콜
DHCP는 몇 계층 프로토콜인가요?
7계층 프로토콜
DHCP는 어떻게 동작하나요?
- DHCP Discover
클라이언트가 서버를 찾기위한 메시지로 브로드캐스트 방식으로 전송
- DHCP Offer
서버가 IP 정보를 제안, 일반적으로 브로드캐스트 방식이나 유니캐스트일때도 있음
- DHCP Request
클라이언트가 제안받을 정보를 공식적으로 요청, 브로드 캐스트 방식
- DHCP Ack
최종적으로 정보를 할당, 일반적으로 브로드캐스트 방식이나 유니캐스트일때도 있음
DHCP에서 UDP를 사용하는 이유가 무엇인가요?
- 호스트가 시작되었을 때 서버를 알지 못하기 때문에 모든 노드로 브로드캐스팅 해야한다.
- 성능이 좋아야하고 연결대상을 모르기 때문에 UDP 사용
DHCP에서, IP 주소 말고 추가로 제공해주는 정보가 있나요?
DHCP의 유효기간은 얼마나 긴가요?
일반적으로 8일
IP 주소는 무엇이며, 어떤 기능을 하고 있나요?
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위한 특수한 번호
IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 만들어졌지만, 아직도 수많은 기기가 IPv4를 사용하고 있습니다. 고갈 문제를 어떻게 해결할 수 있을까요?
NAT
- 인터넷 공인 IP 주소는 한정되어 있기 때문에 이를 공유하는 것
- 사설 IP 주소를 사용하면서 이를 공인 IP 주소와 상호 변환
IPv4와 IPv6의 차이에 대해 설명해 주세요.
- 확장된 주소 공간 : 128비트 주소 체계
- 헤더를 고정길이로 변경
- 향상된 서비스의 지원: 트래픽을 효과적으로 분류
- 보안 기능
- 주소 자동 설정
IPv4를 사용하는 장비와 IPv6를 사용하는 같은 네트워크 내에서 통신이 가능한가요? 가능하다면 어떤 방법을 사용하나요?
듀얼스택
- 하나의 시스템에서 두 프로토콜을 처리하는 기술
- 시스템은 물리적으로 하나지만 논리적으로는 둘다 지원
- 운영체제의 커널단에서 소프트웨어 형태로 구현
터널링
- 가상의 터널을 생성하여 통신
- 패킷을 캡슐화하여 작동
주소 변환
- NAT기술과 마찬가지로 주소 테이블을 생성해 통신
- 헤더를 제외하면 동일하기 때문에 헤더 부분을 전환하여 데이터를 전송
IP가 송신자와 수신자를 정확하게 전송되는 것을 보장해 주나요?
IP 자체로는 비신뢰성과 비연결성의 특징을 가지고 있다.
IPv4에서 수행하는 Checksum과 TCP에서 수행하는 Checksum은 어떤 차이가 있나요?
- IP에서 수행하는 체크섬은 헤더에서 체크섬 값을 제외한 모든 값을 더해 체크섬값과 비교
- TCP는 IP헤더에서 뽑아낸 의사 헤더를 만들어낸 다음, 의사 헤더와 TCP 세그먼트의 값을 16비트 단위로 끊은 뒤 모두 더하고, 체크섬과 더해 1이라면 정상 아니면 비정상으로 판단하여 정상일 경우 1의 보수를 취한뒤 체크섬 값으로 보내게 됨.
TTL(Hop Limit)이란 무엇인가요?
IP 패킷이 무한정으로 떠돌지 않도록 거칠수있는 라우터의 최대 개수
IP 주소와 MAC 주소의 차이에 대해 설명해 주세요.
- IP는 네트워크 상에서 단말을 구분하기 위해 부여된 논리적 주소, MAC은 NIC에 부여된 고유한 물리적주소
- MAC주소는 48bit
OSI 7계층에 대해 설명해 주세요.
- 네트워크에서 통신이 일어나는 과정을 7단계로 나 것을 말한다.
- 각 단계는 독립적이며 위 아래로 인접한 계층만 신경쓰면 된다.
- 물리, 데이터 링크, 네크워크, 전송, 세션, 표현 , 응용 계층이 있다.
Transport Layer와, Network Layer의 차이에 대해 설명해 주세요.
전송 계층
- 데이터의 송신자와 수신자를 연결해 통신을 활성화 하기 위한 계층
- 데이터의 단위로 세그먼트 사용
네트워크 계층
- 데이터를 목적지까지 전달하기 위한 계층
- 데이터의 단위로 패킷 사용
L3 Switch와 Router의 차이에 대해 설명해 주세요.
- 라우터는 경로를 찾는 라우팅을 진행하는 장비
- L3 스위치는 스위치를 라우터 내에 수용시켜 작동시킨 장비
- 라우터는 소프트웨어 기반으로 다양한 기능과 인터페이스를 지원하고 확장성을 지니지만 스위치는 특정 처리에 특화된 하드웨어 기반
각 Layer는 패킷을 어떻게 명칭하나요
- 비트
- 프레임
- 패킷
- 세그먼트
5,6,7 : 데이터
- 물리적인 신호이기 때문에 따로 정해져 있지 않음
- little-endian
3,4,7 : big-endian
5, : 정해져 있지 않음
ARP에 대해 설명해 주세요.
- IP 주소를 MAC주소로 대응하기 위해 사용
- IP는 항상 해당 단말을 가리키는 고정적인 값이 아니기 때문에 단말의 고유한 값이 필요
- 호스트 A가 B와 통신하고자 할 때, A는 자신의 ARP 테이블을 확인하여 MAC주소가 없다면 ARP Request 패킷에 B의 IP 주소를 담아 브로드캐스트하게 전송하여 B가 확인후 MAC주소를 ARP Reply패킷에 담아 전송
참고자료