HTTP

[HTTP완벽 가이드] 1장 HTTP 개관

차노도리 2023. 9. 16. 21:31

1. 1 HTTP: 인터넷의 멀티미디어 배달부

HTTP

  • 웹 서버로부터 정보를 브라우저에 전달하는 역할
  • 신뢰성 있는 프로토콜로, 신뢰성 있는 데이터 전송을 보장한다.

 

 

1.2 웹 클라이언트와 서버

웹서버

  • 웹콘텐츠가 존재하는 곳 (HTTP 서버)
  • 서버는 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다.

클라이언트 요청과정

  1. URL 주소 중 도메인 네임 부분을 운 서버에서 검색한다.
  2. DNS 서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아 사용자가 입력한 URL정보와 함께 전달한다.
  3. 브라우저는 HTTP 프로토콜을 사용하여 요청 메시지를 생성하고 HTTP 요청 메시지는 TCP/IP프로콜을 사용하여 서버로 전송된다.
  4. 서버는 response 메시지를 생성하여 다시 브라우저에게 데이터를 전송한다.
  5. 브라우저는 response를 받아 파싱하여 화면에 렌더링한다.

 

 

1.3 리소스

웹 리소스

  • 웹 서버 파일 시스템의 파일
  • 정적 파일: 텍스트 파일, HTML 파일, 이미지/동영상 파일, 그 외 파일
  • 동적 콘텐츠 리소스: 사용자, 요청한 정보, 시간에 따라 다른 콘텐츠 생성

  

1.3.1 미디어 타입

MIME(Multipurpose Internet Mail Extensions)

  • HTTP 전송객체에 붙는 데이터 포맷 라벨
  • 이메일 호환을 위해 설계되었음
  • 주타입 / 부타입
HTML: text/html
plain ASCII: text/plain
JPEG: image/jpeg
GIF: image/gif
퀵타임: video/quicktime
ppt: application/vnd.ms-powerpoint

 

1.3.2 URI

URI(uniform resource identifier)

  • 서버 리소스 이름

  

1.3.3 URL

URL(uniform resource locator)

  • 특정 서버의 리소스에 대한 구체적인 위치
  • 스킴(scheme): 프로토콜 (http://, https://)
  • 서버의 주소: (www.joes-hardware.com)
  • 웹 리소스: (/specials/saw-blade.gif)

 

1.3.4 URN

URN(uniform resource name)

  • 리소스 이름
  • URI는 URL, URN을 포함한다.

 

 

1.4 트랜잭션

HTTP 트랜잭션

  • 요청 명령과 응답 결과로 구성

  

1.4.1 메서드

  • GET: 서버에서 클라이언트로 지정한 리소스를 보내라.
  • PUT: 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라.
  • DELETE: 지정한 리소스를 서버에서 삭제하라.
  • POST: 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라.
  • HEAD: 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라.
  • 그 외 CONNECT, **OPTIONS**, TRACE, **PATCH** - [mdn http methods
  • 참고 : (https://developer.mozilla.org/ko/docs/Web/HTTP/Methods)

 

1.4.2 상태 코드

 

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

  • 하나의 페이지에서 대량의 HTTP 트랙잭션 수행 가능

 

1.5 메시지

요청 메시지

  • 웹 클라이언트에서 웹 서버로 보낸 HTTP 메세지
  • 시작줄: 요청 - 무엇을 해야 하는지 / 응답: 무슨일이 일어났는지
  • 헤더: 요청에 들어가는 HTTP 헤더는 HTTP 헤더의 기본 구조를 따릅니다. (구분자 :)
  • 본문: 메시지 본문 (이미지, 비디오, 오디오, 응용 소프트웨어)
  • 참고 : (https://developer.mozilla.org/ko/docs/Web/HTTP/Messages#%EC%8B%9C%EC%9E%91_%EC%A4%84)

 

 

1.6 TCP 커넥션

TCP(Transmission Control Protocol)

  • 전송 제어 프로토콜

 

1.6.1 TCP/IP

  • 오류 없는 데이터 전송
  • 순서에 맞는 전달
  • 조각나지 않는 데이터 스트림

 

1.6.2 접속, IP 주소 그리고 포트번호

  • TCP 커넥션: 전화 거는 것과 비슷 (서버에 연결)
  • 80 포트: HTTP 서버

 

 

1.7 프로토콜 버전

  • HTTP/0.9, HTTP/1.0, HTTP/1.0+, HTTP/1.1, HTTP/2.0
  • HTTP/2.0: 책에서는 진행중이라고 되어있지만, 현재 상용

 

 

1.8 웹이 구성요소

  • 프락시(proxy): 클라이언트와 서버 사이에 위치한 HTTP 중개자
  • 캐시: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 저장소
  • 게이트웨이: 다른 애플리케이션과 연결된 특별한 웹 서버
  • 터널: 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
  • 에이전트: 자동화된 HTTP 요청을 만드는 준지능적(semi-intelligent) 웹 클라이언트

 

1.8.1 프락시

  • 클라이언트의 모든 HTTP 요청을 받아 (요청을 수정한 뒤에) 서버에 전달
  • 보안을 위해 사용

 

1.8.2 캐시

  • 자주 찾는 것의 사본을 저장해 두는, 특별한 종류의 프락시 서버

 

1.8.3 게이트웨이

  • 게이트웨이는 다른 서버들의 중개자로 동작하는 특별한 서버
  • 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용

 

1.8.4 터널

  • 터널은 두 커넥션 사이의 raw 데이터를 그대로 전달해주는 HTTP 애플리케이션

 

1.8.5 에이전트

  • 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램

 

 

HTTP 완벽 가이드 책

'HTTP' 카테고리의 다른 글

[HTTP 완벽 가이드]2장 URL과 리소스  (0) 2023.09.20