소개 HTTP는 애플리케이션 계층에 속하는 객체 지향 프로토콜입니다. 그리고 빠른 방법으로 분산형 하이퍼미디어 정보 시스템에 적합합니다. 1990년에 제안되었으며 수년간의 사용과 개발을 거쳐 지속적으로 개선되고 확장되었습니다. 현재 WWW에서는 HTTP/1.0의 6번째 버전이 사용되고 있습니다. HTTP/1.1의 표준화 작업이 진행 중이며 HTTP-NG(Next Generation of HTTP) 제안이 제시되었습니다.
HTTP 프로토콜의 주요 기능은 다음과 같이 요약됩니다.
1. 클라이언트/서버 모드를 지원합니다.
2. 간단하고 빠릅니다. 클라이언트가 서버에 서비스를 요청할 때 요청 방법과 경로만 전송하면 됩니다. 일반적으로 사용되는 요청 방법은 GET, HEAD 및 POST입니다. 각 방법은 클라이언트와 서버 간의 다양한 연결 유형을 지정합니다. HTTP 프로토콜의 단순성으로 인해 HTTP 서버의 프로그램 크기는 작고 통신 속도는 매우 빠릅니다. 3. 유연성: HTTP는 모든 유형의 데이터 개체 전송을 허용합니다. 전송되는 유형은 Content-Type으로 표시됩니다. 4. 연결 없음: 연결 없음의 의미는 각 연결을 하나의 요청만 처리하도록 제한하는 것입니다. 서버는 클라이언트의 요청을 처리하고 클라이언트의 응답을 받은 후 연결을 끊습니다. 이 방법을 사용하면 전송 시간이 절약됩니다. 5. 상태 비저장: HTTP 프로토콜은 상태 비저장 프로토콜입니다. Stateless는 프로토콜에 트랜잭션 처리를 위한 메모리 기능이 없음을 의미합니다. 상태가 없다는 것은 후속 처리에 이전 정보가 필요한 경우 다시 전송해야 하므로 연결당 전송되는 데이터 양이 증가할 수 있음을 의미합니다. 반면에 서버는 이전 정보가 필요하지 않을 때 더 빠르게 응답합니다.1. HTTP 프로토콜에 대한 URL 장의 자세한 설명
http(Hypertext Transfer Protocol)는 요청 및 응답 모드를 기반으로 하는 상태 비저장 애플리케이션 계층 프로토콜이며, 종종 HTTP 1.1 버전을 기반으로 합니다. 지속적인 연결 메커니즘을 제공합니다. 대부분의 웹 개발은 HTTP 프로토콜을 기반으로 구축된 웹 애플리케이션입니다.
HTTP URL(URL은 리소스를 찾는 데 충분한 정보가 포함된 특수한 유형의 URI)의 형식은 다음과 같습니다.http://host[":"port][abs_path]http는 HTTP 프로토콜을 통해 네트워크 리소스를 찾는 것을 의미합니다. 호스트는 합법적인 인터넷 호스트 도메인 이름 또는 IP를 의미합니다. address는 포트 번호를 지정하며, 비어 있으면 기본 포트 80이 사용됩니다. abs_path가 URL에 제공되지 않은 경우 요청 URI로 사용되는 경우 "/"로 끝납니다. 일반적으로 이 작업은 브라우저에 의해 자동으로 수행됩니다. eg:1. 입력: www.guet.edu.cn 브라우저는 자동으로 http://www.guet.edu.cn/2로 변환됩니다. .jsp
2. HTTP 프로토콜에 대한 자세한 설명 - 요청 장
http 요청은 세 부분으로 구성됩니다. 즉, 요청 라인, 메시지 헤더, 요청 본문
1. 요청 줄은 공백으로 구분된 메서드 기호로 시작하고 그 뒤에 요청된 URI와 프로토콜 버전이 옵니다. 형식은 다음과 같습니다. 메서드 요청-URI HTTP-버전 CRLF
여기서 메서드는 요청 메서드를 나타냅니다. HTTP-Version은 요청된 HTTP 프로토콜 버전을 나타냅니다. CRLF는 캐리지 리턴 및 줄 바꿈을 나타냅니다(후행 CRLF 제외, 별도의 CR 또는 LF 문자는 허용되지 않음). 요청 방법은 다양합니다(모든 방법은 대문자임). 각 방법에 대한 설명은 다음과 같습니다.GET Request-URI로 식별된 리소스를 얻기 위한 요청
POST로 식별된 리소스 뒤에 새 데이터를 추가합니다. Request-URI HEAD Request-URI로 식별된 리소스의 응답 메시지 헤더를 가져오도록 요청 PUT 서버에 리소스를 저장하도록 요청하고 Request-URI를 식별자로 사용 DELETE 서버에 식별된 리소스를 삭제하도록 요청 요청-URI별 TRACE 요청 서버는 주로 테스트 또는 진단을 위해 수신된 요청 정보를 다시 보냅니다. CONNECT는 향후 사용을 위해 예약됩니다. OPTIONS 서버 성능을 쿼리하거나 리소스와 관련된 옵션 및 요구 사항을 쿼리하는 요청적용 예:
GET 메서드: 브라우저의 주소 표시줄에 URL을 입력하여 웹페이지에 액세스할 때 브라우저는 GET 메서드를 사용하여 서버에서 리소스를 가져옵니다. 예: GET /form.html HTTP/ 1.1(CRLF)
POST 방법에서는 요청된 서버가 첨부된 데이터 요청을 수락해야 하며, 종종 양식을 제출하는 데 사용됩니다.예: POST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,... (CRLF)...HOST: www.guet.edu. cn (CRLF)Content-Length:22 (CRLF)Connection:Keep-Alive (CRLF)Cache-Control:no-cache (CRLF)(CRLF) //이 CRLF는 메시지 헤더가 has beenended , 이것이 메시지 헤더 앞에 있습니다 user=jeffrey&pwd=1234 //다음 줄은 제출된 데이터입니다
HEAD 메소드는 GET 메소드와 거의 동일합니다. HEAD 요청의 응답 부분의 경우 HTTP 헤더에 포함된 정보는 GET 요청을 통해 얻은 정보와 동일합니다. 이 방법을 사용하면 전체 리소스 내용을 전송하지 않고도 Request-URI로 식별되는 리소스에 대한 정보를 얻을 수 있다. 이 방법은 하이퍼링크의 유효성, 액세스 가능 여부, 최근 업데이트되었는지 여부를 테스트하는 데 자주 사용됩니다.
2. 요청 헤더 설명
3. 요청 본문(생략)
三, 응답에 대한 HTTP 프로토콜 상세 설명
서버는 요청 메시지를 수신하고 해석한 후 HTTP 응답 메시지를 반환합니다.
HTTP 응답은 상태 줄, 메시지 헤더, 응답 본문
1의 세 부분으로 구성됩니다. 상태 줄 형식은
#입니다. 🎜🎜 #HTTP-Version Status-Code Reason-Phrase CRLF그중 HTTP-Version은 서버 HTTP 프로토콜의 버전을 나타냅니다. 서버에서 다시 보낸 상태 코드, Reason-Phrase는 상태 코드에 대한 텍스트 설명을 나타냅니다. 상태 코드는 세 자리 숫자로 구성됩니다. 첫 번째 숫자는 응답 범주를 정의하며 5개의 가능한 값을 갖습니다.
1xx: 명령 정보- -표시 요청이 수신되었으며 계속 처리되고 있음을 나타냅니다.2xx: 성공--요청이 성공적으로 수신되고 이해되었으며 수락되었음을 나타냅니다.3xx: 리디렉션-- 요청을 완료하려면 수행해야 합니다. 추가 작업4xx: 클라이언트 오류--요청에 구문 오류가 있거나 요청을 이행할 수 없습니다5xx: 서버 측 오류- -서버가 합법적인 요청을 이행하지 못했습니다# 🎜🎜#공통 상태 코드, 상태 설명, 지침:200 OK //클라이언트 요청 성공# 🎜🎜#
400 잘못된 요청 //클라이언트 요청에 구문 오류가 있어 서버에서 이해할 수 없습니다401 Unauthorized //요청이 승인되지 않았습니다. 이 상태 코드를 함께 보고해야 합니다. with WWW-Authenticate //헤더 필드가 함께 사용됩니다#🎜🎜 #403 금지됨 //서버가 요청을 받았지만 서비스 제공을 거부했습니다
404 찾을 수 없음 //요청한 내용 리소스가 존재하지 않습니다. 예: 잘못된 URL이 입력되었습니다.
#🎜🎜 #500 내부 서버 오류 //서버에서 예기치 않은 오류가 발생했습니다.503 서버를 사용할 수 없습니다. //현재 서버가 없습니다. 일정 시간이 지나면 클라이언트의 요청을 처리할 수 없습니다.#🎜🎜 #예: HTTP/1.1 200 OK (CRLF)
2. 응답 헤더 설명 3. 응답 본문은 서버에서 반환된 리소스의 내용입니다. #🎜 🎜#
4. HTTP 프로토콜 - 메시지 헤더
클라이언트에서 서버로의 HTTP 메시지 요청과 서버에 대한 응답은 다음으로 구성됩니다. 요청 메시지와 응답 메시지 모두 시작 라인(요청 메시지의 경우 시작 라인은 요청 라인, 응답 메시지의 경우 시작 라인은 상태 라인), 메시지 헤더(선택 사항), 빈 라인(CRLF만 해당)으로 구성됩니다. 행), 메시지 본문(선택 사항) 구성. HTTP 메시지 헤더에는 일반 헤더, 요청 헤더, 응답 헤더 및 엔터티 헤더가 포함됩니다.각 헤더 필드는 이름 + ":" + 공백 + 값으로 구성됩니다. 메시지 헤더 필드의 이름은 대소문자를 구분하지 않습니다.
1. 일반 헤더 일반 헤더에는 모든 요청 및 응답 메시지에 사용되는 몇 가지 헤더 필드가 있지만 전송되는 엔터티에는 사용되지 않습니다. 메시지. eg: Cache-Control은 캐시 지침을 지정하는 데 사용됩니다. 캐시 지침은 단방향입니다(응답에 나타나는 캐싱 지침은 요청에 나타나지 않을 수 있음). , 및 독립적으로(한 메시지에 대한 캐싱 지침은 다른 메시지 처리를 위한 캐싱 메커니즘에 영향을 주지 않음) HTTP 1.0은 Pragma라는 유사한 헤더 필드를 사용합니다. Cache 요청 시 지시문에는 no-cache(요청 또는 응답 메시지를 캐시할 수 없음을 나타내는 데 사용됨), no-store, max-age, max-stale, min-fresh, only-if가 포함됩니다. - 캐시됨;응답 중 캐싱 지침에는 공개, 비공개, 캐시 없음, 저장 없음, 변환 없음, 재검증 필수, 프록시 재검증, max-age, s-maxage가 포함됩니다. # 🎜🎜#eg: IE 브라우저(클라이언트)에 페이지를 캐시하지 않도록 지시하려면 서버측 JSP 프로그램을 다음과 같이 작성할 수 있습니다. response.sehHeader("Cache-Control","no -cache");#🎜🎜 #
//response.setHeader("Pragma","no-cache"); 이 함수는 위 코드와 동일하며 일반적으로 둘 다 //함께 사용됩니다이 코드는 응답으로 전송됩니다. 메시지에 공통 헤더 필드를 설정하세요: Cache-Control:no-cacheDate 공통 헤더 필드는 메시지가 생성된 날짜와 시간을 나타냅니다. Connection 공통 헤더 필드를 사용하면 지정된 연결 옵션을 보낼 수 있습니다. 예를 들어 연결이 연속적임을 지정하거나 응답이 완료된 후 연결을 닫도록 서버에 알리려면 "닫기" 옵션을 지정합니다 2. 요청 헤더 요청 헤더를 사용하면 클라이언트는 요청에 대한 추가 정보는 물론 클라이언트 자체에 대한 정보도 전달할 수 있습니다. 일반적으로 사용되는 요청 헤더AcceptAccept 요청 헤더 필드는 클라이언트가 수락하는 정보 유형을 지정하는 데 사용됩니다. 예: Accept: image/gif는 클라이언트가 GIF 이미지 형식의 리소스를 허용하기를 원함을 나타냅니다. Accept: text/html은 클라이언트가 html 텍스트를 허용하기를 원함을 나타냅니다. Accept-Charset
Accept-Charset 요청 헤더 필드는 클라이언트가 허용하는 문자 집합을 지정하는 데 사용됩니다. 예: Accept-Charset:iso-8859-1, gb2312 이 필드가 요청 메시지에 설정되지 않은 경우 기본값은 모든 문자 집합이 허용되는 것입니다.
Accept-Encoding
Accept-Encoding 요청 헤더 필드는 Accept와 유사하지만 허용되는 콘텐츠 인코딩을 지정하는 데 사용됩니다. 예: Accept-Encoding:gzip.deflate 요청 메시지에 이 도메인이 설정되지 않은 경우 서버는 클라이언트가 다양한 콘텐츠 인코딩을 수락할 수 있다고 가정합니다.
Accept-Language
Accept-Language 요청 헤더 필드는 Accept와 유사하지만 자연어를 지정하는 데 사용됩니다. 예: Accept-Language:zh-cn. 요청 메시지에 이 헤더 필드가 설정되어 있지 않으면 서버는 클라이언트가 다양한 언어를 수락할 수 있다고 가정합니다.
Authorization
Authorization 요청 헤더 필드는 주로 클라이언트가 리소스를 볼 수 있는 권한이 있음을 증명하는 데 사용됩니다. 브라우저가 페이지에 접근하여 서버로부터 401(Unauthorized) 응답 코드를 수신하면 Authorization 요청 헤더 필드가 포함된 요청을 보내 서버에 이를 확인하도록 요청할 수 있습니다.
Host (요청을 보낼 때 필요한 헤더 필드)
Host 요청 헤더 필드는 주로 요청된 리소스의 인터넷 호스트와 포트 번호를 지정하는 데 사용됩니다. 일반적으로 HTTP URL에서 추출됩니다. 예:
브라우저에 입력합니다. http://www.guet.edu.cn/index.html
브라우저가 보냅니다. 요청 메시지에는 다음과 같은 호스트 요청 헤더 필드가 포함됩니다.
Host: www.guet.edu.cn
여기에서는 기본 포트 번호 80이 사용됩니다. 호스트: www.guet.edu.cn: 지정된 포트 번호
User-Agent
온라인 포럼에 로그인하면, 우리는 종종 운영 체제의 이름과 버전, 사용 중인 브라우저의 이름과 버전이 나열된 환영 메시지를 보면 많은 사람들이 놀라워할 때가 많습니다. 실제로 서버 애플리케이션은 User-Agent에서 시작됩니다. 요청 헤더 필드에서. User-Agent 요청 헤더 필드를 통해 클라이언트는 서버에 운영 체제, 브라우저 및 기타 속성을 알릴 수 있습니다. 그러나 이 헤더 필드는 필요하지 않습니다. 브라우저를 직접 작성하고 User-Agent 요청 헤더 필드를 사용하지 않으면 서버가 우리 정보를 알 수 없습니다.
요청 헤더 예:
3. 응답 헤더 응답 헤더를 사용하면 서버가 상태 줄에 배치할 수 없는 추가 응답 정보를 전달할 수 있습니다. , 요청-URI에 의해 식별된 리소스에 대한 다음 액세스에 대한 서버 정보 및 정보에 대한 정보입니다. 일반적으로 사용되는 응답 헤더Location위치 응답 헤더 필드는 수신자를 새 위치로 리디렉션하는 데 사용됩니다. 위치 응답 헤더 필드는 도메인 이름을 변경할 때 자주 사용됩니다. Server서버 응답 헤더 필드에는 서버가 요청을 처리하는 데 사용하는 소프트웨어에 대한 정보가 포함되어 있습니다. User-Agent 요청 헤더 필드에 해당합니다. 다음은 Server 응답 헤더 필드의 예입니다. Server: Apache-Coyote/1.1WWW-AuthenticateGET /form.html HTTP/1.1(CRLF)
Accept:image/gif,image /x-xbitmap,이미지/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
#🎜🎜 #Accept-Language:zh-cn (CRLF)Accept-Encoding:gzip,deflate (CRLF)If-Modified-Since: 2007년 1월 5일 수요일 11: 21:25 GMT (CRLF)If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)User-Agent:Mozilla/4.0(호환;MSIE6 .0;Windows NT 5.0)(CRLF)Host:www.guet.edu.cn (CRLF)연결:Keep-Alive(CRLF)(CRLF)
#🎜 🎜#WWW - 401(Unauthorized) 응답 메시지에 인증 응답 헤더 필드가 포함되어야 합니다. 클라이언트가 401 응답 메시지를 수신하고 서버에 이를 확인하도록 요청하기 위해 Authorization 헤더 필드를 보낼 때 서버 응답 헤더에는 다음이 포함됩니다. 헤더 필드.
eg: WWW-Authenticate:Basic realm="Basic Auth Test!" //서버가 요청한 리소스에 대해 기본 인증 메커니즘을 사용하는 것을 볼 수 있습니다.
4. 엔터티 헤더
요청 메시지와 응답 메시지 모두 엔터티를 전송할 수 있습니다. 엔터티는 엔터티 헤더 필드와 엔터티 본문으로 구성됩니다. 그러나 엔터티 헤더 필드와 엔터티 본문을 함께 보내야 한다는 의미는 아닙니다. 엔터티 헤더는 엔터티 본문(예: 엔터티 본문의 존재 여부)과 요청에 의해 식별되는 리소스에 대한 메타 정보를 정의합니다.
일반적으로 사용되는 엔터티 헤더
Content-Encoding
Content-Encoding엔티티 헤더 필드는 미디어 유형 수정자로 사용되며 해당 값은 엔터티 본문에 적용된 추가 콘텐츠를 인코딩하므로 Content-Type 헤더 필드에서 참조되는 미디어 유형을 얻으려면 해당 디코딩 메커니즘을 사용해야 합니다. Content-Encoding은 문서의 압축 방법을 기록하는 데 사용됩니다. 예: Content-Encoding: gzip
Content-Language
Content-Language 엔터티 헤더 필드는 특성을 설명합니다. 리소스 언어에서 사용됩니다. 이 필드가 설정되지 않으면 엔터티 콘텐츠가 모든 언어로 독자에게 제공되는 것으로 가정됩니다. 예: Content-Language:da
Content-Length
Content-Length 엔터티 헤더 필드는 엔터티 본문의 길이를 나타내는 데 사용됩니다. 바이트.
Content-Type
Content-Type 엔터티 헤더 필드 용어는 수신자에게 전송되는 엔터티 본문의 미디어 유형을 나타냅니다. 예:
Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=GB2312
마지막 수정# 🎜🎜#
Last-Modified 엔터티 헤더 필드는 리소스의 마지막 수정 날짜와 시간을 나타내는 데 사용됩니다. ExpiresExpires 엔터티 헤더 필드는 응답이 만료되는 날짜와 시간을 제공합니다. 프록시 서버나 브라우저가 일정 시간 후에 캐시에 있는 페이지를 업데이트할 수 있도록(이전에 방문한 페이지에 다시 액세스할 때 캐시에서 직접 로드하여 응답 시간을 단축하고 서버 부하를 줄임) 다음을 수행할 수 있습니다. Expires 엔터티 헤더 필드를 사용하여 페이지 만료 시간을 지정합니다. 예: 만료: 2006년 9월 15일 목요일 16:23:12 GMTHTTP1.1의 클라이언트와 캐시는 다른 불법 날짜 형식(0 포함)을 만료된 것으로 처리해야 합니다. 예: 브라우저가 페이지를 캐싱하는 것을 방지하기 위해 Expires 엔터티 헤더 필드를 사용하고 이를 0으로 설정할 수도 있습니다. jsp의 프로그램은 다음과 같습니다: response.setDateHeader("Expires","0");# 🎜🎜## 🎜🎜#
5 텔넷을 사용하여 http 프로토콜의 통신 프로세스를 관찰합니다
#🎜🎜 #실험의 목적과 원리: MS의 텔넷 도구를 사용하여 http 요청 정보를 수동으로 입력하여 서버에 요청을 보내고 서버가 요청을 수신, 해석 및 수락한 후 반환합니다. 텔넷 창에 표시되는 응답을 통해 Perceptually에서 시작하여 http 프로토콜의 통신 프로세스에 대한 이해가 깊어집니다.
실험 단계:
1. 텔넷 열기
1.1 텔넷 열기
실행 -->cmd-- >telnet
1.2 텔넷 에코 기능 켜기
set localecho
2 서버에 연결하고 요청 보내기
#. 🎜🎜# 2.1 open www.guet.edu.cn 80 //포트번호는 생략 불가 HEAD /index.asp HTTP/1.0 호스트:www .guet.edu.cn /*요청 방법을 변경하여 Guilin Electronics 홈페이지의 콘텐츠를 요청할 수 있습니다. 다음과 같이 메시지를 입력하세요*/open www.guet.edu.cn 80 GET /index.asp HTTP/1.0 //요청된 리소스의 내용
# 🎜🎜# Host:www.guet.edu.cn # 🎜🎜#
2.2 open www.sina.com.cn 80 //명령 프롬프트에 telnet www.sina.com.cn을 직접 입력 80#🎜🎜 #HEAD /index.asp HTTP/ 1.0
호스트: www.sina.com.cn
3 실험 결과:
3.1 요청 정보 2.1 받은 응답은 다음과 같습니다.
HTTP/1.1 200 확인 ~ //webserver
날짜 : 2007년 3월 8일 목요일07:17 :51 GMT
연결: 연결 유지
콘텐츠 길이: 23330# 🎜🎜#
콘텐츠 유형: 텍스트 /html#🎜 🎜#Expries: 2007년 3월 8일 목요일 07:16:51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
#🎜 🎜# 캐시 제어: 비공개#🎜 🎜 #//리소스 내용 생략됨
3.2 정보 2.2를 요청하여 얻은 응답은 다음과 같습니다.
HTTP/1.0 404 찾을 수 없음 / /요청 실패
날짜: 2007년 3월 8일 목요일 07:50:50 GMT
서버: Apache/2.0.54 02419e33db738d718d29f3031ae9bb20
#🎜🎜 #최종 수정: 목요일, 2006년 11월 30일 11:35:41 GMTETag: "6277a-415-e7c76980"Accept-Ranges: 바이트##🎜 🎜#X-캐시: zjm152-78.sina.com.cn의 MISSVia: 1.0 zjm152-78.sina.com.cn:80
1. 기본 사항:
상위 수준 프로토콜에는 파일 전송 프로토콜 FTP, 이메일 전송 프로토콜 SMTP, 도메인 이름 시스템 서비스 DNS, 네트워크 뉴스 전송 프로토콜 NNTP 및 HTTP 프로토콜 등#🎜🎜 #
중개자에는 프록시, 게이트웨이 및 터널의 세 가지 유형이 있습니다. URI의 절대 형식을 사용하여 메시지의 전부 또는 일부를 다시 작성하고 URI 식별자를 통해 형식화된 메시지의 형식을 지정합니다. 수정된 요청이 서버로 전송됩니다. 게이트웨이는 다른 서버 위의 계층 역할을 하며 필요한 경우 요청을 기본 서버 프로토콜로 변환할 수 있는 수신 프록시입니다. 채널은 메시지를 변경하지 않는 두 연결 간의 중계 지점 역할을 합니다. 채널은 통신이 중개자(예: 방화벽 등)를 통과해야 하거나 중개자가 메시지 내용을 식별할 수 없는 경우에 자주 사용됩니다.프록시: 다른 클라이언트에 대한 요청을 설정하기 위해 서버 또는 클라이언트 역할을 할 수 있는 중간 프로그램입니다. 요청은 가능한 번역을 통해 내부적으로 또는 다른 서버를 통해 전달됩니다. 프록시는 요청 메시지를 보내기 전에 요청 메시지를 해석하고 가능하면 다시 작성해야 합니다. 프록시는 방화벽을 통해 클라이언트를 위한 포털 역할을 하는 경우가 많습니다. 프록시는 사용자 에이전트가 완료하지 않은 프로토콜을 통한 요청을 처리하는 도우미 응용 프로그램 역할도 할 수 있습니다.
Gateway: 다른 서버의 중개 역할을 하는 서버입니다. 프록시와 달리 게이트웨이는 요청된 리소스에 대한 원본 서버인 것처럼 요청을 수락합니다. 요청 클라이언트는 자신이 게이트웨이를 처리하고 있다는 사실을 인식하지 못합니다.
게이트웨이는 방화벽을 통해 서버측 포털 역할을 하는 경우가 많습니다. 게이트웨이는 HTTP가 아닌 시스템에 저장된 리소스에 액세스하기 위한 프로토콜 변환기 역할도 할 수 있습니다.
채널(터널): 두 연결 사이를 중계하는 역할을 하는 중개 프로그램입니다. 일단 활성화되면 채널은 HTTP 요청에 의해 시작될 수 있지만 HTTP 통신에 속하는 것으로 간주되지 않습니다. 릴레이된 연결의 양쪽 끝이 닫히면 채널이 사라집니다. 채널은 포털이 반드시 존재해야 하거나 중개자가 릴레이된 트래픽을 해석할 수 없는 경우에 자주 사용됩니다.
2. 프로토콜 분석의 장점 - HTTP 분석기는 네트워크 공격을 탐지합니다.
고급 프로토콜을 모듈식으로 분석하고 처리하는 것이 향후 침입 탐지의 방향이 될 것입니다.
일반적으로 사용되는 HTTP의 포트 80, 3128 및 8080과 해당 프록시는 네트워크 섹션의 포트 태그로 지정됩니다
3. HTTP 프로토콜 콘텐츠 길이 제한 취약점으로 인해 서비스 거부 공격이 발생합니다.
POST 방법을 사용할 때 ContentLenth를 설정하여 전송된 데이터의 길이(예: ContentLenth:999999999)를 정의할 수 있으며, 전송이 완료되기 전에 메모리가 해제되지 않습니다. 공격자는 이 결함을 이용하여 가비지 데이터를 웹 서버에 지속적으로 보낼 수 있습니다. 웹 서버의 메모리가 부족해질 때까지. 이 공격 방법은 기본적으로 흔적을 남기지 않습니다.
http://www.cnpaf.net/Class/HTTP/0532918532667330.html
4. HTTP 프로토콜의 특성을 이용하여 서비스 거부 공격을 수행하는 아이디어
서버가 TCP 연결을 처리하는 데 너무 바쁩니다. 공격자가 위조한 요청 클라이언트의 정상적인 요청을 무시합니다.(결국 클라이언트의 정상적인 요청 비율은 매우 작습니다.) 이때 일반 클라이언트의 관점에서 보면 서버가 응답을 잃는 상황이 발생합니다. SYNFlood 공격(SYN 플러드 공격)을 받기 쉽습니다.
Smurf, TearDrop 등은 ICMP 메시지를 사용하여 Flood 및 IP 조각화 공격을 수행합니다. 이 문서에서는 "정상 연결" 방법을 사용하여 서비스 거부 공격을 생성합니다.
Port 19는 초기에는 Chargen 공격, 즉 Chargen_Denial_of_Service에 사용되었지만! 그들이 사용하는 방법은 두 개의 Chargen 서버 간에 UDP 연결을 생성하여 서버가 너무 많은 정보를 처리하여 DOWN이 되도록 하는 것입니다. 그런 다음 WEB 서버를 종료하려면 두 가지 조건이 있어야 합니다. 1. Chargen 서비스가 있습니다. 2. 거기에 있습니다. HTTP Service
방법: 공격자는 소스 IP를 위조하고 N Chargens에 연결 요청(Connect)을 보냅니다. Chargen은 연결을 받은 후 초당 72바이트 문자 스트림을 반환합니다(실제로 이 속도는 다음과 같습니다). 실제 네트워크 상태에 따라) 서버에 전송됩니다.
5. HTTP 핑거프린팅 기술
HTTP 핑거프린팅의 원리는 기본적으로 동일합니다. HTTP 핑거프린팅은 TCP/IP 스택 핑거프린팅보다 훨씬 더 복잡합니다. 이유는 HTTP 서버의 구성 파일을 사용자 정의하고 플러그인이나 구성 요소를 추가하면 HTTP 응답 정보를 쉽게 변경할 수 있기 때문에 식별이 어렵기 때문입니다. 그러나 TCP/IP 스택의 동작을 사용자 정의하려면 코어 계층에 대한 수정이 필요합니다.
Apache와 같은 오픈 소스 Http 서버의 경우, 사용자가 소스 코드에서 배너 정보를 수정한 다음 Http 서비스를 다시 시작하도록 서버를 설정하는 것은 매우 간단합니다. 오픈 소스가 아닌 경우 적용됩니다. Microsoft의 IIS 또는 Netscape와 같은 코드의 Http 서버는 배너 정보를 저장하는 Dll 파일에서 수정될 수 있으므로 여기서는 자세히 설명하지 않겠습니다. 물론 이러한 수정의 효과는 좋습니다. 또 다른 퍼지 배너 정보 방법은 플러그인을 사용하는 것입니다.
일반적인 테스트 요청:
1: HEAD/Http/1.0은 기본 Http 요청을 보냅니다.
2: DELETE/Http/1.0은 삭제 요청과 같이 허용되지 않는 요청을 보냅니다.
3: GET/Http/3.0이 보냅니다. 불법 버전의 HTTP 프로토콜 요청
4: GET/JUNK/1.0은 잘못된 사양으로 HTTP 프로토콜 요청을 보냅니다
Http 지문 식별 도구 통계 원리를 사용하고 퍼지 논리 기술을 결합한 Httprint는 매우 효과적일 수 있습니다. HTTP 서버는 다양한 HTTP 서버에서 생성된 서명을 수집하고 분석하는 데 사용할 수 있습니다.
6. 기타: 브라우저 사용 시 사용자의 성능을 향상시키기 위해 최신 브라우저에서는 웹 페이지를 탐색할 때 동시에 여러 연결이 설정되어 웹 페이지에서 여러 아이콘을 빠르게 얻을 수 있습니다. , 전체 웹페이지 이전을 빠르게 완료할 수 있어 더욱 편리합니다.
HTTP1.1은 이러한 지속적인 연결 방법과 차세대 HTTP 프로토콜을 제공합니다. HTTP-NG에는 세션 제어, 풍부한 콘텐츠 협상 및 기타 방법에 대한 지원이 추가되어
보다 효율적인 연결을 제공합니다.
위 내용은 HTTP 프로토콜에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!