ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Web 기초] HTTP 통신 과정
    Web 2021. 4. 26. 20:54

     

    오늘은 web의 기초지식으로 HTTP 통신이 어떻게 이루어지는지와 간단하게 프로토콜을 정리해보았습니다.

     

    OSI 7계층 / 네트워크 4계층

     

    개발공부 한창할때 보셨을 OSI 7계층과 네트워크 4계층 그림입니다.

    우리가 집중한 부분은 네트워크 4계층으로 각각의 계층에 대해서 간단하게 정리하겠습니다.

     

    1. TCP/IP 란 무엇인가?

     

    간단하게 표현하면 인터넷으로 통신하는데 가장 기반이되는 프로토콜이라고 볼 수 있습니다.

     

    대다수의 많은 프로그램들이 TCP를 기반으로한 IP위에서 동작을 하기 때문에 흔히들 묶어서 TCP/IP 로 표현을 합니다.

    하지만 TCP와 IP는 계층이 나눠져있으며 역할과 책임이 명확히 다릅니다.

     

    1. ip

      IP는 Internet Protocol의 약자로써 네트워크상에서 다른 컴퓨터와 구별할 수 있도록 할당되는 주소입니다.
      이 주소는 NIC( Network Information Center / aka interNIC) 에서 관리를합니다.

      그래서 이 주소를 통해 패킷이라는 단위로 데이터를 전송합니다.

      하지만 IP만을 이용해서 통신을 하면  1 2 3 4 5 6 -> 2 6 3 4 1 1 처럼 도착하는 신뢰성 연결성을 보장하지 못합니다.
      때문에 TCP를 IP위에서 사용합니다.
    2. TCP

      TCP는 Transmission Control Protocol의 약자로써 전송제어 프로토콜 정도로 번역할 수 있습니다.
      앞서 설명한대로 TCP는 IP와 함께 쓰이며 데이터의 누락, 순서 등 신뢰성과 속도를 보장하기 위해 사용됩니다.


      TCP는 IP는UDP와 달리 연결지향 프로토콜이며 서버와 클라이언트가 통신하는동안 연결을 맺고 있는 상태를 유지합니다.

                  1. 연결 - 3 ways handshake

                  2. 해제 - 4 ways handshake

     

    2. HTTP는 무엇인가?

     

    이제 본론인 HTTP로 넘어왔습니다. 

     

    HTTP는 Hyper Text Transfer Protocol의 약자로써 인터넷에서 데이터를 주고받는 프로토콜을 말합니다.

    데이터는 HTML뿐만이 아닌 평문, JSON 등 다양한 포맷이 가능합니다.

    TCP 위에서 동작하지만 TCP와는 달리 무상태성 혹은 비연결성입니다. 때문에 쿠키나 세션을 이용하여 클라이언트의 상태를 관리할 수 있습니다.

    우리가 자주사용하는 REST API의 특성 중 하나인 무상태성도 HTTP에서 동작하기때문입니다.

     

     

    위에서 정리한 개념을 다시 조합해보면 HTTP의 통신과정이 완성이됩니다.

     

    네트워크 4계층을 보면 HTTP는 TCP위에서 동작합니다. 때문에 HTTP연결은 시작과 끝은 TCP연결과 해제가 이루어져야합니다.

     

    2-1. Keep-alive

     

    "매번 연결을 맺고 끊으면 자원낭비 아닌가요?"

     

    위 질문의 답변은 케바케입니다.

    클라이언트에서 대체로 지속적, 다수의 요청이 발생한다면 낭비인것이고 간헐적, 한번의 요청만 발생한다면 이점인 것입니다.

    맺고 끊는것도 비용이지만 유지하는것도 비용입니다.

     

    keep-alive 기능은 HTTP/1.1에서 추가된 기능으로 설정한 시간만큼 TCP 연결을 유지하고 있는것 입니다.

    때문에 적합한 경우에 자원과 속도를 모두 챙겨갈 수 있는 기능입니다.

     

    이외의 HTTP 버전 별 특징 및 장점은 아래 링크에서 확인할 수 있습니다.

    https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

     

    HTTP의 진화 - HTTP | MDN

    HTTP의 진화 HTTP는 월드 와이드 웹에 내재된 프로토콜입니다. Tim Berners-Lee에 의해 1989년부터 1991년에 발명된 HTTP는, 본래의 단순함의 대부분을 지키면서 확장성 위에서 만들어지도록, 많은 수정을

    developer.mozilla.org

     

    'Web' 카테고리의 다른 글

    [Web 기초] HTTPS의 동작 원리 (feat. 와이어샤크)  (0) 2021.04.26
Designed by Tistory.