728x90
반응형
HTTP란?
- HTTP는 HyperText Transfer Protocol의 약자로, 네트워크에서 데이터를 주고 받을때 필요한 통신 규약을 의미한다.
- 클라이언트와 서버 간 데이터를 교환하기 위한 표준 프로토콜로, 주로 웹 브라우저와 웹 서버 사이에 사용된다.
- 일반적으로 클라이언트 시스템에서 서버에 요청한 다음, 서버에서 응답 메시지를 보내는 것이 포함된다.
- HyperText : hyper(건너편의, 초월, 과도한)와 text의 합성어로, 다른 텍스트로 연결되어 있는 텍스트로를 의미한다.
- 일반적인 텍스트와는 달리 다른 문서, 이미지, 비디오 등의 다른 매체와도 연결이 가능하다.
- 이를 통해 하이퍼링크로 연결된 다른 문서를 따라가며 관련 정보를 쉽고 빠르게 접근할 수 있다.
- Protocol : 송수신간의 데이터 정의, 규약, 약속 불린다.
HTTP의 특징
- 요청과 응답 구조로, 구조가 직관적이고 이해하기 쉽다.
- Tcp/IP를 이용하는 응용 계층 프로토콜이다.
- HTTP는 연결 상태를 유지하지 않는 비연결성(Connectionless) 프로토콜이다.
- 무상태(Stateless) 프로토콜이다.
- 이전에 요청과 관련된 정보를 저장하지 않아 각각의 요청은 서로 독립적이다.
HTTP의 구조
요청(Request)
- 요청라인(Request Line)
- HTTP 메서드 : 요청의 종류를 나타내며, 주요 메서드로는 GET, POST, PUT, DELETE 등이 있다.
- 요청 URI(Uniform Resource Identifier) : 요청하는 리소스의 위치를 지정한다.
- HTTP 버전 : 사용되는 HTTP 프로토콜의 버전을 명시한다.
- 헤더(Header)
- Host : 요청을 보내는 서버의 호스트 정보를 나타낸다.
- User-Agent : 클라이언트의 사용자 에이전트 정보를 포함하여 요청을 보내는 클라이언트의 소프트웨어/브라우저를 식별한다.
- Content-Type : 요청 본문의 유형을 명시한다.
- Authoruzation : 서버에게 인증 정보를 전달한다.
- 본문(Body)
- 필수는 아니지만, 요청시에 데이터를 전송할 때 해당 데이터를 포함하며, 주로 POST와 함께 사용된다.
GET /example HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
응답(Response)
- 상태라인(Status Line)
- HTTP 버전 : 사용중인 HTTP 프로토콜의 버전을 명시한다.
- 상태코드(Status Code) : 요청 성공, 실패 등을 나타내는 세 자리 숫자를 나타낸다.
- 상태 메시지(Status Message) : 상태코드에 대한 설명으로, 사람이 이해할 수 있는 형태의 메시지이다.
- 헤더(Header)
- Content-Type : 응답 본문의 유형을 명시한다.
- Content-Length : 응답 본문의 길이를 나타낸다.
- Server : 서버 정보를 포함한다.
- Date : 응답을 보낸 시간을 나타낸다.
- 본문(Body)
- 요청에 따라 서버가 클라이언트에게 전송하는 데이터이며, HTML, JSON, 이미지, 파일 등이 포함된다.
- Content-Type에 따라 다른 형식의 데이터가 올 수 있다.
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 354
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
HTTP 메서드
HTTP 메서드는 클라이언트가 서버에게 특정 동작을 요청하는데 사용하는 표준화된 명령어이다.
각각의 메서드는 서버에게 특정 작업을 수행하도록 지시하며, 리소스에 대한 조작을 정의한다.
자주 사용하는 메서드들은 다음과 같다.
- GET
- 서버에서 데이터를 받아오며, 가장 많이 쓰이는 HTTP 메서드이다.
- 서버로부터 특정 리소스를 요청하며, 요청을 보낼 때 Body가 존재하지 않는다.
- POST
- 서버에 새로운 데이터를 생성/수정/삭제 할 때 사용한다.
- 주로 요청을 보낼 때 Body가 존재한다.
- PUT
- 서버에 있는 데이터를 수정할 때 사용한다.
- POST와 겹치는 부분이 있어 POST를 사용할 수도, PUT을 사용할 수도 있다.
- PATCH
- 서버에 있는 데이터의 일부만을 수정한다.
- PUT과 유사하나, 데이터 전체를 교체하는 것이 아닌 일부만을 수정한다.
- DELETE
- 서버에 있는 데이터를 삭제한다.
- OPTIONS
- 주로 요청 URI에서 사용하는 메서드이다.
- 어떠한 요청을 보낼 수 있는지를 알고 싶을 경우 OPTIONS를 통해 정보를 얻어온다.
HTTP 상태코드
서버가 클라이언트에게 상태를 알려주는 세 자리 숫자로, 요청에 대한 처리 결과를 알려준다.
1xx 번대부터 5xx번대 까지 존재한다.
- 1xx(정보, Informational) : 요청을 받았으며 프로세스를 계속 하고 있음을 나타낸다.
- 2xx(성공, Success) : 요청이 성공적으로 처리되었음을 나타낸다.
- 200 : OK
- 3xx(리다이렉션, Redirection) : 추가 동작이 필요함을 나타내며, 클라이언트는 추가적인 동작을 취해야 한다.
- 4xx(클라이언트 오류, Client Error) : 클라이언트의 요청에 오류가 있음을 나타낸다.
- 400 : Bad Request
- 401 : Unauthorization
- 403 : Forbidden
- 404 : Not Fount
- 5xx(서버 오류, Server Error) : 서버가 유효한 요청을 처리하지 못했음을 나타낸다.
- 500 : Internal Server Error
출처 : HyperText - MDN, 하이퍼텍스트 - 위키백과, 네트워크 HTTP의 무상태성 비연결성, HTTP구조 및 핵심 요소
728x90
반응형
'개념정리 > 네트워크' 카테고리의 다른 글
[네트워크] API란 무엇인가 (1) | 2024.01.09 |
---|---|
[네트워크] URI과 URL, URN에 대하여 (2) | 2023.12.05 |
[네트워크] WWW란? (1) | 2023.11.22 |