간단한 HTTP 서비스

http 프로토콜에 대한 설명

  1. 프로토콜 버전
    (1) HTTP / 0.9 : 프로토 타입 버전은 간단한 단 하나 개의 명령 GET을 갖추고 있습니다. /index.html를 GET 만 HTML 형식 문자열을 응답 할 수있는 서버가 다른 형식으로 응답 할 수 없습니다
    (2) HTTP / 1.0 : 완료 캐시를 지원, MIME는 방법은, 각각의 TCP 연결은 연결을 데이터를 전송하기위한 요청을 전송 근접뿐만 아니라, 추가 요청 된 자원 경우 새로운 연결을 다시 생성 할 필요가있다; head 명령 및 포스트 커맨드를 도입; ACII 코드 정보가 될 수있는 형식의 데이터 뒤에 헤더
    HTTP (3) / 1.1 : 영구 연결을 도입하는, 즉 TCP 즉, 동일한 TCP 연결에서, 클라이언트가 동시에 여러 요청을 보낼 수 있습니다 더 HTTP 프로토콜의 효율성을 개선하기 위해, 파이프 라인 메커니즘 도입, 유지 (keep-alive); 기본 연결은 여러 요청이 선언에 연결하지 않고 다중화 될 수있다, 닫혀 있지 않습니다 새로운 방법은, 상기 PUT 패치는 OPTIONS 상기 DELETE
    HTTP / 2.0 (4). : 헤더 본체는, 바이너리 데이터 인 헤더 정보와 데이터 프레임 다중화 TCP 연결, 접속, 클라이언트 브라우징이라 장치 보내거나 동시에 여러 요청에 응답하고,이 양방향 실시간 통신이 다중 호출되는 "팀 헤드 막힘"를 방지하기 위해 해당하지 않는 수 있습니다. GZIP를 사용하거나 전송하기 전에 압축하는 헤더 압축기구, 헤더 압축을 도입하는 단계; 클라이언트와 테이블 헤더를 유지하는 동시에, 서버가 모든 필드 인덱스 번호를 생성하기 위해,이 테이블에 저장되는 것은, 동일한 필드를 전송하지 않으며, 단지 인덱스를 보낼 제 속도를 향상시킬 수 있습니다. 원치 않는 서버가 클라이언트 해당 서버 푸시에 자원을 보낼 주도권을 쥐고 있습니다.
  2. HTTP 메커니즘
    (1) 메커니즘 :
    HTTP 요청 : HTTP 요청
    HTTP 응답 : HTTP 응답
    트랜잭션 HTTP 번 : 요청 <-> 응답
    (2) 웹 리소스 : 웹 자원
    웹 페이지 자원의 복수의 구성은, 페이지를 열고, 그것은 것 이 쇼의 더 많은 자원이 있지만, 각 자원에 대해 개별적으로 요청해야합니다. 따라서, "웹 페이지"일반적으로 하나의 자원이 아니라 일련의 수집
    정적 파일의 : 별도의 서버 처리 할 필요없이
    파일 접미사 : .html 중에서, .txt 인, .JPG,은 .js , .CSS, .mps을, 아비
    동적 파일 : 서버 프로그램 실행, 실행 결과를 반환
    파일 접미사 : .PHP, .jsp로, .ASP를
    (. 3) HTTP 연결의 성능을 향상시키기 위해
    병렬로 연결 : HTTP 요청의 복수를 통해 동시 TCP 연결
    영구 연결 : 연결 유지 긴 연결 재사용 TCP 접속하고, 지연을 제거하기 위해 폐쇄 연결 및 시간의 수는 접속 닫을 트랜잭션 여부를 확인하는
    덕트가 연결 전환 : 동시 TCP의 HTTP 요청의 접속 개시를 공유를 통해
    다중 접속 : 전송 요청 대체 응답 패킷 (실험)
  3. URL组成
    URL : shceme : // 사용자 이름 : 암호 @ 호스트 : 포트 / 경로, PARAMS 쿼리 #의 파편?
     shceme:方案,访问服务器以获取资源时要使用哪种协议
     user:用户,某些方案访问资源时需要的用户名
     password:密码,用户对应的密码,中间用:分隔
     host:主机,资源宿主服务器的主机名或IP地址
     port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
     path:路径,服务器资源的本机名,由一个/将其与前面的URL组件分隔
     params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
     query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
     frag:片段,一个片或一部分资源的名字,此组件在客户端使用,用#分隔
  4. 전체 HTTP 요청 처리
    (1) 연결을 설정합니다 : 수락하거나 연결 요청 거부
    (2) 요청을 수신 :시 클라이언트 요청 메시지를 리소스에 대한 요청을 수신하는
    웹 액세스 응답 모델 (웹 I / O)
    하나의 프로세스를 I / O 모델 : 요청에 응답하여 순차적으로의 사용자 요청 및 프로세스 만 복수를 처리하는 프로세스를 시작
    다중 프로세스 I / O 모델의 병렬 처리의 복수의 접속 요구에 응답하여, 각 프로세스를 시작
    다중화 된 I / O 구조 다음 N 연결 요청에 응답하는 동안, 프로세스를 시작할
    있어서 다중 스레드 모델 및 이벤트 기반
    다중 스레드 모델 : N 스레드를 생성하는 과정, 접속 요청에 응답하여 각 스레드
    이벤트 구동 : 프로세스 처리 N은 요구
    다중화를 다중 프로세스 I / O 모델 : 프로세스 M 시작 N 연결 요청에 따라 각 프로세스, M * N의 요청을 수신하면서
    (3) 처리 요구 : 서버가 요청 메시지를 분석하고, 리소스 요청 및 요청 방법을 취득 다른 관련 정보는, 방법, 리소스, 선택적 헤더와 본체 부에있어서, 상기 요청 과정
    : HTTP 요청 종래 방식 '.Method'
    는 GET는 상기 POST 헤드의 PUT는 DELETE 추적은 OPTIONS
    . (4) 리소스에 대한 액세스 :
    서비스, 자원 웹 서버 요청 메시지는 서버가 웹 리소스를 저장하도록 요청 가져옵니다 실행 한 후 동적으로 생성 된 자원을 요청자에게 상대방의 정적 자원 요청을 제공하는, 또는 책임이
    웹 서버 자원 경로 매핑 방식 :
    (A) docroot를
    (B) 별칭
    (C) docroot에 호스팅
    (D) 사용자의 홈 디렉토리 docroot에
    5 구축 된 응답 패킷 :
    요청에 설명 된 조작 방법의 구현에 자원에서 웹 서버 식별되면, 및 응답 패킷을 반환합니다.
    응답 메시지는 응답 상태 코드, 응답 헤더를 포함하는 상기 생성 된 응답 본체, 그리고, 상기 본체에 응답하여 이루어지는 경우
    (1), HTTP 프로토콜 공통 상태 코드
    200 : 성공 패킷의 응답 엔터티 본체 부에서 상기 요청 데이터를 상기 OK
    (301) : 영구적으로 이동, 요청 리소스를 가리키는 URL이 삭제되었습니다 있지만 응답 메시지 텍스트에 현재 헤드 위치에 살고있는 리소스의 새 위치를 나타냅니다
    자원의 임시 새로운 위치의 응답 메시지의 위치 표시가 일시적으로 이동 : 302
    304 : 클라이언트를 ; 상태 요청을 발행하지만 서버의 리소스가 변경되지 않은 클라이언트를 통해 응답 상태 코드에 대한 응답은 수정되지
    무단; 리소스에 액세스 할 수있는 계좌 번호와 비밀번호 인증을 입력해야합니다 : (401)를
    요청 금지, Foibidden : (403)
    404 : 클라이언트가 요청한 자원을 찾을 수없는 서버가, 찾을 수 없습니다
    500 : 내부 서버 오류, 내부 서버 오류
    (502) : 당신이 게이트웨이에 연결할 수없는 경우 프록시 서버, 의사 백 엔드 서버에서 응답을 수신, 나쁜 게이트웨이
    (503) : 서비스를 일시적으로 사용할 서버 유지 보수 또는 과부하 서버는 요청을 처리하는
    게이트웨이 초과 : 504
    신체에 응답하여 (2) : 트랜잭션이 응답 본문이 있다면, 그것은 다시 전송 만료 응답 패킷의 내용이 될 것입니다. 응답 패킷 일반적으로 포함은 :
    응답 본체 Content-Type 헤더의 MIME 타입이 설명
    응답 콘텐츠 길이의 본체의 길이를 설명
    패킷의 본체 실제 내용
    (3) URL 재 :
    웹 서비스 응답은 클라이언트가 요청한 자원을 구축, 이에되지 않은 추가 리소스 액세스 경로
    (4) MIME 유형 :
    웹 서버가 신체의 응답 MIME 타입을 결정하기위한 책임이 있습니다. 자원 및 MIME 유형을 관리 할 수있는 다양한 방법의 구성 서버
    (6)는 응답 메시지를 송신한다
    (7) 기록
    트랜잭션의 끝은 웹 서버 로그 파일에 엔트리를 추가 할 때 수행 된 트랜잭션을 설명하고, 마지막으로,

추천

출처blog.51cto.com/14418331/2443978