개발/WEB

TIL # 27 HTTP 통신

JWOOKJ 2021. 5. 24. 18:34

HTTP

HTTP 통신은 Hyper Text Transfer Protocol의 약자로,

클라이언트와 서버 사이에서 이루어지는 요청(request)/응답(response)을 통해 정보(웹페이지를 이루는 리소스들)를 주고받기 위한 프로토콜이다. 

프로토콜 : 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계이다.

 

HTTP통신을 통해 전달되는 자료는 http://로 시작하는 URL로 조회할 수 있다. 


HTTP 통신의 특징

stateless

http 통신은 stateless 통신(단방향 통신)이다.

 

stateless란 말 그대로 상태가 없다는 뜻으로,

HTTP 통신은 서버와 클라이언트가 통신을 주고받아도 계속 연결되어 있는 것이 아닌 각각의 통신은 독립적임을 뜻한다.  

즉, 이전의 통신에서 어떠한 정보를 주고 받았는지 기억하지 못한다. (이러한 이유 때문에 로그인 같은 경우 세션과 스토리지를 이용한다)

 

Packet

Packet : 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 

http 통신은 각 요청/응답의 과정에서 필요한 정보들을 패킷(Packet)에 담아 전달한다. 

 

패킷은 헤더(header)바디(body)로 이루어져 있다.

  • 헤더 : 웹페이지의 정보를 담고 있는 데이터(url, cookie 등)
  • 바디 : 실제로 전달하고자 하는 데이터

Request(요청) 구조

  • Start Line : 요청 url, http 메서드, http 버전의 정보를 담고 있다.  
  • Header : key-value값으로 이루어져 있는 request에 대한 추가 정보
  • Empty line
  • Body : 전송할 data가 없는 경우 비어있게 된다.

Response(응답) 구조

  • Status line : status code, status text, http 버전의 정보를 담고 있다. 
  • Header : request의 header와 같은 역할을 하지만 response에만 담겨있는 정보들이 존재한다. 
  • Empty line
  • Body : 전송할 data가 없는 경우 비어있게 된다.

HTTP 메서드 종류

  • GET : 클라이언트에서 서버 측에 리소스를 요청할 때 사용된다. (READ)

  • POST : 클라이언트를 통해 서버의 리소스를 새로 만들어야 할 때 사용된다. (CREATE) 

  • PUT : 클라이언트에서 서버의 리소스를 수정해야 할 때 사용된다. (UPDATE [전체 수정])

  • PATCH : PUT과 같이 수정에 사용된다. (UPDATE [일부 수정]) 

  • DELETE : 클라이언트에서 서버의 리소스를 삭제해야 할 때 사용된다. (DELETE)

  • HEAD : 서버의 정상 작동 여부를 확인하기 위해 사용된다. 

  • OPTIONS : URL이 어떤 메서드를 지원하는지 확인하기 위해 사용된다.

  • CONNECT : 클라이언트가 프록시를 통해 서버와 SSL 통신을 하고자 할 때 사용된다. 

  • TRACE : 클라이언트와 서버의 통신관리 및 디버깅을 위해 사용된다.