이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:














JohnG 입니다.
지난 한주간 시험을 치느라 정신이 없었네요 ^^
이번 컴퓨터 네트워크를 다시 한번 훓어보면서 정리 해보았습니다.

먼저 이번 글은 저자 James F.Kurose and Keith W.Ross 의 computer networking (컴퓨터 네트워킹_3판)에서 발췌 및 정리 함을 미리 알려드립니다.

computer networking
ISBN : 89-450-0601-X
(89-450-0601-X 를 검색하시면 도서 정보를 얻으실 수 있습니다.)


HTTP 개요
HyperText Transfer Protocol
: 클라이언트 프로그램과 서버 프로그램 사이에서 HTTP 메시지 교환이 이루어집니다.
: 웹 페이지 = Text + 객체 
(ex: 1개의 웹페이지에 HTML 텍스트와 5개의 JPEG 이미지로 구성되어 있다면 6개의 객체를 가진다고 한다)

지속 연결 & 비지속 연결

비지속 연결
가상으로 http://www.someSchool.edu/someDepartment/home.index 라는 사이트가 있다고 하고 서버와 클라이언트가 어떤 동작을 하는지 알아보겠습니다.

1) 클라이언트가 HTTP 기본 포트 80을 통해 www.someSchool.edu 서버로 TCP 연결을 시도합니다.
2) 클라이언트는 TCP 소켓을 통해 서버에 HTTP 요청 메시지를 보냅니다. (메시지에
    "/someDepartment/home.index"정보를 포함합니다.
3) 웹 서버는 TCP 소켓을 통해 요청 메시지를 받습니다. 그리고 저장장치로 부터 
    /someDepartment/home.index 객체를 추출하고 HTTP 응답 메시지에 그 객체를 캡슐화 합니다. 다시
    소켓을 통해 캡슐화된 응답 메시지를 보냅니다.
4) HTTP 서버는 TCP 연결을 끊으라는 메시지를 보냅니다.
5) 클라이언트는 응답 메시지를 받고 TCP 연결을 중단합니다. 또한 받은 응답 메시지 안의 캡슐화된 객체를
    추출합니다. HTML 파일을 파싱하고, 10개의 JPEG 객체에 대한 참조를 찾습니다.
    (응답받은 메시지에 11개의 객체가 있다고 가정합니다.)
6) 이후 참조된 각 JPEG 객체에 대하여 처음 네 단계를 반복합니다.

지속 연결
 객체를 참조할때 클라이언트가 서버로 부터 참조 받아야 하는 JPEG 객체로 인해 무려 10번이나 연결과 해재를 반복해야 합니다. 지속 연결에서의 파이프라이닝이라는 방식을 통해 필요한 10개의 객체를 한번에 모두 받아내는 방식이 있습니다.
파이프라이닝 (HTTP/1.1의 기본 모드에서는 파이프라이닝의 지속연결을 사용)
: HTTP 클라이언트는 참조 객체를 계속해서 요청을 만들며, 서버는 요청을 받고 객체를 연속해서 보냅니다.

HTTP 메시지 포맷

HTTP 요청 메시지

       정형적인 HTTP 요청 메시지
GET /somedir/page.html  HTTP/1.1     -> 요청 라인
Host : www.someSchool.edu               -> 헤더 라인
Connection : close                              -> 지속 연결을 하지 않음
User-agent : Mozilla/4.0                      -> 사용자 에이전트 (Mozilla/4.0, 넷스케이프 브라우저)
Accept-language : fr                     -> 객체의 프랑스어 버전을 요청 (없다면 기본 버전으로 응답)

요청 메지시의 일반 포맷

 
ex) GET 방식을 사용하고 두개의 필드(monkeys, bananas)를 가지며, 요청된 URL의 임력 데이터를 보낸다면.
     -> www.somesite.com/animalsearch?monkeys&bananas

방식의 종류
HTTP/1.0 : GET,POST,HEAD
HTTP/1.1 : GET,POST,HEAD,PUT,DELETE
GET : URL자체에 폼을 입력합니다.
POST : 사용자의 폼 필드에 입력하는것을 의존하여 개체 몸체에 저장하여 전송합니다.
HEAD : GET 방식과 유사하나 요청 개체는 보내지 않습니다.
PUT : 웹서버의 특정 디렉토리를 통해 객체 업로드를 허용합니다.
DELETE : 웹서버의 특정 디렉토리를 통해 객체를 삭제를 허용합니다.
HTTP  응답 메시지

       정형적인 HTTP 응답 메시지
HTTP/1.1 200 OK
Connection : close                                 ->클라이언트에 메시지를 보낸후 TCP 연결을 닫는다.
Date : Thu,03 jul 2003 12:00:15 GMT          ->응답 메시지에 객체를 삽입할때의 시간
Server : Apache/1.3.0 (Unix)                   ->헤더라인이 아파치 웹서버에 의해 만들어졌음을 의미
Last-Modified : Sun, 5 May 2003 09:23:24 GMT
Content-Length : 6821                               ->송신되는 객체의 바이트 수
Content-Type : text/html                           -> HTML 개체임을 의미
(Data)(Data)(Data)(Data)(Data)(Data)(Data)(Data).....

응답 메시지의 일반 포맷

 
*상태 코드 & 문장
200 OK : 요청이 성공되었고, 정보가 응답으로 보내어져 왔음을 의미합니다.
301 Moved Permanently : 클라이언트 소프트웨어는 자동으로 새로운 URL을 추출합니다.
400 Bad Request : 서버가 요청을 이해할 수 없다는 일반 오류 코드 입니다.
404 Not Round : 요청 문서가 서버에 존재하지 않습니다.
505 HTTP Version Not Supported : 요청 HTTP 프로토콜 버전을 서버가 지원하지 않습니다.

다음 블로깅 문서(웹, HTTP 이해(2))는 쿠키, HTTP 콘텐츠, 웹 캐싱, 조건부 GET에 대해 정리 하도록 하겠습니다.



****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by John_G

댓글을 달아 주세요

  1. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.04.28 00:37 신고  댓글주소  수정/삭제  댓글쓰기

    사이다님 HTTP에 대해서 자세히 포스팅 해주셨네요...^^
    덕분에 세부적인 내용 하나하나를 다시 복습하였습니다...+ㅁ+
    양질의 포스팅을 해주셔서 감사드리고, 포스팅하시느냐 고생하셨습니다.
    다음 포스팅도 기대하고 있겠습니다...^^*

  2. 컴센스 2009.04.28 23:30  댓글주소  수정/삭제  댓글쓰기

    사이다님의 강의 잘보았습니다.
    다시한번 정라하는 계기가 되었습니다.

  3. TunaWorld 2009.05.12 10:21  댓글주소  수정/삭제  댓글쓰기

    좋은 포스팅 감사합니다 ^^
    다음 포스팅도 어서 보고싶네요 !!
    잘봤어요~ 감사합니다 ㅎㅎ