분류 html

HTTP에 대한 소개 : 전 세계 웹을 구동하는 프로토콜에 대해 알아야 할 모든 것

컨텐츠 정보

  • 조회 459 (작성일 )

본문

이 기사에서는 월드 와이드 웹이 기본 수준에서 작동하는 방법을 안내합니다.


핵심 기술은 HTTP-하이퍼 텍스트 전송 프로토콜입니다. 웹을 탐색 할 때 사용하는 통신 프로토콜입니다.


https://www.freecodecamp.org/news/http-and-everything-you-need-to-know-about-it/ 


기본적으로 웹 사이트를 방문하면 브라우저가 서버에 HTTP 요청을 합니다. 그런 다음 해당 서버는 리소스 (이미지, 비디오 또는 웹 페이지의 HTML)로 응답합니다. 그러면 브라우저가 대신 표시됩니다.


이것은 HTTP의 메시지 기반 모델입니다. 모든 HTTP 상호 작용에는 요청 및 응답이 포함됩니다.


본질적으로 HTTP는 상태 비 저장입니다.


Stateless는 모든 요청이 서로 분리됨을 의미합니다. 따라서 브라우저의 각 요청에는 서버가 요청을 이행하기에 충분한 정보가 자체적으로 포함되어 있어야 합니다. 이는 또한 메시지 기반 HTTP 모델의 각 트랜잭션이 다른 트랜잭션과 별도로 처리됨을 의미합니다.


URL 


URL (Uniform Resource Locator)은 아마도 가장 잘 알려진 웹 개념 일 것입니다. 또한 가장 중요하고 유용한 개념 중 하나입니다. URL은 웹에서 리소스를 식별하는 데 사용되는 웹 주소입니다.


웹 아이디어는 리소스를 중심으로 구성됩니다. 웹은 처음부터 텍스트 / HTML 파일, 문서, 이미지 등을 공유하기 위한 플랫폼이었으며 따라서 리소스 모음으로 간주 될 수 있습니다.


0-DTR8JpFZo31ht-Kd.jpg 


프로토콜(protocol) – 대부분의 경우 HTTP (또는 보안 버전의 HTTP의 경우 HTTPS)입니다.


다른 주목할만한 프로토콜은 다음과 같습니다.

  • FTP (File Transfer Protocol) – 네트워크를 통해 클라이언트와 서버간에 파일을 전송하는 데 사용되는 표준 프로토콜입니다.
  • SMTP (Simple Mail Transfer Protocol)는 이메일 전송의 표준입니다.

도메인(domain) — 리소스가 있는 하나 이상의 IP 주소를 식별하는 데 사용되는 이름입니다.


경로(path) — 서버의 리소스 위치를 지정합니다. 이 기사를 읽는 장치에서 사용되는 리소스 위치와 동일한 논리를 사용합니다 (예 : /search/cars/VWBeetle.pdf 또는 C:/my cars/VWBeetle.pdf).


매개 변수(Parameters) — 서버의 리소스를 식별하거나 필터링 하는 데 사용되는 추가 데이터.


참고 : 기사 및 HTTP에 대한 추가 정보를 검색 할 때 URI (또는 uniform resource identifier)라는 용어가 나타날 수 있습니다. URL 대신 URI이 사용되는 경우가 있지만 대부분 공식적인 사양과 과시하려는 사람들이 사용합니다. :)


HTTP 요청 


HTTP에서 모든 요청에는 URL 주소가 있어야 합니다. 또한 요청에는 메소드가 필요합니다. 네 가지 주요 HTTP 메소드는 다음과 같습니다.

  • GET
  • PUT
  • POST
  • DELETE

이 방법들에 대해서는 이 기사의 HTTP Methods 섹션에서 설명 할 것이다.


그리고 이 방법들은 행동에 직접적으로 대응합니다 :

  • read
  • update
  • create
  • delete


모든 HTTP 메시지에는 하나 이상의 헤더가 있고 옵션 메시지 본문이 있습니다. 본문에는 요청과 함께 전송 될 데이터 또는 응답과 함께 수신 된 데이터가 포함됩니다.


모든 HTTP 요청의 첫 부분에는 세 가지 항목이 있습니다.


예:

  • GET /adds/search-result?item=vw+beetle HTTP/1.1

URL에 "?"기호가 포함되어 있으면 쿼리가 포함되어 있다는 의미입니다. 즉, 요청 된 리소스의 매개 변수를 보냅니다.

  1. 첫 번째 부분은 어떤 HTTP 메소드가 사용되는지 알려주는 메소드입니다. 가장 일반적으로 사용되는 것은 GET 방법입니다. GET 메소드는 웹 서버에서 자원을 검색하며 헤더가 필요한 후에 GET에 메시지 본문이 없습니다.
  2. 두 번째 부분은 요청 된 URL입니다.
  3. 세 번째 부분은 사용중인 HTTP 버전입니다. 버전 1.1. 대부분의 브라우저에서 가장 일반적인 버전이지만 버전 2.0이 대신합니다.

HTTP 요청에는 다른 흥미로운 것들도 있습니다.


Referer header — 요청이 시작된 URL을 알려줍니다.


User-Agent header — 요청을 생성하는 데 사용되는 브라우저에 대한 추가 정보입니다.


Host header — 호스트 이름을 고유하게 식별합니다. 여러 웹 페이지가 동일한 서버에서 호스팅 될 때 필요합니다.


Cookie header — 클라이언트에 추가 매개 변수를 제출합니다.


HTTP 응답 


HTTP 요청과 마찬가지로 HTTP 응답도 다음 세 가지 항목으로 구성됩니다.


예:


HTTP/1.1 200 OK

  1. 첫 번째 부분은 사용중인 HTTP 버전입니다.
  2. 두 번째 부분은 요청 결과의 숫자 코드입니다.
  3. 세 번째 부분은 두 번째 부분에 대한 텍스트 설명입니다.

HTTP 응답에는 다른 흥미로운 것들이 있습니다.


Server header  — 사용중인 웹 서버 소프트웨어에 대한 정보입니다.

Set-Cookie header —쿠키를 브라우저에 발행합니다.

Message body — HTTP 응답이 메시지 본문을 보유하는 것이 일반적입니다.

Content-Length header – 메시지 본문의 크기를 바이트 단위로 알려줍니다.


HTTP Methods 


가장 일반적인 방법은 GET 및 POST입니다. 그러나 다른 것도 있습니다.


GET —이 방법을 사용하여 데이터가 수정되지 않은 지정된 자원에서 데이터를 요청합니다. GET 요청은 자원 상태를 변경하지 않습니다.


POST —이 방법을 사용하여 데이터를 서버로 보내 리소스를 만듭니다.


PUT —이 방법을 사용하여 요청 본문의 내용을 사용하여 서버의 기존 리소스를 업데이트합니다. 이것을 "편집"하는 방법으로 생각하십시오.


HEAD — GET을 사용하는 것과 같은 방법으로 이 방법을 사용하지만 HEAD 방법의 반환에는 응답에 본문이 포함되어서는 안된다는 차이점이 있습니다. 그러나 리턴에는 GET이 사용 된 것과 동일한 헤더가 포함됩니다. HEAD 메소드를 사용하여 GET 요청을 하기 전에 자원이 있는지 확인하십시오.


TRACE — 진단 목적으로 이 방법을 사용합니다. 응답에는 본문에 요청 메시지의 정확한 내용이 포함됩니다.


OPTIONS —이 방법을 사용하여 대상 자원에 사용 가능한 통신 옵션 (HTTP 방법)을 설명합니다.


PATCH  —이 방법을 사용하여 자원에 부분 수정을 적용합니다.


DELETE —이 방법을 사용하여 지정된 리소스를 삭제합니다.


REST 


REST (Representational State Transfer)는 요청 및 응답에 시스템 자원의 현재 상태를 나타내는 아키텍처 스타일입니다.


“Regular” way:

REST-style:

궁금하다면 REST에 대해 자세히 알아볼 수 있습니다.


HTTP Headers 


요청 / 응답 구조를 구성하는 세 가지 주요 구성 요소가 있습니다. 여기에는 다음이 포함됩니다.

  • 첫 줄
  • Headers
  • 본문 / 콘텐츠

우리는 이미 HTTP 요청 및 응답의 첫 번째 라인에 대해 이야기했으며 본문 기능도 언급했습니다. 이제 HTTP 헤더에 대해 이야기하겠습니다.


HTTP 헤더는 첫 번째 행 뒤에 추가되며 콜론으로 구분 된 name : value 쌍으로 정의됩니다. HTTP 헤더는 요청 또는 응답과 함께 추가 매개 변수를 보내는 데 사용됩니다.


내가 이미 말했듯이, 메시지 본문에는 요청과 함께 전송 될 데이터 또는 응답과 함께 수신 된 데이터가 포함됩니다.


사용법에 따라 4 가지 범주로 분류 된 다양한 유형의 헤더가 있습니다.

  • General header – 요청 및 응답 메시지 모두에 사용될 수 있고 교환 되는 데이터와는 독립적 인 헤더.
  • Request header  —이 헤더는 요청 된 데이터에 대한 매개 변수 또는 요청하는 클라이언트에 대한 중요한 정보를 제공하는 매개 변수를 정의합니다.
  • Response header —이 헤더에는 수신 응답에 대한 정보가 들어 있습니다.
  • Entity header  — 엔터티 헤더는 메시지 본문을 구성하는 내용을 설명합니다.

0-0BI1BEJpajUiJ_4R.jpg 


HTTP status codes 


웹을 탐색 할 때 "404 오류 : 찾을 수 없음"페이지 또는 "500 오류 : 서버가 응답하지 않습니다"페이지가 표시 될 수 있습니다.


이것들은 HTTP 상태 코드입니다.


모든 HTTP 응답 메시지는 첫 줄에 HTTP 상태 코드를 포함해야 하며 요청 결과를 알려줍니다.


Steve_Losh_on_Twitter___HTTP_status_ranges_in_a_nutshell__1xx__hold_on_2xx__here_you_go_3xx__go_away_4xx__you_fucked_up_5xx__I_fucked_up_.png 

첫 번째 숫자로 그룹화 된 5 개의 상태 코드 그룹이 있습니다.


  • 1xx — 정보 용.
  • 2xx — 요청에 성공했습니다.
  • 3xx — 클라이언트가 다른 리소스로 리디렉션됩니다.
  • 4xx — 요청에 어떤 종류의 오류가 있습니다.
  • 5xx — 요청을 이행하는 동안 서버에서 오류가 발생했습니다.


다음은 HTTP 상태 응답 코드의 전체 목록과 해당 설명입니다.


HTTPS (Hypertext Transfer Protocol Secure) 


HTTP 프로토콜의 보안 버전은 HTTP (HyperText Transfer Protocol Secure)입니다. HTTPS는 브라우저 (클라이언트)와 웹 사이트 (서버) 간의 암호화 된 통신을 제공합니다.


HTTPS에서 통신 프로토콜은 TLS (Transport Layer Security) 또는 SSL (Secure Sockets Layer)을 사용하여 암호화됩니다.


따라서 이 프로토콜은 종종 HTTP over TLS 또는 HTTP over SSL이라고도 합니다.


TLS 및 SSL 프로토콜은 모두 비대칭 암호화 시스템을 사용합니다. 비대칭 암호화 시스템은 공개 키 (암호화 키)와 개인 키 (복호화 키)를 사용하여 메시지를 암호화합니다.


누구나 공개 키를 사용하여 메시지를 암호화 할 수 있습니다. 그러나 개인 키는 비밀이므로 의도한 수신자만 메시지를 해독 할 수 있습니다.

0-pB_y5GVIF_O_z4lw.gif 


SSL/TLS handshake 


웹 사이트에 대한 HTTPS 연결을 요청하면 웹 사이트는 SSL 인증서를 브라우저로 보냅니다. 브라우저와 웹 사이트에서 통신을 시작하는 프로세스를 "SSL / TLS 핸드셰이크"라고 합니다.


SSL / TLS 핸드셰이크에는 브라우저와 웹 사이트가 서로를 검증하고 SSL / TLS 터널을 통해 통신을 시작하는 일련의 단계가 포함됩니다.


알다시피 HTTPS 연결 중에 신뢰할 수 있는 보안 터널을 사용하면 브라우저 주소 표시 줄에 녹색 자물쇠 아이콘이 표시됩니다.


0-g7q-rF8JTGp7fs19.png 


HTTPS의 장점 


HTTPS의 주요 이점은 다음과 같습니다.

  • 신용 카드 번호 및 기타 민감한 정보와 같은 고객 정보는 암호화되므로 가로 챌 수 없습니다.
  • 방문자는 귀하가 등록 된 업체인지, 도메인을 소유하고 있는지 확인할 수 있습니다.
  • 고객은 HTTPS없이 사이트를 방문한다고 가정하지 않으므로 HTTPS를 사용하는 사이트에서 구매를 신뢰하고 구매할 가능성이 높습니다.