본문 바로가기

네트워크&통신

(네트워크/통신) HTTP 구조

HTTP Request 메소드

클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단

최초의 HTTP에서 메소드는 GET밖에 존재하지 않았고 응답은 무조건 HTML문서 였다.

HTTP 메소드 종류 전송 형태 설명
GET GET [request-uri]?query_string
HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP]\r\n
URI(URL) 형식으로 서버 측 리소스(데이터) 요청
POST POST [request-uri]?query_string
HTTP/1.1\r\n
HOST:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Lenght in Bytes] \r\n 
\r\n
[query-string] 혹은 [데이터]
URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보는 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다.
HEAD HEAD [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n 
GET과 유사한 방식이나 웹 서버에서 메세지 헤더(문서 정보) 이외에는 어떤 데이터도 보내지 않는다. 웹 서버의 다운 여부 점검(Health Check)이나 웹 서버 정보(버전 등)등을 얻기 위해 사용될 수 있다.
OPTION OPTIONS [request-ri]
HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n 
시스템에서 지원되는 메소드 종류 확인할 수 있다.
PUT PUT [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Length in Bytes] \r\n
Content-Type:[Content Type] \r\n
\r\n
[데이터]
POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메세지(데이터)가 함께 전송된다. 원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다. 
DELETE   원격지 서버에 파일을 삭제. PUT과 반대
TRACE   루프백 메시지 호출
CONNECT   프락시 기능 요구
PATH PATCH [request-uri] HTTP/1.1
Host: [Hostname]
Content-Type: [Content Type]
If-Mathch
Content-Length: [Length in Bytes]
부분 수정

HTTP 상태 코드

  • 1XX : 정보
  • 2XX : 성공
    • 200 : OK. 요청 성공
    • 201: Created. 생성 요청 성공
    • 202 : Accepted. 요청 수락(처리 보장 X)
    • 204 : 성공했으나 돌려줄게 없음
  • 3XX : 리다이렉션
    • 300 : Multiple choices. 여러 리소스에 대한 요청 결과 목록
    • 301, 302, 303 : Redirect. 리소스 위치가 변경된 상태
    • 304: Not Modified. 리소스가 수정되지 않았음
  • 4XX : 클라이언트 오류
    • 400 : Bad Request. 요청 오류
    • 401 : Unauthorized. 권한 없음
    • 403 : Forbidden. 요청 거부
    • 404: Not Found. 리소스가 없는 상태
  • 5XX : 서버 오류
    • 500 : Internal Server Error. 서버가 요청을 처리 못함
    • 501 : Not Implemented: 서버가 지원하지 않는 요청
    • 503 : Service Unavailable. 과부하 등으로 당장 서비스가 불가능한 상태

MIME 타입

Content-Type. 

클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘.

웹에서는 파일의 확장자는 별 의미가 없다. 그래서 각 문서와 함께 올바른 MIME 타입을 전송한다.

 

Discrete types(개별 타입)

Multipart types(멀티파트 타입)

 

주요 컨텐츠 타입

  • text/plain, text/html
  • application/xml, application/json
  • image/png, image/jpg
  • audio/mp3, video/mp4