오늘은 HTTP에 대해서 알아보자
HTTP 란?
HTTP (Hypertext Transfer Protocol)는 인터넷에서 데이터를 주고받는 프로토콜 중 하나로, 웹 서버와 클라이언트 간의 통신을 위해 사용됩니다.
HTTP는 클라이언트(웹 브라우저)와 서버 간에 요청(request)과 응답(response)을 주고받는 방식으로 동작합니다. 클라이언트는 웹 서버에게 요청을 보내고, 서버는 요청에 대한 응답을 반환합니다. 요청과 응답은 일반적으로 텍스트 형식으로 이루어져 있으며, 이를 HTTP 메시지라고 합니다.
HTTP는 주로 웹 페이지를 전송하는 데 사용되지만, 다양한 종류의 데이터를 전송할 수 있습니다. HTTP는 기본적으로 TCP/IP 프로토콜 위에서 동작하며, 80번 포트를 사용합니다. HTTPS는 HTTP의 보안 버전으로, SSL/TLS 프로토콜을 사용하여 데이터의 안전한 전송을 보장합니다.
HTTP 동작 방식
HTTP는 클라이언트와 서버 간의 요청(request)과 응답(response)을 주고받는 방식으로 동작합니다. 이 과정은 크게 다음과 같은 단계로 이루어집니다.
- 클라이언트가 서버에게 요청을 보냅니다. 요청은 HTTP 메시지 형식으로 작성되며, 메시지는 요청 라인, 헤더, 본문으로 구성됩니다. 요청 라인은 요청 메서드(GET, POST, PUT, DELETE 등), 요청 대상 URL, HTTP 버전 정보를 포함합니다.
- 서버는 클라이언트의 요청을 받고, 요청을 처리합니다. 서버는 요청 메서드에 따라 적절한 동작을 수행하고, 요청에 대한 응답을 반환합니다. 응답도 HTTP 메시지 형식으로 작성되며, 응답 라인, 헤더, 본문으로 구성됩니다. 응답 라인은 HTTP 버전 정보, 상태 코드, 상태 메시지를 포함합니다.
- 클라이언트는 서버로부터 받은 응답을 처리합니다. 응답 메시지의 본문은 클라이언트가 요청한 리소스의 내용을 포함하고 있습니다. 클라이언트는 응답 메시지를 받아 처리하고, 새로운 요청을 보낼 수 있습니다.
HTTP는 상태가 없는(stateless) 프로토콜로, 각 요청과 응답은 독립적으로 처리됩니다. 따라서 클라이언트와 서버 간에 상태 정보를 유지하기 위해서는 쿠키(cookie)나 세션(session) 등의 메커니즘을 사용해야 합니다. 또한, HTTP는 평문 통신으로 데이터를 전송하기 때문에 보안이 필요한 경우 SSL/TLS 프로토콜을 사용하는 HTTPS를 사용할 수 있습니다.
HTTP 요청 메서드
HTTP 요청 메서드는 클라이언트가 서버에게 요청을 보낼 때 사용하는 명령어입니다. 다양한 종류의 요청을 전송할 수 있으며, 각각의 요청 메서드는 서버가 수행할 동작을 정의합니다.
HTTP 요청 메서드는 다음과 같습니다.
- GET : 서버에서 특정 리소스를 가져오기 위한 요청을 보냅니다. URL에 파라미터를 추가하여 데이터를 전송할 수 있습니다.
- POST : 서버에 데이터를 제출하기 위한 요청을 보냅니다. 주로 HTML 폼 데이터를 서버로 전송할 때 사용됩니다.
- PUT : 서버에 새로운 리소스를 생성하거나, 기존 리소스를 업데이트하기 위한 요청을 보냅니다.
- DELETE : 서버에서 특정 리소스를 삭제하기 위한 요청을 보냅니다.
- HEAD : GET 요청과 유사하지만, 서버에서는 본문을 반환하지 않고 헤더 정보만 반환합니다. 주로 리소스가 수정되었는지 확인하기 위해 사용됩니다.
- OPTIONS : 서버가 지원하는 메서드의 종류를 요청하는 요청을 보냅니다.
- TRACE : 서버에 전송한 요청 메시지를 되돌려 받아, 요청이 서버에서 어떻게 처리되는지 확인하는 요청을 보냅니다.
HTTP 요청 메서드는 RESTful API와 같은 웹 서비스에서 중요한 역할을 합니다. 이러한 웹 서비스에서는 각각의 요청 메서드가 특정한 동작을 수행하도록 정의되어 있습니다.
HTTP 메세지
HTTP 메시지는 클라이언트와 서버 간의 통신에서 전송되는 데이터의 형식을 정의합니다. HTTP 메시지는 요청(Request) 메시지와 응답(Response) 메시지로 구분됩니다.
HTTP 요청(Request) 메시지는 클라이언트에서 서버로 전송되는 메시지입니다. 요청 메시지는 다음과 같은 요소로 구성됩니다.
- 요청 라인(Request Line) : 요청 메서드, 요청 URI(Uniform Resource Identifier), HTTP 버전 정보가 포함됩니다.
- 요청 헤더(Request Header) : 요청과 관련된 정보를 나타내는 헤더입니다. 예를 들어 클라이언트 정보, 인증 정보 등이 포함됩니다.
- 요청 본문(Request Body) : 요청과 함께 전송되는 데이터가 포함됩니다. POST, PUT 메서드와 함께 사용됩니다.
HTTP 응답(Response) 메시지는 서버에서 클라이언트로 전송되는 메시지입니다. 응답 메시지는 다음과 같은 요소로 구성됩니다.
- 상태 라인(Status Line) : HTTP 버전 정보, 상태 코드, 상태 메시지가 포함됩니다.
- 응답 헤더(Response Header) : 응답과 관련된 정보를 나타내는 헤더입니다. 예를 들어 응답 데이터의 길이, 타입 등이 포함됩니다.
- 응답 본문(Response Body) : 응답 데이터가 포함됩니다.
HTTP 메시지는 텍스트로 작성되며, MIME(Multipurpose Internet Mail Extensions) 형식으로 지정된 데이터를 전송할 수 있습니다. HTTP 메시지는 웹 브라우저와 웹 서버 간의 통신에서 중요한 역할을 합니다.
'Computer Science > Network' 카테고리의 다른 글
[Network] 무선 통신망의 방향성인 5G, 6G 기술에 대해서 각각 그 특징과 차이를 조사하고, 요약 (0) | 2023.12.28 |
---|---|
[Network] TCP/IP 프로토콜 구조에 대해서 설명해보자. (0) | 2023.12.28 |
[Network] HTTP와 HTTPS의 차이 (0) | 2023.07.18 |
[Network] OSI 7계층이란 (0) | 2023.07.18 |
[Network] TCP와 UDP (0) | 2023.05.05 |