[FE RoadMap]What is HTTP? (HTTP란 무엇인가?)
HTTP란?
- HyperText Transfer Protocol : 하이퍼텍스트 전송 규약
- HTML 문서를 주고 받는 데에 사용되는 통신프로토콜(규약)
- TCP / UDP 사용하며 80번 포트를 이용한다.
→ TCP : Transmission Control Protocol 전송제어프로토콜
컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종
→ UDP : User Datagram Protocol 사용자 데이터그램 프로토콜
IP를 사용하는 네트웍 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜... TCP의 대안
- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
- 만약 웹 브라우저가 http를 통해 서버로부터 웹페이지나 그림 정보를 요청하면 서버는 이 요청에 응답해 필요한 정보를 해당 사용자에게 전달하게 됩니다.
- HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소) 조회할 수 있다.
- 형태: HTML,JSON,XML 등의 요청을 보낸다
- 과정:
- 클라이언트(사용자)가 서버에 HTTP Request (요청)을 한다
- 서버가 사용자의 요청을 받고 HTTP Response (응답)을 한다.
- 클라이언트의 요청이 없으면 응답하지 않는다.
Communication Protocol?! (통신 프로토콜)
- 통신 규약으로 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙 체계를 가르킵니다.
- 신호체계,인증,오류감지 기능을 포함할 수 있습니다.
HTTP의 특징
- HTTP 메시지는 서버와 클라이언트에 의해 해석됨
- TCP/IP 를 이용하는 응용프로토콜(application protocol)입니다.
- 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
→ 클라이언트가 이전에 요청한 내용을 기억하고 있지 않는다
→ 비연결성의 단점을 해결하기 위해 Cookie 와 Session 이 등장함
- 비연결성 프로토콜이기 때문에 요청/응답 방식 으로 동작
- 도메인 + 자원위치(URL), 도메인 + 자원의 식별자(URI) 를 통해서 요청을 하고, 서버가 요청에 따른 HTML 문서응답을 해줌
HTTP 통신 과정(심화)
각 메시지는 브라우저 F12 -> Network->컴퓨터 간의 통신 에서 확인가능함
HTTP Request (요청) 메시지
요청: 웹브라우저(클라이언트)의 URL 을 통해 어느 웹사이트(도메인) 의 어느경로에 있는 페이지를 요청할지 나타내는 행위
Request-Line
*(( general-header | request-header | entity-header ) CRLF)
CRLF
[ message-body ]
Request-Line
*(( general-header | request-header | entity-header ) CRLF)
헤더정보, 헤더에는 요청하는 클라이언트 PC, 브라우저정보, 사용자언어환경, 쿠키 등의 다양한 클라이언트 환경에 대한 정보를 가지고 있다.
-> 때문에 헤더영역에 존재하는 데이터는 보안에 취약하다.
CRLF
- CRLF : newline 개행,줄바꿈
- CR : Carriage Return 현재 라인에서 커서의 위치를 가장 앞으로 옮기는 동작
- LF : Line Feed 커서의 위치는 그대로 두고 종이를 한 라인 위로 올리는 동작
[message-body]
- HTTP본문영역,주로 클라이언크가 입력한 데이터를 저장하는 영역입니다.
- 입력폼에 입력한 각종 데이터가 Method 방식에 따라 서버로 전달할 때 보안이 강화된 방식으로 message-body 에 넣어 전달한다.
HTTP Response (응답) 메시지
응답:HTTP Request 를 통해 요청된 정보에 대해 웹서버가 클라이언트에 보내는 응답형식 및 결과
Status-Line
*(( general-header | response-header | entity-header ) CRLF)
CRLF
[ message-body ]
Status-Line
- 응답 상태정보 표시 라인
- HTTP버전정보 와 세자리 숫자값(200) 과 상태코드 값을 통해 응답결과 및 상태정보
*(( general-header | response-header | entity-header ) CRLF)
- 응답 헤더정보 제공
- 헤더정보, 각종 서버 및 웹사이트 관련 환경정보를 제공한다.
CRLF
- CRLF : newline 개행,줄바꿈
- CR : Carriage Return 현재 라인에서 커서의 위치를 가장 앞으로 옮기는 동작
- LF : Line Feed 커서의 위치는 그대로 두고 종이를 한 라인 위로 올리는 동작
[ message-body ]
HTTP본문영역, 주로 서버에서 사용자에게 전달되는 HTML 소스 및 포함된 데이터를 저장하는 영역이다.
Request Method
- GET: 자료를 요청할 때 사용, 데이터를 쿼리스트링을 통해 전송
- HEAD: 자료를 요청할 때 사용, 단 서버에서 HTML 본문을 return하지 않음(상태확인용도)
- POST: 자료의 생성, 변경을 요청할 때 사용, 데이터를 HTTP 메시지 body에 담아서 전송(주로 데이터 생성목적)
- PUT: 자료의 수정을 요청할 때 사용, 자료가 없다면 새로운 자료를 생성해 달라고 요청하는 용도(주로 데이터 수정 목적, 전체 데이터)
- DELETE: 자료의 삭제를 요청할 때 사용, 특정 자료를 삭제함
- PATCH: 자료의 수정를 요청할 때 사용, (주로 일부 데이터를 수정 목적)
HTTP 상태 코드 - Response
→ 서버가 클라이언트에 응답의 상태를 알리는 수단
- 1xx: Informational - 요청 정보 처리 중임
- 2xx: Success - 요청을 정상적으로 처리함
- 3xx: Redirection - 요청을 완료하기 위해 추가 동작 필요함
- 4xx: Client Error - 서버가 요청을 이해하지 못함
- 5xx: Server Error - 서버가 요청 처리 실패함
결론
- HTTP는 HTML 문서를 주고 받는데에 필요한 통신 규약입니다.
- 자세히는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜입니다.
이는 아래와 같이 동작하게 됩니다.
1. 클라이언트(사용자)가 서버에 HTTP Request (요청)을 한다
2. 서버가 사용자의 요청을 받고 HTTP Response (응답)을 한다.
- 우리는 Request method와 상태코드로 동작하는 것을 알 수 있습니다.
참고 문헌
위키피디아-HTTP관련 Link
HTTP 개념잡기 Link
Author And Source
이 문제에 관하여([FE RoadMap]What is HTTP? (HTTP란 무엇인가?)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jitae/FrontEndRoadMapAboutHTTP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)