TCP 프로토콜은 전송 계층에 해당하고 HTTP 프로토콜은 애플리케이션 계층에 해당합니다. 본질적으로 둘은 비교할 수 없습니다. Http 프로토콜은 TCP 프로토콜을 기반으로 하며, 브라우저가 서버에서 웹 페이지 데이터를 가져와야 할 경우 Http 요청을 발행합니다.
Http는 TCP를 통해 서버에 대한 연결 채널을 설정합니다. 이 요청에 필요한 데이터가 완료되면 Http는 즉시 TCP 연결을 끊습니다. 따라서 HTTP 연결은 짧은 연결이자 상태 비저장 연결입니다. 소위 상태 비저장이란 브라우저가 서버에 대한 요청을 시작할 때마다 연결을 거치지 않고 매번 새로운 연결을 설정한다는 의미입니다. 연결인 경우 서버 프로세스는 연결을 유지하고 일부 정보 상태를 메모리에 기억할 수 있습니다. 각 요청이 끝나면 연결이 닫히고 해당 콘텐츠가 해제되므로 상태가 기억되지 않고 무상태 연결이 됩니다.
추천 과정: PHP 튜토리얼.
시간이 지날수록 HTML 페이지는 더욱 복잡해지고, 많은 그림이 삽입될 수 있습니다. 이때 그림에 액세스하기 위해 매번 TCP 연결을 설정하는 것은 비효율적입니다. 따라서 낮은 효율성 문제를 해결하기 위해 Keep-Alive가 제안되었습니다. HTTP/1.1부터는 연결 기능을 유지하기 위해 기본적으로 Keep-Alive가 활성화됩니다. 간단히 말해서 웹 페이지가 열릴 때 클라이언트와 서버 간에 HTTP 데이터를 전송하는 데 사용되는 TCP 연결이 닫히지 않습니다. 클라이언트 이 서버의 웹페이지를 다시 방문하면 설정된 연결을 계속 사용하게 됩니다. 연결 유지는 연결을 영구적으로 유지하지 않으며 다른 서버 소프트웨어(예: Apache)에서 설정할 수 있습니다.
여기에서는 일정 시간 동안 TCP 연결이 유지되지만 이 시간은 제한되어 있으며 해당 시점에는 여전히 닫혀 있으므로 각 연결이 완료된 후에도 닫히는 것으로 간주합니다. 추후 세션, 쿠키 및 기타 관련 기술을 통해 일부 사용자의 상태도 유지될 수 있습니다. 그러나 매번 하나의 연결을 사용하며 여전히 상태 비저장 연결입니다.
예전에는 헷갈리면 참을 수 없는 컨셉이 있었어요. 이것이 Http가 상태 없는 짧은 연결인 반면 TCP는 상태 있는 긴 연결인 이유입니다. HTTP는 TCP를 기반으로 하지 않습니까? 왜 여전히 짧은 연결이 될 수 있습니까?
이제 Http는 각 요청이 완료된 후 TCP 연결을 닫으므로 짧은 연결이라는 것을 이해합니다. 소켓 프로그래밍을 통해 직접 TCP 프로토콜을 사용하는 경우, 코드 영역을 통해 연결을 열고 닫을 시기를 제어할 수 있기 때문에 코드를 통해 연결을 닫지 않는 한 연결은 클라이언트와 클라이언트의 프로세스에 있게 됩니다. 항상 존재하며 해당 상태 데이터는 항상 저장됩니다.
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는 프로토콜에 트랜잭션 처리를 위한 메모리 기능이 없음을 의미합니다. 상태가 없다는 것은 후속 처리에 이전 정보가 필요한 경우 다시 전송해야 하므로 연결당 전송되는 데이터 양이 증가할 수 있음을 의미합니다. 반면에 서버는 이전 정보가 필요하지 않을 때 더 빠르게 응답합니다.
위 내용은 http 프로토콜과 tcp 프로토콜의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!