RavenSong's CS log

HTTP 개념 및 구조 본문

네트워크

HTTP 개념 및 구조

RavenS0ng 2024. 4. 6. 21:19
HTTP(HyperText Transfer Protocol)

하이퍼텍스트 전달 프로토콜로 클라이언트 - 서버 간 통신을 위해 사용되는 프로토콜이다. HTTP를 통해 주고받는 대표적파일로는 HTML 파일이 있다

 

 

HTTP 특징

 

1. 클라이언트/서버 구조

-Request/Response 구조 통신

-클라이언트는 서버에게 Request를 보내고, 서버는 클라이언트에게 Response를 보낸다

-위 과정은 모두 HTTP 메시지 형식으로 주고받는다

 

2. 무상태성(Stateless)

-서버는 클라이언트의 상태를 저장하지 않는다 

-때문에 클라이언트에서 정보를 기억해서 매 요청마다 서버에게 이전 상태까지 모두 포함해서 보낸다 

-> 이로인해 쿠키 등장

-클라이언트에서 매 요청마다 이전 상태를 기억해 보내야하는 단점이 있지만 그만큼 서버에서 클라이언트별 전용 서버나 연결을 유지하지 않아도되어서 서버의 부하가 줄어

 

3. 비연결성(Connecrtionless)

-요청과 응답이 한번 이루어지면 연결을 끊는다

-일정 시간 내 에 요청이 없으면 연결을 끊는다

-> 세션 등장

-요청과 응답의 정보를 유지하지 않기때문에 서버의 부하가 줄어들지만, 새로운 연결을 맺는데 추가적 시간 발생

 

 

HTTP Request message

Request message는 3가지 부분으로 나뉘어있다

 

1. Start Line

-HTTP message의 시작라인으로 세 가지 부분으로 구성되어있다

  • HTTP method: 요청이 무엇을 의미하는지 뜻하는 GET, POST, PUT, DELETE등이 있다. GET은 존재하는 자원에 대한 요청, POST는 새로운 자원 생성, PUT은 존재하는 자원에대한 변경, DELETE는 존재하는 자원에대한 삭제를 뜻한다
  • Request target: HTTP Request가 전송되는 목표 주소
  • HTTP version: HTTP 버전에따라 method의 구조가 달라지기 때문에, Start Line에 HTTP 버전을 명시해야함

 

2. Headers

-Request에 대한 추가정보를 포함하는 부분으로 네 종류로 나뉜다

  • General header: 요청과 응답에 모두 사용되는 헤더지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없음
  • Request header: 요청 클라이언트에대한 부가적인 정보로 사용되는 헤더로, 패치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함
  • Response header: 응답 서버에대한 부가적인 정보로 사용되는 헤더로, 위치 또는 서버 자체에 대한 정보(이름, 버전 등)를 포함
  • Entity header:  컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함

 

3. Body

- HTTP Request가 전송하는 데이터를 담고 있는 부분으로, 전송하는 데이터가 없다면 body 부분은 비어있다. 보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있다.

 

 

HTTP Response message

Response message 또한 3가지 부분으로 나뉘어있다

 

1. Status Line

-HTTP Response의 상태를 간략하게 나타내는 부분으로 3가지로 나뉘어있다

  • HTTP version: version에 따라 Response 메시지 구조나 데이터가 다를 수 있어서 version을 명시해야한다
  • Status code: 대표적으로 200과 404가 있는데, 200은 요청 처리의 성공을 뜻하고 404는 요청에 대한 결과를 찾을 수 없다를 의미한다 
  • Status text: 응답상태를 text로 표현해주는 부분으로 요청에 대한 응답이 404라면 Status text는 'Not found' 이다

 

2. Headers

- Request의 headers와 동일한 구조이다 하지만 Request에서만 사용되는 header 값들이 있다. 예를들어 User-Agent 대신에 Server헤더가 사용된다 

 

3. Body

Request의 body와 일반적으로 동일하다 Request와 마찬가지로 클라이언트측으로 보낼 데이터가 없다면 body는 비어있는 상태가 된다 

'네트워크' 카테고리의 다른 글

Firewall / IDS / IPS 개념 및 차이점  (0) 2024.04.15
VPN 개념 및 작동방식  (0) 2024.04.05
OSI 7 계층 개념 및 특징  (2) 2024.04.02
DoS/DDos 공격 종류 및 작동 방식  (2) 2024.04.01
IPSec 개념정리  (0) 2024.03.31