HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)는 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜입니다. HTTP는 주로 웹 페이지, 이미지, 비디오 등 다양한 리소스를 전송하는 데 사용됩니다.
HTTP의 기본 구조
HTTP는 요청(request)과 응답(response)으로 구성됩니다.
- HTTP 요청(Request): 클라이언트(보통 웹 브라우저)가 서버에 특정 작업을 요청할 때 사용합니다. 요청은 보통 아래와 같은 형식으로 이루어집니다:
- 요청 라인(Request Line): 요청 메서드(예: GET, POST), 요청할 리소스의 경로, 그리고 HTTP 버전을 포함합니다.
- 헤더(Header): 추가 정보를 포함합니다. 예를 들어,
User-Agent
,Content-Type
,Authorization
등이 있습니다. - 본문(Body): 주로 POST 메서드와 같이 서버로 데이터를 전송할 때 사용됩니다. JSON, XML, HTML 등 다양한 형식의 데이터를 포함할 수 있습니다.
- HTTP 응답(Response): 서버가 클라이언트의 요청에 대해 응답할 때 사용합니다. 응답 역시 아래와 같은 형식으로 이루어집니다:
- 상태 라인(Status Line): HTTP 버전, 상태 코드(예: 200, 404), 상태 메시지를 포함합니다.
- 헤더(Header): 응답에 대한 추가 정보를 포함합니다. 예를 들어,
Content-Type
,Set-Cookie
,Content-Length
등이 있습니다. - 본문(Body): 서버가 클라이언트에 보내는 실제 데이터가 포함됩니다. 웹 페이지의 HTML, JSON 데이터, 이미지 등이 여기 들어갑니다.
HTTP 메서드
HTTP 요청은 여러 가지 메서드를 통해 이루어지며, 각 메서드는 특정 작업을 수행합니다.
- GET: 서버에서 데이터를 요청할 때 사용합니다. URL에 파라미터를 포함하여 데이터를 요청할 수 있습니다.
- POST: 서버에 데이터를 제출할 때 사용합니다. 데이터는 요청의 본문에 포함됩니다.
- PUT: 서버의 데이터를 업데이트할 때 사용됩니다.
- DELETE: 서버의 데이터를 삭제할 때 사용됩니다.
- HEAD: GET과 유사하지만, 본문은 없고 헤더만 반환합니다. 주로 리소스의 메타데이터를 확인할 때 사용됩니다.
- OPTIONS: 서버에서 지원하는 메서드를 확인할 때 사용됩니다.
- PATCH: 리소스의 부분적인 수정을 할 때 사용됩니다.
HTTP/2, HTTP/3
HTTP/1.1 이후로는 HTTP/2와 HTTP/3도 개발되었습니다. 이들은 성능을 개선하고 더 효율적인 통신을 위해 만들어졌습니다.
- HTTP/2: 멀티플렉싱을 통해 하나의 TCP 연결에서 여러 요청을 동시에 처리할 수 있게 하여, 성능을 크게 향상시켰습니다.
- HTTP/3: QUIC 프로토콜을 기반으로 하여 더 빠르고 안정적인 연결을 제공합니다.
HTTP와 HTTPS의 차이
HTTP는 기본적으로 데이터를 평문으로 전송합니다. 따라서 보안이 중요한 경우에는 HTTPS를 사용합니다. HTTPS는 HTTP에 SSL/TLS를 추가하여 데이터를 암호화하여 전송합니다. 이를 통해 중간에 데이터가 탈취되거나 변조되는 것을 방지합니다.
Share article