네트워크 상황이 변경된 후에도 Mosh가 여전히 로그인 상태를 유지할 수 있는 이유는 무엇입니까?

네트워크 상황이 변경된 후에도 Mosh가 여전히 로그인 상태를 유지할 수 있는 이유는 무엇입니까?

나는 Unix SE에 대한 또 다른 질문을 통해 이 애플리케이션에 대해 배웠습니다.

그것은 말한다:

IP를 변경하세요. 계속 연락하세요.

Mosh는 인터넷 연결 간을 이동할 때 자동으로 로밍됩니다. 기차에서는 Wi-Fi를, 호텔에서는 이더넷을, 해변에서는 LTE를 사용하세요. 로그인 상태가 유지됩니다. SSH 및 Gmail과 같은 네트워크 애플리케이션을 포함하여 대부분의 네트워크 프로그램은 로밍 후에 연결이 끊어집니다. 모세는 다릅니다.

어떻게 이럴 수있어?

이것은 간단한 재배선 기술입니까?

답변1

주로 mosh는 비연결 프로토콜을 사용하고 클라이언트와 서버 재연결을 올바르게 처리하기 때문입니다. 나는 구체적인 내용을 100% 확신할 수는 없지만, 내가 이해한 바에 따르면 일반적으로 다음과 같이 작동합니다.

  1. mosh를 사용하여 원격 호스트에 처음 연결하면 일반 SSH를 사용하여 로그인하고 다른 포트에서 연결을 수신하는 자체 서버 구성 요소를 시작합니다.
  2. 그런 다음 Mosh는 원래 SSH 연결을 닫고 자체 프로토콜을 통해 실행되는 새 터미널 세션을 만듭니다. 이 링크는 TCP 대신 UDP를 사용하므로 비연결 프로토콜을 통한 연결을 기능적으로 시뮬레이션합니다.
  3. 클라이언트의 IP 주소가 변경되거나 네트워크가 일시적으로 다운되거나 유사한 일이 발생하는 경우 mosh는 계속해서 원래 서버 주소로 패킷을 보내 시뮬레이션된 연결을 다시 설정하려고 시도합니다. 서버 구성 요소가 새 주소에서 오는 패킷을 확인하면 이전 주소 대신 해당 주소로 응답 패킷을 보내기 시작합니다.

물론 인증이 필요하지만(그렇지 않으면 누구든지 Mosh 세션을 쉽게 가로챌 수 있습니다) 전환이 발생하는 방식에는 그다지 중요하지 않습니다.

많은 P2P 소프트웨어가 네트워크 변경에 대한 탄력성을 제공하기 위해 매우 유사한 기술(즉, 본질적으로 2단계와 3단계와 동일하며 다른 것을 터널링하는 것)을 사용한다는 점은 주목할 가치가 있습니다. 이러한 작업을 수행하는 소프트웨어의 예는 다음과 같습니다.사물을 동기화그리고딩크.

답변2

귀하의 견적은 웹사이트에서 제공됩니다.https://mosh.org. "기술 정보"를 읽기 시작하면 귀하의 질문에 대한 답변을 얻을 수 있습니다 :-).

이것은 간단한 재배선 기술입니까?

전통적인 재접속 기술, 즉 타임아웃 + 재접속이 아닙니다. 예: SSH/TCP 시간 초과 + 수동 재연결화면또는 tmux 서버.

mosh모바일 기술을 위해 특별히 설계되었습니다. 더 빨리 적응합니다.

SSP를 사용하면 로밍이 쉽습니다. 클라이언트는 최소 3초마다 "하트비트"를 포함하여 증가하는 시퀀스 번호로 데이터그램을 서버에 보냅니다. 서버가 이전에 수신한 것보다 더 높은 시퀀스 번호를 가진 클라이언트로부터 실제 패킷을 수신할 때마다 패킷의 IP 소스 주소는 나가는 패킷에 대한 서버의 새로운 대상이 됩니다. 이런 방식으로 "상태 비저장" 로밍을 수행하면 NAT 내부 및 외부에서 로밍이 발생할 수 있으며, NAT 자체가 로밍 중인 경우에도 마찬가지입니다. 로밍은 클라이언트가 인터넷에 표시되는 IP 주소가 변경되었음을 인식하지 못하는 경우에도 작동합니다. Heartbeat를 사용하면 Mosh가 일정 기간 동안 서버로부터 소식을 듣지 못한 경우 Mosh가 사용자에게 알릴 수 있습니다(사용자가 입력을 시도할 때까지 연결이 끊어졌음을 인식할 수 없는 SSH와는 다름).

다른 모바일 기술은 클라이언트가 다음과 같은 경우 이 하트비트 지연을 단축할 수 있습니다.인터넷에 표시되는 IP 주소가 변경되었음을 인식합니다. 이 섹션에서는 이것이 필요한지 여부를 언급하지 않습니다 mosh. 3초 업데이트를 통해 mosh대화형 세션이 기존 기본 설정보다 더 유용하고 강력해졌습니다. 또한 "기술 정보"에서는 사용할 수 없는 mosh의 더 새로운 측면을 설명합니다.또한작은 세부 사항에 얽매이게 됩니다 :).

적어도 위에서 언급한 것처럼 mosh이동성은 한쪽, 즉 클라이언트에서만 구현됩니다. 이는 mosh안정적인 IP 주소를 가진 라우터에서 실행되는 "로컬 프록시"가 필요한 모바일 IP와 달리 제3자가 필요하지 않도록 하는 데 도움이 됩니다.

모빌리티를 구현할 때에는 이를 안전하게 제어하는 ​​것이 중요합니다. moshSSH를 통해 초기화된 보안이 포함되었습니다. 모바일 IP에는 이러한 이점이 없습니다. IPsec을 활용하려고 합니다. IPsec은 컴퓨터와 라우터 간에 구성해야 하는 IP에 대한 선택적 확장입니다. 특정 좁은 시나리오에서만 사용되는 경우가 많습니다.

moshscreen또는 사용 사이에는 세 번째 유사점이 있습니다 tmux. SSH 서버가 연결을 끊은 후에도 프로그램을 무기한 실행 상태로 둘 수 있도록 구성되어 있기 때문에 작동합니다. systemd"공식" 기본 구성을 사용하지 않는 한 :). systemd는 이러한 제어 부족을 Unix 역사상 눈에 띄는 감독으로 간주합니다. 다른 많은 시나리오에서는 연결되지 않은 경우에도 리소스 사용량을 무기한 유지하는 것이 고려됩니다.위험하게쓰레기. 많은 웹 서버는 대량의 데이터를 보내거나 받지 않은 후 몇 초 후에 클라이언트 연결을 끊도록 구성되어 있습니다. 바라보다https://en.wikipedia.org/wiki/Slowloris_(컴퓨터_보안)

모바일 IP는 오래된 프로젝트입니다. 최근 프로젝트로는 MP-TCP(Multipath TCP)가 있습니다. 모바일 제어를 위한 간편한 보안을 구현합니다. MP-TCP는 mosh초기 연결이 제거할 수 없는 단일 서버 IP에 이루어진다는 점에서 더 유사합니다 . 연결이 설정되면 클라이언트나 서버는 이론적으로 IP 주소를 변경하고 연결을 유지할 수 있습니다. 하지만 모든 IP가 동시에 변경되면 복구가 불가능합니다.

관련 정보