[네트워크]-HTTP 통신 쉽게 이해하기

Shim31·2023년 9월 21일
0

Network

목록 보기
1/6

HTTP

HTTP (HyperText Transfer Protocol)

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜

  • 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 됨

HTTP Protocol에서 정보를 주고받기 위한 구성요소 2가지


요청(request) : client -> server

  • 클라이언트가 서버에게 보내는 요청 메시지
  • 요청하는 리소스의 위치, 필요한 매개변수, 헤더 등이 포함

응답(response) : server -> client

  • 서버가 클라이언트에게 보내는 응답 메시지
  • 요청에 대한 처리 결과, 상태 코드, 응답 데이터 등이 포함

통신 과정

  1. 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)
  2. 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)

ex) 클라이언트 프로그램에서 사용자가 회원가입을 시도하게 되면, 서버로 회원정보를 보내게 되고 서버는 회원 정보를 저장


  • 보통은 클라이언트가 어떤 정보를 HTML 형태로 받고 싶은지, JSON 형태로 받고 싶은지 명시해주는 경우가 많음

HTTP의 특징


  • 서버는 최소한의 자원만을 사용
  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석됨

1. HTTP는 상태를 유지하지 않는 Stateless 프로토콜

  • 각 요청은 독립적으로 처리
  • 쿠키(Cookie)세션(Session) 사용해서 정보를 저장
  • HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작

과정

  1. 서버에 요청을 보내고
  2. 서버가 응답을 전송
  3. 연결이 종료

→ 기본적으로 연결을 유지하지 않음

2. TCP/ IP를 이용하는 응용 프로토콜

참조) https://aws-hyoh.tistory.com/entry/TCPIP-쉽게-이해하기

  • TCP는 IP 위에서 동작
    • 많은 TCP 기반 프로토콜이 IP 위에서 동작하기에 묶어서 TCP/IP라고 부름

TCP :

데이터의 전송을 제어하는 프로토콜

  • 3-way handshake 방식으로 통신을 시작
  • 4-way handshake 방식으로 연결을 끊고 통신을 종료
  • 패킷 전달 여부를 보증
  • 보낸 순서대로 받게 해줌

IP :

인터넷 프로토콜

  • 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약
  • 패킷 전달 여부 보증 X
  • 보낸 순서와 받는 순서가 다를 수 있음

Request (요청)

HTTP Protocol의 주요 Method(동작)

GET서버로부터 리소스(데이터)를 요청
POST서버에 새로운 데이터를 전송 or 리소스를 생성
PUT서버에 데이터를 업데이트하거나 리소스를 생성 or 교체
DELETE서버에서 데이터를 삭제
PATCH서버의 데이터 일부를 수정

Request HTTP 메시지 예시

GET https://velog.io/@shim123 HTTP/1.1								// 시작줄
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...			  // 헤더
Upgrade-Insecure-Requests: 1

1. 시작줄 (첫 줄)

GET https://velog.io/@shim123 HTTP/1.1

첫 줄은 시작줄로 메서드 구조 버전으로 구성

  • GET → HTTP Method
  • https://velog.io/@shim123 → 사이트 주소
  • HTTP/1.1 → HTTP 버전

2. 헤더 (두 번째 줄부터)

두번째 줄부터는 헤더이며 요청에 대한 정보

User-Agent, Upgrade-Insecure-Requests 등등이 헤더에 해당되며 헤더의 종류는 매우 많음

3. 본문 (헤더에서 한 줄 띄고)

본문은 요청을 할 때 함께 보낼 데이터를 담는 부분

+ 예시에는 단순히 주소로만 요청을 보내고 있고 따로 데이터를 담아 보내지 않기 때문에 본문이 비어 있음


Response (응답)

Status Code (상태 코드)

굉장히 많은 종류가 있지만 크게 5 부류로 나눌 수 있음

1XX (조건부 응답)요청을 받았으며 작업을 계속한다
2XX (성공)클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
3XX (리다이렉션 완료)클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
4XX (요청 오류)클라이언트에 오류가 있음을 나타낸다.
5XX (서버 오류)서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Resonse HTTP 메시지 예시

HTTP/1.1 200 OK														// 시작줄
Connection: keep-alive												 // 헤더
Content-Encoding: gzip												 
Content-Length: 35653
Content-Type: text/html;

<!DOCTYPE html><html lang="ko" data-reactroot=""><head><title...

1. 시작줄 (첫 줄)

첫 줄은 버전 상태코드 상태메시지로 구성되어 있음
+ 200은 성공적인 요청이었다는 뜻

2. 헤더 (두 번째 줄부터)

두 번째 줄부터는 헤더로 응답에 대한 정보를 담고 있음

3. 본문 (헤더 뒤부터)

응답에는 대부분의 경우 본문이 있음
/+ 보통 데이터를 요청하고 응답 메시지에는 요청한 데이터를 담아서 보내준다. 응답 메시지에 HTML이 담겨 있는데 이 HTML을 받아 브라우저가 화면에 렌더링함


HTTP의 데이터를 주고 받는 형식 3가지


From-data :

  • 키-값 쌍의 형태로 데이터를 전송

  • 웹 폼 데이터를 전송하기 위한 형식

-파일 업로드나 폼 데이터 전송에 사용

JSON (JavaScript Object Notation)

  • 가벼운 데이터 교환 형식으로, 사람과 기계 모두 이해하기 쉬운 형태

  • API에서 데이터를 전송하고 수신하는 데 사용

XML (eXtensible Markup Language)

  • 마크업 언어로 데이터를 표현하기 위한 형식

  • 데이터를 구조화하고 문서를 교환하는 데 사용


HTTP vs HTTPS


HTTP(Hypertext Transfer Protocol)

HTTPS(Hypertext Transfer Protocol Secure)

ㄴ> HTTP의 확장 버전, 더 안전한 버전

→ 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정


참조)
https://velog.io/@surim014/HTTP란-무엇인가
https://www.zerocho.com/category/HTTP/HTTP란 무엇인가

0개의 댓글