[Network] HTTP 기초
인터넷에서 데이터를 주고받는 규칙을 정의하는 데에 사용되는 여러 가지 프로토콜 중 하나가 HTTP(Hypertext Transfer Protocol)입니다. 여기서는 HTTP에 대한 기본적인 이해를 제공하고, 그 중요한 요소들에 대해 논의해 보겠습니다.
HTTP 프로토콜이란?
HTTP는 클라이언트와 서버 사이에서 데이터를 주고받는 방법을 정의하는 프로토콜입니다. 웹 브라우저(클라이언트)가 서버에 정보를 요청하면, 서버는 이에 대한 응답을 반환합니다. HTTP는 주로 HTML 문서를 전송하는 데 사용되지만, 이미지, 비디오, JSON, XML 등 다른 형식의 데이터도 전송할 수 있습니다.
HTTP의 요청/응답 모델
HTTP는 요청/응답 모델을 사용합니다. 클라이언트(일반적으로 웹 브라우저)가 HTTP 요청을 생성하고, 이를 서버에 전송합니다. 이 요청에는 HTTP 메서드(GET, POST, PUT, DELETE 등), URL, 헤더 정보, 그리고 선택적으로 본문 데이터가 포함됩니다.
서버는 이 요청을 받아 처리한 후, HTTP 응답을 클라이언트에 전송합니다. 응답에는 상태 코드(예: 200 OK, 404 Not Found 등), 헤더 정보, 그리고 요청한 데이터나 메시지를 담은 본문이 포함됩니다.
HTTP 메서드:(GET vs POST)
HTTP 메서드는 서버에 어떤 종류의 액션을 취할 것인지를 명시합니다. 가장 흔히 사용되는 메서드는 GET과 POST입니다.
GET은 주로 서버로부터 정보를 조회하는데 사용됩니다. GET 요청은 URL에 파라미터를 포함하며, 캐시될 수 있고, 브라우저 기록에 남습니다.
POST는 서버에 데이터를 보내는데 사용됩니다. POST 요청은 요청 본문에 데이터를 포함하며, 이는 URL에서 보이지 않습니다. POST는 브라우저 기록에 남지 않으며, 기본적으로 캐시되지 않습니다.
구분 | GET | POST |
목적 | 정보 조회 서버에 영향을 주지 않음 |
데이터를 전송하는데 사용 |
데이터 저장 장소 | URL 에 들어남, HHTP 헤더 (보안에 취약함) |
바디에 데이터를 실어보냄 (네트워크 스니핑을 통해 바디를 확인해볼 수 있기 때문에 데이터 암호화 과정 필요) |
데이터의 양 | 서버의 자원을 위한 키워드나 경로와 관련된 정보 | 서버에 작업하는 데 필요한 데이터 (상대적으로 데이터의 양이 많음) |
HTTP 메서드(PUT vs PATCH)
PUT과 PATCH 메서드는 리소스를 업데이트하는데 사용됩니다.
PUT은 전체 리소스를 대체하는 특성을 가집니다. 즉, 클라이언트는 대체할 전체 리소스를 제공해야 합니다.
반면에 PATCH는 리소스의 일부분만을 수정하는 특성을 가집니다. 클라이언트는 변경할 특정 부분만을 제공하면 됩니다.
HTTP 상태 코드
HTTP 상태 코드는 서버의 응답 상태를 나타냅니다. 일반적인 상태 코드는 다음과 같습니다:
- 200 OK: 요청이 성공적으로 처리되었습니다.
- 404 Not Found: 요청한 리소스를 찾을 수 없습니다.
- 500 Internal Server Error: 서버에 문제가 발생하여 요청을 처리할 수 없습니다.
HTTP 헤더
HTTP 헤더는 요청과 응답에서 메타데이터를 전송하는데 사용됩니다. 일반적인 헤더는 다음과 같습니다:
- Content-Type: 본문의 미디어 유형을 나타냅니다 (예: text/html, application/json).
- Content-Length: 본문의 길이를 바이트 단위로 나타냅니다.
- User-Agent: 클라이언트의 소프트웨어(브라우저) 정보를 나타냅니다.
HTTP의 무상태성
HTTP는 무상태(stateless) 프로토콜입니다. 이는 각 요청이 독립적이라는 것을 의미하며, 서버는 이전 요청에 대한 정보를 저장하지 않습니다. 이 특성 때문에 웹사이트에서 사용자 세션을 유지하기 위해 쿠키나 토큰과 같은 기술이 사용됩니다.