본문 바로가기

자료집

컴퓨터 네트워킹 하향식 접근 1-2장 연습문제 정리

2. 컴퓨터 네트워킹 하향식 접근 2장 정리

HTTP
1. 애플리케이션 계층에서는 어떤 종류의 프로토콜을 사용할까요?
애플리케이션 계층에서 사용하는 프로토콜은 여러종류가 있는데 크게 2가지 전송방식으로 나눠진다. TCP거래 방식과 UDP 거래를 하는 통신 프로토콜들이 존재한다. TCP 거래에는 대표적으로  http, smtp,ftp 프로토콜이 있고, UDP는 DSN 프로토콜이 대표적이다.

2. HTTP와 HTTPS의 차이점은?
HTTPS는 HTTP에 보안 기능을 추가한 것으로, 평문으로 통신하는 HTTP의 네트워크 취약성을 개선하기 위해 나온 통신 규약이다. HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용해서 암호화를 하여 누군가 데이터를 가로채더라도 복호화하여 보지 못하도록 한다.
HTTPS는 SSL 또는 TLS 인증서(Certificate)를 사용해서 웹 사이트 신원을 인증한다. 이 인증서는 제3자 기관에서 발급을 받으며 HTTPS를 사용하면 사용자가 접속을 시도하는 웹사이트가 신뢰할 수 있는 지를 확인할 수 있다. HTTPS는 HTTP보다 다은 보안 환경에서 사용자가 인터넷 애플리케이션을 사용할 수 있도록 하고 있어 개인정보 거래나 온라인 상거래는 HTTPS를 사용하는 것이 안전하다.

3. HTTP의 역사. HTTP1, HTTP2, HTTP3
HTTP 프토토콜은 팀 버너스리가 발표한 프로토콜로 당시에는 GET방식만 존재하고 HTTP 헤더도 존재하지 않던 시절이 있었다. HTTP의 포트번호는 80이다.

HTTP2는 이전 버전인 HTTP보다 성능이 개선되었는데 바이너리 프로토콜로 HTTP2는 이전 버전인 HTTP의 텍스트 기반 파싱과 달리 바이너리 프로토콜을 사용하여 빠르게 데이터를 처리할 수 있도록 했다. 또한,  여러 개의 스트림을 병렬로 처리할 수 있게 되어 순차적으로 처리를 진행하던 HTTP와 달리 여러 개의 스트림을 동시에 처리할 수 있어 응답과처리 시간을 단축시켰다. 그리고 헤더 압축 기능이 생겨서 중복으로 전송하던 헤더 정보를 중복 제거를 하여 해당 정보를 참조할 수 있도록 하였으며, 웹 페이지 로딩 속도를 개선시켰다. 멀티플렉싱과 헤더 압축 등의 기능을 제공해서 웹페이지의 로딩 속도를 현저하게 증가시켰다.  PUSH 메커니즘이 이 때 소개가 되었다.

HTTP3는 HTTP 프로토콜의 최신 버전으로 더 빠르고 안전한 통신을 지원하는 프로토콜이다. 전송 방식에서 차이가 있는데 HTTP와 HTTP2는 TCP 전송 거래 방식인 반면에 HTTP3는 UDP 전송 거래 방식을 따른다. 헤더 압축 역시 HTTP2는 HPACK 압축 알고리즘을 지원하는데 HTTP3는 QPACK 압축 알고리즘으로 더 효율적인 압축을 제공한다. 특히, 다중화 특징 중에서 HTTP3는 QUIC(Quick UDP Internet Connection) 프로토콜을 사용해서 여러개의 요청과 응답을 동시에 처리할 수 있다. 또한, 핸드쉐이크 프로세스를 처리하기 위해서 HTTP2는 2RTT(Round-Trip-Time)을 사용하는데 반해 HTTP3는 1-RTT 핸드쉐이크를 사용하여 빠른 연결을 제공한다.

4. persistent-Connection / non-persistent-Connection
HTTP/1.0에선 비지속성 연결이어서 하나의 요청에 하나의 TCP Connection을 맺었어야 했는데 그렇다보니 웹페이지 로딩 시간도 길었고, 서버 자원도 비효율적인 사용으로 이어졌다. 그래서 HTTP/1.1부터는 기본적으로 Connection 헤더값이 keep-alive로 설정되면서 하나의 TCP Conneciton으로 여러개의 요청과 응답을 주고 받을 수 있도록 하였다. 이렇게 하나의 TCP Connection으로 여러 개의 요청과 응답을 받을 수 있도록 한것이 persistent-Connection이다.
*Non-persistent HTTP Response time = 2RTT + file transmission time

5. HTTP Message
HTTP 메시지는 HTTP 프로토콜에서 클라이언트와 서버가 주고받는 데이터 단위이다. 대표적인 4가지 구성요소로, 시작줄(inital Line), 헤더(Header), 본문(Body), 빈줄(Blank Line)이 있다. 시작줄에는 HTTP의 버전정보와 상태코드, 상태메시지가 포함되어 있다. 헤더에는 클라이언트와 서버간의 추가적인 정보를 담고 있고, 요청한 리소스의 MIME 타입, 캐시 관련 정보 서버의 소프트웨어 정보 등의 담겨 있다.
그리고 본문(Body)에는 요청이나 응답에 대한 실제 데이터가 본문에 포함되어 있다. HTTP에서 빈줄은 본문이 끝나고 HTTP 메시지의 끝을 알리는 역할을 한다.

*SMTP(POP3 와 IMAP)


*DNS(Type 종류)

*P2P 애플리케이션과 BitTorrent

*Streaming multiedia : DASH












*Q&A 답변은 컴퓨터 네트워킹 하향식 접근법을 공부한 뒤 제가 기술한 내용으로 오답이 있을 수 있습니다.