[ TERMS 07 ] HTTP
1. HTTP(HyperText Transfer Protocol)의 정의
HTML은 우리가 보는 웹 페이지가 어떻게 구조화되어 있는지 브라우저로 하여금 알 수 있게 하는 마크업 언어이다. 클라이언트와 서버의 언어와 규칙이 서로 다르다면 제대로된 데이터의 전달이 불가능하다. 즉, 클라이언트와 서버가 리소스를 주고받기 위해 규칙이 있는 메시지를 전달해야 하고 이러한 규칙이 HTTP이다.
2. HTTP는 언제 접하게 될까?
어느 웹 페이지나 URI에서 'HTTP' 또는 'HTTPS'를 사용하는 것을 볼 수 있다. 최근 네트워크가 빠르게 성장하면서 다양한 정보가 교횐되는데, 이때 HTTP와 HTTPS가 중요한 역할을 수행한다.
3. HTTP 알아보기
> 개념
웹은 기본적으로 HTML, URI, HTTP로 구성된다. HTTP는 클라이언트와 서버 사이에 이루어지는 요청/ 응답 프로토콜이다. 여기서 프로토콜은 컴퓨터, 통신장비들 간의 원활한 소통을 위한 '약속' 또는 '규칙'이다. 즉 HTTP는 클라이언트와 서버가 메시지를 주고받기 위해 정해진 규칙을 의미한다.
> 등장 배경
- HTTP의 탄생
HTTP는 WWW(World Wide Web, 월드 와이드 웹)에 내재된 프로토콜로 팀 버너스 리(Tim Berners Lee) 박사에 의해 1989년에 발명되었다. 'WWW'는 인터넷을 통해서 연결된 웹 페이지 시스템을 의미하며 팀 버너스 리 박사는 멀리 떨어진 동료 연구자들과 정보를 공유하기 위해서 'WWW'시스템을 고안했다.
과거 HTTP는 HTML 같은 텍스트 파일을 전송하는 단순한 통신 규칙이었다. 하지만 웹이 발전하며 텍스트뿐만 아니라 이미지, 오디오, 동영상 등 모든 데이터를 전송하는 중요한 프로토콜이 되었다.
- 다양한 버전
HTTP 0.9 버전을 시작으로 3번전까지 존재하지만 현재 가장 많이 사용하고 있는 것은 HTTP/1.1 버전이다. 최근에는 2와 3번전도 같이 사용되고 있다.
> HTTP의 특징
- 클라이언트와 서버 구조
HTTP는 클라이언트의 요청과 서버의 응답 구조로 이루어져 있다. HTTP의 가장 큰 특징은 클라이언트와 서버의 역할을 명확하게 구분한다. 즉, 한 컴퓨터는 클라이언트 한 컴퓨터는 서버의 역할을 수행해야 하며, 하나의 컴퓨터가 두개의 역할을 동시 수행한다면 트래픽이 많아져 오류가 발생한다. 이렇게 클라이언트와 서버의 역할을 분리한 결과 어느 한쪽에 문제가 발생해도 서로에게 영향을 주지 않는다. 추가적으로 HTTP는 요청 메시지가 발송되어야만 서버에서 응답 메시지를 전송할 수 있는 특징을 지닌다.
- 무상태 프로토콜
HTTP는 서버가 클라이언트의 상태를 저장하지 않는 무상태 프로토콜을 지향한다는 특징을 지닌다. 덕분에 서버는 CPU와 메모리 소비가 절약되어 다양한 활용성과 폭넓은 확장성을 지닌다. (이전 상태 및 정보 기록은 쿠키와 세션을 활용한다.)
- 지속연결
초기의 HTTP는 요청/응답을 주고받을 때마다 TCP/IP를 연결하고 종료하는 일을 반복적으로 진행했다( = 비연결성 ). 이는 서버의 자원을 효율적으로 사용한다는 이점이 있으나 매번 TCP/IP를 연결해야 하기에 시간적인 손해가 존재한다. 따라서 현재 버젼의 HTTP는 TCP/IP 연결을 유지하는 방법을 활용한다. 그 결과 서버 부하와 오버헤드가 줄어 처리 속도가 빨라졌다. 또한 지속연결은 파이프 라인화를 가능하게 하여 응답 메시지를 기다릴 필요 없이 다음 요청을 보내는것이 가능해졌다.
4. HTTP 사용하기
> HTTP 요청 메소드
HTTP에서 행동을 지정하는 명령어이며, 다른 말로는 'HTTP 동사'라고 부른다. 요청 메소드에는 GET, POST, PUT, DELETE, PATCH 등이 있다. 메소드는 리소스의 조회, 생성, 삭제, 요청 내역 처리 등에 활용된다.
> HTTP 메시지
HTTP 메시지는 서버와 클라이언트가 데이터 정보를 교환할 떄 사용하는 형식이다. 구조는 시작라인, 메시지 헤더, 개행문자,메시지 바디로 이루어져 있으며 요청 메시지와 응답 메시지가 구분된다.
> HTTP 상태 코드
HTTP 상태 코드는 요청 메시지에 대한 서버의 응답 결과를 직관적으로 알려주며 세자리의 숫자로 구성된다. 기본적으로는 5가지로 구분 하지만 세분화해서 클라이언트에게 정보를 제공한다.
코드 | 클래스 | 설명 |
1XX | Informational | 요청을 받아들여 처리 중 |
2XX | Success | 요청을 정상적으로 처리 |
3XX | Redirection | 요청을 완료하기 위해 추가 동작이 필요 |
4XX | Client Error | 서버는 요청 이해 불가 |
5XX | Server Error | 서버는 요청 처리 실패 |
5. HTTP 더 알아보기
> HTTP의 약점
HTTP의 구조는 매우 단순하여 요청이 들어오면 확인 절차 없이 데이터 정보를 제공한다. 즉 암호화 되지 않은점이 큰 약점이다. 네트워크의 발전으로 정보 보안의 중요성이 늘어나 HTTP의 약점 보완의 필요성이 증대했다.
> 약점을 보완하는 HTTPS
HTTP의 약점을 보완하기 위하여 만들어진 것이 HTTPS로 'HTTP Secure', 즉 HTTP에 암호화, 인증 등의 구조를 추가한 것이다. 이는 새로운 프로토콜이 아닌 데이터 통신의 연결부인 소켓을 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 프로토콜로 대체한 것이다.
- 소켓이란?
프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해 주는 연결부와 같다. 데이터는 소켓 라이브러리를 통해서 TCP/IP 계층으로 전달된다.
- SSL과 TLS란?
SSL은 보안 소켓 레이어이고 TLS는 전송 계층 보안이다. 둘은 네트워크 보안을 제공하기 위해 설계된 암호 규약으로 '인증서'라고도 부른다. 보통 키를 교환하거나 대칭 키 암호로 암호화와 메시지 인증 절차를 갖는다.
> 함께 알아 두면 좋은 용어
- 프로토콜
- 포트
- TCP / UDP
- IP
- DNS
- URI
- OSI 7계층
- 쿠키, 세션, 캐시
> 참고자료
- https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
- https://url.kr/i53clj
'IT 도서 리뷰 > 개발자가 되기 위해 꼭 알아야 하는 IT 용어' 카테고리의 다른 글
[PART2] 네트워크/통신/데이터 - TERMS 9 (0) | 2025.01.12 |
---|---|
[PART2] 네트워크/통신/데이터 - TERMS 8 (0) | 2025.01.06 |
[PART2] 네트워크/통신/데이터 - TERMS 6 (0) | 2024.12.18 |
[PART2] 네트워크/통신/데이터 - TERMS 5 (0) | 2024.12.16 |
[PART2] 네트워크/통신/데이터 - TERMS 4 (1) | 2024.12.06 |