ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP
    개발/기술 2023. 2. 28. 17:32

    HTML 문서, 이미지, 텍스트를 가져올 수 있는 프로토콜. 웹에서 이루어지는 모든 데이터 교환의 기초다. 브라우저인 클라이언트에서 보내는 메시지는 요청, 서버에서 응답하는 메시지를 응답이라 부른다.

     

    HTTP, TCP

     

    클라이언트와 서버서 HTTP 요청, 응답을 교환하기 위해선 TCP 연결을 설정해야한다. 브라우저로 http://google.com 를 요청 할 때 HTTP 처리 순서는 아래와 같다.

     

    1. 브라우저는 DNS로부터 호스트 주소, google.com 대한 IP 주소를 가져온다
    2. 브라우저는 IP 주소와 Port에 대해서 TCP 연결을 형성한다
    3. 브라우저는 TCP 연결로 서버에게 HTTP 요청을 보낸다
    4. 브라우저는 TCP 연결로 서버로부터 HTTP 응답을 받는다
    5. 응답이 완료되면 TCP 연결을 종료한다.

     

    HTTP로 주고 받는 데이터는 TCP 세그먼트의 형태로 전송된다. TCP는 데이터의 흐름을 받고 세그먼트 단위로 자른뒤 IP 패킷에 담아 인터넷에 보낸다. 이 작업은 모두 TCP/IP 소프트웨어에 의해서 처리되고 응용프로그램영역 개발자는 관여하지 않는다.

     

    버전별 TCP 연결 차이

     

     

    HTTP/1.0 에서는 각 요청/응답 별로 별도의 TCP 연결을 열었다. 그러나 여러 요청을 동시에 보내는 경우 이런 방식은 단일의 TCP 연결을 공유하는 것에 비해서 효율적이지 못하다. HTTP/1.1 에서는 파이프라이닝 개념과 지속적인 연결의 개념을 도입했다. 매번 새로운 TCP 연결을 형성하는 것이 아니라 기존에 있던 TCP 연결을 지속적으로 사용하는 방식이다. 기본적인 TCP 연결은 Connection 헤더를 사용해 부분적으로 제어된다. HTTP/2 부터는 단일 연결 상에서 메시지를 다중 전송(multiplex)하는 것으로 바꿨다.

     

    메시지

     

    • Method: 클라이언트가 수행하고자 하는 동작을 정의한다. GET, POST 가 해당한다
    • Path: 가져오려는 리소스의 경로다. /main 이런 상대 주소를 의미하기도 한다
    • Version: HTTP 프로토콜의 버전이다. 1.0, 1.1, 2.0이 있다
    • Header: 서버에 대한 선택적인 추가정보에 해당한다.

     

    • 상태코드: 요청의 성공 여부와 이유를 나타낸다. 200, 정상, 400이면 클라이언트 에러, 500은 서버 에러, 300은 리다이렉션 처리
    • Header: 응답에 대한 선택적인 정보.

    '개발 > 기술' 카테고리의 다른 글

    single threaded vs multi threaded  (0) 2023.03.16
    HTTP 2.0 주요사항  (0) 2023.03.01
    HTTPS, TLS, SSL  (0) 2023.02.28
    JAVA - 다중상속을 허용하지 않는 이유는 뭘까?  (0) 2023.02.24
    Kubernetes Object  (0) 2022.02.22

    댓글

Designed by Tistory.