이 번역은 기계 학습을 사용하여 생성되었으며 100% 정확하지 않을 수 있습니다. 영어 버전 보기

Transport 개요

지점 간 router 통신을 위한 I2P의 전송 계층 개요

I2P의 Transport

I2P에서 “transport"는 두 router 간의 직접적인 지점 대 지점 통신을 위한 방법입니다. Transport는 외부 공격자로부터 기밀성과 무결성을 제공해야 하며, 동시에 연결된 router가 주어진 메시지를 받아야 할 올바른 대상인지 인증해야 합니다.

I2P는 여러 전송 방식을 동시에 지원합니다. 현재 구현된 전송 방식은 세 가지입니다:

  1. NTCP , Java New I/O (NIO) TCP 전송 방식
  2. SSU , 또는 Secure Semireliable UDP
  3. NTCP2 , NTCP의 새로운 버전

각각은 인증, 흐름 제어, 확인 응답 및 재전송 기능을 갖춘 “연결” 패러다임을 제공합니다.


전송 서비스

I2P의 전송 하위 시스템은 다음과 같은 서비스를 제공합니다:

  • I2NP 메시지의 신뢰할 수 있는 전달. 전송 계층은 I2NP 메시지 전달만을 지원합니다. 범용 데이터 파이프가 아닙니다.
  • 모든 전송 계층에서 메시지의 순차적 전달이 보장되지는 않습니다.
  • router가 전역 연락처 정보(RouterInfo)로 게시하는 router 주소 집합을 유지합니다. 각 전송 계층마다 하나 이상의 주소를 가지며, IPv4 또는 (버전 0.9.8부터) IPv6 주소일 수 있습니다.
  • 각 발신 메시지에 대한 최적의 전송 계층 선택
  • 우선순위별 발신 메시지 대기열 처리
  • router 설정에 따른 발신 및 수신 대역폭 제한
  • 전송 연결의 설정 및 해제
  • 지점 간 통신 암호화
  • 각 전송 계층의 연결 제한 유지, 이러한 제한에 대한 다양한 임계값 구현, 그리고 상태에 따른 운영 변경을 할 수 있도록 router에 임계값 상태 전달
  • UPnP(Universal Plug and Play)를 사용한 방화벽 포트 개방
  • 협력적 NAT/방화벽 통과
  • UPnP, 들어오는 연결 검사, 네트워크 장치 열거 등 다양한 방법을 통한 로컬 IP 감지
  • 전송 계층 간 방화벽 상태와 로컬 IP, 그리고 이들의 변경 사항 조정
  • 방화벽 상태와 로컬 IP, 그리고 이들의 변경 사항을 router와 사용자 인터페이스에 전달
  • NTP의 백업으로 router의 시계를 주기적으로 업데이트하는 데 사용되는 합의 시계 결정
  • 각 피어의 상태 유지, 연결 여부, 최근 연결 여부, 마지막 시도에서 도달 가능 여부 포함
  • 로컬 규칙 집합에 따른 유효한 IP 주소 검증
  • router가 유지하는 자동 및 수동 금지된 피어 목록을 준수하고, 해당 피어에 대한 발신 및 수신 연결 거부

전송 주소

전송 하위시스템은 router 주소 집합을 유지하며, 각 주소는 전송 방법, IP, 포트를 나열합니다. 이러한 주소들은 광고된 연결 지점을 구성하고, router에 의해 netDb에 게시됩니다. 주소는 또한 임의의 추가 옵션 집합을 포함할 수 있습니다.

각 전송 방법은 여러 router 주소를 게시할 수 있습니다.

일반적인 시나리오는 다음과 같습니다:

  • router가 공개된 주소를 가지지 않아서 “숨겨진” 것으로 간주되며 들어오는 연결을 받을 수 없습니다
  • router가 방화벽으로 보호되어 있어서, NAT 통과를 도와줄 협력 피어나 “introducer” 목록을 포함하는 SSU 주소를 공개합니다 (자세한 내용은 SSU 사양 을 참조하세요)
  • router가 방화벽으로 보호되지 않거나 NAT 포트가 열려 있어서, 직접 접근 가능한 IP와 포트를 포함하는 NTCP와 SSU 주소를 모두 공개합니다.

전송 방식 선택

전송 시스템은 I2NP 메시지 만을 전달합니다. 메시지에 대해 선택된 전송 방식은 상위 계층 프로토콜 및 내용(router 또는 클라이언트 메시지, 외부 애플리케이션이 I2P에 연결하기 위해 TCP 또는 UDP를 사용했는지 여부, 상위 계층이 스트리밍 라이브러리 또는 데이터그램 을 사용했는지 여부 등)과는 독립적입니다.

각 송신 메시지에 대해 전송 시스템은 각 전송 방식으로부터 “입찰"을 요청합니다. 가장 낮은(최적) 값으로 입찰한 전송 방식이 입찰에서 승리하고 배송을 위해 메시지를 받습니다. 전송 방식은 입찰을 거부할 수 있습니다.

transport가 입찰하는지 여부와 어떤 값으로 입찰하는지는 다음과 같은 여러 요인에 따라 달라집니다:

  • 전송 선호도 구성
  • 전송이 이미 피어에 연결되어 있는지 여부
  • 다양한 연결 제한 임계값과 비교한 현재 연결 수
  • 피어에 대한 최근 연결 시도가 실패했는지 여부
  • 서로 다른 전송이 서로 다른 크기 제한을 갖기 때문에 메시지의 크기
  • RouterInfo에서 광고된 바와 같이 피어가 해당 전송에 대한 수신 연결을 수락할 수 있는지 여부
  • 연결이 간접적(introducer가 필요함)인지 직접적인지 여부
  • RouterInfo에서 광고된 바와 같이 피어의 전송 선호도

일반적으로 bid 값은 두 router가 한 번에 하나의 전송 방식으로만 연결되도록 선택됩니다. 그러나 이는 필수 요구사항은 아닙니다.


새로운 전송 방식과 향후 작업

다음을 포함하여 추가적인 전송 방식들이 개발될 수 있습니다:

  • TLS/SSH와 유사한 전송 방식
  • 모든 다른 router에서 접근할 수 없는 router를 위한 “간접” 전송 방식 (“제한된 경로"의 한 형태)
  • Tor 호환 플러그형 전송

각 전송 방식의 기본 연결 제한을 조정하는 작업이 계속되고 있습니다. I2P는 “메시 네트워크"로 설계되어 있으며, 모든 router가 다른 모든 router에 연결할 수 있다고 가정합니다. 이러한 가정은 연결 제한을 초과한 router들과 제한적인 상태 방화벽 뒤에 있는 router들(제한된 경로)에 의해 깨질 수 있습니다.

현재 연결 제한은 NTCP 연결의 메모리 요구사항이 SSU보다 높다는 가정에 기반하여 SSU가 NTCP보다 더 높게 설정되어 있습니다. 그러나 NTCP 버퍼는 부분적으로 커널에 있고 SSU 버퍼는 Java 힙에 있기 때문에, 이러한 가정을 검증하기는 어렵습니다.

Breaking and Improving Protocol Obfuscation 를 분석하고 전송 계층 패딩이 어떻게 상황을 개선할 수 있는지 확인해보세요.

Was this page helpful?