HTTP 특징, HTTP 1,2,3의 차이, HTTP 상태코드

Previous Next

TL;DR




HTTP

HyperText Transfer Protocol

웹 상에서 클라이언트와 서버 간에 요청(request)응답(response) 으로 정보를 주고받을 수 있는 프로토콜.


  GET <https://www.naver.com> HTTP/1.1								
  User-Agent: Chrome/5.0 (Windows NT 10.0; Win64; x64) ...			


  HTTP/1.1 200 OK														// 시작줄
  Connection: keep-alive												 // 헤더
  Content-Length: 21211
  Content-Type: text/html;

  <!DOCTYPE html><html><head><title...



HTTP 특징

1. 서버-클라이언트 구조

클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조로 이루어져 있다.


2. 비연결성(Connectionless)

클라이언트가 어떠한 데이터를 요청하면 서버는 응답을 하고 한 번 맺었던 연결을 끊어버린다.


3. 무상태(Stateless)

연결을 끊는 순간 서버는 클라이언트의 상태 정보를 유지하지 않는다.



HTTP 버전

HTTP 0.9 (1991년)

/* 응답 */
<HTML>
A very simple HTML page
</HTML>



HTTP 1.0 (1996년) - 헤더의 등장

/* 요청 */
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

/* 응답 */
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>




HTTP 1.1 (1997년) - 커넥션 재사용

Untitled


단점



HTTP2.0 (2015년) - 멀티 플렉싱




HTTP 3.0 () - with QUIC



HTTP 상태코드

클라이언트가 서버에 보낸 요청이 어떻게 처리되었는지 보여주는 코드.

1xx(Informational) : 요청이 수신되어 처리중


2xx(Successful) : 요청 정상 처리


3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요

Untitled


영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동


일시 리다이렉션 : 일시적인 변경. 잠깐 이동할 때 쓴다.


특수 리다이렉션 : 결과 대신 캐시를 사용



4xx(Client Error) : 클라이언트 오류


5xx(Server Error) : 서버 오류




예상 질문

HTTP 각 버전의 가장 큰 특징을 발전 흐름에 따라 얘기해주세요. (HTTP 1.1 / 2.0 / 3.0 의 차이점에 대해서 설명해주세요)



POST로 주문 후에 웹 브라우저를 새로고침하면 다시 요청이 돼서 중복 주문이 될 수 있는데, 이를 어떻게 해결하나요?



HTTP 메소드 종류와 사용법을 CRUD 관점에서 설명해주세요.



HTTP 응답 코드 중 클라이언트 에러를 나타내는 401번과 403번의 차이점을 설명해 주세요.

401번은 Unauthorized로, 클라이언트가 응답을 받기 위해 권한을 가진 사용자인지 인증할 필요가 있다는 의미입니다. 403번은 Forbidden로, 클라이언트가 콘텐츠에 접근할 권리가 없음을 의미합니다. 401과 다른 점은 이 때 서버는 클라이언트가 누구인지 알고 있다는 점입니다.




References