title: "SCTP(Stream Control Transmission Protocol)"
description: "SCTP(Stream Control Transmission Protocol)"
cleanUrl: /sw-engineer/sctp
ogImage: "<https://anyflower.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F7570d2fc-66b1-4e23-bb3c-ff7b56842b0d%2F667896e9-433a-4840-a3de-2d9c0b0305d8%2FUntitled.png?table=block&id=652a1140-672f-44aa-87fb-7402eb10dfed&spaceId=7570d2fc-66b1-4e23-bb3c-ff7b56842b0d&width=670&userId=&cache=v2>"
floatFirstTOC: right
정의
- PSTN망에서 사용되는 signaling message를 인터넷 망의 IP Network상에서 전송하기 위해 IETF SIGTRAN Working group에서 2000년 10월 표준으로 제안한 전송 프로토콜(RFC 2960)
주요 장점
- 전송계층에서 동작하며 UDP의 메시지 지향 특성과 TCP의 연결지향 및 신뢰 전송 특성을 모두 포함하는 등 TCP와 UDP의 장점을 살리도록 설계
- Association 설정시 발생할 수 있는 Syn Flooding과 같은 DOS 공격이나 Masquerading 공격에 안전하도록 설계
- Multi-Streaming : TCP의 Head Of Line Blocking으로 인한 성능 저하 문제 해결. 하나의 세션에서 여러 종류의 컨텐츠 전달 가능.
- Multi-Homing : 특정 경로에 Path Fail이 발생하더라도 미리 설정된 다른 통신 경로로 자동적인 데이터 전송을 가능케 하는 기능(fail-over 기능).
기술적 특징
- 세션인증 및 SACK 메커니즘 : 세션 초기화시 Cookie를 사용한 Key 교환(DOS, Sync Flooding 공격 방지), SACK(Selective ACKnowledgement)를 통한 데이터 수신 확인 및 재전송 요구
- Path Selection & Monitoring : 하나의 SCTP 세션에 여러 IP 주소 사용(fail over 역할)
- Flow & Congestion Control : 흐름 제어는 association 별, 혼잡 제어는 전송경로 별로 수행
- 데이터 전송 : 각 데이터 chunk에게 TSN(Transmission Sequence Number: 흐름 제어, 오류 복구), SSN(Stream Sequence Number: 스트림별 순서화) 부여
- 세션 초기화 및 종료 : 초기화에는 4 way handshaking, 종료시에는 3 way handshaking(TCP의 Half Open 문제 해결)
- protocol ID : 132번
SCTP 프로토콜 스택
- 하나의 패킷에 여러 개의 데이터 및 제어 chunk가 포함 가능
- 데이터 chunk에는 Type, Length, 해당 데이터 chunk에 대한 TSN, SSN 번호를 포함하여 추후 오류제어 및 흐름제어 등에 사용
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/7570d2fc-66b1-4e23-bb3c-ff7b56842b0d/667896e9-433a-4840-a3de-2d9c0b0305d8/Untitled.png)