본문 바로가기
CS/Network

[네트워크] HTTP

by sebinChu 2024. 4. 24.

개요

HTTP는 Hyper Text를 전달하는 프로토콜이다.

request, response 두 가지 타입이 있다.

 

Hyper Text?

  • 파일들이 링크되어 있는 텍스트

HTTP 특징

Connectionless

HTTP는 클라이언트의 요청에 대한 응답을 하면, 바로 연결을 끊는다. 한 클라이언트에 대한 접속 유지 시간을 줄임으로써 더 많은 요청-응답을 할 수 있다.

(단점) 같은 클라이언트 요청이 오더라도 이에 대해 전혀 알 수 없다. → 이걸 해결하기 위한게 쿠키

 

Stateless

바로 직전의 클라이언트에서 또 요청이 왔을지라도, 해당 클라이언트의 상태를 저장하지 않으므로 클라이언트 측에서 추가적인 정보를 제공해야 한다.

 

HTTP는 Transport 계층에서 TCP를 사용한다.

Request, Response가 있기 이전에 먼저 TCP 커넥션을 형성

 


 

두 종류의 HTTP 

non-persistent HTTP

TCP가 한번 전송되면 연결 바로 끊김

(2RTT + file 전송시간) * N 으로 요청/응답 해결 가능

 

특징

  • 각각의 Object마다 2 RTT가 오가야 한다.
  • 각각의 TCP 커넥션에 대한 OS 오버헤드

 

persistent HTTP default

다양한 파일 요청이 있을 때 request, response마다 요청 끊지않고 쭉 유지

처음 연결 RTT + 파일 주고받으면서 (RTT + file transmission) * N

 

특징

  • HTTP 1.1부터만 가능
  • 커넥션을 계속 열어놔야 함(당연함)

 

HTTP로 전송할 수 있는 것

  1. html, text
  2. 이미지, 음성, 영상, 파일
  3. JSON, XML
  4. 거의 모든 형태의 데이터 전송 가능

HTTP 헤더

헤더에 담기는 정보 3 가지

  1. General Header: 컨텐츠 자체의 내용보다 전송 시간 및 날짜 등 일반적인 정보가 포함되어 있다. ex. Content-Type
  2. Request, Response Header: 웹 브라우저가 웹서버에 요청하는 것을 텍스트로 변환한 메시지들
    • 클라이언트 정보: Remote IP, Host, Port
    • 서버 정보: Server Name, Ip
    • Authorization
    • Cookie 등등
  3. Entity Header

 


HTTP REQUEST - GET/POST 차이

  • GET
    • 데이터를 URL에 포함시켜서 보냄 → 브라우저의 주소창이나 히스토리에 기록이 남음→ 민감한 정보를 전송하는 데에는 적합하지 않음.
    • www.tistory.com/?키워드=파라미터 이런식
    • *spring @Pathvariable
  • POST
    • 데이터를 HTTP 요청의 본문(Body)에 담아서 보내므로 외부에 노출되지 않음
    • 데이터의 크기에 대한 제한이 없어 큰 데이터를 전송하는 경우에 주로 사용됨.

HTTP RESPONSE - 상태 코드

HTTP 응답코드는 웹 서버가 클라이언트에게 보내는 3자리 숫자로, 요청의 성공, 리디렉션, 클라이언트 오류, 서버 오류 등을 나타냄.

  • 1xx(정보): 요청이 받아졌고 프로세스 중.
  • 2xx(성공): 요청이 성공적으로 처리됨.
  • 3xx(리다이렉션): 추가 작업이 필요하거나 다른 위치로 이동해야 함.
  • 4xx(클라이언트 오류): 클라이언트의 요청에 문제가 있음.
  • 5xx(서버 오류): 서버가 요청을 처리하는데 문제가 발생함.

 

 

댓글