1부 HTTP: 웹의 기초

1장 HTTP개관

이 장은 HTTP를 간결하게 설명한다. 웹 애플리케이션이 HTTP를 이용하고 통신하고, HTTP가 어떻게 그 일을 해내는지 개략적으로 알게 될 것 이다.

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

HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다.

1.2 웹 클라이언트와 서버

  • 웹 콘텐츠는 웹 서버에 존재.
  • HTTP 프로토콜로 의사소통을 하기에 보통 HTTP서버라 불림.
  • 클라이언트(웹브라우저)
  • 클라이언트는 서버에게 HTTP요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려줌

1.3 리소스

  • 웹 서버는 웹 리소스를 관리하고 제공한다.
  • 가장 단순한 웹 리소스: 정적파일(텍스트, HTTML 파일등등)
  • 그러나 리소스는 반드시 정적 파일이어야 할 필요는 없다.
  • 즉, 어떤 종류의 콘텐츠 소스도 리소스가 될수 있다.

1.3.1 미디어 타입

  • 인터넷은 수천 가지 데이터 타입을 다루기 때문에, HTTP는 웹에서 전송되는 객체 가각에 신중하게 MIME 타입이라는 데이터 포맷 라벨을 붙인다.
  • MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장)
  • 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다.
  • MIME 타입은 사선(/)으로 구분 된 타입과 부 타입으로 이루어진 문자열 라벨이다.
  • 예) HTML로 작성된 텍스트 문서는 text/html 라벨이 붙는다.

1.3.2 URI

  • 웹 서버 리소스는 각자 이름을 갖고 있기 때문에, 클라이언트는 관심 있는 리소스를 지목할 수 있다.
  • 서버 리소스 이름은 URI(Uniform resource identifier), 통합 자원 식별자
  • 조의 컴퓨터 가게의 웹 서버에 있는 이미지 리소스에 대한 URI

http://www.joes-hardware.com/specials/saw-blade.git
http:// : HTTP 프로토콜을 사용하라
www.joes-hardware.com으로 이동하라
specials/saw-blade.git라고 불리는 리소스를 가져와라

1.3.3 URL

  • 통합 자원 지시자(uniform resource locator, URL)는 리소스 식별자의 가장 흔한 형태다.
  • 대부분 URL은 세 부분으로 이루어진 표준 포맷을 따른다.
  1. 첫번째 부분은 스킴 http://, 리소스에 사용 되는 프로토콜 서술, 보통 HTTP 프로토콜이다.
  2. 두번째 부분은 서버의 인터넷 주소 www.joes-hardware.com
  3. 마지막은 웹 서버의 리소스 specials/saw-blade.git
  • 오늘날 대부분의 URI는 URL 이다.

1.3.4 URN

  • URI의 두 번째 종류는 유니폼 리소스 이름(uniform resource name, URN)이다.

1.4 트랜잭션

  • HTTP트랜잭션은 요청 명령(클라이언트에서 서버로 보내는)과 응답 결과(서버가 클라이언트에게 돌려주는)로 구성 되어 있다.
  • 정형화 된 데이터 덩어리를 이용해 이루어 진다.

1.4.1 메서드

  • HTTP는 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원한다.
  • 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다.
  • 메서드는 서버에게 어떤 동작이 취해져야 하는지 말해준다(웹페이지 가져오기, 파일 삭제하기 등)
  • HTTP 메서드
    GET : 서버에 클라이언트로 지정한 리소스를 보내라
    PUT' : 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라.DELETE' : 지정한 리소스를 서버에서 삭제하라.
    POST' : 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라.HEAD' : 지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보내라.

1.4.2 상태코드

  • 모든 HTTP 응답 메[시지는 상태 코드와 함꼐 반환된다.
  • 흔히 쓰이는 상태코드
    200 : 정상, 문서가 바륵 ㅔ반환 되었다.
    404 : 리소스를 찾을 수 없다.
  • 또한 상태코드에 대한 사유 구절을 함께 보낸다. 예) 200 OK

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

  • 웹 페이지는 보통 하나의 리소스가 아닌 리소스의 모음이다.

1.5 메시지

  • 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지.
  • 서버에서 클라이언트로 가는 메시지는 응답 메시지
  • 메시지는 아래의 3가지 부분으로 이루어져 있다.
  1. 시작줄
  • 요청: 무엇을 해야하는지, 응답: 무슨일이 일어났는지 나타낸다.
  1. 헤더
  • 하나의 이름과 하나의 값
  • 헤더는 빈 줄로 끝난다.
  1. 본문
  • 문자열이며 구조적인 시작줄이나 헤더와 달리, 본문은 임의의 이진 데이터를 포함할 수 있다

1.5.1 간단한 메시지의 예

1.6 TCP 커넥션

  • 어떻게 메시지가 TCP(Transmission Control Protocol, 전손 제어 프로토콜) 커넥션을 통해 한 곳에서 다른 곳으로 옮겨가는지 잠깐 이야기해보도록 하자.

1.6.1 TCP/IP

  • HTTP는 애플리케이션 계층 프로토콜이다.
  • 특징
  1. 오류없는 데이터 전송
  2. 순서에 맞는 전달(데이터는 언제나 보낸 순서대로 도착한다)
  3. 조각나지 않는 데이터 스트림 (언제든 어떤 크기로든 보낼 수 있다)
  • TCP/IP는 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜의 집합이다.
  • 일단 TCP 커넥션이 맺어지면, 클라이언트와 서버 컴퓨터 간에 교환되는 메시지가 없어지거나, 손상되거나, 순서가 뒤바뀌어 수신되는 일은 결코 없다.
  • HTTP는 자신의 메시지 데이터를 전송하기 위해 TCP를 사용한다
  • 계층 순서
<상위>

HTTP - 애플리케이션 계층
TCP - 전송 계층
IP - 네트워크 계층
네트워크를 위한 링크 인터페이스 - 데이터 링크 계층
물리적인 네트워크 하드웨어 - 물리 계층

<하위>

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

  • HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, 인터넷 프로토콜(Internet protocol, IP)주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 한다.
  • TCP에서는 서버 컴퓨터에 대한 IP주소와 그 서버에서 실행 중인 프로그램이 사용 중인 포트번호가 필요하다.
  • URL을 이용해 HTTP서보의 IP주소와 포트번호를 알아낼 수 있다.
  • 호스트명은 IP 주소에 대한 이해하기 쉬운 형태의 별명
  • 호스트 명은 도메인 이름 서비스(Domain Name Service, DNS)라 불리는 장치를 통해 쉽게 IP로 변환될 수 있으므로 모든 준비는 끝난 것이다.
  • HTTP URL에 포트번호가 빠진 경우에는 기본값 80이라고 가정하면 된다.

1.6.3 텔넷을 이용한 예제

1.7 프로토콜 버전

  • HTTP/0.9 : 1991년의 HTTP 프로토타입
  • HTTP/1.0 : 처음으로 널리 쓰이기 시작함
  • HTTP/1.0+ : 1990년 중반,
  • HTTP/1.1 : 1990년 후반에 쓰이고 있었음
  • HTTP/2.0 : HTTP/1.1 성능 문제를 개선하기 위해 구글의 SPDY 프로토콜을 기반으로 설계가 진행 중인 프로토콜

1.8 웹의 구성요소

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

1.8.1 프락시

  • 웹 보안, 애플리케이션 통합, 성능 최적화를 위한 중요한 구성요소인 HTTP 프락시 서버
  • 프락시는 클라이언트와 서버 사이에 위치하여, 클라이언트의 모든 HTTP 요청을 받아 서버에 전달한다(대개 요청을 수정한 뒤에)
  • 프락시는 주로 보안을 위해 사용 된다. 즉, 모든 웹 트래픽 흐름 속에서 신뢰할 만한 중개자 역활을 한다.
  • 요청과 응답을 필터링 한다.

1.8.2 캐시

  • 웹캐시와 캐시 프락시는 자신을 거쳐 가는 문서들 중 자주 찾는 것의 사본을 저장 해두는 특별한 종류의 HTTP 프락시 서버다.

1.8.3 게이트웨이

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

1.8.4 터널

  • 터널은 두 커넥션 사에어서 raw데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션 이다.

1.8.5 에이전트

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

1.9 시작의 끝

  • 생략

1.10 추가정보

  • 생략

1.10.1 HTTP 프로토콜에 대한 정보

  • 생략

1.10.2 역사적 시작

  • 생략

1.10.3 기타 월드 와이드 웹 정보

  • 생략


블로그 이미지

젼 StopHyun

젼의 IT이야기 입니다. 질문은 stophyuni@gmail.com 로 해주세요 :]