[http] http란

seheo·2022년 8월 9일
0

Network

목록 보기
3/3
post-thumbnail

틀린 부분이 있으면 댓글로 알려주시면 감사하겠습니다!!

1. HTTP: 인터넷의 배달부

인터넷에는 수십억 개의, 사진, 음성, HTML 페이지, 동영상들이 저장된다.
HTTP는 전 세계 웹 서버로부터 대량의 정보를 빠르고, 간편하고, 정확하게 사람들의 웹브라우저로 옮겨주는 배달부이다.

  • TCP를 사용하기 때문에 전송 중 손상을 방지해준다.

TCP/IP http 통신의 흐름


웹 콘텐츠들은 웹 서버에 존재한다.

  • 정적 웹페이지
    • 클라이언트 요청을하면 서버에서 http 서버(웹서버)에서 응답해준다.
  • 동적 웹페이지
    • 클라이언트가 서버에게 요청을 할때, 입력값을 해석하여 데이터를 가공하여 웹서버에서 응답해준다.
    • 구현하려면 WAS(Web Application Server) 필요
    • WAS
      ex) Tomcat

2. HTTP의 미디어 타입

HTTP는 웹에서 전송되는 객체 각각에 신중하게 MINE 타입이라는 데이터 포맷 라벨을 붙인다.

MINE (Multipurpose Interenet Mail Extensions, 다목적 인터넷 메일 확장)
전자메일 시스템 사이에서 메시지가 오갈 때 겪는 문제를 해결하기 위해 설계된 데이터 포맷 라벨

  • HTML로 작성되면 text/html
  • JPEG 이미지는 image/jpeg
  • GIF 이미지는 image/gif
  • 애플 퀵타임 동영상은 video/quicktime
  • 파워포인트 프레젠테이션은 application/vnd.ms-powerpoint

이 외에도 다양한 MIME 타입이 있다.

3. URI(Uniform Resource Identifier)

웹 서버 리소스는 각자의 이름을 가지고 있다.
클라이언트가 원하는 리소스를 얻기 위해 통합 자원 식별자(uniform resource identifier), 줄여서 URI라고 부른다.
'github'의 웹 서버에 있는 42기술면접스터디의 리소스의 URI는 이런 식이다.

https://github.com/Heosejin98/42tech-interview-study

URL(Uniform Resource Locator)

오늘날의 대부분의 URI는 URL이다.
URL은 정확히 리소스가 어디에 있는지 어떻게 접근하는지 알려준다.

URN(Uniform Resource Name)

URN은 리소스의 위치에 영향을 받지 않는 유일한 이름 역할을 한다.
리소스의 이름이 변하지 앟는 한 리소스의 어디로 옮기더라도 문제없이 동작한다.
URN은 아직 실험적인 단계 널리 채택되지는 않았다.

4. 트랜잭션

HTTP 트랜잭션은 클라이언트가 서버에게 보내는 요청명령과 서버가 클라이언트의 용청에 응답하는 응답 결과로 구성되있다.

메서드

클라이언트 -> 서버
클라이언트가 서버에게 어떤 동작을 취해져야하는지 말해주는 방법이다

  • 웹페이지 가져오기, 게이트웨이 프로그램 실행하기, 파일 삭제하기 등
HTTP 메서드설명
GET서버에서 클라이언트로 지정한 리소스를 보내라.
PUT클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하여라.
DELETE지정한 리소스를 서버에서 삭제하라.
POST클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보낸다.
HEAD지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라.

상태코드

클라이언트 <- 서버
서바가 클라이언트에게 요청이 성공했는지 추가 조치가 필요한지 알려주는 수자이다.
각 상태코드별로 오류의 원인, 성공 여부 등 정보를 담아 클라이언트에게 전달한다.

HTTP 상태코드설명
200좋다. 문서가 바르게 반환되었다.
302다시 보내라. 다른 곳에 가서 리소스를 가져가라.
404없음. 리소스를 찾을 수 없다.

웹페이지는 여러 객체로 이루어질 수 있다.

애플리케이션은 하나의 작업을 수행하기 위해 HTTP 트랜잭션을 여러 개를 수행한다.
아래 그림과 같이 하나의 '웹페이지'는 보통 하나의 리소스가 아닌 리소스의 모음이다.

5.메시지

HTTP 메시지는 단순한 줄 단위의 문자열이다.

  • 클라이언트 -> 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 한다.
  • 웹 서버 -> 클라이언트로 가는 메시지를 응답 메시지라고 한다.
  • HTTP 메시지는 이 두가지로 구성 두 메시지의 형식은 굉장히 비슷하다.
    HTTP 메시지는 세 부분으로 이루어짐

시작줄

요청 시작줄

  • 무엇을 해야하는지 전송

응답 시작줄

  • 무슨 일이 일어났는지 반환

헤더

하나의 이름과 하나의 값으로 구성되어 있고, 콜론(:)을 통해 구분한다.
공통 헤더

  • 메시지가 만들어진 시각
  • 응답 메시지의 본문 크기
  • 컨텐츠의 타입, 문자열 인코딩
  • 사용자 언어
  • 컨텐츠 압축 방식 등

요청 헤더

  • 서버 도메인 네임
  • 클라인언트가 허영할 수 있는 파일 형식
  • 쿠키
  • 인증 토큰

응답 헤더

  • 웹서버 정보
  • 응답 본문 브라우저에 표시방법
  • 오류 시 어느 페이지로 이동할지 알려주는 주소
  • 다른 외부 파일을 불러오는 경우, 차단할 소스와 불러올 소스

본문

실제로 가져올 데이터
요청한 리소스에 따라 HTML, CSS, JavaScript 등
요청 본문
웹 서버로 데이터를 실어 보낸다. (?)
응답 시작줄
클라이언트로 데이터를 반환

간단한 GET 트랜잭션 예시

참고자료

HTTP 완벽 가이드 / 데이빗 고울리, 브라인언 토티, 마조리 세이어, 세일루 레디, 안슈 아가왈 지음 / 이응준, 정상일 옮김 / 프로그래밍인사이트

0개의 댓글