02.HTTP
1.HTTP란
HTTP(HypterText Transfer Protocol)는 HTML 문서와 같은 리소스들을 서버와 클라이언트 사이에서 정보를 교환할 수 있도록 해주는 프로토콜이다. HTTP는 웹에서 사용된다.
💡프로토콜은 컴퓨터끼리의 데이터 교환 방식을 정의하는 규칙 체계들의 집합을 말한다. 간단히 말해서 상호 간에 정의한 규칙을 의미한다.
2.HTTP의 특징
- HTTP 메세지는 서버와 클라이언트에 의해 해석된다.
- HTTP는 연결상태를 유지하지 않는 비연결성 프로토콜이다.
→이는 클라이언트가 이전에 요청한 내용을 기억하고 있지 않다는 것을 의미한다.
- 비연결성 프로토콜이므로 요청/응답(Request/Response)방식으로 작동한다.
- 또한 stateless한 프로토콜이므로, 각각의 데이터 요청이 서로 독립적으로 관리가 된다. 즉, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다.
- 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 있다.
- 그러나 비연결성이고 상태가 없기 때문에, 통신할 때마다 세로운 커넥션을 만들어야 하므로 클라이언트는 계속적인 인증이 필요하다는 단점이 있다.
이 단점을 보완하기 위해 쿠키(Cookie)와 세션(Session)을 사용한다.
- HTTP/1.0에서 소개된 HTTP헤더 덕분에 HTTP를 확장하고 실험하기 쉬워졌다.
- HTTP 프로토콜은 일반적으로 TCP/IP 통신을 이용하며, 기본 포트는 80이다.
💡HTTP의 기본 포트번호가 80인 이유는 HTTP가 문서화 되기 전부터 사용하지 않는 빈 포트 번호였고, 이 번호가 1991년 HTTP 0.9 버전에서 처음으로 문서화되면서 기본 포트로 지정되었기 때문이다.
3.요청과 응답(Request & Response)
→이는 클라이언트가 이전에 요청한 내용을 기억하고 있지 않다는 것을 의미한다.
이 단점을 보완하기 위해 쿠키(Cookie)와 세션(Session)을 사용한다.
💡HTTP의 기본 포트번호가 80인 이유는 HTTP가 문서화 되기 전부터 사용하지 않는 빈 포트 번호였고, 이 번호가 1991년 HTTP 0.9 버전에서 처음으로 문서화되면서 기본 포트로 지정되었기 때문이다.
HTTP 프로토콜로 데이터를 주고받기 위해서는 아래와 같이 요청(Request)을 보내고 응답(Response)을 받아야한다.
💡요청과 응답은 클라이언트(Client)와 서버(Server)사이에서 이루어 진다.
클라이언트는 요청을 보내는 쪽이며, 웹에서는 브라우저가 이에 해당되고, 서버는 요청을 받고 응답하는 쪽이며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미한다.
01.요청(Request)
요청을 할 때는 URL을 이용하면 서버에 특정 데이터를 요청할 수 있다.
요청을 수행할 때는 HTTP 요청 메서드를(HTTP Request Methods)를 사용한다.
HTTP 요청 메서드는 HTTP Verbs라고도 불리며, 아래와 같은 주요 메서드를 가지고 있다.
- GET: 자원에 대한 요청
- POST: 새로운 자원을 생성
- PUT: 자원에 대한 전체 변경/수정
- DELETE: 자원에 대한 삭제
- PATCH: 자원에 대한 일부 변경/수정(Update와 비슷하게 쓰인다.)
- OPTIONS: 서버에서 지원하는 메소드 확인. CORS에서 사용된다.
HTTP 요청 메서드에서도 영역을 나눌 수 있다.
① Request Line
먼저 위에서 언급된 URL과, 요청 메서드, 그리고 HTTP 버전정보가 포함되어있으며, 요청 메시지의 첫째 줄에 표기된다.
② Request Header
두 번째 줄은 헤더 영역이다. 헤더에는 클라이언트 PC와 브라우저 정보, 쿠키 등 다양한 클라이언트 환경에 대한 정보를 가지고 있다.
User-Agent, Upgrade-Insecure-Requests, Accept-Language등 여러가지 종류가 해당된다.
③ CRLF
줄바꿈 명령으로 한 줄을 띄운다.
④ 본문[ message-body ]
클라이언트가 입력한 데이터를 저장하는 영역이다.
GET https://velog.io/@jgone2 HTTP/1.1 // 시작줄
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... // 헤더
Upgrade-Insecure-Requests: 1
02.응답(Response)
응답은 HTTP 프로토콜의 버전, 상태코드, 상태 메시지, Response Header, 본문으로 구성되어 있다.
01.HTTP Status code(상태 코드)
상태 코드
는 서버가 클라이언트에게 응답의 상태를 알리는 수단이며, 크게 다섯가지 클래스로 분류된다.
- 1xx: 요청 정보 처리중(Informational)
- 2xx: 요청을 정상적으로 처리(Success)
- 3xx: 요청을 완료하기 위해 추가 수행 필요(Redirection)
- 4xx: 요청한 자원이 서버에 존재하지 않음(Client Error)
- 5xx: 서버가 요청 처리 실패(Server Error)
📚Reference
CAPTAIN PANGYO
TCP SCHOOL
John Grib
surim's develog
개발 기록, 기록 개발
Morning Star★
Mozilla
Author And Source
이 문제에 관하여(02.HTTP), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jgone2/02.HTTP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)