HTTP 프로토콜

Yeonn·2023년 8월 29일
0

CS 공부

목록 보기
5/13
post-thumbnail

1. HTTP( Hypertext Transfer Protocol )

HyperText는 HTML( Hyper Text Markup Language ), 문서와 문서가 링크로 연결되는 것을 의미한다.
Transfer는 HTML로 만든 웹페이지 문서( 파일 )을 보내는 것을 의미하고
Protocol은 상호 간에 정의한 HTML 송수신에 대한 규칙을 의미한다.

2. HTTP 통신 구조


HTTP의 통신 구조는 클라이언트가 요청( Request )을 보내면 서버가 응답( Response )한다. 클라이언트와 서버가 분리됨으로써 각자의 역할에 집중할수 있고 이를 통해 클라이언트, 서버 양쪽이 각각 독립적으로 고도화가 가능하다.



3. HTTP 특징

3-1. 무상태성 ( Stateless )

Stateless클라이언트와 서버 사이에 상태를 유지하지 않는 특성을 말한다. 데이터를 주고 받기 위한 각각의 데이터 요청을 서로 독립적으로 관리한다. 이를 통해 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점을 가진다. 또 서버의 확장성 ( Scale-Out )이 높으나, 클라이언트가 추가 데이터를 전송해야해서 메모리 소모가 크다.

3-2. 비연결성 ( Connectionless )

Connectionless서버와 클라이언트의 연결을 지속하지 않는 특성을 말한다. 서버에 요청 후 응답을 받으면 바로 TCP/IP연결을 끊는다. 이를 통해 서버의 자원을 효율적으로 관리하고 수많은 클라이언트의 요청에 대응할 수 있도록 한다. 하지만 이러한 특징은 TCP 3 way handshake를 매번 해야한다는 한계가 있다. 이를 해결 하기 위해 HTTP 지속 연결( Persistent Connections ) 라는 개념이 도입되었고 소켓 연결을 일정 시간 동안 더 유지함으로써, 필요한 자원들을 모두 다운받을때 까지 연결이 종료되지 않고 요청 / 응답이 반복된 뒤 종료한다.



4. HTTP Message

HTTP Message의 구조는 Start-line, Header, Empty line, Body로 구분된다.

RequestResponseHeaderEmpty line, Body의 내용은 거의 비슷하다.
Header에는 HTTP 전송에 필요한 모든 부가 정보가 담기고 Empty line은 헤더와 바디를 구분하기 위한 라인이다. Body에는 실제 전송할 / 전송 받은 데이터가 담긴다.

Start-line에서 서로 차이가 많이 나는데,
RequestStart-line에는 HTTP Method, URL, Version이 담기고,
ResponseStart-line에는 Version, Status Code, Status Message가 담긴다.

✔️ HTTP Method

  • Get: 리소스 조회
  • POST: 요청 데이터 처리, 주로 데이터 등록에 사용
  • PUT: 리소스를 대체, 해당 리소스가 없으면 생성 → 멱등성 O
  • PATCH: 리소스를 일부만 변경 → 멱등성 X
  • DELETE: 리소스 삭제

✔️ HTTP Status Code

  • 1xx ( 정보 ) : 요청을 받았으며 프로세스를 계속 진행
  • 2xx ( 성공 ) : 요청을 성공적으로 받았으며 인식했고 수용
  • 3xx ( 리다이렉션 ) : 요청 완료를 위해 추가 작업 조치가 필요
  • 4xx ( 클라이언트 오류 ) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
  • 5xx ( 서버 오류 ) : 서버가 명백히 유효한 요청에 대한 충족을 실패


5. HTTP vs HTTPS

✅ HTTPS: HTTP + SSL ( 전자상거래에서의 데이터 보안을 위해서 개발된 통신 레이어 )

HTTPS는 SSL 레이어 위에 HTTP를 통과시키는 방식으로 평문인 HTTP 문서는 SSL 레이어를 통과하면서 암호화 되어 목적지에 도착하고 목적지에서는 SSL 레이어를 통과하면서 복호화 되어 웹 브라우저에 전달된다. HTTP 메시지는 일반 텍스트이므로 누구나 쉽게 엑세스하고 읽을 수 있는 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송하므로 보안성이 높다. 또한 이러한 보안성과 신뢰성 때문에 검색 엔진에서도 HTTP 보다 컨텐츠의 순위를 높게 지정한다.

0개의 댓글