슬라이드 제목 없음

Download Report

Transcript 슬라이드 제목 없음

27장 HTTP와 WWW
27.1 HTTP(Hypertext Transfer Protocol)
27.2 WWW(World Wide Web)
27.3 요약
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
1
27.1 HTTP
 WWW에서 데이터를 엑세스하는데 주로
사용하는 프로토콜임
 플레인텍스트, 하이퍼텍스트, 오디오, 영상 등의 형태로
데이터를 전송
 기능
 FTP와 SMTP의 조합과 비슷
 잘 알려진 포트 80번 TCP 서비스를 이용함
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2
27.1.1 HTTP 트랜잭션
HTTP 트랜잭션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
3
27.1.1 HTTP 트랜잭션
메시지 종류
Request : 요청 메시지(C  S)
Response : 응답 메시지(S  C)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
4
27.1.2 요청 메시지
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
5
27.1.2 요청 메시지
요청 라인
요청종류 : 메소드(GET,HEAD,POST…)
자원(URL) : 프로토콜(FTP,HTTP,TELNET…)
HTTP 버전 : HTTP 1.1(1.0,0.9도 사용함)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
6
27.1.2 요청 메시지
URL
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
7
27.1.2 요청 메시지
메소드
클라이언트가 서버에게 발행하는 실제 명령 or 요청
메소드 종류
 GET
 클라이언트가 서버로부터 문자를 읽을 때
 문서검색, 응답 메시지의 본문에 문서내용 포함
 HEAD
 클라이언트가 문서에 대한 정보를 원할 때
 응답에 본문이 없음(GET과의 차이)
 POST
 클라이언트가 서버에게 정보를 제공시 사용
 예) 서버에게 입력을 보낼때 사용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
8
27.1.2 요청 메시지
 PUT
 서버에 저장될 새 문서 or 교체문서를 제공시 사용
 요청된 문서에 포함, URL이 지정한 위치에 저장
 PATCH
 기존 파일의 변경사항 목록만을 포함
 COPY
 파일을 다른 위치로 복사시 사용
 원본 파일 위치는 요청라인(URL), 목적지 위치는 헤더에서
주어짐
 MOVE
 파일 이동시 사용
 원본 파일 위치는 요청라인(URL), 목적지 위치는 헤더에서
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
9
27.1.2 요청 메시지
 DELETE
 서버에서 문서 제거시 사용
 LINK
 다른 위치로의 링크나 링크 생성시 사용
 원본 파일 위치는 요청라인, 목적지 위치는 헤더에서 주어짐
 UNLINK
 LINK에 의해 생성된 링크 삭제시 사용
 OPTION
 클라이언트가 서버에게 사용 가능한 옵션 질의시 사용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
10
27.1.3 응답 메시지
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
11
27.1.3 응답 메시지
상태라인
응답 메시지의 상태 정의
구성요소 : HTTP 버전,공백,상태코드,공백
상태문구
Status code: Same format as FTP responses (three digits)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
12
27.1.4 헤더
헤더
역할
 클라이언트와 서버 사이의 추가적인 정보 교환
형식
 헤더이름, 콜론, 공백, 헤더 값
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
13
27.1.4 헤더
헤더라인
 일반헤더(General headers)
 요청헤더(Request headers)
 응답헤더(Response headers)
 항목헤더(Entity headers)
요청 메시지 : 일반, 요청, 항목헤더만 포함
응답 메시지 : 일반, 응답, 항목헤더만 포함
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
14
27.1.4 헤더
헤더
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
15
27.1.4 헤더
 일반헤더(General headers)
 메시지에 대한 일반적인 정보 제공
 요청과 응답 메시지에 존재
 요청헤더(Request headers)
 클라이언트의 구성과 선호하는 문서 형식을 지정
 응답헤더(Response headers)
 서버의 구성과 요청에 대한 특별한 정보를 지정
 응답 메시지에만 존재
 항목헤더(Entity headers)
 문서의 본문에 대한 정보 제공
 대부분 응답 메시지에 존재, 일부 요청 메시지에도 존재
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
16
27.1.5 예제
예제 1 GET 메소드를 사용하여 경로/usr/bin/image1에
있는 화상을 읽어올 때
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
17
27.1.5 예제
예제 2 HEAD 메소드를 사용하여 HTML문서에 대한 정보를
읽어올때
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
18
27.1.6 몇 가지 다른 특징들
HTTP 버전 1.1 은 영속적 연결을
기본으로 지정한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
19
27.1.6 몇 가지 다른 특징들
 비영속적 연결(nonpersistent connection)
 각 요청/응답에 대해 하나의 TCP 연결이 만들어 짐
 N개의 다른 파일에 있는 그림을 위해 N번 열고 닫아야 함
 서버에 큰 오버헤드를 부과하게 됨
 영속적 연결(Persistent Connection)
 서버는 응답을 전송한 후에 차후의 요청을 위해 연결을 열어
놓은 상태로 유지
 클라이언트 요청이나 timeout인 경우 닫을 수 있다.
 프록시 서버(Proxy Server)
 최신 요청에 대한 응답들의 복사물을 가지고 있는 컴퓨터로
서버의 부하를 줄이고 트래픽을 감소시키며 지연을 개선한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
20
27.2 WWW(World Wide Web)
 전세계에 서로 연결되어있는 지식의 보고
 특성 : 유연성, 이식성, 사용자 편의성
 CERN(Conseil European la Research Nucleaire)
과학적 연구에 필요한 분산되어있는 자원들을 처리
할 수 있는 시스템 참조를 위해 시작됨
European Laboratory for Particle Physics
WWW 창시자 : Robert Calliau
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
21
27.2 WWW(World Wide Web)
분산된 서비스
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
22
27.2.1 하이퍼텍스트와 하이퍼미디어
 하이퍼텍스트 : 포인터의 개념이 사용된 연결문서의집합
 하이퍼미디어 : 화상, 그래픽, 음성을 포함
 홈페이지(Home Page): 특정기관이나 개인의 중심페이지
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
23
27.2.2 브라우저 구조
 브라우저 구조 : 제어기, Client 프로그램, 해석기
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
24
27.2.2 브라우저 구조
 웹 문서의 종류
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
25
27.2.3 정적 문서(Static Documents)
정적 문서 : 서버에 생성되어 저장된 문서
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
26
27.2.4 HTML(Hypertext Markup Language)
 웹 페이지 구조
 헤드 와 몸체로 구성
 헤드 : 페이지의 표제(Title)와 매개변수를 포함
 몸체 : 텍스트와 태그를 포함
 태그 : < >로 닫혀있고 쌍으로 구성됨(종료태그는 /표시)
굵은체 태그
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
27
27.2.4 HTML(Hypertext Markup Language)
 굵은체 태그의 효과
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
28
27.2.4 HTML(Hypertext Markup Language)
 시작(Beginning)과 종료(Ending) 태그
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
29
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)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
30
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
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
31
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
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
32
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>
Http://netwk.hannam.ac.kr
< /APPLET >
The document is an applet
HANNAM UNIVERSITY
33
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>
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
34
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>
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
35
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=”http://www.phony.producer”>
Producer </A>
</BODY>
</HTML>
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
36
27.2.5 동적문서(Dynamic Documents)
 동적문서
 미리 정의된 형식으로 존재하지 않음
 브라우저가 요청할 때마다 웹 서버에 의해 생성
 동적문서 처리과정
 서버는 URL이 동적문서를 정의하고 있는지 알아
내기 위해 검사한다.
 만일 URL이 동적 문서를 정의하고 있다면, 서버는
프로그램을 수행 시킨다.
 서버는 프로그램의 출력을 클라이언트(브라우저)
로 송신한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
37
27.2.5 동적문서(Dynamic Documents)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
38
27.2.6 CGI(Common Gateway Interface)
 CGI
 동적 문서를 생성하고 처리하는 기술
 C, C++, Bouren Shell, Korn Shell, C Shell, Tcl, Perl
Common
Gateway
Interface
공통적으로 정의 되는 규칙의 집합을 정의
다른 자원을 엑세스하기 위해 사용될 수 있는 게이트웨이라는 것을 의미
임의 CGI 프로그램에서도 사용될 수 있는 미리 정의된
용어, 변수, 함수 등의 집합이 존재한다는 것을 의미
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
39
27.2.6 CGI(Common Gateway Interface)
 CGI 프로그램
 CGI 언어중 하나로 작성된 코드
 일련의 논리를 코딩
 환경변수
 브라우저의 질의에 응답하고 자원을 액세스 하기
위해 일련의 환경변수를 사용
 부모 프로세스로부터 변수들을 상속 받거나, 혹은
브라우저에 의해 제공된 변수
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
40
27.2.6 CGI(Common Gateway Interface)
 입력
http://www.deanza/cgi-bin/prog.pl?file1
서버가 URL을 수신하면,
서버는 수행될 프로그램을 액세스 하기위해 사용
클라이언트에서
전송된 입력으로 해석
저장
QUERY_STRING
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
41
27.2.6 CGI(Common Gateway Interface)
 출력
Text,
Http, ….
CGI
Program
Server site
Header
생성
Client
2진 data,
상태 코드,
명령어, ….
 헤더
 CONTENT_LENGTH : 출력 데이터를 바이트로 표시
 CONTENT_TYPE : 출력 데이터의 종류를 정의
 EXPIRES : 날짜와 시간을 표시
 LOCATION : 방향 재지정
 PRAGMA : 문서의 캐쉬기능 설정 or 해제
 STATUS : 요청의 상태 표시
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
42
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
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
43
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
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
44
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
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
45
27.2.7 액티브 문서(Active Documents)
 액티브 문서
 클라이언트 사이트에서 수행될 프로그램
 서버로부터 클라이언트로 2진 형태로 운반
 문서가 서버 사이트에서 압축되고, 클라이언트 사이트에서 복원
 대역폭과 전송시간을 절감할 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
46
27.2.7 액티브 문서(Active Documents)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
47
27.2.7 액티브 문서(Active Documents)
 생성, 컴파일, 실행
 서버
 소스 코드로 된 프로그램 작성, 파일로 저장
 프로그램 컴파일, 2진코드 생성 파일로 저장
(경로명은 URL에서 파일 참조로 사용)
 파일
 프로그램 명령어 : 2진 형태
 식별자 : 2진 옵셋 주소에 의해 참조 (변수, 상수, 함수 이름 등)
 클라이언트




2진 코드의 복사본 요청 (압축된 형태로 전송)
2진 코드를 실행 가능한 코드로 변환
프로그램 수행
애니메이션이나 사용자와의 상호작용을 포함할 수 있는 결과 출력
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
48
27.2.8 자바(Java)
 Java
 클래스 라이브러리의 조합




고급 프로그래밍 언어와 런타임 환경
활동적인 문서를 작성하고 브라우저가 이를 수행 (APPLET, JSP)
브라우저를 사용하지 않는 독립적 프로그램으로도 사용 (application)
애플릿을 생성하는데 사용
 객체지향 언어





C++ 과 매우 유사
C++의 복잡성은 없다.( 연산자 오버로드, 다중 상속)
하드웨어에 독립적, 포인터를 사용하지 않음.
Type 언어 : 데이터를 사용하기 전에 데이터 유형을 선언
다중처리 언어 : 다중성을 만들도록 복수 쓰레드 사용 가능
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
49
27.2.8 자바(Java)
 클래스와 객체
 객체는 캡슐화 된 데이터를 처리하기 위해 메소드를
사용하는 클래스의 인스턴스이다.
 상속
 객체의 계층 구조를 정의하여, 한 객체가 다른 객체로
부터 데이터와 메소드를 상속 받을 수 있도록 한다.
 Java
 하나의 클래스를 많은 클래스들에 공통된 데이터와 메소드
를 포함하는 기초 클래스(base class)로 정의 할 수 있다
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
50
27.2.8 자바(Java)
패키지
 클래스 라이브러리로 하여금 애플릿에서 서로 다른
객체들을 생성하고 사용할 수 있도록 한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
51
27.2.8 자바(Java)
 애플릿의 골격
 자바로 작성된 동적 문서로, 개방적으로 상속된 클래스의 정의
 java.applet 라이브러리에 정의 된 애플릿 클래스로부터 상속
 폐쇄형 데이터와 개방형 및 폐쇄형 메소드를 정의 할 수 있다
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
52
27.2.8 자바(Java)
 인스턴스화
 클라이언트 프로세스는 애플릿의 인스턴스를 생성
 브라우저는 폐쇄형 메소드를 호출
 데이터를 액세스하기 위해 애플릿에 정의 된 개방형 메소드
를 사용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
53
27.2.8 자바(Java)
 생성 및 컴파일
텍스트 편집기를 사용하여 생성
File name : * . java
자바 컴파일러 바이트 코드 생성
File name : * . class
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
54
27.2.8 자바(Java)
 HTML 문서
 애플릿을 사용하기 위해선 HTML 문서를 만들어
애플릿의 이름을 <APPLET> 태그 사이에 삽입
 태그는 애클릿을 위해 사용될 창의 크기를 결정
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
55
27.2.8 자바(Java)
 예제 9
import java.applet.* ;
import java.awt.* ;
개방적으로 상속된 클래스 사용
public class First extends Applet
{
브라우저는 paint를 통해 First의 인스턴스를 액세스
public void paint (Graphics g)
{
g.drawString ("Hello World", 100, 100 ) ; 세 개의 매개변수가
drqwstring으로 전달
}
}
Java.awt에서 정의 된 메소드 호출
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
56
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)
}
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
57
27.3 요약
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
58