Download presentation
Presentation is loading. Please wait.
1
27장 HTTP와 WWW 27.1 HTTP(Hypertext Transfer Protocol)
27.2 WWW(World Wide Web) 27.3 요약
2
27.1 HTTP WWW에서 데이터를 엑세스하는데 주로 사용하는 프로토콜임
플레인텍스트, 하이퍼텍스트, 오디오, 영상 등의 형태로 데이터를 전송 기능 FTP와 SMTP의 조합과 비슷 잘 알려진 포트 80번 TCP 서비스를 이용함
3
HTTP 트랜잭션 HTTP 트랜잭션
4
27.1.1 HTTP 트랜잭션 메시지 종류 Request : 요청 메시지(C S)
Response : 응답 메시지(S C)
5
요청 메시지
6
27.1.2 요청 메시지 요청 라인 요청종류 : 메소드(GET,HEAD,POST…)
자원(URL) : 프로토콜(FTP,HTTP,TELNET…) HTTP 버전 : HTTP 1.1(1.0,0.9도 사용함)
7
요청 메시지 URL
8
27.1.2 요청 메시지 메소드 클라이언트가 서버에게 발행하는 실제 명령 or 요청 메소드 종류 GET HEAD POST
클라이언트가 서버로부터 문자를 읽을 때 문서검색, 응답 메시지의 본문에 문서내용 포함 HEAD 클라이언트가 문서에 대한 정보를 원할 때 응답에 본문이 없음(GET과의 차이) POST 클라이언트가 서버에게 정보를 제공시 사용 예) 서버에게 입력을 보낼때 사용
9
27.1.2 요청 메시지 PUT PATCH COPY MOVE 서버에 저장될 새 문서 or 교체문서를 제공시 사용
요청된 문서에 포함, URL이 지정한 위치에 저장 PATCH 기존 파일의 변경사항 목록만을 포함 COPY 파일을 다른 위치로 복사시 사용 원본 파일 위치는 요청라인(URL), 목적지 위치는 헤더에서 주어짐 MOVE 파일 이동시 사용 원본 파일 위치는 요청라인(URL), 목적지 위치는 헤더에서
10
27.1.2 요청 메시지 DELETE LINK UNLINK OPTION 서버에서 문서 제거시 사용
다른 위치로의 링크나 링크 생성시 사용 원본 파일 위치는 요청라인, 목적지 위치는 헤더에서 주어짐 UNLINK LINK에 의해 생성된 링크 삭제시 사용 OPTION 클라이언트가 서버에게 사용 가능한 옵션 질의시 사용
11
응답 메시지
12
27.1.3 응답 메시지 상태라인 응답 메시지의 상태 정의 구성요소 : HTTP 버전,공백,상태코드,공백 상태문구
Status code: Same format as FTP responses (three digits)
13
헤더 헤더 역할 클라이언트와 서버 사이의 추가적인 정보 교환 형식 헤더이름, 콜론, 공백, 헤더 값
14
27.1.4 헤더 헤더라인 요청 메시지 : 일반, 요청, 항목헤더만 포함 응답 메시지 : 일반, 응답, 항목헤더만 포함
일반헤더(General headers) 요청헤더(Request headers) 응답헤더(Response headers) 항목헤더(Entity headers) 요청 메시지 : 일반, 요청, 항목헤더만 포함 응답 메시지 : 일반, 응답, 항목헤더만 포함
15
헤더 헤더
16
27.1.4 헤더 일반헤더(General headers) 요청헤더(Request headers)
메시지에 대한 일반적인 정보 제공 요청과 응답 메시지에 존재 요청헤더(Request headers) 클라이언트의 구성과 선호하는 문서 형식을 지정 응답헤더(Response headers) 서버의 구성과 요청에 대한 특별한 정보를 지정 응답 메시지에만 존재 항목헤더(Entity headers) 문서의 본문에 대한 정보 제공 대부분 응답 메시지에 존재, 일부 요청 메시지에도 존재
17
예제 예제 1 GET 메소드를 사용하여 경로/usr/bin/image1에 있는 화상을 읽어올 때
18
예제 예제 2 HEAD 메소드를 사용하여 HTML문서에 대한 정보를 읽어올때
19
몇 가지 다른 특징들 HTTP 버전 1.1 은 영속적 연결을 기본으로 지정한다.
20
27.1.6 몇 가지 다른 특징들 비영속적 연결(nonpersistent connection)
각 요청/응답에 대해 하나의 TCP 연결이 만들어 짐 N개의 다른 파일에 있는 그림을 위해 N번 열고 닫아야 함 서버에 큰 오버헤드를 부과하게 됨 영속적 연결(Persistent Connection) 서버는 응답을 전송한 후에 차후의 요청을 위해 연결을 열어놓은 상태로 유지 클라이언트 요청이나 timeout인 경우 닫을 수 있다. 프록시 서버(Proxy Server) 최신 요청에 대한 응답들의 복사물을 가지고 있는 컴퓨터로 서버의 부하를 줄이고 트래픽을 감소시키며 지연을 개선한다.
21
27.2 WWW(World Wide Web) 전세계에 서로 연결되어있는 지식의 보고
특성 : 유연성, 이식성, 사용자 편의성 CERN(Conseil European la Research Nucleaire) 과학적 연구에 필요한 분산되어있는 자원들을 처리할 수 있는 시스템 참조를 위해 시작됨 European Laboratory for Particle Physics WWW 창시자 : Robert Calliau
22
27.2 WWW(World Wide Web) 분산된 서비스
23
27.2.1 하이퍼텍스트와 하이퍼미디어 하이퍼텍스트 : 포인터의 개념이 사용된 연결문서의집합
하이퍼미디어 : 화상, 그래픽, 음성을 포함 홈페이지(Home Page): 특정기관이나 개인의 중심페이지
24
브라우저 구조 브라우저 구조 : 제어기, Client 프로그램, 해석기
25
브라우저 구조 웹 문서의 종류
26
27.2.3 정적 문서(Static Documents)
정적 문서 : 서버에 생성되어 저장된 문서
27
27.2.4 HTML(Hypertext Markup Language)
웹 페이지 구조 헤드 와 몸체로 구성 헤드 : 페이지의 표제(Title)와 매개변수를 포함 몸체 : 텍스트와 태그를 포함 태그 : < >로 닫혀있고 쌍으로 구성됨(종료태그는 /표시) 굵은체 태그
28
27.2.4 HTML(Hypertext Markup Language)
굵은체 태그의 효과
29
27.2.4 HTML(Hypertext Markup Language)
시작(Beginning)과 종료(Ending) 태그
30
27.2.4 HTML(Hypertext Markup Language)
공통태그 Beginning Tag Ending Tag Meaning Skeletal Tags <HTML> </HTML> Defines an HTML document <HEAD> </HEAD> Defines the head of the document <BODY> </BODY> Defines the body of the document Title and Header Tags <TITLE> </TITLE> Defines the tiltle of th document <Hi> </Hi> Defines different headers(i is and integer)
31
27.2.4 HTML(Hypertext Markup Language)
공통태그 Beginning Tag Ending Tag Meaning Text Formatting Tags <B> </B> Boldface <I> </I> Italic <U> </U> Underlined <SUB> < /SUB > Subscript <SUP> </SUP> Superscript
32
27.2.4 HTML(Hypertext Markup Language)
공통태그 Beginning Tag Ending Tag Meaning Data Flow Tags <CENTER> </CENTER> Centered <BR> </BR> Line break List Tags <OL> < /OL > Ordered list <UL> </UL> Unordered list <LI> </LI> An item in a list
33
27.2.4 HTML(Hypertext Markup Language)
공통태그 Beginning Tag Ending Tag Meaning Image Tags <IMG> Defines an image Hyperlink Tags <A> </A> Defines an address(hyperlink) Executable contents <APPLET> < /APPLET > The document is an applet
34
27.2.4 HTML(Hypertext Markup Language)
예제 3 <HTML> <HEAD> <TITLE> Second Sample Document </TITLE> </HEAD> <BODY> <CENTER> <H1><B> ATTENTION </B></H1> </CENTER> You can get a copy of this document by: <UL> <LI> Writing to the publisher <LI> Ordering on-line <LI> Ordering through a bookstore </UL> </BODY> </HTML>
35
27.2.4 HTML(Hypertext Markup Language)
예제 4 <HTML> <HEAD> <TITLE> Third Sample Document </TITLE> </HEAD> <BODY> This is the picture of a book: <IMG SRC="Pictures/book1.gif" ALIGN=MIDDLE> </BODY> </HTML>
36
27.2.4 HTML(Hypertext Markup Language)
예제 5 <HTML> <HEAD> <TITLE> Fourth Sample Document </TITLE> </HEAD> <BODY> This is a wonderful product that can save you money and time. To get information about the producer, click on <A HREF=” Producer </A> </BODY> </HTML>
37
27.2.5 동적문서(Dynamic Documents)
미리 정의된 형식으로 존재하지 않음 브라우저가 요청할 때마다 웹 서버에 의해 생성 동적문서 처리과정 서버는 URL이 동적문서를 정의하고 있는지 알아내기 위해 검사한다. 만일 URL이 동적 문서를 정의하고 있다면, 서버는 프로그램을 수행 시킨다. 서버는 프로그램의 출력을 클라이언트(브라우저)로 송신한다.
38
27.2.5 동적문서(Dynamic Documents)
39
27.2.6 CGI(Common Gateway Interface)
동적 문서를 생성하고 처리하는 기술 C, C++, Bouren Shell, Korn Shell, C Shell, Tcl, Perl Common Gateway Interface 공통적으로 정의 되는 규칙의 집합을 정의 다른 자원을 엑세스하기 위해 사용될 수 있는 게이트웨이라는 것을 의미 임의 CGI 프로그램에서도 사용될 수 있는 미리 정의된 용어, 변수, 함수 등의 집합이 존재한다는 것을 의미
40
27.2.6 CGI(Common Gateway Interface)
일련의 논리를 코딩 환경변수 브라우저의 질의에 응답하고 자원을 액세스 하기위해 일련의 환경변수를 사용 부모 프로세스로부터 변수들을 상속 받거나, 혹은 브라우저에 의해 제공된 변수
41
27.2.6 CGI(Common Gateway Interface)
입력 서버가 URL을 수신하면, 서버는 수행될 프로그램을 액세스 하기위해 사용 클라이언트에서 전송된 입력으로 해석 QUERY_STRING 저장
42
27.2.6 CGI(Common Gateway Interface)
출력 Text, Http, …. CGI Program Server site Client 2진 data, 상태 코드, 명령어, …. Header 생성 헤더 CONTENT_LENGTH : 출력 데이터를 바이트로 표시 CONTENT_TYPE : 출력 데이터의 종류를 정의 EXPIRES : 날짜와 시간을 표시 LOCATION : 방향 재지정 PRAGMA : 문서의 캐쉬기능 설정 or 해제 STATUS : 요청의 상태 표시
43
27.2.6 CGI(Common Gateway Interface)
예제 6 (Bourne shell) #!/bin/sh # The head of the program echo Content_type: text/plain echo # The body of the program now=’date‘ echo $now exit 0
44
27.2.6 CGI(Common Gateway Interface)
예제 7 (HTML) #!/bin/sh # The head of the program echo Content_type: text/html echo # The body of the program echo <HTML> echo <HEAD><TITLE> Date and Time </TITLE></HEAD> echo <BODY> now=’date‘ echo <CENTER><B> $now </B></CENTER> echo </BODY> echo </HTML> exit 0
45
27.2.6 CGI(Common Gateway Interface)
예제 8 (Perl) #!/bin/perl # The head of the program print "Content_type: text/html\n" ; print "\n" ; # The body of the program print "<HTML>\n" ; print "<HEAD><TITLE> Date and Time </TITLE></HEAD>\n" ; print "<BODY>\n" ; $now = ’date‘; print "<CENTER><B> $now </B></CENTER>\n" ; print "</BODY>\n" ; print "</HTML>\n" exit 0
46
27.2.7 액티브 문서(Active Documents)
클라이언트 사이트에서 수행될 프로그램 서버로부터 클라이언트로 2진 형태로 운반 문서가 서버 사이트에서 압축되고, 클라이언트 사이트에서 복원 대역폭과 전송시간을 절감할 수 있다.
47
27.2.7 액티브 문서(Active Documents)
48
27.2.7 액티브 문서(Active Documents)
생성, 컴파일, 실행 서버 소스 코드로 된 프로그램 작성, 파일로 저장 프로그램 컴파일, 2진코드 생성 파일로 저장 (경로명은 URL에서 파일 참조로 사용) 파일 프로그램 명령어 : 2진 형태 식별자 : 2진 옵셋 주소에 의해 참조 (변수, 상수, 함수 이름 등) 클라이언트 2진 코드의 복사본 요청 (압축된 형태로 전송) 2진 코드를 실행 가능한 코드로 변환 프로그램 수행 애니메이션이나 사용자와의 상호작용을 포함할 수 있는 결과 출력
49
27.2.8 자바(Java) Java 클래스 라이브러리의 조합 객체지향 언어 고급 프로그래밍 언어와 런타임 환경
활동적인 문서를 작성하고 브라우저가 이를 수행 (APPLET, JSP) 브라우저를 사용하지 않는 독립적 프로그램으로도 사용 (application) 애플릿을 생성하는데 사용 객체지향 언어 C++ 과 매우 유사 C++의 복잡성은 없다.( 연산자 오버로드, 다중 상속) 하드웨어에 독립적, 포인터를 사용하지 않음. Type 언어 : 데이터를 사용하기 전에 데이터 유형을 선언 다중처리 언어 : 다중성을 만들도록 복수 쓰레드 사용 가능
50
자바(Java) 클래스와 객체 객체는 캡슐화 된 데이터를 처리하기 위해 메소드를 사용하는 클래스의 인스턴스이다. 상속 객체의 계층 구조를 정의하여, 한 객체가 다른 객체로부터 데이터와 메소드를 상속 받을 수 있도록 한다. Java 하나의 클래스를 많은 클래스들에 공통된 데이터와 메소드를 포함하는 기초 클래스(base class)로 정의 할 수 있다
51
자바(Java) 패키지 클래스 라이브러리로 하여금 애플릿에서 서로 다른 객체들을 생성하고 사용할 수 있도록 한다.
52
27.2.8 자바(Java) 애플릿의 골격 자바로 작성된 동적 문서로, 개방적으로 상속된 클래스의 정의
java.applet 라이브러리에 정의 된 애플릿 클래스로부터 상속 폐쇄형 데이터와 개방형 및 폐쇄형 메소드를 정의 할 수 있다
53
27.2.8 자바(Java) 인스턴스화 클라이언트 프로세스는 애플릿의 인스턴스를 생성 브라우저는 폐쇄형 메소드를 호출
데이터를 액세스하기 위해 애플릿에 정의 된 개방형 메소드를 사용
54
27.2.8 자바(Java) 생성 및 컴파일 텍스트 편집기를 사용하여 생성 File name : * . java
자바 컴파일러 바이트 코드 생성 File name : * . class
55
자바(Java) HTML 문서 애플릿을 사용하기 위해선 HTML 문서를 만들어 애플릿의 이름을 <APPLET> 태그 사이에 삽입 태그는 애클릿을 위해 사용될 창의 크기를 결정
56
27.2.8 자바(Java) 예제 9 import java.applet.* ; import java.awt.* ;
public class First extends Applet { public void paint (Graphics g) g.drawString ("Hello World", 100, 100 ) ; } Java.awt에서 정의 된 메소드 호출 개방적으로 상속된 클래스 사용 브라우저는 paint를 통해 First의 인스턴스를 액세스 세 개의 매개변수가 drqwstring으로 전달
57
27.2.8 자바(Java) 예제 10 import java.applet.* ; import java.awt.* ;
public class Second extends Applet { public void paint (Graphics g) g.drawLine (0, 0, 80, 90 ) ; } 선을 그리도록 한다(시작점 x, y, 끝점 x, y)
58
27.3 요약
Similar presentations