HTTP
: HyperText Transfer Protocol의 약자로, 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- TCP/IP를 이용하는 응용 프로토콜
HTTP의 특징
- client-server 구조
- 무상태 프로토콜(Stateless)
- 연결 상태를 유지하지 않는 비연결성(Connectionless) 프로토콜
- HTTP 메세지
- 단순함. 확장 가능
무상태 프로토콜(Stateless)
: 통신에 필요한 모든 상태 정보들을 서버에서 보존하지 않고 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어보내는 것
비연결성(Connectionless)
: 서버가 요청에 대한 응답을 마치면 연결을 끊어버리는 성질
- 요청을 주고받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊어 최소한의 자원으로 서버 유지
장점
- 초 단위 이하의 빠른 속도로 응답
- 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우, 효율적으로 작동
- 리소스 낭비를 줄이고 더 많은 연결 가능
단점
- 트래픽이 많고 큰 규모의 서비스를 운영할 경우, 한계가 있음
- 연결/해제에 대한 오버헤드 발생
(서버가 클라이언트를 기억하고 있지 않아 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결/해제 과정을 거쳐야 하기 때문)
HTTP 메세지
: 서버와 클라이언트 간 데이터가 교환되는 방식
HTTP의 메서드
: 클라이언트와 서버 사이에 이루어지는 request와 response 데이터를 전송하는 방식
주요 메소드
GET : 리소스 조회 (데이터 가져올 때)
POST : 요청 데이터 처리 (데이터 생성(등록))
PUT : 리소스 생성 및 대체
PATCH : 리소스 부분적 변경
DELETE : 리소스 삭제
기타메소드
HEAD : 서버가 헤더 정보만 보내줌
(업데이트 되어있지 않을 경우, 수정된 시간과 수정 여부 등만 판단하면 되기 때문에 헤더정보 필요)
OPTIONS : 요청한 리소스에 대해 양방향 연결을 시작하는 메서드. 터널을 열기 위해 사용
(웹 서비스에서 현재 지원하고 있는 operation이 무엇인지 조회하는 것)
CONNECT : 목표 리소스와 통신 옵션을 설명하기 위해 사용됨 (주로 CORS에서 사용)
TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
GET
- 쿼리스트링을 통해 데이터 전달
- 메세지 바디를 통한 데이터 전달도 가능하지만, 서버에서 따로 구성해야해 지원하지 않는 곳이 많아 권장 X
- POST로도 조회 가능하지만, 캐싱이 가능한 GET을 사용하는 것이 유리
POST
- 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트
- 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
- 데이터를 GET하는데 있어 JSON으로 조회 데이터를 넘겨야하는 애매한 경우 사용
PUT
- 요청 메세지에 리소스가 있으면 덮어쓰고 없으면 새로 생성
- 데이터를 대체해야하기 때문에 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내줘야 함
PATCH
- PATCH를 지원하지 않는 서버에서는 대신 POST 사용 가능
DELETE
- 상태코드는 대부분 200 사용하고 상황에 따라 204 사용
HTTP의 상태 코드
- 1XX (조건부 응답)
: 요청을 받았으며 작업을 계속함. - 2XX (성공)
: 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 의미 - 3XX (리다이렉션 완료)
: 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함. - 4XX (요청 오류)
: 클라이언트에 오류가 있음을 나타냄. - 5XX (서버 오류)
: 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타냄
HTTP의 요청/응답 라이프사이클
- 사용자가 웹 브라우저의 주소창에 웹사이트 URL 입력하여 요청
- 웹 브라우저가 DNS(Domain Name Service) 시스템으로 URL을 보내면 DNS는 URL에 맞는 IP 주소를 찾아 웹 브라우저에게 반환해줌
- 웹 브라우저가 해당 IP로 요청을 보내면 NIC(Network Interface Card = 랜카드)를 거쳐 라우딩 됨.
즉, 컴퓨터-공유기-ISP를 거쳐 인터넷에 연결됨 - 사용자의 요청은 TCP/IP와 웹 페이지에 접속하기 위한 규약인 HTTP에 의해 목적지에 도착
- 웹 서버는 받은 HTTP 요청을 분석하여 해당 웹 페이지를 사용자에게 응답
참고
- https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-http-http%EB%9E%80-%ED%8A%B9%EC%A7%95-%EB%AC%B4%EC%83%81%ED%83%9C-%EB%B9%84%EC%97%B0%EA%B2%B0%EC%84%B1/
- https://victorydntmd.tistory.com/286
- https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kibisis&logNo=80174468485
'Study' 카테고리의 다른 글
[HTTP] HTTP message (0) | 2023.10.13 |
---|---|
[Web] Stateful / Stateless 차이 (2) | 2023.10.11 |
[JSON] JSON 정리 (1) | 2023.10.11 |
[Firebase] Realtime Database & Firestore (0) | 2023.10.10 |