SSH가 왜 HTTP보다 훨씬 빠를까요?


4

서버에 ssh하면 ls 명령을 실행하고 결과를 얻는 사이의 시간은 거의 아무것도 아닙니다.

그러나 브라우저의 동일한 서버에서 간단한 html 페이지 (단어 'hello'만 포함)에 대한 http 요청을 발행하면 적어도 1 초가 걸립니다.

왜 이런거야?


1
"무슨 느낌이 드는 이유는 무엇입니까?" 이 질문은 끝날 것입니다.
자주

5
커피를 마시는 것보다 자전거를 타는 것이 왜 그렇게 빨리 느껴 집니까? 당신은 완전히 다른 기술을 비교하고 있습니다.
Joel E Salas

이것은 실제로 공정한 질문입니다. SSH는 네트워크 장비 구성을 허용하기 위해 예를 들어 NETCONF에 의해 사용되는 잘 알려진 SSH 서브 시스템 모드 ( oreilly.com/library/view/ssh-the-secure/0596008953/ch05s08.html )를 가지고 있으며 이는 RESTCONF와 직접 경쟁합니다. HTTPS / REST를 통해서도 마찬가지입니다.
berezovskyi

답변:


10

SSH의 작동 방식에 대해서는 많이 모르지만 기본적으로 키보드 입력을 가져 와서 원격 콘솔의 쉘로 파이프합니다. 연결이 설정되고 키가 교환되면 매우 가벼워집니다.

HTTP는 완전히 다른 프로토콜입니다. 정적 HTML 페이지라고 가정하면 다음과 같이 약간 작동합니다.

  • TCP / IP 세션 설정 (DNS 조회가 필요할 수 있음)
  • HTTP 헤더 보내기
  • HTTP 요청 본문 보내기 (GET, POST, PUT 등)
  • 웹 서버가 HTTP 요청을받습니다.
  • 웹 서버는 처리기 매핑을 확인하여 요청을 처리하는 방법을 알아냅니다.
  • 웹 서버가 정적 HTML 파일을 선택합니다
  • 웹 서버는 응답 헤더를 공식화하여 유선으로 보냅니다.
  • 웹 서버는 정적 HTML 파일을 유선으로 푸시합니다
  • 브라우저가 헤더를받습니다
  • 웹 브라우저가 응답을받습니다
  • 웹 브라우저가 연결이 닫힐 때까지 기다립니다
  • 그런 다음 웹 브라우저가 HTML을 구문 분석합니다
  • 그런 다음 웹 브라우저가 HTML을 모니터로 렌더링합니다.

그것은 정말 기본적인 개요이지만 HTTP에는 더 많은 것들이 있습니다. SSH와 달리 "경량"프로토콜이 아닙니다.

또한 SSH와 달리 대부분의 HTTP 요청은 자체 포함되며 TCP 연결이 다시 설정됩니다. SSH는 TCP 세션을 열린 상태로 유지하므로 키를 누를 때마다 연결을 다시 설정할 필요가 없습니다. 그렇기 때문에 몇 분 동안 웹 브라우저의 플러그를 뽑아도 살아남을 수 있지만 연결이 끊어진 순간 SSH 세션이 끊어집니다.


감사. 나는 ssh가 연결을 열린 상태로 유지하면서 http를 위해 각 요청에 대해 다시 열고 닫아야한다는 것을 실제로 알지 못했다.
Collierre 2013

9

사과와 오렌지를 비교하고 있습니다.

한 단어로 된 웹 페이지를 다운로드하는 시간은 대부분 실제로 연결을 설정하는 데 필요한 시간, 즉 호스트의 DNS 레코드를 찾은 다음 TCP 연결을 만든 다음 문서를 요청하는 시간으로 구성됩니다.

이것은 ssh 연결을 설정하는 데 걸리는 시간과 더 비슷합니다. 호스트에 대한 DNS 레코드를 찾은 다음 TCP 연결을 한 다음 인증합니다. ssh가 훨씬 더 복잡한 프로토콜이기 때문에 실제로는 훨씬 더 깁니다. (암호화를 설정해야합니다).

ssh 세션에서 대화식 응답 시간은 대부분 실제로 연결이 설정된 후 사용자와 원격 서버 간의 대기 시간으로 인한 것입니다. HTTP에는 일대일 아날로그가 없지만 HTTP에는 기본적으로 켜져있는 연결 유지 옵션이 있으며 서버에 대한 연결을 열어서 여러 리소스를 다운로드하지 않고도 여러 리소스를 다운로드 할 수 있습니다 다시 연결하십시오.


"이것은 ssh 연결을 설정하는 데 걸리는 시간과 비교할 만하다"-이것은 좋은 비유이며,이 경우 서버에 대한 SSH 연결을 설정하는 데 걸리는 시간은 훨씬 유사합니다. lsover SSH 보다 HTTP 요청에 사용 됩니다.
Collierre 2013

8

방금 SSH 연결과 wget 시간을 정했습니다.

$ time ssh (host) echo "" > /dev/null

real        0m0.461s
user        0m0.004s
sys         0m0.012s

$ time wget (host)

(deletia)
real        0m0.013s
user        0m0.008s
sys         0m0.000s

"빠른"은 상대적입니다.


당신은 멋지다
moeiscool 2:17에

0

대화식 SSH는 소켓 TCP NODELAY 옵션을 설정하여 사용한 대역폭을 사용하여 대기 시간을 줄이므로 모든 키 입력이 즉시 서버로 전송됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.