컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1
이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2
요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청 HTTP 클라이언트가서버에요청을전송 요청메소드, URL, HTTP 버전과기타부가정보포함 응답 HTTP 서버가요청의결과인응답코드가포함된정보를회신 3
요청과응답 (2) 비상태 (stateless) 연결 요청과응답이후, 연결이끊어지므로비상태프로토콜 4
MIME MIME 유사메시지 (1) Multipurpose Internet Message Extensions 기존 ASCII 문자로구성된텍스트만이전송가능했던전자우편을멀티미디어데이터전송도가능하도록확장한것 MIME Header MIME-Version Content-Type Content-Transfer-Encoding Content-Id Content-Description 5
MIME ( 계속 ) 데이터타입 MIME 유사메시지 (2) Type Subtype Description Text Plain Unformatted text Multipart Message Image Mixed Parallel Digest Alternative RFC822 Partial Ext. Body JPEG GIF Body contains ordered parts of different data types Same as above, but no order Similar to mixed, but the default is message/rfc822 Parts are different versions of the same message Body is an encapsulated message Body is a fragment of a bigger message Body is a reference to another message Image is in JPEG Video is in GIF format Video MPEG Video is in MPEG format Audio Basic Single-channel encoding of voice at 8 KHz Application PostScript Octet-Stream Adobe PostScript General binary data (8-bit bytes) 6
MIME ( 계속 ) MIME 유사메시지 (3) Content-Transfer-Encoding 메시지를 0과 1로인코딩하는방법정의 Content-Transfer-encoding : <type> Type Description 7bit 8bit Binary Base64 Quotedprintable ASCⅡ characters and short lines Non-ASCⅡ characters and short lines Non-ASCⅡ characters with unlimited-length lines 6-bit blocks of data are encoded into 8-bit ASCⅡcharacters Non-ASCⅡ characters are encoded as an equal sign followed by an ASCⅡ code 7
MIME 유사메시지 (4) MIME ( 계속 ) Content-Transfer-Encoding ( 계속 ) 차이점 Base64 최상위비트가 0일필요가없을때 byte data전송해결책연속된비트 (bin) 데이터를 24비트블록으로분할각블록은네개의단락 ( 각 6비트 ) 으로분리각 6비트단락은하나의문자로해석하여 ASCII 변환 24비트가네개의문자가되어최종적으로 32비트가전송 25% 의오버헤드 HTTP 에서사용하는 MIME 유사메시지는 content-length 필드존재 Content-Transfer-Encoding 대신 Content- Encoding, Transfer-Encoding 필드사용 8
요청메시지 요청메시지 (Request Message) 구성 요청문 (Request Line) 헤더 공백 바디 요청문의구성 요청메소드 GET HEAD POST PUT URL HTTP 버전 URL 이가리키는웹문서전송요청 문서내용보다특정문서에대한정보만을요청 클라이언트가서버에정보 ( 사용자입력 ) 전송 클라이언트가서버에문서 ( 몸체에포함 ) 전송 9
응답메시지 응답메시지구성 요청메시지와유사하나, 요청문대신상태문 (Status line) 사용 상태문의구성 HTTP 버전 상태코드 상태이름 주요상태코드와이름 200 OK: 요청이성공적으로수행 202 Accepted: 요청이수신되었으나, 즉각실행되지않고있음 400 Bad Request: 요청메시지의문법오류 401 Unauthorized: 요청의실행에필요한권한이없음 403 Forbidden: 요청이거부됨 404 Not Found: 원하는문서를찾을수없음 500 Internal Server Error: 서버에오류발생 501 Not Implemented: 요청을수행할수없음 10
요청메시지 개요 HTTP 의동작과정 (1) HTTP 서버 : uu.ac.kr 요청메소드 : GET 요청문서의 URL: index.php HTTP 버전 : 1.1 메시지내용 11
HTTP 의동작과정 (2) 응답메시지 개요 상태문 : HTTP/1.1 200 OK 헤더정보 : 5 줄 바디정보 : <HTML> 로시작하는웹문서내용 메시지내용 HTTP/1.1 200 OK Date: Thu, 12 Feb 2009 06:29:38 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4RC3 X-Powered-By: PHP/4.3.4RC3 Transfer-Encoding: chunked Content-Type: text/html <HTML> <HEAD> <TITLE> 한국주식회사홈페이지 </TITLE> </HEAD> <FRAMESET rows = "100,*" BORDER = "0" frameborder = "NO"> 12
시뮬레이션 HTTP 의동작과정 (3) HTTP 서버 : uu.ac.kr HTTP 클라이언트 kihyun.uu.ac.kr telnet 프로그램이대행 13
질의 / 응답 14