문제

나는 최근 에이 책을 확인했다 "UNIX 네트워크 프로그래밍, vol. 1" Richards Stevens와 나는 TCP 및 UDP 외에 세 번째 전송 계층 표준이 있음을 발견했습니다. SCTP.

요약 : SCTP는 UDP와 같은 메시지 중심이지만 TCP와 같이 신뢰할 수있는 전송 수준 프로토콜입니다. 여기에 있습니다 IBM DeveloperWorks의 짧은 소개.

솔직히, 나는 전에 SCTP에 대해 들어 본 적이 없다. 네트워킹 서적에서 읽은 것을 읽거나 내가 수업 한 수업에서 그것에 대해 듣는 것을 기억할 수 없습니다. 독서 다른 stackoverflow 질문 SCTP는 내가이 지식 부족으로 혼자가 아니라는 것을 암시합니다.

SCTP가 그렇게 알려지지 않은 이유는 무엇입니까? 왜 많이 사용되지 않습니까?

도움이 되었습니까?

해결책

실제로 SCTP는 대부분 통신 지역에서 사용됩니다. 전통적으로 통신 스위치는 SS7을 사용합니다.신호 시스템 번호 7) 통신 네트워크에서 다른 엔티티를 상호 연결합니다. 예를 들어 - 통신 공급자의 가입자 데이터베이스 (HLR), 스위치 (MSC)가있는 가입자도 연결되어 있습니다 (MSC).

통신 지역은 더 빠른 속도와 도달 가능한 환경으로 이동하고 있습니다. 이러한 변경 사항 중 하나는 SS7 프로토콜을보다 우아하고 빠르고 유연한 IP 기반 프로토콜로 대체하는 것입니다.

통신 지역은 매우 보수적입니다. SS7 네트워크는 여기에서 수십 년 동안 사용되었습니다. 매우 신뢰할 수 있고 폐쇄 된 네트워크입니다. 이것은 일반 사용자가 액세스 할 수 없음을 의미합니다.

대조적으로 IP 네트워크는 열려 있고 신뢰할 수 없으며 통신이 SS7이 처리하는 부하를 처리하지 않으면 통신으로 변환되지 않습니다. 이것이 SCTP가 개발 된 이유입니다. 시도 :

  • SS7 네트워크의 모든 장점을 모방하기 위해 수십 년 동안 축적되었습니다.
  • 속도, 보안 및 중복성에서 TCP보다 연결 지향 프로토콜을 더 잘 만들려면

Linux의 최신 릴리스에는 이미 SCTP 지원이 있습니다.

다른 팁

우리는 현재 여러 응용 프로그램에 SCTP를 배포하고 있으며 다양한 홈 라우터에서 SCTP 지원에 중대한 문제가 발생했습니다. 그들은 단순히 SCTP를 올바르게 처리하지 않습니다. 나는 이것이 주로 성능 문제라고 생각합니다 (SCTP 프로토콜 사양은 헤더뿐만 아니라 전체 패킷을 다시 계산 해야하는 체크섬이 필요합니다).

다른 많은 유망한 프로토콜과 마찬가지로 SCTP는 D-Link와 NetGear가 깨진 NAT 상자를 수정할 때까지 물에서 슬프게 죽었습니다.

SCTP는 애플리케이션 내에서 더 많은 디자인이 필요합니다. TCP보다 더 많은 옵션이 있으며 소켓과 같은 API가 나중에 왔으며 젊습니다. 그러나 나는 그것을 이해하는 데 시간이 걸리는 대부분의 사람들 (그리고 TCP의 단점을 알고있는 사람들)은 그것을 높이 평가한다고 생각합니다. TCP와 UDP에 대한 ~ 30 년의 지식을 기반으로하는 잘 설계된 프로토콜입니다.

약간의 생각이 필요한 측면 중 하나는 스트림의 측면입니다. 스트림은 (보통, 당신이 그것을 끄질 수 있다고 생각합니다) (TCP 연결과 마찬가지로) 주문 보증을 제공하지만 SCTP 연결 당 여러 스트림이있을 수 있습니다. 애플리케이션 데이터를 여러 스트림으로 전송할 수있는 경우 오해 패킷 하나로 인해 수신기가 굶주린 곳의 헤드 라인 차단을 피합니다. 효과적으로 다른 대화는 서로에게 영향을 미치지 않고 동일한 연결을 통해 발생할 수 있습니다.

또 다른 유용한 추가 기능은 다중 호밍 지원의 추가입니다. 하나의 연결은 양쪽 끝의 여러 인터페이스를 가로 질러있을 수 있으며 실패에 대처합니다. TCP에서이를 모방 할 수 있지만 응용 프로그램 계층에서는 모방 할 수 있습니다.

적절한 링크 하트 비트 (Heartbeating)는 비 투자 연결 구현에 TCP를 사용하는 첫 번째 응용 프로그램이 무료로 제공됩니다.

SCTP에 대한 개인적 요약은 상당한 응용 프로그램 지원을 통해 다른 방법 (TCP 또는 UDP)을 할 수없는 일을하지 않는다는 것입니다. 그것이 제공하는 것은 해당 코드를 직접 구현할 필요가 없다는 능력입니다.

참고로, SCTP는 직경 (CF 반경 Next Gen)을 위해지지 된대로 의무화된다. RFC 3588을 참조하십시오

   Diameter clients MUST support either TCP or SCTP, while agents and
   servers MUST support both.  Future versions of this specification MAY
   mandate that clients support SCTP.

SCTP는 그다지 알려지지 않았으며 많이 사용/배포되지 않았습니다.

  • 광범위한 : TCP/IP 스택에 널리 통합되지 않음 (2013 년 : 최신 Mac OSX 및 Windows에서 기본적으로 누락)
  • 라이브러리 : 사용하기 쉬운 언어의 높은 수준의 바인딩은 거의 없습니다 (면책 조항 : 저는 pysctp, SCTP Python에 대한 쉬운 스택 지원)
  • NAT : NAT를 건너지 않습니다.
  • 인기 : 일반적인 공개 앱은 사용하지 않습니다
  • 프로그래밍 패러다임 : 약간 바뀌 었습니다 : 여전히 소켓이지만 많은 호스트를 많은 호스트 (멀티 히밍)에 연결할 수 있습니다. 데이터 그램은 주문하고 신뢰할 수 있습니다.
  • 복잡성 : SCTP 스택은 구현하기가 복잡합니다 (위로 인해)
  • 경쟁 : 다중 경로 TCP가 다가오고 있으며 사람들이 가능한 경우 SCTP 구현을 자제하여 MTCP를 기다리므로 멀티 하이밍 요구 / 기능을 다루어야합니다.
  • 틈새 : SCTP 필드는 매우 독특하고 (주문한 신뢰할 수있는 데이터 그램, 멀티스트림) 많은 응용 프로그램에서는 필요하지 않습니다.
  • 보안 : SCTP는 보안 제어를 피합니다 (일부 방화벽, 대부분의 IDSES, 모든 DLP는 Centos/Redhat/Fedora를 제외하고 Netstat에 나타나지 않습니다 ...)
  • 감사 가능성 : 세계 3 개 회사와 같은 것은 일상적으로 SCTP 보안 감사를 수행합니다 (면책 조항 : 나는 그들 중 하나에서 일합니다)
  • 학습 곡선 : SCTP와 함께 연주 할 도구 체인이별로 없습니다 (우수한 점검 ssctp Netcat과 잘 결합하거나 Socat을 사용합니다)
  • 후드 아래 : 주로 통신에서 사용되며 SMS를 보낼 때마다 모바일에서 그물을 서핑하거나 전화를 걸기 시작하면 종종 SCTP (Sigtran/SS7, GSM/UMTS가 포함 된 SIGTRAN/SS7, LTE/IMS의 직경 /rcs, s1ap/x2ap with lte), 그래서 당신은 실제로 그것을 많이 사용하지만 당신은 그것에 대해 결코 알지 못합니다 ;-)

P1. IPv4에 직접 매핑 된 SCTP는 NAT 게이트웨이에서 지원이 필요합니다. NAT 게이트웨이는 어디에도 광범위하게 배치되지 않았으며, 일반적인 NAT 게이트웨이는 공개 주소 당 하나의 개인 호스트 만 한 번에 SCTP를 사용할 수 있습니다.

P2. UDP/IPv4를 통해 SCTP 매핑 된 공개 주소 당 더 많은 개인 호스트를 허용하지만, IPv4/NAT 게이트웨이의 UDP 매핑은 NAT가 추적 할 수있는 명시 적 상태가없는 무질서한 전송이라는 사실 때문에 IPV4/NAT 게이트웨이의 UDP 매핑은 악명 높고 유지하기가 까다 롭습니다. .

P3. SCTP는 IPv6에 직접 매핑되어 있습니다 ... 음 ... IPv6. IPv6을 배포하려고 했습니까? 그렇다면 IPv6 방화벽을 구입하려고 했습니까? SCTP를 지원합니까? 로드 밸런서는 어떻습니까? SSL 가속기?

P4. 마지막으로, 많은 인터넷은 TCP 포트 80과 포트 443을 통해 적합 할 수있는 것에 거의 제약을 받으므로 모든 맛의 SCTP는 그곳에서 잃어버린 경향이 있습니다. 따라서, 당신은 같은 노력을 봅니다 MPTCP IETF의 실무 그룹.

우리 중 많은 사람들이 WebRTC Datachannels에서 사용하여 UDP 상단에 TCP와 같은 신뢰할 수있는 레이어를 만들기 위해 SCTP를 곧 사용할 것입니다. https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13#section-6

읽기 SCTP Wikipedia 페이지 주된 이유는 SCTP가 현재 주류 OSS에 의해 지원되지 않는 매우 젊은 프로토콜 (2000 년에 제안)이기 때문입니다., OS x, 리눅스).

"아주 어린"이 당신에게 부적절 해 보인다면 생각해보십시오. IPv6: "2008 년 12 월, 10 주년을 표준 트랙 프로토콜로 표시 함에도 불구하고 IPv6은 전세계 일반 배포 측면에서 유아기에만 유아했습니다."

SCTP는 직경이 AAA에 사용되는 4G LTE 네트워크에서 광범위하게 사용됩니다.

잘 알려져 있지는 않지만 사용되지는 않습니다. 아주 최근에 A가있었습니다 초안 The에 출판되었습니다 IETF ~에 대한 HTTP 용 전송 계층 프로토콜로 SCTP를 사용합니다.

상업용 라우터가 파손되거나 SCTP 지원이 부족한 것에 대한 모든 의견과 관련하여, NAT와 함께 SCTP가 여전히 IETF와 함께 초안 형식이라는 문제입니다. 따라서 RFC 사양이 구현할 수있는 사양이 없습니다.

https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09

SCTP는 너무 늦게 태어 났으며 많은 상황에서 TCP로 충분합니다.

또한, 대부분의 사용법은 통신 영역에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top