Http 개요

 World Wide Web에서 사용하고 있는 TCP기반의 데이터 송수신 규약

  • 서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 프로토콜
  • 동영상, 오디오, 문서 등, 어떠한 형태의 데이터도 전송할 수 있도록 설계되어있음
  • TCP/IP를 이용하는 응용 프로토콜
  • 서버가 클라이언트로부터 받은 요청을 응답한 뒤 연결을 종료하는 비연결성 프로토콜 
  • 요청/응답 방식으로 이루어짐
  • Default Port 넘버는 80
  • HTTP/0.9
    • Request는 단일 라인으로 구성되며 사용 가능한 method는 GET밖에 없다. 헤더, 상태 코드가 없고 Response 또한 오로지 파일 내용 자체로만 구성된다.
  • HTTP/1.0 규약
    • 서버와 클라이언트는 각각 HTTP 0.9/1.0의  request line의 표현 형식을 인식하고 적절히 응답할 수 있어야 한다.(프로토콜 호환성)

     

관련 기초 용어 설명

 

HTTP통신 동작 방식

HTTP의 통신 방식은 서버 접속→ 클라이언트의 요청→ 서버의 응답→ 연결 종료 순으로 이어진다.

  1. 사용자가 브라우저에 URI주소 입력
  2. DNS 서버에 웹 서버의 호스트 이름을 IP주소로 변경 요청
  3. 웹 서버와 TCP 연결(3 Way handshaking)
  4. 클라이언트가 서버에 요청
    • HTTP Request Message= Request Header + 빈 줄(Empty Line) + Request Body
    • Request Header= 요청 메소드+ 요청 URI+ HTTP 프로토콜 버전
    • 빈 줄: 요청에 대한 모든 메타 정보가 전송되었음을 안내
    • Request Body: 데이터 업데이트 요청과 관련된 내용(HTML 폼 양식 등..)
  5. 서버의 응답
    • HTTP Response Message= Response Hedaer+ 빈 줄+ Response Body
    • Response Header= HTTP프로토콜 버전+ 응답 코드+ 응답 메시지
    • Response Body: 응답 리소스 데이터
  6. 연결 종료

 

HTTP1.0 Message 헤더 필드

 서버와 클라이언트가 HTTP통신을 할 때 주고받는 메시지를 나타낸다.

  • 클라이언트가 서버에게 자료를 요청하는 메시지: Request Message
  • 서버가 클라이언트에게 응답하는 메시지: Response Message
  • Request/ Response 메시지 헤더 구성

  • Request-Line: 요구메시지의 첫 번 째 줄에 등장하며 자원의 이용 방법(Method), 자원 위치(URI), 규약 버전, 그리고 마지막에 공백(CRLF)으로 표시된다. 
  • Message Header: 요청에 대한 상세 설명이 표시된다.
  • Blank: 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄이 삽입된다.
  • Message Body: 요청과 관련된 내용(HTML 폼 콘텐츠 등)이나 응답과 관련된 문서가 들어간다. 

HTTP/1.0 버전은 더 다양한 기능을 제공하며 다음과 같은 메시지 형식을 갖는다.

  • 메시지 형식

  • 상세

Http1.0 메소드

브라우저가 서버로 데이터를 전달하는 방법으로,  http/1.0은 GET, HEAD, POST 메소드만 존재(다른 이름의 Method 정의 불가)

  • GET: Request-URI에서 지정한 리소스를 요청한다.
  • HEAD: Request 요청에 대한 응답으로 헤더만 전달하는 것 외에 동일하다. 주로 서버의 정보, 컨텐츠의 크기, 날짜 등의 정보를 얻기 위함(트래픽 절감)
  • POST: 메시지의 Entity body에 포함된 자원을 서버에 요청할 때 사용한다. 요청 자원이 서버에서 생성되는 경우 201 응답이 되어야 하고 상태 정보나 새 자원 정보를 알려주는 Entity가 포함되어야 한다.
    • HTTP/1.0의 모든 POST Request메시지에는 Content-Length가 반드시 있어야 하며, 에러 상황 시 400 메시지를 응답해야한다. 

Http 상태 코드

클라이언트가 보낸 HTTP요청에 대한 서버의 응답 코드로, 요청의 성공/실패 여부를 판단한다.

  • 1xx(Informational): 임시적인 응답. 요구가 수신 되어 계속 처리
  • 2xx(Successful): 클라이언트의 요구를 성공적으로 수신
  • 3xx(Redirection): 요구에 대한 처리를 완료하기 위한 추가 조치
  • 4xx(Client Error): 클라이언트 요청 메시지가 잘못된 형식으로 되어있거나 제대로 처리할 수 없는 경우
  • 5xx(Server Error):  요구 메시지를 서버가 처리할 수 없는 경우

  * http/1.0에서 1xx코드는 예약되었을 뿐 실제로 사용되지 않음. http의 general한 상태 코드 list임 

 

Reference

https://luavis.me/http/http-summary-2

https://www.w3.org/Protocols/HTTP/1.0/spec.html

https://datatracker.ietf.org/doc/html/rfc1945

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html

 

+ Recent posts