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