1.1 HTTP: 인터넷의 멀티미디어 배달부
1.2 웹 클라이언트와 서버
1.3 리소스
1.4 트랜잭션
1.5 메시지
1.6 TCP 커넥션
1.7 프로토콜 버전
1.8 웹의 구성요소
1.9 시작의 끝
1.10 추가 정보
- HTTP 통신에서 데이터를 전송할 경우, 개발자는 전송 중 데이터가 파괴되거나, 중복되거나, 왜곡될 수 있기 때문에 이에 유의해야 한다. (O/X)
-
크롬, 인터넷 익스플로러는 웹 서버에 해당한다 (O/X)
-
클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다. (O/X)
-
웹서버에서 관리하는 웹 리소스는 텍스트파일, HTML파일, AVI 동영상파일 등 정적파일로 제한된다. (O/X)
-
사용자가 누구인지, 어떤 정보를 요청했는지, 몇 시인지 등에 따라 다른 콘텐츠를 생성하는 것을 동적콘텐츠 리소스라고 한다. (O/X)
-
MIME 타입은 클라이언트가 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 확인하기 위한 목적으로 사용된다. (O/X)
-
image/jpeg, image/gif와 같은 MIME 타입은 수백 가지가 넘는다. (O/X)
-
URI(Uniform Resource Identifier, 통합 자원 식별자)는 URL과 URN 두 가지가 있다. (O/X)
-
대부분의 URL(Uniform Resource Locator, 통합 자원 지시자)은 스킴 + 서버의 인터넷주소 + 웹서버의 리소스 이렇게 세 가지 부분으로 이루어진 표준포맷을 따른다. (O/X)
-
URN(Uniform Resource Name, 통합 자원 이름)은 고유한 이름으로 리소스의 위치에 상관없이 접근할 수 있다는 장점으로 널리 채택되고 있다. (O/X)
- 모든 HTTP 요청 메세지는 한 개 이상의 메서드를 갖는다. (O/X)
모든 HTTP 요청 메서드는 이곳에서 확인 가능. (총 7개)
요즘은 보안을 위해 GET과 POST를 제외한 나머지 메서드를 비활성화한다.
간혹 요청 메서드는 'http 동사'라고도 부른다.
실제로 요청만 보낸다고 이루어지는 건 아니고, 서버에서 검증 후 유효하면 실행된다.
HTML 폼에서는 method 속성에 이런 메서드를 사용할 수 있고, action 속성에는 주소가 들어간다. 주소를 자원(리소스)이라고 보고, 메서드를 동사라고 보는 개발 방식이 바로 REST이다.
REST API에 대해 자세히 알고싶다면 이곳 확인.
- POST 메서드의 뜻은 "서버에서 클라이언트로 지정한 리소스를 보내라" 이다. (O/X)
- 클라이언트에서 GET, POST 이외의 메서드로 작업 요청 시 보안문제가 발생한다. (O/X)
- HTTP 응답 메시지의 302 상태코드는 문서가 바르게 반환되었음을 의미한다. (O/X)
모든 HTTP 응답 상태코드는 이곳에서 확인 가능.
-
각 상태코드는 텍스트로 된 사유구절을 가지는데, 이는 응답 처리에 영향을 미치지 않는다. (O/X)
-
한 웹페이지는 하나의 HTTP 트랜젝션, 즉 여러 리소스의 모음이다. (O/X)
-
HTTP 메시지는 이진 형식으로 구성된다. (O/X)
-
HTTP 메시지는
헤더
/본문
의 두 부분으로 이루어진다. (O/X) -
HTTP 메시지의 헤더는 빈 줄로 끝난다. (O/X)
-
각 헤더필드는 쉬운 구문분석을 위해 쉼표(,)로 구분되어 있는 하나의 이름과 하나의 값으로 구성된다. (O/X)
-
HTTP 메시지의 본문에는 비디오, 오디오 데이터가 담길 수 있다. (O/X)
-
HTTP의 메시지는 TCP(Transmission Control Protocol, 전송 제어 프로토콜)커넥션을 통해 옮겨진다.
-
HTTP는 Application 계층 프로토콜이다. HTTP는 네트워크 통신을 TCP/IP에게 맡긴다.
-
TCP가 제공하는 것
-
오류 없는 데이터 전송
-
순서에 맞는 전달 (데이터는 언제나 보낸 순서대로 도착)
-
조각나지 않는 데이터 스트림 (언제든 어떤 크기로든 보낼 수 있다.) TCP설명
-
TCP커넥션이 맺어지면, Client - Server간 교환되는 메시지가 없어지거나 손상되거나 순서가 뒤바뀌어 수신되는 일이 없다.
-
HTTP는 어느 계층의 프로토콜일까?
-
HTTP의 메시지를 옮기기 위해서 ___ 커넥션이 이루어져야한다.
-
HTTP의 네트워크 통신을 담당하는 프로토콜은?
-
클라이언트가 서버에 메시지를 전송할 수 있게 하기 위해선, IP 주소와 포트번호를 이용해, Client - Server간에 TCP / IP 커넥션을 맺어야한다.
-
TCP는 서버에 대한 IP주소와 포트번호가 필요하다. 리소스에 대한 주소인 URL을 이용해 IP, 포트번호를 얻을 수 있다.
http://207.200.83.29:80/index.html IP주소 :포트번호 http://www.yebalja.com/index.html 호스트명 => DNS => IP주소 yebalja => DNS => 34.64.120.191 포트번호가 없으면 DEFAULT : 80
- Web Brower가 HTTP를 이용해 Server에서 HTML 리소스를 사용자에게 보여주는 과정
- URL에서 호스트명을 추출해 IP로 변환, 포트번호도 추출.
- 얻은 IP, 포트번호로 웹브라우저 - 웹 서버간 TCP 커넥션을 맺음
- 웹브라우저에서 HTTP 요청을 보냄
- 웹서버에서 HTTP응답을 보냄
- TCP커넥션이 종료되어 브라우저가 응답받은 리소스를 페이지로 보여줌.
-
TCP가 서버에 대한 IP와 포트번호를 얻기 위해 사용되는 것은?
-
http:/127.0.0.1:3000/의 IP와 포트번호는?
Telnet
- 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때에 지원되는 인터넷 표준 프로토콜.
- 원격접속에 사용, TCP/IP프로토콜을 사용하며 SSH와 비슷함.
- 직접 명령어를 치면서 서버와 통신가능.
여러가지 HTTP 프로토콜 버전이 존재
-
HTTP/0.9
-
1991년에 나온 프로토콜.
-
GET 메서드만 지원하는 등 기능적 및 디자인적 결함이 다수 있어 금새 HTTP/1.0으로 대체됐다.
-
-
HTTP/1.0
- 처음으로 널리 쓰이기 시작한 프로토콜로 그 당시 최고 기능들의 집합을 칭한다.
- 웹페이지와의 상호작용하는 폼으로 월드 와이드 웹을 널리 퍼트리는데 일조했다.
-
HTTP/1.0+
- 1990년대 중반, 월드 와이드 웹의 성공과 함께 HTTP에 "keep-alive" 커넥션, 가상 호스팅 지원, 프락시 연결 지원 등의 많은 기능들이 비공식적으로 추가되었는데 이를 HTTP/1.0+라 칭한다.
-
HTTP/1.1
- 현재 쓰이는 HTTP로 기존 버전의 구조적 결함, 두드러진 성능 최적화, 잘못된 기능 제거에 집중했다.
- 1990년 중반 당시 이미 사용되고 있던 복잡해진 웹 애플리케이션과 배포를 지원한다.
-
HTTP-NG (a.k.a. HTTP/2.0)
- HTTP/1.1 성능 최적화 등을 위해 제안된 것으로 구글의 SPDY프로토콜을 기반으로 설계가 진행 중이다. (10장 참고)
현재 사용되고 있는 HTTP 버전은?
- HTTP/0.9 2. HTTP/1.0 3. HTTP/1.0+ 4. HTTP/1.1 5. HTTP/2.0
이 장에서 살펴본 웹브라우저와 웹서버 외에도 웹 애플리케이션이 여러가지 있으며 그 중에는 프락시, 캐시, 게이트웨이, 터널, 에이전트가 있다.
-
프락시 (Proxies) - HTTP 프락시 서버
-
클라이언트의 모든 HTTP요청을 받아 서버에 전달하는 중간 경유자 (6장 참고)
-
웹 보안, 애플리케이션 통합, 성능 최적화를 위해 중요한 요소
-
바이러스나 성인 컨텐츠 차단 등 요청과 응답을 모두 필터링
-
-
캐시 (Caches)
-
많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP창고 (7장 참고)
-
웹캐시나 캐시 프락시는 자신을 거쳐가는 문서들 중 자주 찾는 것의 사본을 저장해두는 HTTP 프락시 서버
-
클라이언트가 같은 문서를 요청 시 훨씬 빠르게 문서 다운 가능
-
HTTP는 캐시된 컨텐츠를 최신으로 유지하며 프라이버시도 보호하기 위한 기능들을 정의한다
-
-
게이트웨이 (Gateways)
-
다른 애플리케이션과 연결된 특별한 웹 서버로 다른 서버들의 중개자로 동작 (8장 참고)
-
HTTP 트래픽을 다른 프로토콜로 변환
-
게이트웨이는 언제나 스스로가 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다뤄 때로 클라이언트는 상대가 게이트웨이인 것을 알아채지 못함
-
HTTP 서버 외의 서비스 제공 (DB에서 데이타베이스 받기, 신용카드 결제 시스템과 연계)
-
-
터널 (Tunnels)
-
두 커넥션 사이에서 테이타를 열어보지 않고 받은 그대로 전달하는 HTTP 애플리케이션
-
주로 HTTP가 아닌 데이타를 하나 이상의 HTTP 커넥션을 통해 전송
-
대표적인 예로 암호화된 SSL(Secure Sockets Layer) 트래픽을 HTTP 커넥션으로 전송해 웹 트래픽만 허용하는 사내 방화벽 통과
-
-
에이전트 (Agents)
-
사용자를 위해 자동화된 HTTP 요청을 만드는 준지능적(semi-intelligent) 웹클라이언트 (9장 참고)
-
웹 요청을 만드는 애플리케이션은 뭐든 HTTP 에이전트로 대표적인 예는 웹브라우저
-
스스로 검색엔진의 데이타베이스 등의 웹 컨텐츠를 보관하거나 웹페이지를 수집하는 등의 자동화된 에이전트도 존재 (스파이더, 웹로봇 등)
-
-
프락시, 캐시, 게이트웨이, 터널, 에이전트는 웹서버다. (O / X)
-
프락시는 사용자의 HTTP request를 받아 서버에 전달하지만 서버로부터 받은 response는 클라이언트에게 전달하지 않는다. (O / X)
-
캐시는 문서의 사본을 저장해두는 서버로 HTTP는 캐시된 컨텐츠를 최신으로 유지할 수 있는 기능도 제공한다. (O / X)
-
게이트웨이는 스스로가 리소스를 보유한 진짜 서버인 것처럼 요청을 다뤄 클라이언트는 상대가 게이트웨이인 것을 알 수 없다. (O / X)
-
터널은 HTTP가 아닌 데이타도 전송할 수 있어 웹트래픽만 허용하는 사내 방화벽도 통과할 수 있다. (O / X)
-
웹브라우저는 웹 요청을 만드는 애플리케이션으로 HTTP 에이전트다. (O / X)
-
1장 내용
-
HTTP의 멀티미디어 전송 프로토콜로서의 역할
-
HTTP가 어떻게 URI로 원격 서버에 있는 멀티미디어 리소스에 이름 붙이는지
-
HTTP를 사용하는 웹 애플리케이션
-
-
다음 내용
- HTTP 프로토콜, 애플리케이션, 리소스의 구조
- HTTP 통신에서 데이터를 전송할 경우, 개발자는 전송 중 데이터가 파괴되거나, 중복되거나, 왜곡될 수 있기 때문에 이에 유의해야 한다. (O/X)
- 크롬, 인터넷 익스플로러는 웹 서버에 해당한다 (O/X)
- 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다. (O/X)
- 웹서버에서 관리하는 웹 리소스는 텍스트파일, HTML파일, AVI 동영상파일 등 정적파일로 제한된다. (O/X)
- 사용자가 누구인지, 어떤 정보를 요청했는지, 몇 시인지 등에 따라 다른 콘텐츠를 생성하는 것을 동적콘텐츠 리소스라고 한다. (O/X)
- MIME 타입은 클라이언트가 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 확인하기 위한 목적으로 사용된다. (O/X)
- image/jpeg, image/gif와 같은 MIME 타입은 수백 가지가 넘는다. (O/X)
- URI(Uniform Resource Identifier, 통합 자원 식별자)는 URL과 URN 두 가지가 있다. (O/X)
- 대부분의 URL(Uniform Resource Locator, 통합 자원 지시자)은 스킴 + 서버의 인터넷주소 + 웹서버의 리소스 이렇게 세 가지 부분으로 이루어진 표준포맷을 따른다. (O/X)
- URN(Uniform Resource Name, 통합 자원 이름)은 고유한 이름으로 리소스의 위치에 상관없이 접근할 수 있다는 장점으로 널리 채택되고 있다. (O/X)
- 모든 HTTP 요청 메세지는 한 개 이상의 메서드를 갖는다. (O/X)
모든 HTTP 요청 메서드는 이곳에서 확인 가능. (총 7개)
요즘은 보안을 위해 GET과 POST를 제외한 나머지 메서드를 비활성화한다.
간혹 요청 메서드는 'http 동사'라고도 부른다.
실제로 요청만 보낸다고 이루어지는 건 아니고, 서버에서 검증 후 유효하면 실행된다.
HTML 폼에서는 method 속성에 이런 메서드를 사용할 수 있고, action 속성에는 주소가 들어간다. 주소를 자원(리소스)이라고 보고, 메서드를 동사라고 보는 개발 방식이 바로 REST이다.
REST API에 대해 자세히 알고싶다면 이곳 확인.
- POST 메서드의 뜻은 "서버에서 클라이언트로 지정한 리소스를 보내라" 이다. (O/X)
- 클라이언트에서 GET, POST 이외의 메서드로 작업 요청 시 보안문제가 발생한다. (O/X)
- HTTP 응답 메시지의 302 상태코드는 문서가 바르게 반환되었음을 의미한다. (O/X)
모든 HTTP 응답 상태코드는 이곳에서 확인 가능.
- 각 상태코드는 텍스트로 된 사유구절을 가지는데, 이는 응답 처리에 영향을 미치지 않는다. (O/X)
- 한 웹페이지는 하나의 HTTP 트랜젝션, 즉 여러 리소스의 모음이다. (O/X)
- HTTP 메시지는 이진 형식으로 구성된다. (O/X)
- HTTP 메시지는
헤더
/본문
의 두 부분으로 이루어진다. (O/X) - HTTP 메시지의 헤더는 빈 줄로 끝난다. (O/X)
- 각 헤더필드는 쉬운 구문분석을 위해 쉼표(,)로 구분되어 있는 하나의 이름과 하나의 값으로 구성된다. (O/X)
- HTTP 메시지의 본문에는 비디오, 오디오 데이터가 담길 수 있다. (O/X)
- HTTP는 어느 계층의 프로토콜일까?
- HTTP의 메시지를 옮기기 위해서 ___ 커넥션이 이루어져야한다.
- HTTP의 네트워크 통신을 담당하는 프로토콜은?
- TCP가 서버에 대한 IP와 포트번호를 얻기 위해 사용되는 것은?
- http:/127.0.0.1:3000/의 IP와 포트번호는?
현재 사용되고 있는 HTTP 버전은? (4번 HTTP/1.1 입니다)
- HTTP/0.9 2. HTTP/1.0 3. HTTP/1.0+ 4. HTTP/1.1 5. HTTP/2.0
-
프락시, 캐시, 게이트웨이, 터널, 에이전트는 웹서버가 아닌 웹 클라이언트입니다. (X)
-
프락시는 사용자의 HTTP request를 받아 서버에 전달하고 서버로부터 받은 response를 클라이언트에게 전달합니다. (X)
-
캐시는 문서의 사본을 저장해두는 서버로 HTTP는 캐시된 컨텐츠를 최신으로 유지할 수 있는 기능도 제공합니다. (O)
항상 최신으로 유지하지는 못하지만 expiration date, 주기적 방문 등 사본도 최신으로 유지할 수 있는 메커니즘이 존재합니다.
-
게이트웨이는 스스로가 리소스를 보유한 진짜 서버인 것처럼 요청을 다뤄 클라이언트는 상대가 게이트웨이인 것을 알 수 없을 때도 있다고 합니다. 하지만 항상 알 수 없는 것은 아닌 것 같습니다. (X)
-
터널은 HTTP가 아닌 데이타도 전송할 수 있어 웹트래픽만 허용하는 사내 방화벽도 통과할 수 있습니다. (O)
-
웹브라우저는 웹 요청을 만드는 애플리케이션으로 HTTP 에이전트입니다. (O)