>운영 및 유지보수 >안전 >HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!

青灯夜游
青灯夜游앞으로
2020-06-17 11:06:042958검색

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!

1. 프로토콜이란 무엇인가요?

네트워크 프로토콜은 네트워크 통신을 달성하기 위해 컴퓨터 간에 도달하는 "합의" 또는 "규칙"입니다. 이 "합의"를 통해 서로 다른 제조업체의 생산 장비와 서로 다른 운영 체제로 구성된 컴퓨터에서 통신이 이루어질 수 있습니다.

2. HTTP 프로토콜이란 무엇인가요?

HTTP 프로토콜은 Hyper Text Transfer Protocol의 약어로, 영문명은 Hyper Text Transfer Protocol입니다. HTML(Hypertext Markup Language)을 웹 서버에서 로컬 브라우저로 전송하기 위한 전송 프로토콜입니다.

HTTP는 원래 HTML 페이지를 게시하고 수신하는 방법을 제공하도록 설계되었습니다.

HTPP에는 여러 버전이 있으며 현재 HTTP/1.1 버전이 널리 사용됩니다.

3.HTTP 원리

HTTP는 TCP/IP 통신 프로토콜을 기반으로 데이터를 전송하는 프로토콜입니다. 전송되는 데이터 유형은 HTML 파일, 이미지 파일, 쿼리 결과 등입니다.

HTTP 프로토콜은 일반적으로 B/S 아키텍처에서 사용됩니다(). 브라우저는 HTTP 클라이언트로서 모든 요청을 URL을 통해 HTTP 서버, 즉 WEB 서버로 보냅니다.

Baidu를 예로 들어 보겠습니다.


HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
Access Baidu 프로세스

4.HTTP 기능

  • http 프로토콜은 클라이언트/서버 모드를 지원합니다. 그것도 요청/응답 프로토콜.

  • 간단하고 빠릅니다. 클라이언트가 서버에 서비스를 요청할 때 요청 방법과 경로만 전송하면 됩니다. 일반적으로 사용되는 요청 방법은 GET, HEAD 및 POST입니다.

  • 유연함: HTTP는 모든 유형의 데이터 객체 전송을 허용합니다. 전송 유형은 Content-Type으로 표시됩니다.

  • 연결 없음: 하나의 요청만 처리하도록 각 연결을 제한합니다. 서버는 요청을 처리하고 클라이언트로부터 응답을 받은 후 연결을 끊지만 이는 클라이언트와 서버 간의 세션 연결을 유지하는 데 도움이 되지 않습니다. 이러한 단점을 보완하기 위해 http 상태를 기록하는 두 가지 기술이 있습니다. 개발이 완료되면 하나는 Cookie, 하나는 Session이라고 합니다.

  • 상태 비저장: 프로토콜에 트랜잭션 처리를 위한 메모리가 없음을 의미합니다. 후속 처리에 이전 정보가 필요한 경우 해당 정보를 재전송해야 합니다.

5. URI와 URL의 차이점

HTTP는 URI(Uniform Resource Identifier)를 사용하여 데이터를 전송하고 연결을 설정합니다.

  • URI: 균일 자원 식별자 균일 자원 IdentifierCharacter

  • URL: 균일 자원 위치 균일 자원LocationCharacter

URI는 특정 자원을 표시하는 데 사용되며 URI를 통해 알 수 있습니다. 자원이란 무엇입니까?

URL은 특정 리소스를 찾는 데 사용되며 특정 리소스 위치를 표시합니다. 인터넷의 모든 파일에는 고유한 URL이 있습니다.

6. HTTP 메시지 구성

요청 메시지 구성

1. 요청 방법, URL, 프로토콜/버전 포함

2. 요청 본문

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
응답 메시지 구성

1. 응답 헤더

3.

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
응답 메시지 구성

7. 일반적인 요청 방법

  • GET: 지정된 페이지 정보를 요청하고 엔터티 본문을 반환합니다.

  • POST: 요청(예: 양식 제출 또는 파일 업로드)을 처리하기 위해 지정된 리소스에 데이터를 제출합니다. 데이터는 요청 본문에 포함됩니다. POST 요청으로 인해 새로운 리소스가 생성되거나 기존 리소스가 수정될 수 있습니다.

  • HEAD: 반환된 응답에 특정 내용이 없다는 점을 제외하면 get 요청과 유사하며 헤더를 가져오는 데 사용됩니다.

  • PUT: 클라이언트에서 서버로 전송된 데이터가 지정된 내용을 대체합니다. 문서.

  • DELETE: 지정된 페이지를 삭제하도록 서버에 요청합니다.

요청 받기

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
GET 요청

요청 게시

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
POST 요청

게시와 받기의 차이점:

  • 둘 다 요청 헤더와 요청 라인을 포함하고 더 많은 요청 본문을 게시합니다.

  • get은 주로 쿼리에 사용됩니다. 요청 매개변수는 URL에 배치되며 서버의 콘텐츠에 영향을 주지 않습니다. 게시물은 본문에 계정비밀번호를 넣는 등 제출에 사용됩니다.

  • GET은 URL 끝에 직접 추가되어 URL에서 내용을 직접 볼 수 있는 반면, POST는 메시지 내부에 배치되어 사용자가 직접 볼 수 없습니다.

  • URL 길이가 제한되어 있으므로 GET으로 제출하는 데이터의 길이는 브라우저에 따라 다릅니다. POST는 그렇지 않습니다.

8. 응답 상태 코드

웹 페이지를 방문하면 브라우저가 웹 서버에 요청합니다. 이 웹페이지가 위치한 서버는 브라우저의 요청에 대한 응답으로 HTTP 상태 코드가 포함된 정보 헤더를 반환합니다.

상태 코드 분류:

  • 1XX- 정보 유형, 서버가 요청을 수신하고 작업을 계속하려면 요청자가 필요합니다.

  • 2XX- 성공 유형, 요청이 성공적으로 수신되고 이해되었으며 처리되었습니다.

  • 3XX - 리디렉션, 요청을 완료하려면 추가 조치가 필요합니다.

  • 4XX - 클라이언트 오류, 요청에 구문 오류가 포함되어 있거나 요청을 완료할 수 없습니다.

  • 5XX - 서버 오류. 서버가 요청을 처리하는 동안 오류가 발생했습니다. Common Status Codes
    :

200 OK- 클라이언트 요청 성공

    301- 리소스 (웹 페이지 등)는 다른 URLS
  • 302로 영구적으로 전송됩니다 - 임시 점프


  • 400 잘못된 요청 - 클라이언트 요청에 구문 오류가 있어 서버에서 이해할 수 없습니다.


  • 401 Unauthorized - 요청이 승인되지 않았습니다. 이 상태 코드는 WWW-Authenticate 헤더 필드와 함께 사용해야 합니다.


  • 404 - 요청한 리소스가 존재하지 않습니다. 잘못된 URL을 입력했을 수 있습니다.


  • 500 - 서버 내부에서 예기치 않은 오류가 발생했습니다.


  • 503 서버를 사용할 수 없습니다. - 서버가 현재 사용할 수 없습니다. 클라이언트의 요청을 처리하며 일정 시간이 지나면 사용이 불가능할 수 있습니다. 정상으로 돌아갑니다.



  • 9. 왜 https를 사용하나요?

실제 사용에서는 이제 대부분의 웹사이트가 https 프로토콜을 사용하는데, 이는 인터넷의 향후 발전 추세이기도 합니다. 다음은 Wireshark를 통해 캡쳐한 블로그 웹사이트의 로그인 요청 과정이다.

HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
블로그 로그인 패킷 캡처

접속된 계정과 비밀번호가 모두 일반 텍스트로 전송되는 것을 볼 수 있습니다. 따라서 클라이언트가 보낸 요청은 범죄자에 의해 쉽게 가로채어 악용될 수 있습니다. HTTP 프로토콜은 일부 민감한 정보(예: 다양한 계정, 비밀번호 및 기타 정보)를 전송하는 데 적합하지 않습니다. 따라서 개인 정보를 전송하기 위해 http 프로토콜을 사용하는 것은 매우 안전하지 않습니다.

일반적으로 http에는 다음과 같은 문제가 있습니다.

  • 요청 정보는 일반 텍스트로 전송되므로 쉽게 도청할 수 있습니다.

  • 데이터의 무결성이 검증되지 않아 쉽게 변조될 수 있습니다

  • 상대방의 신원이 검증되지 않으며, 사칭의 위험이 있습니다

10. HTTPS란 무엇인가요?

위의 HTTP 문제를 해결하기 위해 HTTPS를 사용합니다.

HTTPS 프로토콜(HyperText Transfer Protocol over Secure Socket Layer): 일반적으로 HTTP+SSL/TLS로 이해되며 서버의 신원은 SSL 인증서를 통해 확인되며 브라우저와 서버 간의 통신은 암호화됩니다.

그럼 SSL이란 무엇일까요?

SSL(Secure Socket Layer): 1994년 Netscape에서 개발된 SSL 프로토콜은 TCP/IP 프로토콜과 다양한 응용 프로그램 계층 프로토콜 사이에 위치하여 데이터 통신에 대한 보안 지원을 제공합니다.

TLS(전송 계층 보안): 이전 버전은 SSL입니다. 처음 몇 가지 버전(SSL 1.0, SSL 2.0, SSL 3.0)은 1999년에 IETF 3.1부터 표준화되고 이름이 변경되었습니다. TLS 1.0, TLS 1.1, TLS 1.2의 세 가지 버전으로 개발되었습니다. SSL3.0과 TLS1.0은 보안 취약점으로 인해 거의 사용되지 않습니다. TLS 1.3에는 큰 변화가 있을 예정이며 아직 초안 단계에 있습니다. 가장 널리 사용되는 것은 TLS 1.1과 TLS 1.2입니다.

SSL(인터넷 암호화 통신) 개발의 역사

1. 1994년 NetSpace는 SSL 프로토콜(Secure Sockets Layout) 버전 1.0을 설계했지만 출시되지 않았습니다.

2. NetSpace는 1995년에 SSL/2.0 버전을 출시했고 심각한 취약점이 빠르게 발견되었습니다

3. 1996년에 SSL/3.0 버전이 출시되어 널리 사용되었습니다

4. TLS/1.0 버전이 출시되었습니다. 현재 가장 널리 사용되는 버전인

5, 2006 및 2008이 TLS/1.1 버전과 TLS/1.2 버전

11으로 출시되었습니다. 브라우저가 HTTPS를 사용하여 데이터를 전송하는 과정은 무엇인가요?


HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!
HTTPS 데이터 전송 프로세스

1 먼저 클라이언트가 URL을 통해 서버에 액세스하여 SSL 연결을 설정합니다.

2. 서버는 클라이언트의 요청을 받은 후 웹사이트에서 지원하는 인증서 정보(인증서에 공개 키가 포함되어 있음) 사본을 클라이언트에게 보냅니다.

3. 클라이언트 서버는 정보 암호화 수준인 SSL 연결의 보안 수준 협상을 시작합니다.

4. 클라이언트의 브라우저는 양측이 합의한 보안 수준에 따라 세션 키를 설정한 다음 웹 사이트의 공개 키를 사용하여 세션 키를 암호화하여 웹 사이트에 전송합니다.

5. 서버는 자체 개인 키를 사용하여 세션 키를 해독합니다.

6. 서버는 세션 키를 사용하여 클라이언트와의 통신을 암호화합니다.

12. HTTPS

  • HTTPS 프로토콜에는 여러 개의 핸드셰이크가 있어 페이지 로딩 시간이 거의 50% 연장됩니다.

  • HTTPS 연결 캐싱은 HTTP만큼 효율적이지 않습니다. 데이터 오버헤드와 전력 소비가 증가합니다.

  • SSL 인증서를 신청하면 비용이 들고, 인증서가 강력할수록 비용도 높아집니다.

  • SSL과 관련된 보안 알고리즘은 CPU 리소스를 소모하며 많은 서버 리소스를 소모합니다.

13 HTTPS와 HTTP의 차이점을 요약하세요

  • HTTPS는 HTTP 프로토콜의 보안 버전이며 HTTPS는 SSL을 사용합니다. /TLS 프로토콜 암호화 처리.

  • http와 https는 서로 다른 연결 방법을 사용하며 기본 포트도 http가 80이고 https가 443입니다.

추천 튜토리얼: 웹 서버 보안

위 내용은 HTTP 및 HTTPS 프로토콜에 대해 빠르게 알아보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 zhihu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제