HTTP 프로토콜에 대해서 설명해주세요.
HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙이에요.
HTTP의 요청/응답 모델에 대해 설명해주세요.
HTTP 요청/응답 모델은 클라이언트와 서버 간의 통신 방식을 말합니다. 클라이언트(예: 웹 브라우저)가 서버에 정보를 요청하면, 서버는 그 요청에 맞는 응답을 보내주는 구조입니다.
예를 들어, 사용자가 웹 페이지를 요청하면, 클라이언트가 서버에 HTTP 요청을 보내고, 서버는 그 요청에 따라 HTML 문서나 이미지 파일 등의 데이터를 응답으로 반환합니다. 이처럼 HTTP는 요청과 응답의 단방향성을 특징으로 하는 비연결형 프로토콜입니다.
HTTP 메서드중 GET과 POST의 차이점에 대해 설명해주세요.
GET은 서버에서 데이터를 조회할 때 사용하며, 요청 데이터가 URL에 포함됩니다. 반면, POST는 데이터를 서버로 전송할 때 사용하며, 요청 데이터가 본문에 포함되어 보안에 더 적합합니다.
HTTP 메서드중 PUT과 PATCH의 차이점에 대해 설명해주세요.
PUT은 리소스의 전체를 수정할 때 사용하고, 기존 데이터를 통째로 대체합니다. 반면, PATCH는 리소스의 일부만 수정할 때 사용하여 필요한 부분만 업데이트합니다.
HTTP 상태 코드가 뭔가요? 알고 있는 상태 코드 몇가지 설명해주세요.
HTTP 상태 코드는 클라이언트 요청에 대한 서버의 응답 상태를 나타내는 숫자 코드입니다.
예를 들어, 200번대는 요청이 성공했음을, 400번대는 클라이언트 오류가 있음을, 500번대는 서버 내부 오류가 발생했음을 의미합니다. 이러한 코드를 통해 요청이 성공했는지, 오류가 발생했는지를 쉽게 파악할 수 있습니다.
HTTP 헤더가 뭘까요? 알고 있는 헤더 몇 가지 설명해주세요.
클라이언트와 서버 간 통신에서 추가 정보를 전달하는 메타 데이터입니다.
- 요청 헤더
- Accept: 받고 싶은 데이터 타입
- Authorization: 인증 정보
- 응답 헤더
- Content-Type: 보내는 데이터 타입
- Set-Cookie: 쿠키 설정
- 공통 헤더
- Connection: 연결 상태
- Date: 메시지 생성 시간
HTTP의 무상태성(Stateless)에 대해서 설명해주세요.
각각의 HTTP 요청이 독립적이고 서버가 이전 요청의 상태를 저장하지 않는다는 특징이 있습니다.
장점:
- 서버 자원을 효율적으로 사용할 수 있음
- 서버의 확장성이 좋음 (Scale out 용이)
단점:
- 매 요청마다 필요한 정보를 담아서 보내야 함
- 상태 유지가 필요한 경우 추가 작업 필요
HTTP Keep-Alive에 대해서 설명해주세요.
서버와 클라이언트 간의 연결을 요청마다 닫지 않고 지속적으로 유지하는 방식입니다. HTTP/1.1부터 도입되어, TCP connection을 재사용할 수 있도록 설계되었습니다.
HTTP 파이프라이닝에 대해서 설명해주세요.
HTTP 파이프라이닝은 HTTP/1.1에서 여러 요청을 순차적으로 보내는 대신, 응답을 기다리지 않고 여러 요청을 한 번에 전송할 수 있는 방식입니다. 이를 통해 네트워크 지연 시간을 줄일 수 있지만, 요청 순서대로 응답을 받아야 하므로 구현이 복잡하고 대부분의 브라우저에서는 비활성화되어 있습니다. HTTP/2에서는 멀티플렉싱이 도입되면서 파이프라이닝의 단점을 개선해 대체하게 되었습니다.
HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요.
HTTP/1.1은 1999년에 출시된 가장 널리 사용되는 버전으로, 직렬 처리 방식이지만 영속성 연결을 통해 TCP 연결을 재사용할 수 있습니다.
HTTP/2는 2015년 출시된 버전으로, 멀티플렉싱과 헤더 압축 기능이 추가되어 성능이 향상되었습니다.
HTTP/3는 2022년 표준화된 최신 버전으로, QUIC 프로토콜 기반의 UDP 사용으로 지연 시간이 줄었습니다.
전반적으로 HTTP 프로토콜은 지속적인 기능 개선을 통해 웹 애플리케이션의 성능과 사용자 경험을 향상시켜왔습니다.
'외부활동 > JSCODE 네트워크' 카테고리의 다른 글
[2주차] DNS (0) | 2024.11.08 |
---|---|
[2주차] HTTPS (0) | 2024.11.08 |
인터넷과 웹의 차이 (0) | 2024.11.08 |
HTTP keep-alive란? (0) | 2024.11.06 |
[1주차] 네트워크 기초 (0) | 2024.10.31 |