HTTP 정리

HTTP란 무엇입니까?

Hyper Text Transmission Protocol의 약자입니다.

클라이언트-서버 아키텍처에서 통신에 사용되는 프로토콜 중 하나입니다.

웹, 앱 등 현재 구현된 대부분의 아키텍처는 이 HTTP를 기반으로 합니다.


HTTP를 이해하기 위한 인터넷 네트워크 기초

인터넷 네트워크

네트워크 상의 통신 프로토콜 중 하나인 HTTP(Hyper Text Transmission Protocol)는 약속입니다.

IP(인터넷 프로토콜)

한계

비연결성: 패킷을 받을 대상이 없거나 대상이 없는 경우에도 패킷을 보냅니다.

비신뢰성: 중간에 인터넷망에서 패킷이 사라져도 순서를 찾기/구분하기 어렵다.

프로그램 식별 : IP만으로 서버에서 실행되는 프로그램이 2개 이상일 경우 구분이 어렵습니다.


TCP, UDP

OS 수준의 통신 프로토콜입니다.

이 레이어에는 포트 정보 등이 포함됩니다.

TCP 3 way handshake: 클라이언트와 서버간 데이터 전송 전 확인하는 과정이다.

(클라이언트) SYN > (서버) SYN+ACK > (클라이언트) ACK 프로세스.


포트

P의 네트워크 끝점: 동일한 IP 내에서 프로세스를 차별화합니다.


DNS

Domain Name Server 약자로 클라이언트로부터 url 주소를 받아 해당 url에 해당하는 IP 주소를 반환합니다.

유동 IP와 같은 IP 변경이 있어도 DNS 서버에 등록되어 대응이 가능합니다.


클라이언트 서버 구조

클라이언트: 요청, 서버에 요청을 보내고 응답을 기다리는 쪽.

서버: 응답, 클라이언트에 대한 요청에 대한 결과를 생성하여 응답하는 측.


상태 비저장/상태 저장

Stateful: 서버가 클라이언트의 상태를 유지하는 구조.

Stateless: 서버가 클라이언트의 상태를 유지하지 않습니다.

따라서 요청의 응답 데이터에 상태 값을 유지하거나 다른 유지 방법이 필요합니다.

서버 측의 부하를 줄이기 위해 가능한 한 무상태로 설계하는 것이 중요합니다.


메시지의 구조

출발선

HTTP 메소드의 유형(예: GET, POST…)으로 시작합니다.

요청 메시지를 포함합니다.

응답 메시지의 경우 HTTP 사양과 서버의 응답 상태 코드를 반환하는 것으로 시작됩니다.

머리글

HTTP 전송에 필요한 모든 추가 정보를 포함합니다.

전; 메시지 본문의 내용 및 메시지 본문의 크기.

빈 줄

메시지 본문

이것은 전송될 실제 데이터입니다.

바이트로 표현할 수 있는 모든 데이터. (예; JSON..)


HTTP 방식

얻다

올려다 볼 때 사용

보안에 취약

내부 리소스를 변경할 수 없는 메서드

우편

내부 리소스를 변경할 수 있음

멱등성이 아님

놓다

내부 리소스를 완전히 변환

반점

일부 내부 리소스 변환

삭제

내부 리소스 삭제 방법


HTTP 상태(상태 코드)

HTTP 상태 코드: 클라이언트가 보낸 요청의 처리 상태를 응답으로 알려주는 기능

1xx – 요청이 수신되었으며 처리 중입니다(정보).

2xx – 성공적인 요청

3xx – 리디렉션(영구/임시), 요청을 완료하려면 사용자 에이전트의 추가 조치가 필요합니다.

4xx – 실패(클라이언트 오류), 잘못된 구문 등으로 인해 서버가 요청을 이행할 수 없습니다.

5xx – 실패(서버 오류), 서버에서 정상적인 요청을 처리할 수 없음