Contents

조회 수 48335 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

웹클라이언트-웹서버 간의 통신은 웹클라이언트의 요청으로 부터 시작된다.

다음은 요청에 사용되는 HTTP 포맷이다.


형태 : HTTP 요청 (Web Client; Web Browser - Web Server)

<method><resource identifier><HTTP version><crlf>
(<Header>: <value>) <crlf>
   . . . . 

(<Header>: <value>) <crlf>
<crlf>
(Entity body)




## 클라이언트가 웹서버에게 요청 하는 절차 ##


1. 웹클라이언트(브라우저)는 미리 알려진 포트(80)로 연결을 시도.

연결이 이루어지면 웹클라이언트는 HTTP 명령어, 문서주소, HTTP 버전 정보를 웹서버에 전달한다.

(예) GET  /index.html  HTTP/1.0


2. 요청라인 다음 줄에 웹클라이언트는 헤더 정보, 구성 정보(configuration information), 받아들일 문서 포맷 등의 정보를 옵션으로 웹서베에 전달한다.

모든 헤더 정보들은 한 줄에 하나씩 기술되며, 헤더 이름과 값으로 구성된다. 헤더 정보의 긑에는 공백 라인을 추가해서 헤더의 끝임을 알려준다.

(예)

User-Agent : Mozilla/2.03Gold(WinNT; I)
Accept : text/html, img/gif


3. 요청과 헤더 정보를 보낸 다음에 웹클라이언트는 추가적인 정보를 웹서버에 보낼 수 있다. 보통 이 데이터는 POST 방식으로 웹서버에 전달하기 위해서 사용된다.


웹클라이언트로부터 요청을 받은 웹서버는 요청에 맞는 적당한 작업을 수행하고, 응답을 웹클라이언트에 전달한다. 웹브라우저의 요청에 응답하는 서버의  HTTP 포맷은 다음과 같은 형태를 취한다.


<HTTP> <result code> (<explanation>) <crlf>
(<Header>: <value>) <crlf>
   . . . . 

(<Header>: <value>) <crlf>
<crlf>
(Entity body)




## 클라이언트의 요청 대한 웹서버의 응답 절차 ##


1. 서버의 응답은 HTTP 버전, 상태 코드, 설명으로 구성된 상태 라인을 이용해서 응답한다.

  - HTTP 버전 : 웹서버가 사용하는 HTTP 버전

  - 상태코드 : 클라이언트의 요청에 따른 서버의 결과를 표현하기 위한 것으로 세자리 숫자로 표현된다.

     1xx : 정보 - 요청이 받아들여졌고, 처이중임.

     2xx : 성공 - 클라이언트의 요청이 성공적으로 처리되었음.

     3xx : 경로변경 - 요청이 완전히 처리하기 위해 추가적인 액션이 수행되어야 함.

     4xx : 클라이언트 에러 - 클라이언트의 요청 문법이 틀렸거나, 요청이 처리될 수 없음.

     5xx : 서버 에러 - 정당한 요청을 서버가 처리 못함.


  - 설명 : 상태 코드를 사람이 읽을 수 있는 간단한 단어로 표시한 것.

(예) 다음의 상태코드 200은 클라이언트의 요청이 성공적임을 의미

HTTP/1.0  200  OK



2. 상태 라인 이후에 웹서버는 자신과 요청된 문서에 대한 정보를 헤더 정보를 통해서 클라이언트에 전달한다. 헤더의 끝은 빈 라인으로 표시한다.

(예)

Date : Tue, 28 Mar 2000 06:18:26 GMT
Server : Apache/1.3.9 (Unix) tomcat/1.0 PHP/3.0.12
Last-Modified : Tue, 21 Sep 1999 02:35:00 GMT



3. 클라이언트의 요청이 성공적으로 수행되었다면, 요청된 자료가 전송된다. 전송되는 자료는 파일 내용이거나, 서블릿 프로그램의 응답일 수 있다.




## 텔넷을 이용한 테스트 ##

다음과 같이 콘솔에서 Telnet 클라이언트를 이용해 HTTP 명령을 테스트할 수 있다.

HTTP의 GET 명령을 이용해 특정 위치의 리소스를 요청하면 해당 리소스(HTML 파일)를 전송한다.

[root@ns root]# telnet hooni.net 80 <┘
Trying 61.84.218.138...
Connected to hooni.net.
Escape character is '^]'.
GET  /index.html  HTTP/1.0 <┘
Accept: text/html  <┘
<┘

HTTP/1.1 200 OK
Date: Thu, 19 Sep 2002 11:08:40 GMT
Server: Apache/1.3.26 (Unix) PHP/4.2.2
X-Powered-By: PHP/4.2.2
Connection: close
Content-Type: text/html

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>정후니네..</title>
</head>

<frameset rows="0, 1*" border="0">
    <frame noresize scrolling="no">
    <frame src="./html/main_body.php?page=main" name="real_main_frame" noresize scrolling="auto">
    <noframes>
    <body bgcolor="white" text="black">
    <p>이 페이지를 보려면, 프레임을 볼 수 있는 브라우저가 필요합니다.</p>
    </body>
    </noframes>
</frameset>

</html>

Connection closed by foreign host.




?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
58 System/OS [linux] CentOS Apache Httpd에 https 적용 hooni 2014.03.05 4576
57 System/OS [linux] 쉘스크립트 expr hooni 2014.03.11 15697
56 System/OS [linux] awk 명령어 hooni 2014.03.11 5028
55 System/OS [linux] split 명령어 hooni 2014.03.11 4369
54 System/OS HTTPS와 SSL 인증서 file hooni 2014.03.11 7624
53 System/OS [mac] 맥OSX에서 NTFS 쓰기 기능 활성화 hooni 2014.03.12 4353
52 System/OS [mac] 맥(OSX)에서 NTFS, 윈도우에서 HFS+ 사용하기 file hooni 2014.03.12 5171
51 System/OS [linux] CentOS 6.5 에서 "Bringing up interface eth0: Determining if ip address 121.78.127.197 is already in use for device eth0..." hooni 2014.04.05 4954
50 System/OS [linux] resolv.con 초기화 되는 문제 hooni 2014.04.05 4687
49 System/OS [linux] yum 업데이트 시 커널 제외하기 hooni 2014.09.11 1375
48 System/OS SVN(Subversion) 설치와 설정 (sasl 인증 적용 포함) file hooni 2014.09.11 5788
47 System/OS [svn] SVN trunk 변경사항 되돌리기 (SVN Rollback) hooni 2014.11.27 1692
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 Next
/ 17