HTTP는 Hyper Text Transfer Protocol의 약자로 서버와 클라이언트 간의 통신 위에서 메시지를 교환하기 위한 프로토콜입니다.

프로토콜은 규약이라는 것으로 서로 다른 어플리케이션이 통신하기 위해 필요한 규칙입니다.

 

이런 프로토콜 규칙에서 tcp/ip의 4계층으로 나누게 된다.

클라이언트가 리소스를 통해 http요청을 하면  tcp, ip 프로토콜을 거쳐 서버 쪽의 http까지 요청이 도달한다.

이에 대한 응답을 다시 서버에서 http로 보내면 tcp, ip 프로토콜을 통해 클라이언트까지 응답이 도달한다.

 

tcp는 트랜스포트 계층 속의 프로토콜로써 서버와 클라이언트 사이에서 통신연결하는 것을 담당한다.

Tcp는 바이트 스트림(Byte Stream)을 제공한다.

(바이트 스트림이란 큰 데이터를 잘게 쪼갠뒤 전송하는 서비스를 말한다)

 

이때 정확하게 전송되었는지 확인하는 3way handshaking을 한다.

배송을 담당하는 ip(Internet Protocol)에서는 분할된 데이터 패킷은 써머에게 보낸다.

이때 보내는 경로는 Mac 주소로 보낸다.

 

 

 

http는 stateless특성을 가진다. http프로토콜은 과거정보를 남기지 않고 새로운 리퀘스트를 보낼때마다 새로운 리스폰스를 보낸다.

하지만 장바구니와 같은 기능이 필요할때는 세션과 쿠키같은 기술이 함께 쓰이고 있다. 

 

http 메서드

 

메서드는 GET, PUT, PATCH, POST, 멱등성 등이 존재한다.

멱등성이란 수학에서 연산을 여러번 적용해도 결과가 달라지지 않는 성질을 의미한다.

http에서는 여러번 요청한 결과 서버의 상태가 동일할 때를 의미한다.

 

GET은 특성한 리소스를 가져오도록 요청한다. 데이터를 가져올때만 사용해야 한다.하지만 본문을 담을 수 있지만 

구현된 서비스에서 요청을 거부할 수 있기때문에 담지않는게 바람직하다.

POST는 리퀘스트 본문을 해당 리소스에 맞게 처리하도록 요청하는 메소드이다.

PUT은 대상 리소스가 없다면 생성하고 있으면 리퀘스트의 본문대로 교체하는대 사용된다.

PATCH는 리소스의 일부를 수정하는데 사용된다. 

DELETE는 지정한 리소스를 삭제하는 곳에 사용된다. 

 

 

 

HTTP Message

HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식이다.

request과 response 두 가지 유형이 존재한다.

request는 클라이언트가 서버로 전달하는 메시지이고, Response는 Request에 대한 서버의 답변이다.

메시지는 공백을 제외하고 startline, header, body 세 부분으로 구성된다.

 

request 메시지 구조

1) Start Line

 

Start Line에는 HTTP 메소드, Request target, HTTP version이 있다.

 

  • HTTP 메소드는 요청의 의도를 담고 있는 GET, POST, PUT, DELETE 등이 있다..
  • GET은 존재하는 자원에 대한 요청, POST는 새로운 자원을 생성, PUT은 존재하는 자원에 대한 변경, DELETE는 존재하는 자원에 대한 삭제와 같은 기능을 가지고 있다.
  • Request target은 HTTP Request가 전송되는 목표 주소이다.
  • HTTP version은 version에 따라 Request 메시지 구조나 데이터가 다를 수 있어서 version을 명시한다.

 

2) Header

 

Header에는 HTTP Request 그 자체에 대한 정보를 담고 있다.

또한 key : value 형태로 이루어져 있다.

 

Host : 요청하려는 서버 호스트 이름과 포트번호

User-agent : 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.

Referer : 바로 직전에 머물렀던 웹 링크 주소 

Accept : 클라이언트가 처리 가능한 미디어 타입 종류 나열

If-Modified-Since : 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.

Authorization : 인증 토큰을 서버로 보낼 때 쓰이는 Header

Origin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다.

Cookie : 쿠키 값이 key-value로 표현된다.

 

 

3) Body

 

HTTP Request가 전송하는 데이터를 담고 있는 부분입니다. 전송하는 데이터가 없다면 Body 부분은 비어있다.

보통 POST 요청일 경우, HTML 폼 데이터가 포함되어 있다.

 

 

Response 메시지 구조

 

1) Start Line

 

Response의 Start Line에는 HTTP version, Status Code, Status Text가 있다.

 

  • Staus Code는 Response 상태를 나타내는 코드입니다. 요청 정상 처리를 나타내는 200이나 페이지가 이동되거나 없어졌을 때를 나타내는 404와 같은 코드다.
  • Status Text는 Response 상태를 간략하게 글로 설명한다.

 

2) Header

 

Location : 301, 302 상태코드일 때만 볼 수 있는 Header로 서버의 응답이 다른 곳에 있다고 알려주면서 해당 위치(URI)를 지정한다.

Server : 웹 서버의 종류

Age : max-age 시간내에서 얼마나 흘렀는지 초 단위로 알려주는 값

Referrer-policy : 서버 referrer 정책을 알려주는 값 ex) origin, no-referrer, unsafe-url

WWW-Authenticate : 사용자 인증이 필요한 자원을 요구할 시 , 서버가 제공하는 인증 방식

Proxy-Authenticate : 요청한 서버가 프록시 서버인 경우 유저 인증을 위한 값

 

 

3) Body

 

HTTP Request 메시지의 Body와 동일하다. 마찬가지로 전송하는 데이터가 없으면 비어있다.

 

'기술면접스터디' 카테고리의 다른 글

require와 import의 차이점  (0) 2023.02.27
position  (0) 2023.02.24
캐시의 장단점과 활용  (0) 2023.02.23
프레임워크와 라이브러리의 차이점  (0) 2023.02.23
호이스팅  (0) 2023.02.22

+ Recent posts