World Wide Web(WWW)은 전 세계의 여러 지점에서 연결된 정보의 저장소이다
WWW는 인터넷에서 제공하는 다른 서비스와 구별되는 유연성, 휴대성 및 사용자 친화적인 기능의 고유한 조합을 가지고 있다
이 장에서는 먼저 웹과 관련된 문제를 논의한다
그런 다음 웹에서 정보를 검색하는 데 사용되는 프로토콜인 HTTP에 대해 논의한다
즉 웹 페이지는 단순하거나 복합적일 수 있다
이제 다른 텍스트 파일에 대한 reference 하나와 큰 이미지에 대한 reference 하나가 포함된 문서를 검색해야 한다고 가정한다
기본 문서와 이미지는 동일한 사이트(파일 A 및 파일 B)에 두 개의 개별 파일에 저장됩니다
참조된 텍스트 파일은 다른 사이트(파일 C)에 저장된다
세 개의 서로 다른 파일을 다루기 때문에 전체 문서를 보려면 세 개의 트랜잭션이 필요하다
첫 번째 트랜잭션(요청/응답)은 두 번째 및 세 번째 파일에 대한 참조(포인터)가 있는 주 문서(파일 A)의 사본을 검색한다
기본 문서의 사본이 검색되고 탐색될 때 사용자는 이미지에 대한 참조를 클릭하여 두 번째 트랜잭션을 호출하고 이미지의 사본(파일 B)을 검색할 수 있다
사용자가 참조된 텍스트 파일의 내용을 더 보려면 해당 참조(포인터)를 클릭하여 세 번째 트랜잭션을 호출하고 파일 C의 복사본을 검색할 수 있다
파일 A와 B가 모두 사이트 I에 저장되어 있지만 , 그들은 다른 이름과 주소를 가진 독립적인 파일이다 이를 검색하려면 두 가지 트랜잭션이 필요합니다.
웹 문서를 해석하고 표시하는 브라우저
웹 페이지는 서버에 저장된다
클라이언트 요청이 도착할 때마다 해당 문서가 클라이언트로 전송된다
protocol
host
port
path
WWW의 문서
분류는 문서의 내용이 결정된 시점을 기준으로 한다
HTML XML XSL XHTML로 만들어진다
CGI(Common Gateway Interface)는 동적 문서를 생성하고 처리하는 기술이다
HTML을 사용하여 문서의 고정된 부분을 포함하는 파일을 만들고 다양한 섹션을 제공하기 위해 서버에서 실행할 수 있는 소스 코드인 스크립트를 포함한다
dynamic document를 서버 사이트 동적 문서라고도 한다
많은 응용 프로그램의 경우 클라이언트 사이트에서 실행할 프로그램이나 스크립트가 필요하다
이를 acitve 문서라고 한다
예를 들어 화면에 애니메이션 그래픽을 생성하는 프로그램이나 사용자와 상호 작용하는 프로그램을 실행하려고 한다고 가정한다
프로그램은 애니메이션이나 상호 작용이 발생하는 클라이언트 사이트에서 반드시 실행되어야 한다
브라우저가 활성 문서를 요청하면 서버는 문서 또는 스크립트의 복사본을 보낸다
그러면 클라이언트(브라우저) 사이트에서 문서가 실행된다
active 문서를 만드는 한 가지 방법은 Java applet을 사용하는 것
브라우저가 URL에 있는 Java applet 프로그램을 직접 요청하고 applet을 수신한다
active 문서를 클라이언트 사이트 active 문서라고도 한다
HTTP(Hypertext Transfer Protocol)는 주로 World Wide Web의 데이터에 액세스하는 데 사용되는 프로토콜이다
HTTP는 FTP와 SMTP의 조합과 같은 기능을 한다
파일을 전송하고 TCP 서비스를 사용한다는 점에서 FTP와 유사하다
그러나 하나의 TCP 연결만 사용하기 때문에 FTP보다 훨씬 간단하다
별도의 control connection이 없다
클라이언트와 서버 간에 데이터만 전송된다
HTTP는 TCP를 사용하고 80번 포트번호를 사용한다
그림은 클라이언트와 서버 간의 HTTP 트랜잭션을 보여준다
HTTP는 TCP 서비스를 사용한다
클라이언트는 request을 보내 트랜잭션을 초기화한다
서버는 response을 보내 응답한다
request 메시지의 첫 번째 줄을 request line이라고 한다
이 줄에는 세 개의 필드가 있다
필드는 메소드, URL 및 버전이라고 한다
이 세 개는 공백 문자로 구분해야 한다
두 문자 끝에 줄 바꿈이 뒤따르는 캐리지 리턴이 줄을 종료한다
메소드 필드는 요청 유형을 정의합니다.
두 번째 필드인 URL은 해당 웹 페이지의 주소와 이름을 정의한다
세 번째 필드인 version은 프로토콜의 버전을 제공한다
각 header line은 클라이언트에서 서버로 추가 정보를 보낸다
각 헤더 행에는 헤더 네임, 콜론, 공백 및 헤더 값이 있습니다
헤더 네임
응답 메시지의 첫 번째 줄을 Status line이라고 한다
이 줄에는 공백으로 구분되고 캐리지 리턴과 줄 바꿈으로 끝나는 세 개의 필드가 있다
첫 번째 필드는 HTTP 프로토콜의 버전을 정의한다
status code 필드는 request의 상태를 정의한다
상태 줄 다음에 0개 이상의 응답 헤더 줄이 있을 수 있다
각 헤더 행은 서버에서 클라이언트로 추가 정보를 보낸다
각 헤더 line에는 헤더 이름, 콜론, 공백 및 헤더 값이 있다
GET 메소드를 사용하여 경로가 /usr/bin/image1인 이미지를 검색한다
request line은 메소드(GET), URL 및 HTTP 버전(1.1)을 보여준다
헤더에는 클라이언트가 GIF 또는 JPEG 형식의 이미지를 허용할 수 있음을 보여주는 두 줄이 있습니다
응답 메시지에는 request line과 4줄의 헤더가 포함된다
헤더 행은 문서의 날짜, 서버, MIME 버전 및 길이를 정의한다
nonpersistent connection에서는 각 요청/응답에 대해 하나의 TCP 연결이 만들어진다
이 전략에서 파일에 다른 파일의 N개의 다른 그림에 대한 링크가 포함되어 있으면 연결을 N + 1회 열고 닫아야 한다
persistent 연결에서 서버는 request를 보낸 후 추가 request를 위해 연결을 열어 둔다
서버는 클라이언트의 request가 있거나 timeout일 경우 연결을 닫을 수 있다
HTTP 1.1은 persistent connection을 기본으로 한다