HTTP(Hyper Text Transfer Protocol)

ZEEW00·2024년 8월 15일
post-thumbnail

HTTP 프로토콜에 대한 설명을 드리기에 앞서 ISO(국제표준화기구)에서 개발하고
네트워크 통신 프로토콜의 통신 구조를 각각 7개의 계층으로 분리한
OSI(Open Systems Interconnection) 7 계층에 대해 설명하도록 하겠습니다.
(가장 중요한 핵심 키워드는 백틱(`) 기호를 사용해 강조해두었습니다.)

"OSI 7 Layer"이란 무엇일까

최하위 계층인 물리(Physical)계층부터 데이터링크(Data Link), 네트워크(N/W),
전송(Transport), 세션(Session), 표현(Presentation), 응용(Application)계층
까지 총 7개의 계층으로 이루어져 있습니다. 추후 설명하게 될 HTTP 프로토콜은
가장 상위(7) 계층인 응용 계층의 다양한 프로토콜 중 하나입니다.

1 계층 (Physical Layer)

  • 7개의 계층 중에서 가장 최하위 계층으로 통신 케이블을 이용해
    데이터를 전송하는 물리적인 수신을 담당하는 계층입니다.

  • 전기적, 기계적인 특성을 이용하며 0과 1로 나타내어지는 전기적 신호
    비트(Bits) 단위로 송신 및 수신하는 역할을 담당합니다.

  • 물리계층에 속하는 장비로는 허브(Hub), 리피터(Repeater),
    네트워크 카드 그리고 통신(이더넷) 케이블 등이 있습니다.
  • 물리계층을 바탕으로 인접한 두 장치간 데이터를 주고 받을 수 있도록 하는 계층이며
    이러한 연결 방식을 P2P(Point to Point) 연결이라고 합니다.

  • MAC 주소를 이용하여 통신하고 송/수신하는 데이터의 오류와 흐름을 관리하는
    기능이 있습니다. 신뢰성 있는 전송을 보장하기 위해 CRC 기반의 오류 제어
    흐름 제어를 이용합니다.

  • 데이터링크 계층을 이용하는 프로토콜은 이더넷이 있으며 기본 데이터 단위는
    프레임(Frame)이고 데이터링크 계층의 장비로는 브릿지스위치가 있습니다.

3 계층 (Network Layer)

  • 데이터를 목적지까지 최적의 경로(안전하고 빠른)로 전달하기 위한 계층이며
    이러한 경로 탐색 과정을 라우팅(Routing)이라고 말합니다.

  • 목적지에 도달하기 위한 경로를 선택하고 경로에 따라 패킷을 전달하는 것이
    네트워크 계층의 역할이고 라우팅, 흐름제어, 세그멘테이션, 오류제어 등의
    기능을 수행하며 이러한 기능들은 전송 계층에서 요구하는 서비스 품질(QoS)을
    제공하기 위한 수단이 됩니다.

  • 네트워크 계층의 대표적인 프로토콜은 IP이며 기본 데이터 단위는 Packet이고
    네트워크 계층의 장비로는 라우터, 공유기, L3 스위치가 있습니다.

4 계층 (Transport)

  • 종단간(End-to-End) 신뢰성 있는 연결을 담당하는 계층이며
    송신자와 수신자가 정확하고 신뢰성 있는 통신을 하기 위해
    오류 검출/복구, 흐름 제어, 중복 검사 등의 기능을 수행하는 계층입니다.

  • 전송 계층에서 사용하는 프로토콜은 TCP/UDP가 대표적이고 데이터 전송을 위해
    포트(Port)를 사용하며 데이터 단위는 세그먼트(Segment)입니다.

  • 전송 계층의 장비로는 게이트웨이, 로드밸런서가 있습니다.

5 계층 (Session Layer)

  • 세션 계층은 응용 계층에서 동일한 기능을 수행하고 있기 때문에
    현재에선 개념적으로만 남아있는 계층입니다.

  • OSI 7 계층은 네트워크 구성을 설명하기 위한 기본 개념이고 실제로는
    TCP/IP 4 계층이 사용되는데 세션, 표현 계층을 모두 응용 계층에 포함합니다.

  • 세션 계층에서는 양 끝단의 프로세스가 통신을 관리하기 위한 방법을 제공하며
    통신 연결을 관리하고 손상되는 경우에 연결 복구를 시도하여 장시간 연결되지 않은 경우에는 연결을 끊고 다시 연결을 하는 역할을 수행합니다.

6 계층 (Presentation Layer)

  • 데이터의 인코딩, 압축, 암호화 및 변환을 처리하여 네트워크 통신에서
    데이터의 일관성과 보안을 보장하며 서로 다른 시스템 간의 데이터 해석과
    전송이 원활히 이루어지도록 도와줍니다.

  • 표현 계층의 프로토콜에는 JPEG/PNG, MPEG, SSL/TLS 등이 있습니다.

7 계층 (Application Layer)

  • 사용자가 이용하는 응용프로그램과 직접 관련되어 서비스를 제공하는 계층이며
    사용자에게 직접적으로 보여지는 부분이고 웹 서버 또는 웹 브라우저에서 직접적으로
    데이터를 송/수신할 때에 이용되는 계층입니다.

  • 이미지, 비디오, 음성 등 모든 형태의 데이터를 송/수신할 수 있습니다.

  • 대표적인 프로토콜은 FTP, HTTP, DNS, DHCP, TELNET, SSH 등이 있습니다.

HTTP란 무엇일까

Hyper Text Transfer Protocol의 약어로 WWW(World Wide Web)의 토대이며
하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는 데에 사용됩니다.

HTTP는 네트워크 장치간에 정보를 전송하도록 설계된 OSI 7 Layer의 최상단 계층인 Application Layer(응용 계층) 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다.

HTTP를 통한 일반적인 흐름에는 클라이언트 시스템에서 서버에 요청한 다음에
서버에서 응답 메세지를 보내는 작업이 포함됩니다.

주요 HTTP 메서드 5가지

HTTP의 메서드는 일종의 약속이며 메서드 자체가 기능을 제공하는 것이 아닌
메서드의 이름에 알맞는 내용으로 서버에서 코드를 구현해야 합니다.

1. GET 메서드

  • 서버에서 특정 정보를 요청할 때 사용되고 서버에 데이터를 전달하고 싶다면
    해당 데이터를 URL에 쿼리 파라미터로 포함시킵니다. 한 가지 예를 들자면
    https://example.com/search?query=apple이라는 URL에서는
    query=apple 이것이 쿼리 파라미터입니다.

  • 서버는 위의 요청을 받아서 쿼리 파라미터에 따라
    적절한 정보를 찾은 후 응답하고 응답 데이터는 요청한 정보 즉
    representation(표현 형태)로 제공되며 검색 요청의 경우엔
    서버가 apple과 관련된 검색 결과를 반환할 것 입니다.

1-1. GET 메서드로 요청할 때 Query를 사용하는 이유

  • GET은 리소스(자원)을 요청하기 위해 만들어 졌고 URL의 URI가 자원이 위치한
    곳을 나타내며 메세지 바디에 데이터를 실어야 하는 상황은 거의 없습니다.

  • 따라서 일반적인 서버에서는 GET 요청의 메세지 바디를 거의 확인하지 않고
    실제로 메세지 바디가 데이터에 있더라도 처리되지 않을 확률이 높습니다.

  • GET 메서드도 POST 메서드처럼 데이터를 담을 수 있는 메세지 바디라는게
    존재합니다. 하지만 대부분의 서버에서는 GET 메서드의 메세지 바디를 확인하지
    않기 때문에 거의 사용되지 않습니다.

2. POST 메서드

  • POST 메서드는 요청 데이터의 처리를 목적으로 사용하며 메세지 바디를 통해
    서버로 요청 데이터를 전달하면 서버는 정해진 로직에 따라 요청 데이터를 처리하고
    POST 메서드를 사용한다고 특정한 로직이 자동으로 실행되는것은 아닙니다.

  • 리소스마다 POST 요청이 오면 어떻게 데이터를 처리할 지 로직을 구현해야 하고
    POST 메서드는 대상 리소스에 정의된 로직에 따라 고유한 기능을 수행하며
    주로 전달된 데이터를 이용하여 신규 리소스를 등록하거나 프로세스를 처리합니다.

2-1. POST 메서드를 사용하는 경우

  • HTML 양식으로 입력된 데이터 블록을 리소스 로직에 제공

  • 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 유사한 기사 그룹의 메세지 게시

  • 서버가 식별하지 않은 새로운 리소르를 작성

  • 기존 자원에 데이터를 추가하는 경우

  • 단순히 데이터를 생성하거나 변경하는 것을 넘어 프로세스를 처리 할 경우

3. PUT 메서드

PUT 메서드는 리소스 전체를 대체하는데 기존 리소스가 없을 경우 새로 생성합니다.
덮어쓰기를 수행한다고 볼 수 있으며 POST와의 차이점은 클라이언트가 리소스의
위치를 알고 URI를 명시해야 한다는 점입니다.

  • 리소스가 이미 존재하는 경우 기존 데이터를 대체합니다.
  • 리소스가 없을 경우 새로운 데이터를 생성합니다.
  • 리소스를 완전히 대체한다는 점을 유의해야 하고 부분적인 수정이 불가능 합니다.

4. PATCH 메서드

PATCH 메서드는 리소스를 부분 변경하고 또 부분 변경이 필요한 상황에서
PATCH를 사용할 수 없는 경우엔 POST 메서드를 사용합니다.

5. DELETE 메서드

DELETE 메서드는 이름의 뜻과 같이 리소스를 제거합니다.

JS(Javascript)에서 API를 호출하는 방법

아래에 별도로 작성된 게시글을 참고 바랍니다.
JS에서 API를 호출 게시글로 이동!!

참고 블로그 자료 :

HTML이란?
HTML의 주요 메서드 5가지
OSI 7 계층 참고 글

profile
시공간 최적화 "Trade-off"에 진심인 펌웨어 개발자

0개의 댓글