본문 바로가기
CS/네트워크

HTTP

by Mecodata 2023. 9. 10.

정의

HyperText Transfer Protocol의 약자로 웹 상에서 Server와 Client 간의 데이터 전송을 위한 프로토콜

- TCP/IP 기반 프로토콜

- Request/Response 구조로 구성 (Client: HTTP Requset <-> Server: HTTP Response)

 

HTTP Request

- Request Line, Header, Empty Line, Message Body로 구성

Request Line

[HTTP Method] [Request target] [HTTP version]

- HTTP 메소드, 전송 목표 주소, HTTP 버전으로 구성

ex) POST /test.html HTTP/1.1

Header

- Request에 대한 추가 정보를 담고 있는 부분

※ 주요 파라미터

- Host = 요청하려는 서버의 호스트명과 포트 번호

- Accept = Client가 처리 가능한 미디어 타입 

ex) Accept: text/html => 응답으로 HTML 타입 허용

- Authorization = 인증 토큰 

- Content-Type = Message Body의 MIME 타입 지정

지정 안할 시 Client에서 어떤 타입으로 보내도 데이터를 받는 쪽에서는 텍스트 데이터(String)으로 인식

※ MIME(Multipurpose Internet Mail Extensions) 타입 = 서버에서 클라이언트에게 전송할 문서(데이터)의 타입을 알려 주기 위한 메커니즘

=> 크게 text(문자), multipart(이미지), audio(오디오), video(비디오), application(바이너리)로 구분

  • application/json = JSON (REST API)
  • application/x-www-urlencoded = 쿼리 스트링([key=value&key&value]) 
  • application/octet-stream = 바이너리 데이터의 기본값
  • text/css, text/javascript, text/html, text/plain = css, javascript, html, plain에 맞추어 텍스트로 전달
    (text/plain이 기본값)

- Cookie = [key=value; key=value;] 형태로 쿠키 데이터 지정

- Origin = 서버로 POST 요청을 보낼 때 어느 주소에서 요청이 시작되었는지 지정 (요청을 보낸 주소와 받는 주소가 다르면 CORS 에러 발생)

Empty Line

- Header와 Message Body를 구분하는 빈 줄

Message Body

- Request가 전송하는 데이터

- 전송하는 데이터가 없을 경우에는 비어 있음

HTTP Response

- Status Line, Header, Empty Line, Message Body로 구성

Status Line

[HTTP version] [Status Code] [Status Text]

- HTTP 버전, HTTP 상태 코드, 상태 코드 관련 텍스트로 구성

ex) HTTP/1.1 200 OK

Header

- Request와 동일

Empty Line

- Header와 Message Body를 구분하는 빈 줄

Message Body

- Response가 전송하는 데이터

- 전송하는 데이터가 없을 경우에는 비어 있음

TCP 소켓 통신과의 비교

- HTTP, TCP 소켓 통신 모두 IP와 포트 번호를 활용하는 연결지향적 통신

- 실시간으로 데이터를 주고 받는 경우에는 소켓 통신이 유리

- HTTP는 TCP 소켓 통신의 일종이지만 TCP 소켓 통신은 HTTP의 일종이 X 

'CS > 네트워크' 카테고리의 다른 글

CLI vs REST 비교  (0) 2023.12.13
Ceph  (0) 2023.12.11
Message Broker  (0) 2023.09.20
RSA  (0) 2023.05.03
Client 인증 방식 (Cookie, Session, JWT)  (0) 2023.05.02

댓글