컴퓨터 네트워크

HTTP

승무_ 2023. 7. 11. 15:15

HTTP가 뭔지 설명해 주세요

HTTP는 인터넷에서 데이터를 주고받는 데 사용되는 통신 규약입니다. 웹 브라우저와 웹 서버 사이에서 웹 페이지, 이미지, 동영상 등의 데이터를 전송할 때 사용됩니다.

 

그리고 크게 두가지의 특징이 있는데, 첫 번째로는 서버가 클라이언트의 상태를 보존하지 않는다는 점입니다. 이렇게 상태를 유지하지 않을 경우 클라이언트가 매번 추가 데이터를 전송해야한다는 단점이 있지만 서버 확장성이 좋다는 장점이 있습니다.

 

두 번째로는 클라이언트와 서버가 요청과 응답을 주고받을 때, 연결을 유지하지 않고, 각각의 요청과 응답을 독립적으로 처리한다는 점입니다. 이러한 비연결성은 클라이언트가 서버 자원을 계속 차지하게 되는 문제를 해결해 서버 자원의  효율적인 사용을 가능하게 합니다.

 

  • HTTP Persistence Connection 이 무엇인가요?
더보기

HTTP 1.1 때 등장한 개념으로 3-way handshake를 통한 오버헤드를 방지하기 위해 일정시간 동안은 연결을 유지하는 것을 뜻한다.

  • TCP의 keep-alive와 HTTP의 keep-alive의 차이는 무엇인가요?


HTTP request method 중 GET vs POST를 비교 설명해 주세요 ⭐⭐

GET은 리소스를 조회할 때 사용하며 보내고자 하는 데이터를 쿼리 스트링을 통해 전달하는 특징이 있고 POST는 데이터 등록에 사용되며 body에 데이터를 넣어 전달합니다.


[꼬꼬무1] HTTP request method 중 put vs patch를 비교 설명해 주세요

put은 리소스가 있으면 완전히 대체, 없으면 생성한다는 특징이 있고 patch는 리소스를 부분 수정할 때 사용합니다.


HTTP Status code에 대해서 설명해 주세요

클라이언트가 서버에 요청을 보내면 서버는 응답을 해주는데 이 때, 응답 상태를 나타내는 세자리 숫자를 같이 보냅니다. 이 세자리 숫자를 응답코드라고 합니다.

 

  • 401 (Unauthorized) 와 403 (Forbidden)은 의미적으로 어떤 차이가 있나요?
더보기

401은 클라이언트에게 인증이 필요함을 알리고 403은 클라이언트에게 접근 권한이 없음을 알립니다.

  • 200 (ok) 와 201 (created) 의 차이에 대해 설명해 주세요.
더보기

200은 클라이언트의 요청이 성공적으로 처리되었으며, 클라이언트가 요청한 정보를 받았음을 알리고, 201은 클라이언트의 요청에 의해 새로운 리소스가 성공적으로 생성되었음을 나타냅니다. 일반적으로 POST 요청에 대한 응답으로 사용됩니다


www.google.com을 주소창에 쳤을 때 화면이 나오기까지의 과정을 네트워크 관점으로 설명해 주세요 ⭐⭐

1. 먼저, 클라이언트는 웹 브라우저를 통해 www.google.com에 접속하려고 시도합니다.

2. 클라이언트는 DNS(Domain Name System) 서버에게 www.google.com의 IP 주소를 요청합니다. DNS 서버는 www.google.com의 도메인 이름을 IP 주소로 변환하여 클라이언트에게 응답합니다.

3. 클라이언트는 변환된 IP 주소를 사용하여 www.google.com 서버에 연결을 시도합니다. 이때, 클라이언트는 TCP(Transmission Control Protocol) 프로토콜을 사용하여 연결을 시도합니다.

4. www.google.com 서버는 클라이언트의 요청에 응답하고, HTTP(Hypertext Transfer Protocol) 프로토콜을 사용하여 클라이언트에게 요청한 웹 페이지의 데이터를 전송합니다.

5.클라이언트는 받은 데이터를 웹 브라우저를 통해 표시하고, 사용자는 웹 페이지를 볼 수 있게 됩니다.

 

  • HTTP Method의 멱등성에 대해 설명해 주세요.
더보기

한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 같은 것을 의미하여

멱등 메서드로는 GET, PUT, DELETE가 있습니다

 

멱등이 필요한 이유는 메서드를 호출하고 응답이 없을 때, 멱등 메서드이면 재시도를 할 수 있기 때문입니다.

  • HTTP 1.1 이후로, GET에도 Body에 데이터를 실을 수 있게 되었습니다. 그럼에도 불구하고 왜 아직도 이런 방식을 지양하는 것일까요?
더보기

GET 요청 같은 경우, 쿼리 스트링까지 포함해서 브라우저 히스토리에 남기 때문에, 캐싱이 가능해 동일한 요청에 대한 응답시간을 단축시킬 수 있기 때문입니다.

  • 공개키와 대칭키에 대해 설명해 주세요.
더보기

둘 모두 암호화 기법 중 하나로 대칭키는 암호화와 복호화에 쓰이는 키가 같은 것을 의미합니다. 다만 이 방법은 암호문과 키를 전달하는 과정에서 키를 탈취당할 우려가 있기에 안전하지 않습니다. 이를 보완하기 위해 나온 공개키는 암호화에 쓰이는 키와 복호화에 쓰이는 키가 다른 비대칭키로, 두 개의 키 중 하나는 모두에게 공개되어 있는 공개키, 하나는 개인만이 알고 있는 개인키로 이루어져 있습니다. 따라서 상대방의 공개키를 통해 암호화한 암호문을 상대방에게 보내면 상대방은 개인키를 이용해 복호화할 수 있습니다.

  • 왜 HTTPS Handshake 과정에서는 인증서를 사용하는 것 일까요?
더보기

인증서를 사용하는 이유는 통신 보안을 위해서입니다. 인증서는 웹 서버의 신원을 확인하고, 데이터의 암호화 및 무결성을 보장하는 역할을 합니다.

 

SSL 통신 과정

  • 비대칭 키와 대칭 키 혼합
  • 공개키로 암호화하는 것은 비용이 많이 들기 때문에 비대칭키를 이용해서 안전하게 대칭키를 전달

1. A에서 B로 접속 요청

2. B는 A에게 자신의 공개키를 전송

3. A는 자신의 대칭키를 B에서 전달 받은 공개키로 암호화

4. 암호화한 대칭키를 B에게 전달

5. 암호화된 대칭키를 자신의 개인키로 복호화

6. 이렇게 대칭키를 얻어 서로 안전하게 통신

 

인증기관을 포함한 통신 과정

1. 사이트는 인증서를 얻기 위해 인증기관에 사이트 정보와 사이트 공개키를 전달

2. 인증기관은 사이트 검증 후, 인증기관의 개인키로 서명

3. 서명 후, 인증서를 사이트에게 전달

4. 인증기관 공개키를 사용자에게 전달 (여기까지는 사용자가 사이트에 접속하기 전 상황)

5. 사용자가 사이트 접속 요청

6. 자신이 신뢰할 수 있는 사이트인 것을 증명하기 위해 인증서를 보냄

7. 인증기관 공개를 이용해 사이트 인증서를 복호화

8. 사이트 공개키를 이용해 사용자 대칭키 암호화

9. 암호화한 대칭키를 사이트에 전달

10. 사이트는 개인키를 이용해 복호화

11. 이렇게 얻은 대칭키를 이용해 안전하게 통신

  • SSL과 TLS의 차이는 무엇인가요?
더보기

SSL은 Netscape가 개발한 암호화 프로토콜로 1996년 3.0 버전 이후로 업데이트가 되고 있지 않으며, 각종 보안 취약점이 발견되어 이를 업데이트한 최신 암호화 프로토콜을 TLS라고 합니다. 사실상 SSL의 업데이트 버전이라고 보면 되며 보안과 속도면에서 많이 개선되었습니다.

  • HOL Blocking 에 대해 설명해 주세요.
더보기
Pipelining

HTTP/1.1 에서는 Pipelining을 이용해 하나의 요청에 대해 응답을 받고 다음 요청을 보내는 것이 아니라 연속으로 요청을 보내고 그 응답을 차례로 받을 수 있습니다.

HOL Blocking

하지만 첫 번째 요청에 대한 응답이 느려지게 되면 그 다음 요청들의 작업들이 완료되어도 지연되는 첫 번째 응답때문에 전체가 느려지게 되는데 이러한 현상을 HOL Blocking이라고 합니다.

  • HTTP/1.1과 HTTP/2의 차이점은 무엇인가요?
더보기
바이너리 프레이밍
멀티플렉싱

HTTP/2의 핵심은 새롭게 추가된 바이너리 프레이밍 계층을 사용해 요청과 응답의 멀티플렉싱을 지원한다는 것입니다. 기존에 HTTP/1.1에서는 연속해서 보낸 요청에 대해서 앞의 요청이 처리 되지 않으면 뒤의 요청의 응답이 지연되는 HOL Blocking 문제가 있었습니다. 하지만 HTTP/2에서는 메시지를 바이너리 형태의 프레임으로 나누고 전송 후, 받은 쪽에서 다시 조립하는 형식을 사용해 HTTP 단의 HOL Blocking 문제를 해결했습니다. 또한 스트림의 우선 순위를 설정해 우선 순위가 더 높은 리소스를 먼저 응답할 수 있으며, HPACK 압축 형식을 사용해 요청과 응답에 쓰이는 헤더의 메타데이터를 압축해서 주고 받는다는 차이가 있습니다.

cf) TCP HOL Blocking

그림과 같이 C응답이 손실 됐을 때, TCP는 신뢰성 기반 프로토콜이라 이를 재전송 해야합니다. 그러나 재전송하는 과정에서 뒤 패킷들이 blocking 되기 때문에 TCP 관점에서 보면 HOL Blocking 문제는 여전하고 최근에는 이를 해결하는 UDP기반 HTTP/3가 대두되고 있습니다.

  • HTTP/3.0의 주요 특징에 대해 설명해 주세요.
더보기

가장 큰 특징은 기존에 TCP 기반으로 사용되던 HTTP와 다르게 UDP 기반의 Quick UDP Internet Connection이라 불리는 QUIC 프로토콜을 사용하는 것입니다. 또한 선택적으로 사용했던 TLS를 HTTP/3에서는 필수적으로 사용해야 되며, 첫 연결에는 1RTT의 시간, 이후의 연결에는 이전의 연결에서 사용한 정보를 그대로 사용하기 때문에 0RTT가 필요한 굉장히 빠른 속도를 가지고 있습니다.

  • DNS 쿼리를 통해 얻어진 IP는 어디를 가리키고 있나요?
더보기

해당 서버의 IP주소를 가리키고 있습니다.

  • Web Server와 Web Application Server의 차이에 대해 설명해 주세요.
더보기

Web Server는 클라이언트로 부터 요청을 받아 html, css, js 같은 정적 페이지를 응답하는 서버입니다.

WAS는 DB 조회나 다양한 로직 처리를 요구하는 동적인 페이지를 제공하기 위해 만들어진 서버입니다.

 

https://dkswnkk.tistory.com/503

 

Web Server와 WAS의 차이

서론 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server)의 키워드만 두고 보았을 때 두 개의 차이가 뭔가에 대해 확신 있게 대답을 못할뿐더러 아직 이해가 잘 가지 않아서 한번 정리를

dkswnkk.tistory.com

  • URL, URI, URN은 어떤 차이가 있나요?
더보기

'나'라는 자원이 있을 때, URI는 나를 식별할 수 있는 모든 식별자, URL은 나의 위치를 나타내는 주소, URN은 '나'라는 자원에 이름을 부여한 것을 의미합니다. 

'컴퓨터 네트워크' 카테고리의 다른 글

웹소켓과 소켓 통신의 차이에 대해 설명해 주세요.  (0) 2023.08.04
Authorization  (0) 2023.07.12
TCP/IP  (0) 2023.07.09
쿠키와 세션의 차이에 대해 설명해 주세요.  (0) 2023.06.20
OSI 7계층  (0) 2023.04.06