HTTP 기초

DevSeong2·2021년 6월 28일
0

HTTP

목록 보기
1/7
『HTTP 완벽 가이드』 교재와 다른 레퍼런스를 참고하여 작성하였습니다.

HTTP: 웹의 기초

HTTP(Hypertext Transfer Protocol)는 웹 상에서 정보를 주고받는 프로토콜입니다. 서비스를 이용하기 위해 정보를 요청하는 사용자를 클라이언트, 서비스를 제공하는 컴퓨터를 서버라고 하면 클라이언트는 서버에게 요청을 보내고 서버는 요청된 데이터를 응답으로 돌려줍니다.

프로토콜(Protocol)
프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 합니다.
https://developer.mozilla.org/ko/docs/Glossary/Protocol

리소스(Resource)📜

웹 리소스는 웹에서 제공하는 모든 콘텐츠로 클라이언트가 요청하는 대상입니다. 웹 서버가 이를 관리하고 제공하는데 인터넷에서 수천 가지의 데이터 타입을 다루기 때문에 리소스를 식별하기 위해 MIME 타입이라는 데이터 포맷 라벨을 붙여서 클라이언트에게 전송된 리소스의 유형을 알려줍니다. 각 리소스는 URI에 의해 식별됩니다.

HTML로 작성된 텍스트 문서: text/html
plain ASCII 텍스트 문서: text/plain
JPEG 이미지: image/jpeg
GIF 이미지: image/gif

URI

URI(uniform resource identifier)는 리소스를 고유하게 식별하고 위치를 지정할 수 있는 유일한 주소입니다. 인터넷에는 수많은 리소스가 있기 때문에 특정 리소스를 가리키는 유일한 값이어야 합니다. HTTP는 주어진 URI로 객체를 찾아옵니다.
예를 들어 구글은 google이라는 이름, www.google.com의 주소로 식별할 수 있습니다.

  • 이름으로 식별: URN
  • 주소로 식별: URL

이를 모두 포함하는 것이 개념이 URI 입니다.

URL

통합 자원 지시자(uniform resource locator, URL)는 리소스 식별자의 가장 흔한 형태로 특정 서버의 한 리소스에 대한 구체적인 위치를 서술합니다.

What is a URL?

URN

통합 자원 이름(uniform resource name)은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 합니다.

URIs, URLs, and URNs

트랜잭션 🤝

HTTP 트랜잭션은 요청 명령과 응답 결과로 구성되어 있는데 요청부터 응답까지를 하나의 HTTP 트랜잭션이라고 합니다. 이 상호작용은 HTTP 메시지라고 불리는 정형화된 데이터 덩어리를 통해 이루어집니다. 애플리케이션은 보통 하나의 작업을 수행하기 위해 여러 HTTP 트랜잭션을 수행합니다.

Understanding an HTTP Transaction

메서드

모든 HTTP 요청 메시지는 한 개의 메서드를 갖는데 이 메서드는 서버에게 어떤 동작이 취해져야 하는지 알려줍니다.

HTTP 메서드설명
GET서버에서 클라이언트로 지정한 특정 리소스를 요청
PUT클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장
DELETE지정한 리소스를 서버에서 삭제
POST클라이언트 데이터를 서버로 전송
HEADGET 메서드의 요청과 동일한 응답을 요구하지만 HTTP 헤더 부분만 요청

상태 코드

모든 HTTP 응답 메시지는 상태 코드를 반환합니다. 상태 코드는 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 세 자리 숫자입니다.

HTTP 상태 코드

메시지 ✉

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지, 서버에서 클라이언트로 가는 메시지를 응답 메시지라고 부릅니다.

시작줄(start-line): 실행되어야 할 요청, 또은 요청 수행에 대한 성공 또는 실패
헤더(header): 요청에 대한 설명, 혹은 메시지 본문에 대한 설명
본문(body): 요청과 관련된 내용이 옵션으로 들어가거나, 응답과 관련된 문서

TCP 커넥션

TCP(Transmission Control Protocol)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜입니다. TCP가 하는 역할은 에러 없이 패킷이 신뢰할 수 있게 전달 되었는지 보증해 주는 것.

TCP/IP

HTTP는 애플리케이션 계층 프로토콜입니다. 모든 HTTP 통신은 패킷 교환 네트워크 프로토콜의 집합인 TCP/IP에 의해 이루어집니다. TCP/IP는 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해 줍니다.

HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, 인터넷 프로토콜(IP) 주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 합니다. TCP에서는 서버 컴퓨터에 대한 IP 주소와 그 서버에서 실행 중인 프로그램이 사용 중인 포트번호를 알아야 합니다. 이를 위해 URL을 이용합니다.

[웹브라우저 연결의 기본적인 절차]
(1) 웹브라우저는 서버의 URL에서 호스트 명을 추출
(2) 웹브라우저는 서버의 호스트 명을 IP로 변환 + 포트번호 추출
(3) 웹브라우저는 웹 서버와 TCP 커넥션 맺음
(4) 웹브라우저는 서버에 HTTP 요청을 보냄
(5) 서버는 웹브라우저에 HTTP 응답을 돌려줌
(6) 커넥션이 닫히면 웹브라우저는 문서(응답)를 출력

프로토콜 버전

웹의 구성요소

이름설명
프락시클라이언트와 서버 사이에 위치한 HTTP 중개자
캐시많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
게이트웨이다른 애플리케이션과 연결된 특별한 웹 서버
터널단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
에이전트자동화된 HTTP 요청을 만드는 준지능적 웹클라이언트

Reference

📗 MDN
📗 HTTP 완벽 가이드

profile
차근차근

0개의 댓글