07. 7계층1 - HTTP

YeJi Kim·2023년 1월 26일
0

네트워크

목록 보기
7/9

7 계층

7계층인 애플리케이션 계층은 애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행한다. 애플리케이션의 UI 부분이나 사용자 입,출력 부분을 정의하는 것이 애플리케이션 계층의 역할이다.

HTTP(Hypertext Transfer Protocol)

  • HTTP 파일 전송은 HTTP 리퀘스트(요청)HTTP 리스폰스(응답)를 주고받으면서 이루어진다.

  • HTTP 통신 전에 웹브라우저와 웹서버 애플리케이션은 TCP 커넥션을 맺는다. 파일 크기가 크면 TCP에 의해 분할된다.

  • HTTP 리퀘스트

    • 리퀘스트 라인, 메시지 헤더, 엔티티 바디 이렇게 세 부분으로 나뉜다.
    • 리퀘스트 라인은 HTTP 리퀘스트의 첫 번째 줄로, 웹 서버에 대한 실제 처리 요청을 전달한다. 리퀘스트 라인은 다시 메소드, URI, 버전으로 구성된다. 메소드는 서버에 대한 요청을 나타낸다.
    • 메시지 헤더는 요청 라인에 이어지는 여러 줄의 텍스트이다. 여기에 웹브라우저의 종류와 버전, 대응하는 데이터 형식 등의 정보를 기술한다.
    • 엔티티 바디는 POST 메소드로 웹 브라우저에서 데이터를 보낼 때 사용된다.
  • HTTP 리스폰스

    • HTTP 리스폰스는 HTTP 리퀘스트와 비슷하게 리스폰스 라인, 메시지 헤더, 엔티티 바디로 구성된다.
    • 리스폰스 라인은 다시 버전, 상태 코드, 설명문으로 나뉜다. 버전은 HTTP의 버전을 나타내며, 현재 주요 버전은 1.0이나 1.1이다. 상태 코드는 리퀘스트에 대한 웹서버 애플리케이션의 처리 결과를 나타내는 3자리로 된 숫자이다. 설명문이란 상태 코드의 의미를 간단히 보여주는 텍스트이다.
      상태 코드 값의미
      1xx정보, 추가 정보가 있음을 전달한다.
      2xx성공. 서버가 요청을 처리했음을 전달한다.
      3xx리다이렉트. 다른 URI로 다시 리퀘스트 하도록 요청한다.
      4xx클라이언트 에러. 요청에 문제가 있어 처리할 수 없음을 전달한다.
      5xx서버 에러. 서버 쪽에 문제가 있어 처리할 수 없음을 전달한다.
    • 메시지 헤더는 웹서버 애플리케이션이 더 자세한 정보를 웹브라우저에 전달하기 위해 이용한다.
    • 엔티티 바디에는 웹브라우저에 돌려보낼 데이터가 들어간다. 웹브라우저에 돌려 보내는 데이터는 주로 HTML 파일이다.
  • HTTP 쿠키: 웹서서 애플리케이션이 웹브라우저에 특정 정보를 저장해 두는 기술이다.

    • 웹서버 애플리케이션은 웹브라우저의 요청에 대한 HTTP 리스폰스에 쿠키를 포함하여 보낸다.(쿠키 정보는 HTTP 헤더에 포함된다.) 웹브라우저가 쿠키를 받을 수 있게 설정되어 있으면, 수신한 쿠키를 저장합니다. 쿠키를 이용함으로써, 웹서버는 사용자의 로그인 정보나 사이트 내 웹페이지 열람 이력을 관리할 수 있다.
  • HTTP 버전

    • 1991년 HTTP가 등장한 이래 네 번의 큰 버전 업그레이드가 있었다.
    • 어떤 버전에서 연결하는지는 웹브라우저와 웹서버의 설정에 따라 다르다.
    • HTTP/0.9
      • HTML로 기술된 텍스트 파일을 서버에서 다운로드하기 위한 단순한 것
    • HTTP/1.0
      • 텍스트 파일 이외에도 다양한 파일을 다룰 수 있게 되어, 다운로드뿐만 아니라 업로드나 삭제도 가능해짐에 따라 프로토콜로서 그 폭이 크게 넓어졌다.
      • 리퀘스트마다 TCP 커넥션을 만들고 부수는 순서를 반복했다. 웹브라우저는 하나의 서버에 대해 동시에 오픈할 수 있는 TCP 커넥션 수가 결정되어 있으묘 최근의 기본값은 ‘6’이다.
    • HTTP/1.1
      • 킵얼라이브, 파이프라인 등 TCP 레벨에서 퍼포먼스 향상을 목표로 하는 기능이 추가되었다.
      • 킵얼라이브: 한 번 만들어진 TCP 커넥션을 재사용하는 기능
      • 파이프라인: 요청에 대한 응답을 기다리지 않고, 다음 요청을 송신하는 기능
    • HTTP/2
      • 애플리케이션 레벨에서의 성능 향상을 목표로 기능들이 추가되었다.
      • 멀티플렉싱: 1개의 TCP 커넥션 안에 스트림이라는 가상 채널을 만들고, 스트림별로 요청과 응답을 교환하게 함으로써 HoL 블로킹 문제를 해소한다.
      • HPACK: HTTP 헤더를 압축하는 기능이다.
      • 서버 푸시: 하나의 요청에 대해 여러 응답을 반환하는 기능이다. HTTP/2 서버는 클라이언트가 최초로 요청한 코텐츠를 해석하고, 다음에 올 요청에 대한 응답을 요청이 오기 전에 보낸다.
    • HTTP/3
      • 애플리케이션 데이터를 보내지 않는 시간을 극단적으로 줄인 것으로, 뛰어난 성능 향사을 목표로 한다.
      • UDP를 이용한 지연 감소: TCP가 아니라 UDP를 사용함으로써, 3-way handshake에 걸리는 시간을 줄이고, 더 많은 HTTP 데이터를 보낼 수 있도록 한다.
      • TLS 1.3을 이용한 지연 감소
      • HTTP/3은 TLS 1.3을 이용해 SSL 핸드셰이크에 걸리는 시간을 줄이고 더 많은 HTTP 데이터를 보낼 수 있게 된다.

HTTP와 HTTPS

  • HTTP의 보안 문제를 해결해주는 프로토콜이 HTTPS(HyperText Transfer Protocol Secure)이다. HTTPS는 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다.
  • HTTPS는 텍스트를 암호화한다.

쿠키와 세션

  • 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
  • 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다.

[참고자료]
그림으로 배우는 네트워크 원리(저자: Gene, 출판사: 영진닷컴)
IT엔지니어를 위한 네트워크 입문(저자: 고재성,이상훈, 출판사: 길벗)
그림으로 공부하는 TCP/IP 구조(저자: 미야타 히로시, 출판사: 제이펍)

profile
이전의 기록들 👉 https://blog.naver.com/reviewerkyj

0개의 댓글