HTTP
(HyperText Transfer Protocol)
등장배경
팀 버너스리라는 분이 연구소에서 일하실 때
연구원들이 논문을 읽고 해당 논문에 쓰여있는 참고 논문을 보고 싶어 했다.
하지만 그 당시 논문은 단순히 적혀있기만 하고 해당 논문을 보기 위해서는
또다시 논문을 요청해야 하는 번거로운 과정이 있었다고 한다.
이에 대해 모든 논문을 모두 연결시키면 어떨까? 하는 발상에서
시작되어 지금의 HTTP가 되었다.
HTTP는 많은 인기를 끌며 발전을 하게 되었지만,
정해진 규칙이 없어서 HTTP의 사용법이 모두 상이했다.
이러한 문제를 해결하기 위해 1996년에 첫 상용화 버전인 HTTP/1.0이 발표되었다.
HTTP 요청 구조
HTTP 요청은 보통 크게 세 가지 요소로 나눌 수 있다.
1. StartLine
Start Line은 요청 메서드, 요청 URL, HTTP 버전 정보로 구성된다
GET /index.html HTTP/1.1
2. Headers
Headers는 클라이언트가 서버에게 전달하는 추가 정보를 담고 있다.
HTTP 요청 헤더는 요청 메시지의 속성을 지정하는 데 사용된다.
Host: www.noisy-rabbit.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
Accept-Language: en-US,en;q=0.9,ko;q=0.8
3. Body
Body는 HTTP 요청과 관련된 데이터를 담는다.
Body는 필수 요소는 아니며, 요청에 따라 전송되지 않을 수도 있다.
- e.g.GET 요청은 Body를 포함하지 않는다.
HTTP 응답 구조
HTTP 응답도 HTTP 요청과 유사한 구조를 가지고 있다.
1. Start Line
Start Line은 HTTP 버전, 응답 상태 코드, 상태 코드에 대한 설명으로 구성된다.
HTTP/1.1 200 OK
2. Headers
Headers는 서버가 클라인트에게 전달하는 추가 정보를 담고 있다.
HTTP응답 헤더는 응답 메시지의 속성을 지정하는 데 사용된다.
Content-Type: text/html; charset=utf-8
Content-Length: 1234
3. Body
Body는 HTTP 응답과 관련된 데이터를 담고 있다.
HTTP 응답 메시지가 HTML 페이지라면, Body는 HTML 코드를 담게 된다.
HTTP와 포트
HTTP는 보통 80번 포트를 사용하며, HTTPS(SSL/TLS)를 사용할 경우 443번 포트를 사용한다.
웹 서버에 접속할 때는 HTTP 요청의 목적지 주소(URL) 두에 포트 번호를 생략하면,
자동으로 80번 포트가 사용된다.
80이 생략되어 있어 위 주소를 입력하면 똑같은 네이버가 나온다.
HTTP와 HTTPS의 차이점은 HTTPS가 암호화된 통신채널을 사용한다.
- 데이터의 안정성을 보장
HTTP Method
HTTP 프로토콜을 이용하여 서버에게 요청하는 메서드이다.
GET
- 서버로부터 특정 리소스(HTML 파일, 이미지, 동영상 등)를 요청할 때 사용한다.
- GET 요청을 보내면 서버는 요청한 리소스를 응답으로 반환한다.
GET /index.html HTTP/1.1
Host: www.noisy-rabbit.com
POST
- POST 메서드는 서버에 데이터를 제출하기 위해 사용한다.
- 주로 웹 폼(form)을 사용하여 데이터를 제출할 때 사용하며,
데이터를 Body에 담아서 서버로 전송한다.
POST /submit-form HTTP/1.1
Host: www.noisy-rabbit.com
Content-Type: application/x-www-form-urlencoded
username=nosi-rabit&password=13579
PUT
- PUT 메서드는 서버에 새로운 리소스를 생성하거나, 기존의 리소스를 갱신할 때 사용한다.
- PUT 요청을 보내면 서버는 요청한 리소스를 생성하거나 갱신한다.
PUT /new-resource HTTP/1.1
Host: www.noisy-rabbit.com
Content-Type: text/plain
This is a nosiy-rabbit's Lecture.
DELETE
- 서버에 존재하는 특정 리소스를 삭제할 때 사용한다.
- DELETE 요청을 보내면 서버는 요청한 리소스를 삭제한다.
DELETE /delete-resource HTTP/1.1
Host: www.noisy-rabbit.com
PATCH
- 서버에 존재하는 리소스의 일부를 수정할 때 사용한다.
- PATCH 요청을 보내면 서버는 요청한 리소스의 일부를 수정한다.
PATCH /update-resource HTTP/1.1
Host: www.noisy-rabbit.com
Content-Type: application/json
[
{ "username": "rabbit",
"email": "aaaa@gmail.com",
"phone": "010-1234-5678"
},
{ "username": "toto",
"email": "bbbb@gmail.com",
"phone": "010-9876-5432"
},
]
이외에도 다양한 Method가 있다.
HTTP 상태 코드 (HTTP Status Code)
클라이언트가 서버에 요청을 보내고 서버가 클라이언트에게
응답하는 과정에서 발생하는 상황을 정리한 것
클라이언트가 요청에 대한 응답을 받았을 때 요청이 성공적으로 처리되었는지,
오류가 발생했는지, 다른 작업을 수행해야 하는지 등을 명시한다.
HTTP 상태 코드는 3자리 숫자로 이루어져 있다.
첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용되며,
나머지 두 자리는 세부적인 정보를 나타낸다.
1xx(Informational)
- 요청이 수신되었으며 처리가 계속되고 있음을 나타냄
- 주로 웹 브라우저와 같은 클라이언트가 서버와의 연결 상태를 확인하기 위해 사용
2xx(Successful)
- 클라이언트의 요청이 성공적으로 처리되었음을 나타냄
- 가장 많이 사용되는 상태 코드는 200이다.
- 요청이 성공적으로 처리되었으며 클라이언트가 요청한 데이터가 서버에 제공되었다는 것을 의미한다.
3xx(Redirection)
- 클라이언트가 추가적인 조치를 취해야 함을 나타낸다.
- 주로 페이지 이동, 리다이렉션 등에 사용된다.
4xx(Client Error)
- 클라이언트에 오류가 있음을 나타낸다.
- 잘못된 요청, 인증 오류 등에 사용된다.
- 404는 클라이언트가 요청한 페이지나 리소스를 서버에서 찾을 수 없다는 것을 의미한다.
5xx(Server Error)
- 서버에 오류가 발생했음을 의미
- 주로 서버의 오류, 서버 과부하 등에 사용된다.
- 500은 서버 내부 오류가 발생함을 의미한다.
내용 출처 - 스파르타 코딩클럽 -
'웹 탐구' 카테고리의 다른 글
리액트) 타입스크립트 컴파일러 설치하기 (0) | 2024.06.09 |
---|---|
디자인 패턴) MVC (0) | 2023.04.16 |
보안) AWS 보안 강화하기 (0) | 2023.04.05 |
자바스크립트) fetch 실습 (0) | 2023.03.25 |
크롬 확장 프로그램) JSONVue (0) | 2023.03.25 |