본문 바로가기

CS

HTTP란?

HTTP란?

클라이언트와 서버가 서로 통신하는 방법을 표준화하는 TCP/IP 기반 응용 계층 통신 프로토콜이다.

콘텐츠가 인터넷을 통해 요청되고 전송되는 방식을 정의한다.

기본적으로 TCP 포트 80이 사용되지만 다른 포트도 사용할 수 있습니다. 그러나 HTTPS는 포트 443을 사용합니다.

 

  • HTTP/0.9 - 원 라이너(1991)
    - 헤더 없음
    - GET허용된 유일한 방법이었습니다.
    - 응답은 HTML이어야 했습니다.
  • HTTP/1.0 - 1996
    - 이미지, 비디오 파일, 일반 텍스트 또는 기타 콘텐츠 유형과 같은 다른 응답 형식도 처리할 수 있다.
    - 더 많은 메서드(즉, POST 및 HEAD)가 추가
    - 요청/응답 형식이 변경, HTTP 헤더가 요청 및 응답 모두에 추가
    - 응답을 식별하기 위해 상태 코드가 추가
    - HTTP/1.0의 주요 단점 중 하나는 연결당 여러 요청을 가질 수 없다는 것
     즉, 클라이언트가 서버로부터 무언가를 필요로 할 때마다 새로운 TCP 연결을 열어야 하며 단일 요청이 이행된 후 연결이 닫힙니다.
    • 3방향 핸드셰이크
  • HTTP/1.1 - 1997
    - 새로운 HTTP 메서드가 추가되어 PUT, PATCH, OPTIONS, DELETE가 도입
    - 호스트 이름 식별 HTTP/1.0에서는 호스트 헤더가 필요하지 않았지만 HTTP/1.1에서는 필요했습니다.
    - 지속적인 연결을 도입
    즉, 연결은 기본적으로 닫히지 않고 여러 개의 순차적 요청을 허용하는 열린 상태로 유지되었다. 연결을 닫으려면 요청에서 Connection: close 헤더를 사용할 수 있어야 한다. 클라이언트는 일반적으로 연결을 안전하게 종료하기 위해 마지막 요청에서 이 헤더를 보냅니다.
    • 파이프라이닝
  • HTTP/2 - 2015
    - 지연 시간이 짧은 콘텐츠 전송을 위해 설계

 

*** HTTP/1.1 과 HTTP/2 버전 차이점과 특징 공부 필요

 

TCP/IP

TCP/IP는 인터넷에서 컴퓨터 간에 데이터를 전송하는 데 사용되는 네트워크 프로토콜의 집합

TCP(Transmission Control Protocol)

  • 네트워크에서 데이터 전달을 관리하는 규칙이다.
  • 데이터를 전송할 때 패킷 단위로 나누어 보내고, 수신지에서 이를 다시 조립하여 원래 데이터로 만드는 규칙이다.
  • TCP는 패킷을 조립하고, 손실된 패킷을 확인하고, 재전송하도록 요청하는 기능을 한다.

데이터를 패킷 단위로 나누어 보내는 이유?

  • 하나의 데이터를 통채로 전송하면 라우터 이동간에 데이터가 손실될 경우가 있다.
  • 이 경우에는 데이터 손실이 일어나도, 수신지에서는 확인할 방법이 없다.
  • 패킷 단위로 데이터를 나누어 보내면 패킷마다 전체 패킷수를 입력하여 전송하기 때문에 수신지에서 패킷 유실을 확인 할 수 있다.

IP(Internet Protocol)

  • 네트워크 상에서 데이터 전송을 위해 컴퓨터의 위치를 나타내는 규약이다.

TCP/IP 4계층

  • 네트워크 액세스 계층 (Network Access Layer) : 이 계층은 물리적인 네트워크 연결과 관련된 작업을 처리합니다. 예를 들어, 랜카드와 같은 하드웨어 장치를 사용하여 데이터를 전송하거나, 데이터를 수신하기 위해 다른 컴퓨터를 식별하는 MAC 주소와 같은 주소 체계를 사용한다.
  • 인터넷 계층 (Internet Layer) : 이 계층은 데이터 패킷을 목적지까지 전달하는 역할을 합니다. 이 계층에서는 IP(Internet Protocol) 주소를 사용하여 데이터를 전송합니다. 데이터 패킷은 IP 주소를 포함하고 있으며, 이 주소를 사용하여 목적지 컴퓨터를 식별한다.
  • 전송 계층 (Transport Layer) : 이 계층은 데이터를 전송하는 데 필요한 기능을 제공합니다. 이 계층에서는 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)와 같은 프로토콜을 사용하여 데이터를 전송합니다. TCP는 신뢰성 있는 데이터 전송을 보장하기 위해 사용되며, UDP는 신뢰성이 중요하지 않은 데이터 전송에 사용된다.
  • 응용 계층 (Application Layer) : 이 계층은 사용자가 사용하는 응용 프로그램과 관련된 작업을 처리합니다. 예를 들어, HTTP, FTP, SMTP와 같은 프로토콜이 이 계층에서 동작

 

데이터 송신자는 응용 계층에서 데이터를 생성하고, 이를 TCP 프로토콜을 사용하여 전송 계층으로 보냅니다.
전송 계층은 데이터를 세그먼트로 분할하고, 각 세그먼트에 일련번호를 부여합니다.
인터넷 계층은 각 세그먼트에 IP 주소를 추가하여, 목적지 컴퓨터를 식별할 수 있도록 합니다.
네트워크 액세스 계층에서는 데이터를 전기 신호로 변환하여 물리적인 네트워크로 전송합니다.

목적지 컴퓨터에서는 전기 신호를 데이터로 변환하고, 각 계층별로 처리합니다.

네트워크 액세스 계층에서는 전송된 데이터를 수신하여 전기 신호를 데이터로 변환합니다.
인터넷 계층에서는 수신된 데이터 패킷의 IP 주소를 확인하고, 목적지 컴퓨터를 식별합니다.
전송 계층에서는 일련번호를 확인하여 세그먼트의 순서를 재조립하고, 세그먼트 손실 등의 문제가 발생하면 재전송을 요청합니다.
응용 계층에서는 전송된 데이터를 수신하여 사용자가 이해할 수 있는 형태로 변환하여 응용 프로그램에 전달합니다.


이러한 과정을 통해 TCP/IP 프로토콜을 사용하여 데이터를 안정적으로 전송할 수 있습니다. 

 

[참고]

https://wooody92.github.io/network/TCP-IP/

'CS' 카테고리의 다른 글

[CS] 캐시 메모리란?  (0) 2024.04.14
웹 호스팅이란??  (0) 2023.05.31
DNS란?  (0) 2023.05.25
브라우저의 작동 원리  (0) 2023.05.19
인터넷이란?  (0) 2023.04.25