티스토리 뷰

면접대비

HTTP에 대해

빵파레22 2019. 8. 27. 21:37

HTTP란?


  • HTTP란 HyperText Transport Protocol의 약자로 인터넷에서 서버와 클라이언트간에 데이터를 교환하기 위한 통신규약이다.
  • 웹은 HTTP 프로토콜을 사용하여 클라이언트/서버 간 통신을 한다.
  • World Wide Web(WWW)의 분산되어 있는 Server와 Client 간에 Hypertext를 이용한 정보교환이 가능하도록 하는 통신 규약이다.
  • HTTP는 TCP/IP 기반(TCP/IP 프로토콜의 응용계층에 위치) 으로 한 지점에서 다른 지점(보통 클라이언트와 서버)로 요청과 응답을 전송한다. 

 

TCP/IP


  • 인터넷은 전세계적으로 TCP/IP를 기반으로 하고 있다.
  • TCP/IP는 신뢰성 있는 통신을 할 수 있게 해주는 기술이다.
  • 클라이언트/서버 간 통신 과정

  1. 클라이언트는 DNS 서버를 통해서 www.naver.com의 IP 주소를 얻는다. (이때, UDP 통신을 이용)
  2. 클라이언트는 애플리케이션(HTTP) 계층에서 얻은 IP주소를 목적지로 하여 알맞는 HTTP 요청 메세지를 작성한다. (이때, HTTP 메서드는 get 방식)
  3. 클라이언트는 서버와 TCP connection을 만들기 위해 3-way-handshaking 작업을 수행한다.
  4. connection이 만들어 지면 클라이언트는 서버에게 HTTP 요청 메세지를 보내는데 해당 메세지는 패킷단위로 쪼개져서 인터넷을 라우팅하며 서버로 전송된다.
  5. 서버는 전송계층(TCP)에서 패킷을 수신하고 조립한다.
  6. 서버는 클라이언트의 요청에 맞는 자원이 존재하는지 파악하여 존재한다면 200 상태코드 존재하지 않는다면 404 상태코드를 넣어 HTTP 응답 메세지를 작성한다.
  7. 서버는 클라이언트에게 역방향으로 HTTP 응답 메세지를 전송한다.
  8. 클라이언트에서 서버의 응답 메세지를 받으면 TCP connection을 끊기위해 4-way-handshaking 작업을 수행하여 connection을 끊는다.
  9. 클라이언트는 서버로부터 받은 HTTP 응답 메세지를 브라우저에 띄운다.

 

HTTP 메세지


  • HTTP 프로토콜 상에서 클라이언트와 서버는 데이터를 패킷 단위로 잘게 쪼개서 통신을 한다.
  • 데이터 전송 단위인 패킷에는 요청/응답에 대한 메시지 (HTTP 메시지)가 담겨 있습니다.

 

종류

  • Request Message (Client -> Server)
  • Response Message (Server -> Client)

구조

  • Request, Response message 모두 시작줄, 헤더, 빈줄, 바디로 구성되어 있다.

  • 크롬 개발자 도구의 Header 탭에서 위와 같이 Request Header와 Response Header를 확인할 수 있다.

  • 서버부터 응답 데이터로 HTML 문서를 받았다는 것을 확인 할 수 있다. 

 

  • 또한, HTML 문서 뿐만이 아니라 위와 같이 JSON 데이터를 응답 받을 수 있다.

 

 

HTTP의 특징


비연결성 (Connectionless)

HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다.

 

상태정보유지안함 (Stateless)

연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.

 

HTTP의 위의 두가지 특성을 보완하기 위해서 쿠키와 세션을 사용한다.

 

 

응답 상태 코드


클라이언트가 서버에 요청을 하면, 서버는 요청에 대한 처리 상태를 숫자로 반환하는데 이를 응답 상태 코드라고 한다.

응답 상태 코드는 경우에 따라 종류가 다양한다 간단하게 요약하면 아래와 같다.

 

 

 

HTTP 메서드


요청을 할 때 주소와 함께 HTTP 메서드를 같이 보낼 수 있으며 자주 쓰는 HTTP 메서드는 GET, POST, PUT, DELETE 가 있다.

  • GET : 데이터를 조회하는 요청을 할 경우 사용되는 메서드, GET에 데이터를 담아 보내고 싶다면 본문 대신 주소에 쿼리스트링으로 데이터를 보낸다.
  • POST : 데이터를 삽입하는 요청을 할 경우 사용되는 메서드, 이때 데이터는 HTTP Body에 숨겨서 서버로 전송
  • PUT : 데이터를 수정하는 요청을 할 경우 사용되는 메서드, 마찬가지로 데이터는 HTTP Body에 숨겨서 서버로 전송
  • DELETE : 데이터를 삭제하는 요청을 할 경우 사용되는 메서드, 마찬가지로 데이터는 HTTP Body에 숨겨서 서버로 전송

더 나아가 URL 주소를 자원이라고 보고, HTTP 메서드를 동사라고 보는 개발 방식이 바로 REST 이다.

 

 

참고자료


https://victorydntmd.tistory.com/286

https://jeong-pro.tistory.com/80?category=793347

http://wiki.gurubee.net/pages/viewpage.action?pageId=26739929

'면접대비' 카테고리의 다른 글

싱클톤 패턴에 대해  (0) 2019.09.09
REST API에 대해  (0) 2019.09.06
객체 지향 프로그래밍 (OOP)에 대해  (0) 2019.09.04
웹 서버와 웹 어플리케이션 서버(WAS)에 대해  (0) 2019.09.04
쿠키와 세션에 대해  (0) 2019.09.03