HTTP
HTTP는 하이퍼 텍스트 전송 프로토콜(HyperText Transfer Protocol)의 약자입니다. 이름에서 알 수 있듯이 텍스트 기반의 통신 규약으로서 인터넷에서 데이터를 주고 받기 위한 양식입니다. 초기에는 웹 브라우저와 웹 서버 간의 커뮤니케이션의 목적으로 디자인되었으나 지금은 여러 용도로 활용되고 있습니다.
- OSI 7계층 중 애플리케이션 계층에 속합니다.
- 클라이언트가 요청을 생성하기 위해 연결을 열고, 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델입니다.
- 무상태 프로토콜로서 서버가 두 개의 연속된 요청 사이에 어떠한 데이터-상태도 유지하지 않습니다.
- 어떤 측면에서 무상태 프로토콜은 취약할 수 있습니다. 이러한 취약성은 Cookie와 Session으로 해결 될 수 있습니다.
- 일반적으로 전송 계층에서 안정성을 위해 TCP/IP 레이어를 기반으로 동작합니다(UDP는 데이터 손실이 있기 때문에 사용하지 않습니다).
- 신뢰성을 보장하기 위해 RUDP(Reliable UDP)가 대안으로 사용되기도 합니다.
HTTP의 기본 동작
클라이언트는 URL 또는 URI를 사용하여 서버에 요청을 보내고, 서버는 클라이언트에게 응답합니다. 이러한 일련의 과정은 클라이언트에 의해서 반복 될 수 있습니다.
- Request
클라이언트가 서버에 요청 - Response
서버는 클라이언트에 응답
일반적으로 HTTP는 클라이언트가 서버로부터 HTML 문서와 같은 리소스를 가져오기 위해서 사용합니다. 이런 구성은 전통적인 웹 브라우저와 웹 서버 간의 통신 방식입니다. 하나의 온전한 HTML 문서는 다음 하위 문서-텍스트, 이미지, 비디오, 스크립트 등으로 재구성됩니다.
클라이언트가 보내는 일련의 Request는 서버에 도달하며, 서버는 Request를 적절히 처리하여 클라이언트에 다시 Response합니다. 이러한 Request와 Response 사이에는 라우터, 게이트웨이, 모뎀, 프록시 등 여러 개체들이 존재 할 수 있습니다. 하지만 HTTP는 애플리케이션 계층이라는 최상위 계층에서 구현되기 때문에, 이러한 개체들은 네트워크 계층 및 전송 계층 안에 숨겨집니다.
'Deprecated > HTTP' 카테고리의 다른 글
[Web/HTTP] URI 문자들을 이스케이프하기 위한 URI Encoding (0) | 2023.03.01 |
---|---|
[Web/HTTP] MIME 타입과 MIME 스니핑 (0) | 2022.04.19 |
[Web/HTTP] URL 및 URI 구문 분석 (0) | 2022.04.19 |
[Web/HTTP] URL, URN 그리고 URI의 차이점과 Path Variable, Query Parameter (0) | 2022.04.19 |
[Web/HTTP] HTTP/0.9, HTTP/1.x 그리고 HTTP/2 (0) | 2022.04.19 |