HTTP란 무엇일까?

서수·2022년 12월 13일
1

Computer Science

목록 보기
2/6
post-thumbnail

✍HTTP의 정의

HTTP(Hyper Text Transfer Protocol)는 우리가 보는 웹 페이지가 어떻게 구조화 되어 있는지 브라우저로 하여금 알 수 있게 하는 마크업 언어입니다.
서버와 클라이언트가 서로 데이터를 주고 받기 위해 사용되는 통신 규약 이라고 할 수 있습니다.
사람 간에 다른 언어로 대화를 하면 서로 무슨 말을 하는지 이해를 못하듯이 서로 정보를 교환하려면 이해할 수 있는 언어로 상대방에게 전달해야 합니다. 즉, 메세지에 규칙이 있어야 합니다.

다음과 같은 여러 데이터들을 폭 넓게 전송할 수가 있다.
HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, API, XML, DATA 등

서버간의 데이터를 주고 받을 때 대부분 HTTP 라는 프로토콜을 사용해서 통신한다고 보시면 됩니다.
웹에서도 마찬가지 입니다. 클라이언트와 서버가 리소스를 주고받기 위해 규칙이 있는 메세지를 전달해야 하고 그 규칙이 바로 HTTP입니다.

우리는 어디서 HTTP 를 접하고 있을까?

우리는 매일매일 HTTP 를 접하고 있습니다. 지금 접속 된 웹 페이지들도 URI를 보면 HTTP나 HTTPS를 볼 수 있습니다. 최근 네트워크가 빠르게 성장하면서 다양한 정보들이 교환되는데, 이때 HTTP나 HTTPS 가 중요한 역할을 하고 있습니다.

HTTP를 자세하게 알아보자

HTTP의 개념

웹은 기본적으로 HTML, URI, HTTP 로 구성되어 있습니다. 여기서 HTTP는 클라이언트와 서버 사이에 이뤄지는 요청/응답 ( Request, Response ) 프로토콜입니다.

프로토콜이란 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약입니다. 신호 송신의 순서, 데이터의 표현법, 오류 검출법 등을 정합니다.
즉, 컴퓨터, 통신장비들 간의 원활한 소통을 위한 약속 또는 규칙입니다.

HTTP의 특징

클라이언트와 서버 구조

HTTP는 클라이언트의 요청과 서버의 응답 구조로 이루어져 있습니다.
HTTP의 가장 큰 특징은 클라이언트와 서버의 역할을 명확하게 구분한다는 점 입니다.
추가적으로 HTTP는 요청 메세지가 발송되어야만 서버에서 응답 메세지를 전송할 수 있는 특징을 갖고 있습니다.

무상태 프로토콜

HTTP 의 중요한 특징 중 하나는 무상태 프로토콜을 지향한다는 점입니다.
이는 서버가 클라이언트의 상태를 보존하지 않는다는 뜻을 말합니다. 이 때문에 서버는 다양하게 활용되며, 폭넓은 확장성을 갖게 됩니다.
서버의 CPU나 메모리에서 리소스의 소비를 절약하는 이점을 가져다주기도 합니다. 단 이전 상태 및 정보를 기록해야 하는 경우에는 쿠키와 세션 등을 활용해서 정보를 저장하기도 합니다.

지속 연결 ( Persistent Connections )

HTTP 초기 버전에서는 요청/응답 통신을 주고 받을 때 마다, TCP/IP를 연결하고 종료하는 일을 반복적으로 했습니다.
이것을 비연결성이라고 합니다. 자원을 주고받을 때만 연결하기 때문에 서버에서는 최소한의 자원만 사용하므로 서버자원을 매우 효율적으로 사용할 수 있습니다.
하지만 이런 방식에는 단점이 있는데 요청을 할 때마다 TCP/IP 연결을 새로 맺어야 하기 때문에 불필요한 시간이 발생합니다. 더구나 웹이 발전하면서 다양한 데이터들을 주고 받아야 하므로 과부화가 발생합니다.

TCP/IP란 수많은 프로그램들이 인터넷으로 통신하는데 있어 가장 기반의 되는 프로토콜입니다. 대다수의 프로그램은 TCP와 IP로 통신하고 있습니다. 그 때문에 "TCP/IP" 지원 이라는 설명은 인터넷에 연결하여 쓰는 기능이 포함되어 있다는 소리입니다. 참고로 TCP와 IP는 별개지만 같이 표현하는 경우가 많습니다.

그래서 HTTP/1.1 이상 버전은 지속 연결 방식을 고안했고, 이는 TCP/IP 연결을 계속 유지하는 방법으로 발전했습니다. 이 방식 덕분에 서버 부하와 오버헤드가 줄어들어 처리속도가 향상되었습니다.
지속 연결은 파이프 라인화 (HTTP Pipelineing)을 가능하게 했습니다.
파이프 라인화는 동시에 여러개의 요청을 수행하는 것을 의미합니다.
과거에는 요청 메시지를 발신한 후에 응답 메세제를 수신할 때까지 다음 요청 메세지를 보낼 수 없었지만, 파이프 라인화가 가능해 지면서 응답 메세지를 기다릴 필요 없이 요청 메세지를 보낼 수 있게 되었습니다.

HTTP 사용하기

HTTP 요청 메소드

HTTP 에서 서버의 행동을 지정하는 명령어로 "요청 메소드"가 있습니다.
다른 말로 'HTTP 동사' 라고 부르기도 합니다.
요청 메소드에는 GET, POST, PUT, DELETE, PATCH 등이 있습니다.
이러한 메소드는 리소스 조회, 생성, 삭제, 요청 내역 처리 등에 활용되고 있습니다.

HTTP 메세지

HTTP 메세지는 서버와 클라이언트가 서로 데이터 정보를 교환 할 때 사용하는 형식과 같습니다.

요청 메세지와 응답 메시지 형식으로 나누어 지며, 요청인지 응답인지에 따라 메세지 내용이 달라질 수 이지만 구조는 크게 변하지 않습니다.

HTTP 상태 코드

코드클래스설명
100번대Informational요청을 받아들여 처리 중
200번대Success요청을 정상적으로 처리
300번대Redirection요청을 완료하기 위해 추가 동작이 필요
400번대Client Error서버는 요청 이해 불가
500번대Server Error서버는 요청 처리 실패

더 자세한 설명은 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status 참고

HTTP 더 알아보기

HTTP의 약점

HTTP의 구조는 매우 단순해서 요청이 들어오면 상대를 확인하지 않고 데이터 정보를 제공합니다.
이 때문에 위장한 클라이언트가 악용하는 사례도 발생합니다.
HTTP는 암호화가 되지 않은 것이 가장 큰 약점입니다.
최근에는 네트워크가 발전하면서 데이터 정보를 지키는 일이 더욱 중요해졌습니다.

HTTPS의 등장

HTTP의 약점을 보완하기 위해서 만든 것이 HTTPS입니다. 웹 사이트의 URI를 확인해 보면
https://라고 적힌 것을 확인 할 수 있습니다.
HTTPS는 HTTP Secure 의 약자입니다. 즉 HTTP에 암호화, 인증의 구조를 추가한 것입니다.
HTTP의 데이터 통신 연결부인 소켓을 SSL 또는 TLS 라고 불리는 프로토콜로 대체한 것입니다.

소켓이란 프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해 주는 연결부입니다. 웹 브라우저에서 서버의 응답을 받기 위해 HTTP 요청 메시지를 생성했을 때, 데이터는 소켓 라이브러리를 통해서 TCP/IP 계층으로 전달 되고 반대로 응답 메세지를 전달할 때도 소켓이 있어야 합니다.

SSL ( Secure Socket Layer )은 보안 소켓 레이어고, TLS ( Transport Layer Security )은 전송 계층 보안입니다. SSL과 TLS는 컴퓨터 네트워크에 보안을 제공하기 위해 설계된 암호 규약으로 "인증서"라고도 불립니다.

참고 자료

도서] 개발자가 되기 위해 꼭 알아야 하는 IT 용어

profile
패션디자인과 출신 비전공자가 개발자로 성장하려 만든 노트

0개의 댓글