⚡️HTTP(HyperText Transfer Protocol)
HTTP는 HTML과 같은 하이퍼미디어 문서를 전송하기위한 프로토콜로
클라이언트와 서버 간 거의 모든 종류의 데이터를 주고 받는 통신에 사용됩니다.
HTTP의 주요한 특징은 무상태(Stateless) 프로토콜이라는 것인데,
말 그대로 상태를 저장하지 않아 이전 요청, 응답에 대해 알 수 없기 때문에
유지할 데이터가 필요하다면 쿠키와 세션을 이용할 수 있다.
⚡️HTTP의 구조
1. HTTP 구조 확인
curl -v www.naver.com
우선 HTTP 구조를 확인하기 위해 터미널에서 curl -v [URL] 커맨드로 정보를 띄워보겠습니다.
2. HTTP Request 구조
> GET / HTTP/1.1
> Host: www.naver.com
> User-Agent: curl/7.77.0
> Accept: */*
>
HTTP request 메세지는 다음과 같이 구성됩니다.
- start line
- header
- body
1) start line
> GET / HTTP/1.1
request에 대한 추가 정보를 담고 있습니다.
> Method type / Request Target / Http Version
순서대로 정보를 표시하며
제가 요청한 정보에는 Uri 정보가 없기 때문에 Request Target이 생략되어 있습니다.
2) header
> Host: www.naver.com -> Host URL
> User-Agent: curl/7.77.0 -> 클라이언트 정보
> Accept: */* -> message body
> Host : 호스트 URL
> User-Agent : 클라이언트 정보
> Accept : 서버에서 해당 타입에 떼이터를 보내달라고 요청하는 헤더
> Authorization : 인증 토큰을 서버로 보낼 때 사용하는 헤더
method가 GET 방식이여서 body 부분이 따로 존재하지 않지만
POST 방식으로 보낸다면 body 부분이 존재합니다.
3. HTTP Response 구조
< HTTP/1.1 302 Moved Temporarily
< Server: NWS
< Date: Fri, 04 Mar 2022 13:32:19 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: https://www.naver.com/
< Vary: Accept-Encoding,User-Agent
<
<html> .... </html>
HTTP Response의 구조는 다음과 같이 구성됩니다.
- start line
- header
- empty line
- message body
1) start line
< HTTP/1.1 302 Moved Temporarily
< HTTP Version / Status Code, Status Text
Status Code - 응답코드
Status Text - 응답상태
저는 302(임시 이동) 코드가 떴네요.
응답코드에 대한 상태는 대략적으로 다음과 같습니다.
- 1XX : 조건부 응답
- 2XX : 성공
- 3XX : 리다이렉션 완료
- 4XX : 요청 오류
- 5XX : 서버 오류
2) header
< Server: NWS
< Date: Fri, 04 Mar 2022 13:32:19 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: https://www.naver.com/
< Vary: Accept-Encoding,User-Agent
Response의 header와 동일한 구조를 따르지만, response에서만 사용되는 값들이 존재합니다.
응답에 대한 추가 정보들을 담고 있습니다.
3) body
<html> .... </html>
요청에 대한 응답 본문을 나타냅니다.
request와 같이 데이터를 전송할 필요가 없는 경우 body가 비어있게 됩니다.
'CS' 카테고리의 다른 글
DNS(Domain Name Server), 네임서버란? (0) | 2022.07.13 |
---|---|
전송계층의 프로토콜 TCP vs UDP (2) | 2022.07.07 |
SSH(Secure Shell Protocol)에 대해 (0) | 2022.03.02 |
기본 자료구조에 대해 (0) | 2022.02.20 |
댓글