[요약] HTTP 완벽가이드 웹은 어떻게 동작하는가, 1장 HTTP

in #steemkr8 years ago

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 기타 월드 와이드 웹 정보

  • 생략
Sort:  

Congratulations @jihyunj! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 10 upvotes. Your next target is to reach 50 upvotes.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Saint Nicholas challenge for good boys and girls

Support SteemitBoard's project! Vote for its witness and get one more award!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.077
BTC 63776.62
ETH 1673.78
USDT 1.00
SBD 0.41