컴퓨터네트워크 - Application Layer : HTTP

TopOfTheHead·2025년 8월 9일

컴퓨터네트워크

목록 보기
6/21
post-thumbnail

WWW ( World Wide Web = Web = W3 )
。인터넷에 연결된 전세계 사용자들이 서로의 정보를 공유할 수 있는 공간

。정보를 하이퍼텍스트 형식으로 표현 및 하이퍼텍스트를 따라 이동하면서 다양한 정보/문서들을 연결 및 제공

웹 브라우저를 통해 접근되며 HTTP, HTTPS 프로토콜 사용
WebServerClientHTTP Transaction을 통해 요청응답으로 상호작용

  • 의 시작
    1980년 스위스 CERN 소속 팀 버너스리에 의해 연구원 간 신속한 정보교환을 목적으로 개발

    하이퍼 텍스트를 통해 다양한 정보로 연결

    hyper text
    。단순한 글자가 아닌, 그 이상의 의미를 가진 text라는 의미
    ▶ 주로 링크, 참조의 역할을 하는 기술



  • Web에는 수많은 Web Site가 존재하고, 각각의 Web SiteWeb Page들로 구성
    웹페이지 \in 웹사이트 \in
    • 웹 페이지 ( Web Page )
      상에 웹사이트를 구성하는 개별문서 또는 페이지

      웹페이지HTML 파일, 이미지, 동영상, 오디오 등 다양한 형태의 객체로 구성
      ▶ 각각의 객체URL을 통해 접근

      웹페이지 URL : www.someschool.edu/someDept/pic.gif
      www.someschool.edu : Host name ( 서버에 대한 주소 )
      /someDept/pic.gif : Path name ( 서버내 자원에 대한 주소 )

    • 웹 사이트 ( Web Site )
      상에서 특정 도메인이나 IP 주소를 통해 접근가능한 웹페이지들의 집합

HTTP ( Hyper Text Transfer Protocol )
Client - Server Architecture를 가진 Web Application 간 데이터를 교환을 위해 활용되는 어플리케이션 계층 프로토콜
HostHTTP ClientHTTP Server프로세스로서 활용될 어플리케이션HTTP 규약에 따라서 Message의 송수신을 수행

RFC 1945 , RFC 7230 , RFC 7540에 정의

HTTP 기본 포트 : 80

암호화가 적용되지않은 프로토콜
HTTP에 포함된 평문데이터를 제 3자에 의해 식별이 가능하므로 개발환경에서만 사용
▶ 현재는 암호화 계층이 추가된 HTTPS를 사용

  • HTTP 역사
    。초기 HTTP는 단순히 HTML 문서를 주고받는 데 사용되어 문서 간 하이퍼텍스트를 통해 탐색하도록 설계
    ▶ 현재는 하이퍼텍스트 뿐만 아닌 이미지, 동영상 등 다양한 자원을 지원

HTTP Protocol 특징

  • 서버자원에 접근하기 위한 프로토콜
    클라이언트서버자원을 요청하고 서버자원을 반환

  • 트랜스포트 계층 프로토콜TCP / IP를 사용
    HTTP을 따르는 Web Application소켓을 통해 Message를 전송 시 트랜스포트 계층 프로토콜TCP를 사용하도록 규정
    WebData Integrity를 중시하므로

    。단, 현재 HTTP/3에서는 UDP 기반의 QUIC 프로토콜을 사용하여 연결지연 감소전송속도 향상

    트랜스포트 계층에서 TCP를 통해 사전에 연결을 구축하여 통신함으로써 Message 무결성을 보장

  • 비연결지향 ( Connetionless ) :
    HTTP 프로토콜요청마다 TCP를 통한 TCP Connection을 구축 후 HTTP Transaction을 완료하면 연결을 끊는 특징이 존재

  • Stateless Protocol
    HTTP 프로토콜Transaction이 완료되어 연결을 끊는 순간 ClientServer상태정보를 유지하지 않는 특징이 존재.
    TCP Connection이 종료되는 순간 과거 HTTP RequestHTTP Response의 정보가 유지되지 않으므로, 매번 페이지 이동시마다 로그인을 다시하거나 구매페이지에서 선택 상품의 정보가 없는 문제가 발생.

    Stateless 한 특징으로 상태가 없어 프로토콜이 단순하여 Server동시에 수천개의 TCP Connection을 수행할 수 있다.
    서버는 각 요청마다 연결을 모두 유지하는게 아닌 응답연결을 종료하여 수많은 요청을 처리할 수 있음.

    HTTP Client에서 HTTP Server객체를 요청할때, HTTP ServerHTTP Request 자체만으로 Stateless하므로 어떤 클라이언트로부터 오는지에 정보를 알 수 없어 HTTP Response를 보낼 수 없다.
    ▶ 이에 상태 유지를 위해 Cookie, Session, Token 등 을 활용

Web App'에서 TCP를 통한 Message 송수신

1. 사전에 HTTP Client에서 HTTP ServerTCP Connection을 구축 및 양측에 TCP Connection소켓 인터페이스를 생성
HTTP Port번호 : 80HTTP ServerURLHost name으로 TCP Connection 생성

HTTP Server서버 프로세스는 항상 포트번호 : 80에서 Waiting 상태로 대기중이며, HTTP ClientTCP Connection 요청이 수신된 경우 AcceptClient에게 응답

2. HTTP Client는 해당 소켓 인터페이스HTTP Request Message를 전송하여 HTTP Server로 전송 및 소켓 인터페이스로부터 HTTP Response Message를 전달받음
클라이언트 소켓에 객체에 대한 URLpath 이름의 자원에 대한 HTTP Request Message를 전송 및 Server는 해당 자원을 HTTP Response Message캡슐화하여 서버 소켓으로 전송

3. HTTP Transaction이 끝난 경우 TCP Connection을 종료

HTTPTCP 연결방식 구분

비지속 연결 / 지속 연결
HTTP ClientHTTP ServerHTTP TransactionTCP 연결방식에 따라 구분

비지속 연결 ( non-persistent connection )
웹페이지를 구성하는 각각의 객체를 전송할때마다 TCP Connection 구축 및 HTTP Trasaction이 끝나면 TCP Connection을 종료하는 방식

HTTP 1.0에서 주로 사용하는 방식임.

ex ) 웹페이지가 10개의 객체로 구성되어 웹페이지HTTP Client로 전송하는 경우 각각 10번의 TCP Connection의 연결 및 종료를 반복

  • HTTP 비지속 연결 과정

    웹페이지HTTP Server에서 HTTP Client로 전송하는 경우

    웹페이지HTML 문서문서가 참조하는 10개의 JPEG로 구성 및 동일한 Server저장장치에 존재하는 경우

    HTTP ServerHTML 문서의 URL : www.someschool.edu/someDept/home.index 일때
    1. HTTP ClientHTTP ServerTCP Connection을 구축
      HTTP 포트번호 : 80 을 통해 www.someschool.edu/Server host nameTCP Connection을 수행
      ClientServer에서 각각 TCP Connection에 대한 소켓 인터페이스 생성

      HTTP Server서버 프로세스는 항상 포트번호 : 80에서 Waiting 상태로 대기중이며, HTTP ClientTCP Connection 요청이 수신된 경우 AcceptClient에게 응답

    2. HTTP Client에서 자원에 대한 HTTP Request Message를 전송
      Server에서 TCP ConnectionAccept된 것을 확인할 경우 해당 TCP Connection소켓으로 /someDept/home.indexURL Path name을 포함한 HTTP Request Message를 전송

    3. HTTP Server에서 Request에 대한 객체를 포함하여 HTTP Response Message로 응답
      HTTP ServerTCP Connection소켓으로부터 HTTP Request Message를 수신

      저장장치에서 URL Path name/someDept/home.index에 해당하는 HTML 문서를 추출하여 HTTP Response Message캡슐화한 후 소켓을 통해 HTTP Client로 응답

    4. HTTP Server에서 TCP에게 TCP Connection 종료 명령
      。단. TCP Client에서 HTTP Response Message를 수신할때까지 종료하지않음

    5. HTTP ClientHTTP Response Message 수신 시 TCP Connection 종료
      HTTP Response Message로 부터 캡슐화HTML 문서를 추출 및 10개의 JPEG 객체에 대한 참조를 확인

    • 나머지 객체JPEG에 대해 요청하여 위 HTTP Transaction을 반복


  • 비지속 연결 방식의 HTTP Response Time

    non-persistent HTTP Response Time = 2*RTT + file transmission time

    。초기 TCP Connection 구축 : 1 RTT
    HTTP Transaction : 1 RTT
    file transmission time의 경우 HTTP Response Message에 첨부된 File을 전송하는데 소요되는 시간

    객체 한개의 HTTP Transaction 수행 시 2*RTT가 소요
    ▶ 매번 TCP Connection을 연결하기때문
    ex ) 1개의 base HTML Document와 참조하는 4개의 JPEGClient로 전송 시 5*2*RTT가 소요
    • parallel TCP Connection
      。복수의 TCP Connection 소켓을 연결하여 동시에 병렬로 TCP ConnectionHTTP Transaction을 수행하여 HTTP Response Time을 단축시킬 수 있다.
      OS 입장에서 TCP Connection 당 각각 소켓버퍼를 할당하는데 한 프로세스여러개의 TCP Connection을 사용하는경우 OS 자원의 소모가 매우 크게됨

    • RTT( Round Trip Time )
      패킷 전달 시 ClientServer간 왕복하는데 소요시간

지속 연결 ( persistent connection )
웹페이지객체들을 HTTP Trasaction 시 동일한 TCP Connection을 통해 전송하는 방식

HTTP 1.0 이후로 선택해서 사용가능 선택해서 사용가능

비지속 연결과 다르게 HTTP Server에서 Response Message를 응답한 이후에도 TCP Connection을 종료하지 않고 유지
비지속 연결 과정에서 4번 과정 이후로 수행하지않고, 3번만 반복

HTTP Transaction은 매번 TCP Connection을 구축할 필요없이 동일한 연결이 유지되는 TCP Connection을 이용

  • 지속 연결HTTP Response Time
    。초기 TCP Connection 구축 : 1 RTT
    HTTP Transaction : 1 RTT

    。 이후 객체 한개의 HTTP Transaction 수행 시마다 1 RTT 소요
    비저속 연결2 RTT 소요하는것에 비해 감소

HTTP 프로토콜의 Stateless를 보완하기 위해 사용하는 방법 :
HTTPStateless Protocol이므로, Server와 Client 간 HTTP TransactionTCP Connection을 종료하면 상태정보를 유지하지 않는다.
▶ 통신이 끊어지면 상태정보가 유지되지 않으므로, 이를 보완하기위해 HTTPCookie , Session , Token를 사용
HTTP - Cookie

Web Cache = Proxy Server HTTP - Web Cache
HTTPClient / Server 간 중계서버 역할수행
ClientHTTP Request에 대한 Response Time 감소 및 다수의 브라우저로 구성된 특정 기관으로부터의 인터넷으로 접속하는 통신링크Traffic을 상당수 감소

    
profile
공부기록 블로그

0개의 댓글