목차
- HTTP란
- HTTP의 진화
- HTTP Request 구조
- HTTP 메소드란
- HTTP 요청 헤더
- HTTP 요청 본문
- HTTP Response 구조
- HTTP 상태 코드
- HTTP 상태 메시지
- HTTP 응답 헤더
HTTP란
Hyper Text Transfer Protocol 의 약자로,
- 하이퍼텍스트(ex: HTML) 문서를 교환하기 위해 만들어진 protocol입니다.
- HTTP는 TCP/IP 기반으로 되어있습니다.
- HTTP는 네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다.
- HTTP를 통한 일반적인 통신 흐름은 클라이언트에서 서버에 HTTP Request 요청을 보내고, 다시 서버에서 HTTP Response 응답 메시지를 보내는 흐름으로 이루어집니다.
이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
HTTP의 진화
1990년대 초에 설계된 HTTP는 거듭하여 진화해온 확장 가능한 프로토콜입니다.
HTTP는 애플리케이션 계층의 프로토콜로, 신뢰 가능한 전송 프로토콜이라면 이론상으로는 무엇이든 사용할 수 있으나, TCP 혹은 암호화된 TCP 연결인 TLS를 통해 전송됩니다.
HTTP의 확장성 덕분에, 오늘날 하이퍼텍스트 문서 뿐만 아니라 이미지와 비디오 혹은 HTML 폼 결과와 같은 내용을 서버로 포스트(POST)하기 위해서도 사용됩니다.
HTTP는 또한 필요할 때마다 웹 페이지를 갱신하기 위해 문서의 일부를 가져오는데 사용될 수도 있습니다.
HTTP Request 구조
이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
일반적인 HTTP 요청에는 위와 같은 정보가 포함됩니다.
- HTTP 버전 유형 HTTP/1.1
- URL /
- HTTP 메소드 GET
- HTTP 요청 헤더 HOST: ~~, Accept-Language: fr
- 선택 사항인 HTTP 본문
HTTP 메소드란
HTTP 동사라고도 불리는 HTTP 메서드는 HTTP 요청이 쿼리된 서버에서 기대하는 작업을 나타냅니다.
예를 들어, 가장 일반적인 두 가지 HTTP 메서드는 'GET'과 'POST'입니다. 'GET' 요청은 응답으로 정보를 기대하는 반면(일반적으로 웹 사이트 형식으로) 'POST' 요청은 일반적으로 클라이언트가 웹 서버에 정보를 제출하고 있음을 나타냅니다(양식 정보 등. 예: 제출된 사용자 이름 및 비밀번호).
HTTP 요청 헤더
HTTP 헤더에는 key-value가 쌍으로 저장된 구조로 모든 HTTP 요청 및 응답에 포함됩니다. 이러한 헤더는 클라이언트가 사용하는 브라우저 및 요청되는 데이터와 같은 핵심 정보를 전달합니다.
HTTP 요청 본문
요청의 본문은 요청에서 전송되는 정보의 '본문'을 포함하는 부분입니다.
쉬운 예를 들어보겠습니다.
클라이언트에서 서버에 로그인 요청을 보내려고 한다면 본문에는 사용자의 아이디와 비밀번호를 본문에 담아 요청을 보내게 됩니다.
HTTP Response 구조
이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
일반적인 HTTP 응답에는 위와 같은 정보가 포함됩니다.
- HTTP 버전 HTTP/1.1
- HTTP 상태 코드 200
- HTTP 상태 메시지 OK
- HTTP 응답 헤더 date: ~~, cache-control: ~~, ..
- 선택 사항인 HTTP 본문
HTTP 상태 코드
HTTP 상태 코드는 HTTP 요청이 성공적으로 완료되었는지 여부를 나타내는 데 가장 자주 사용되는 3자리 코드입니다. 상태 코드는 다음 5개 블록으로 나뉩니다.
- 100 ~ 199 Informational
- 200 ~ 299 성공
- 300 ~ 399 리디렉션
- 400 ~ 499 클라이언트 오류
- 500 ~ 599 Server Error
HTTP 상태 메시지
상태 코드의 짧은 설명을 나타내는 아무런 영향이 없는 메시지입니다.
HTTP 응답 헤더
HTTP 요청과 마찬가지로, 응답 본문에서 전송되는 데이터의 언어나 형식과 같은 중요한 정보가 담겨있습니다.
참고 자료
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/
'부스트캠프' 카테고리의 다른 글
네이버 부스트캠프 웹・모바일 9기 챌린지 과정을 마치며 (0) | 2024.08.11 |
---|---|
TCP/IP 소켓 통신 개념 및 Network 프레임워크 (0) | 2024.08.07 |
네이버 부스트캠프 웹・모바일 9기 챌린지 과정 3주차 회고 (0) | 2024.08.02 |
Git 동작 방식 (0) | 2024.07.31 |
동시성, 병렬성, 동기(sync), 비동기(async) 개념 정리 (2) | 2024.07.29 |