HTTP(Hypertext Transfer Protocol) 란?
HyperText는 Hyper(초월한) + Text(문자)의 합성어로 컴퓨터 화면이나 전자 기기에서 볼 수 있는 텍스트(데이터)를 말하며 사용자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트를 말합니다.
Protocol은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙을 말합니다.
이를 합쳐보면 사용자가 브라우저를 통해 확인하는 데이터들은 HTTP에 의해 Protocol(규칙)에 맞춰 Transfer(전달)되는 것입니다.
쉽게 말해 HTTP는 인터넷에서 데이터를 주고받을 수 있는 프로토콜이라고 할 수 있습니다.
이렇게 규칙을 정해두었기 때문에 모든 프로그램이 이 규칙에 맞춰 개발해 서로 정보를 교환할 수 있게 된 것입니다.
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며 HTML 문서와 같은 리소스들을 가져올 수도 있습니다. 또한 수신자 측에 의해 요청이 초기화되는 프로토콜인 클라이언트 - 서버 프로토콜이기도 합니다. 하나의 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.
HTTP 기반 시스템의 구성요소
HTTP는 클라이언트 - 서버 프로토콜입니다. 요청은 하나의 개체인 사용자 에이전트(또는 프록시)에 의해 전송됩니다. 사용자 에이전트는 예를 들어 브라우저 등을 말합니다.
각각의 개별적인 요청들은 서버로 보내지며 서버는 요청을 처리하고 응답을 제공합니다.
이 요청과 응답 사이에는 여러 개체들이 있을 수 있습니다. 예를 들면 다양한 작업을 수행하는 게이트웨이 또는 캐시 역할을 하는 프록시 등을 말할 수 있죠. 실제로는 라우터, 모뎀 등 좀 더 많은 컴퓨터들이 존재합니다.
HTTP의 동작
HTTP는 클라이언트가 브라우저를 통해 어떤 서비스를 요청하면 서버에서 요청사항에 맞는 결과를 찾아 클라이언트에게 응답하는 형태로 동작합니다. 이처럼 클라이언트와 서버들은 메시지 교환에 의해 통신을 하고 이때 클라이언트에 의해 서버로 전송되는 메시지를 요청(request)이라고 부르며 서버에서 클라이언트로 응답으로 전송되는 메시지를 응답(response)라고 합니다.
HTTP 메시지
HTTP/1.1와 초기 HTTP 메시지는 사람이 읽을 수 있습니다. HTTP/2에서 메시지들은 새로운 이진 구조 프레임 안으로 임베드되어 헤더의 압축과 다중화와 같은 최적화를 가능하게 만들었습니다.
HTTP 메시지의 두 가지 타입은 각자의 형식을 가지고 있습니다.
1. 요청
- Method : 클라이언트가 수행하고자 하는 동작을 정의하며 일반적으로 GET을 사용하여 리소스를 가져오거나 POST를 사용하여 데이터를 전송할 때 사용합니다.
- Path : 가져오려는 리소스의 경로를 정의하며 프로토콜이나 포트 요소들을 제거한 리소스의 URL을 작성합니다.
- Version of the protocol : HTTP 프로토콜의 버전을 정의합니다.
- Headers : 서버에 대한 추가 정보를 정의하며 함께 전달합니다.
2. 응답
- Version of the protocol : HTTP 프로토콜의 버전을 정의합니다.
- Status code : 요청의 성공 여부와 그 이유를 나타내는 상태 코드를 정의합니다.
- Status message : 상태 코드의 짧은 설명을 나타내는 상태 메시지입니다.
- Headers : 서버에 대한 추가 정보를 정의하며 함께 전달합니다.
HTTPS(Hypertext Transfer Protocol Secure) 란?
HTTPS는 이름에서 알 수 있듯이 HTTP의 확장된, 더 안전한 버전입니다. HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 데이터의 보안을 위한 조치가 추가되었고 이때 사용되는 것이 SSL(Secure Sockets Layer) 프로토콜입니다.
HTTP와 HTTPS의 차이점은 SSL을 사용해 데이터를 한쪽에서 다른 한 쪽으로 안전하게 보내는 지의 여부라고 말할 수 있습니다.
HTTP를 통해 주고받는 데이터는 plain text, 즉 평문으로 되어있어서 중간에서 데이터를 탈취하는 누구라도 쉽게 알아볼 수 있습니다. 반면 HTTPS에서는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합하여 데이터가 암호화되기 때문에 누군가 끼어들어 데이터를 가져가도 쓸 수가 없게 됩니다. 즉 HTTPS는 비밀번호 등 민감한 정보들이 탈취되어 악용되는 것을 방지합니다.
참고
'CS' 카테고리의 다른 글
[Network] What is hosting? (0) | 2023.11.29 |
---|---|
[Network] DNS and how it work? (1) | 2023.11.28 |
[Network] What is Domain Name? (0) | 2023.11.27 |
[Network] Browsers and how they work? (2) | 2023.11.24 |
[Network] How does the internet work? (2) | 2023.11.22 |