书籍详情
流控制传输协议SCTP参考指南
作者:Randall R.Stewart,Qiaobing Xie著
出版社:清华大学出版社
出版时间:2003-01-01
ISBN:9787900643957
定价:¥49.00
购买这本书可以去
内容简介
流控制传输协议SCTP是新一代的通用IP传输协议,已由IETF标准化为RFC2960。熟悉TCP/IP的人可以简单地将SCTP看作是“超级TCP”,因为SCTP不仅与TCP很像,而且扩展了TCP的许多功能。SCTP是在IP上建立下一代高质量通信和电子商务应用的关键部分,被一些标准化组织认为是TCP的继承者。SCTP对TCP和UDP的两项主要扩展是支持多地址主机和支持单个STCP关联(association)具有多个流。多地址主机支持使一个SCTP关联横跨多条路径,实现了路径冗余。多流支持允许用户定义子流,消息在子流内按序传输,因此可以解决队首阻塞问题。本书详细叙述了SCTP的协议内容和应用实现。主要内容为:1、SCTP简介;2、SCTP端点和关联;3、SCTP消息格式;4、关联的建立;5、用户数据传输;6、拥塞控制和回避;7、故障检测和恢复;8、SCTP的包处理功能;9、关联的关闭;10、IANA和SCTP;11、SCTP的Socket API;12、SCTP与TCP对比;13、使用SCTP流;14、SCTP的用户空间实现。本书是一本关于RFC2960 SCTP的权威论述。书中所附光盘包含完整的SCTP实现。本书可作高校计算机网络和通信相关专业的教材和教参,同时也可作网络通信开发人员的参考书。
作者简介
暂缺《流控制传输协议SCTP参考指南》作者简介
目录
FOREWORD
PREFACE
1 Introduction and Overview
1.1 IP Networking Basics
1.1.1 How Messages Are Delivered in an IP Network
1.1.2 IP Protocols
1.1.3 IP Multi-homing
1.2 What Is SCTP?
1.2.1 Where Does SCTP Fit in the IP Architecture?
1.3 Motivation for Developing SCTP
1.3.1 TCP Limitations
1.3.2 UDP Limitations
1.3.3 SCTP Enhancements over TCP and UDP
1.4 A Short History of SCTP Development
1.4.1 Early Works Before the IETF and MDTP
1.4.2 IETF Refinements
1.5 Major General SCTP Issues Debated in the IETF
1.5.1 Do We Really Need a New Transport Protocol?
1.5.2 Over UDP Versus Over IP
1.6 Organization of this Book
1.7 Summary
1.8 Questions
2 SCTP Endpoint and Association
2.1 SCTP Transport Address
2.2 SCTP Endpoint
2.2.1 Multi-homed SCTP Endpoint
2.3 SCTP Association
2.4 Operation of an SCTP Association
2.4.1 Functional View of an Association
2.4.2 Functional Responsibilities of an SCTP Endpoint
2.4.3 Operation States of an Association
2.5 IETF Debate and Issues
2.6 Summary
2.7 Questions
3 Format of SCTP Messages
3.1 Basic Layout-The Bits on the Wire
3.1.1 The SCTP Common Header
3.1.2 Elements in a Chunk
3.1.3 Defined Chunk Types and Extensibility
3.1.4 General Rules When Dealing with Chunks
3.1.5 Chunk Parameters
3.1.6 Other Considerations
3.2 Basic Chunk Descriptions
3.2.1 The INIT Chunk
3.2.2 The INIT-ACK Chunk
3.2.3 The COOKIE-ECHO Chunk
3.2.4 The COOKIE-ACK Chunk
3.2.5 The DATA Chunk
3.2.6 The SACK Chunk
3.2.7 The HEARTBEAT Chunk
3.2.8 The HEARTBEAT-ACK Chunk
3.2.9 The SHUTDOWN Chunk
3.2.10 The SHUTDOWN-ACK Chunk
3.2.11 The SHUTDOWN-COMPLETE Chunk
3.2.12 The ERROR Chunk
3.2.13 The Error Cause Parameters
3.2.14 The ABORT Chunk
3.3 IETF Debate and Issue
3.4 Summary
3.5 Questions
4 Setup of an Association
4.1 The INIT Chunk
4.1.1 Formulating the Chunk
4.1.2 INIT Parameters
4.1.3 Timer and Retransmission for INIT
4.2 The INIT-ACK Response
4.2.1 Formulating the Response
4.2.2 INIT-ACK Parameters
4.2.3 Preventing Resource Attacks
4.3 The COOKIE-ECHO Chunk
4.3.1 Formulating the Chunk
4.3.2 Bundling Data with the COOKIE-ECHO
4.3.3 Timer and Retransmission for COOKIE-ECHO
4.4 The COOKIE-ACK Chunk
4.4.1 Validating and Unpacking the Cookie
4.4.2 Formulating the COOKIE-ACK
4.4.3 Bundling DATA and SACK with COOKIE-ACK
4.5 Address Usage When Starting an Association
4.6 Chunk Rejections During an Association Setup
4.6.1 When Is an INIT Not Acceptable?
4.6.2 When Is a Cookie Not Worth Eating?
4.7 Handling Unexpected Initialization Chunks
4.7.1 Association Tie-Tags and Their Values
4.7.2 Handling Overlapping Initialization Chunks
4.7.3 Case Study 1:Initialization Collision
4.7.4 Case Study 2:Peer Restart
4.7.5 A Lost COOKIE-ACK
4.8 IETF Debate and Issues
4.9 Summary
4.10 Questions
5 User Data Transfer
5.1 User Message Transfer Overview
5.1.1 How User Messages Are Sent
5.1.2 How User Messages Are Received
5.1.3 Summary of Data Transfer Overview
5.2 Obeying the Transmission Rules
5.2.1 Congestion Window and Receiver Window
5.2.2 Rules for Data Transmission
5.3 Acknowledgment Rules
5.3.1 Where Should a SACK Be Sent?
5.3.2 When Should a SACK Be Sent?
5.3.3 What Should Be Reported in a SACK?
5.3.4 Revoking an Acknowledgment by the Receiver
5.3.5 Processing of Received SACK by Data Sender
5.4 Management of Retransmission Timer
5.4.1 Determine Retransmission Timeout(RTO)
5.4.2 Retransmission Timer Rules
5.4.3 Handling Retransmission Timer Expiration
5.5 Multi-homed Data Sender and Receiver
5.5.1 Selection of Primary Transport Address
5.5.2 Transferring Data between Multi-homed Endpoints
5.5.3 Sending a SACK on Duplicate Data
5.6 Stream Identifier and Stream Sequence Number
5.6.1 Ordered and Unordered Message Delivery
5.7 Passing a Payload Protocol Identifier
5.8 Fragmentation and Bundling of User Messages
5.8.1 When Should User Messages Be Fragmented?
5.8.2 How Should User Messages Be Fragmented?
5.8.3 Reassembling a Fragmented Message at the Data Receiver
5.8.4 User Message Bundling
5.9 Adler-32 Checksum
5.9.1 Generation of the Adler-32 Checksum by the Data Sender
5.9.2 Validation of the Adler-32 Checksum by the Data Receiver
5.10 Error Handling
5.10.1 Handling a Data Chunk with an Invalid Stream Identifier
5.10.2 Handling an Empty Data Chunk
5.10.3 Handling Out-of-State Data
5.11 IETF Debate and Issues
5.12 Summary
5.13 Questions
6 Congestion Control and avoidance
6.1 The Cause of Network Congestion Collapse
6.2 Basic Concept of Congestion Control
6.3 SCTP Congestion Control Algorithm
6.3.1 How Does Your cwnd Grow?
6.3.2 How Does Your cwnd Shrink?
6.4 Interesting Details of the Algorithms
6.5 Path MTU Discovery
6.5.1 A Refresher on How PMTU Works
6.5.2 PMTU Discovery in SCTP
6.6 Explicit Congestion Notification
6.7 IETF Debate and Issues
6.8 Summary
6.9 Questions
7 Failure Detection and Recovery
7.1 The Types of Failure SCTP Detects
7.1.1 Unreachable Destination Address
7.1.2 Unreachable Peer Endpoint
7.2 How to Detect an Unreachable Address
7.2.1 Using HEARTBEAT Chunks to Monitor Reachability
7.2.2 Address-Unreachability Detection Algorithm
7.2.3 More on Using the SCTP HEARTBEAT
7.2.4 Handling an Unreachable Primary Destination Address
7.3 How to Detect an Unreachable Peer
7.3.1 When an Association Enters the Dormant State
7.4 Fault Resilience Communication and Routing Configuration
7.4.1 Maximizing Path Diversity
7.4.2 Asymmetric Multi-homing Configuration
7.4.3 Effects of Source Address Selection
7.5 IETF Debate and Issues
7.6 Summary
7.7 Questions
8 Auxiliary SCTP Packet Handling Functions
8.1 Handling Out-of-the-Blue SCTP Packets
8.2 SCTP Packet Verification Tag Rules
8.2.1 Basic Verification Tag Rules
8.2.2 special Verification Tag Rules
8.3 IETF Debate and Discussion
8.4 Summary
8.5 Questions
9 Close of an Association
9.1 The Graceful Shutdown
9.1.1 Sending SHUTDOWN
9.1.2 Receiving SHUTDOWN
9.1.3 Sending SHUTDOWN-COMPLETE
9.1.4 Race Conditions and Lost Messages
9.2 The Abortive Shutdown
9.2.1 ABORT Usage
9.2.2 Sending an ABORT
9.2.3 Receiving an ABORT
9.3 IETF Debate and Issues
9.4 Summary
9.5 Questions
10 IANA and Future Extension of SCTP
10.1 SCTP Port Number Assignment
10.2 IETF Chunk Extensions
10.3 IETF Parameter Extensions
10.4 IETF Extensions to Error Causes
10.5 Payload Protocol Identifier
10.6 Summary
11 A Sockets API for SCTP
11.1 A Quick Review of the TCP Sockets API
11.1.1 The Server-Side Application
11.1.2 The Client-Side Application
11.2 The TCP-Style SCTP Sockets API Extension
11.3 The UDP-Style SCTP Sockets API Extension
11.3.1 A View of a Client Using a UDP-Style SCTP socket
11.3.2 A View of a Server Using a UDP-Style SCTP socket
11.4 Common API Mechanisms for Both Models
11.4.1 Using the sendmsg() and recvmsg() Calls with SCTP
11.4.2 Notification Information
11.5 Summary
11.6 Questions
12 Comparing SCTP to TCP
12.1 The Similarities between SCTP and TCP
12.1.1 Startup
12.1.2 Reliability and Ordering
12.1.3 Congestion Control
12.1.4 Closing Down
12.2 The Differences Between SCTP and TCP
12.2.1 Differences at Startup
12.2.2 Head-of-Line Blocking
12.2.3 Message Boundaries
12.2.4 Unordered Delivery
12.2.5 Selective Acknowledgment
12.2.6 Multi-homing
12.2.7 A Closing Difference
12.3 Summary
12.4 Questions
13 Using Streams in SCTP
13.1 A File Transfer Application
13.2 A Telephone Call Control Application
13.3 A Web Browser
13.4 Summary
13.5 Questions
14 A User Space Implementation of SCTP
14.1 The Big Picture
14.2 Data Structures
14.3 Events and the API
14.4 Association Setup
14.4.1 When an Upper Layer Issues an Associate Primitive
14.4.2 When a Peer Sends the SCTP Endpoint an INIT
14.5 Data Transfer
14.5.1 SACK Processing
14.5.2 Inbound DATA Chunk Processing
14.5.3 Finishing Off by Sending
14.6 Congestion Control,PMTU,and RTO
14.6.1 Congestion Control
14.6.2 PMTU Discovery
14.6.3 RTO Calculation
14.7 Fault Management
14.8 Tag and Out-of-the-Blue Handling
14.9 Association Close-Down
14.9.1 At the Upper Layer's Request
14.9.2 Reception of a SHUTDOWN
14.10 Summary
REFERENCES
GLOSSARY AND ABBREVIATIONS
INDEX
PREFACE
1 Introduction and Overview
1.1 IP Networking Basics
1.1.1 How Messages Are Delivered in an IP Network
1.1.2 IP Protocols
1.1.3 IP Multi-homing
1.2 What Is SCTP?
1.2.1 Where Does SCTP Fit in the IP Architecture?
1.3 Motivation for Developing SCTP
1.3.1 TCP Limitations
1.3.2 UDP Limitations
1.3.3 SCTP Enhancements over TCP and UDP
1.4 A Short History of SCTP Development
1.4.1 Early Works Before the IETF and MDTP
1.4.2 IETF Refinements
1.5 Major General SCTP Issues Debated in the IETF
1.5.1 Do We Really Need a New Transport Protocol?
1.5.2 Over UDP Versus Over IP
1.6 Organization of this Book
1.7 Summary
1.8 Questions
2 SCTP Endpoint and Association
2.1 SCTP Transport Address
2.2 SCTP Endpoint
2.2.1 Multi-homed SCTP Endpoint
2.3 SCTP Association
2.4 Operation of an SCTP Association
2.4.1 Functional View of an Association
2.4.2 Functional Responsibilities of an SCTP Endpoint
2.4.3 Operation States of an Association
2.5 IETF Debate and Issues
2.6 Summary
2.7 Questions
3 Format of SCTP Messages
3.1 Basic Layout-The Bits on the Wire
3.1.1 The SCTP Common Header
3.1.2 Elements in a Chunk
3.1.3 Defined Chunk Types and Extensibility
3.1.4 General Rules When Dealing with Chunks
3.1.5 Chunk Parameters
3.1.6 Other Considerations
3.2 Basic Chunk Descriptions
3.2.1 The INIT Chunk
3.2.2 The INIT-ACK Chunk
3.2.3 The COOKIE-ECHO Chunk
3.2.4 The COOKIE-ACK Chunk
3.2.5 The DATA Chunk
3.2.6 The SACK Chunk
3.2.7 The HEARTBEAT Chunk
3.2.8 The HEARTBEAT-ACK Chunk
3.2.9 The SHUTDOWN Chunk
3.2.10 The SHUTDOWN-ACK Chunk
3.2.11 The SHUTDOWN-COMPLETE Chunk
3.2.12 The ERROR Chunk
3.2.13 The Error Cause Parameters
3.2.14 The ABORT Chunk
3.3 IETF Debate and Issue
3.4 Summary
3.5 Questions
4 Setup of an Association
4.1 The INIT Chunk
4.1.1 Formulating the Chunk
4.1.2 INIT Parameters
4.1.3 Timer and Retransmission for INIT
4.2 The INIT-ACK Response
4.2.1 Formulating the Response
4.2.2 INIT-ACK Parameters
4.2.3 Preventing Resource Attacks
4.3 The COOKIE-ECHO Chunk
4.3.1 Formulating the Chunk
4.3.2 Bundling Data with the COOKIE-ECHO
4.3.3 Timer and Retransmission for COOKIE-ECHO
4.4 The COOKIE-ACK Chunk
4.4.1 Validating and Unpacking the Cookie
4.4.2 Formulating the COOKIE-ACK
4.4.3 Bundling DATA and SACK with COOKIE-ACK
4.5 Address Usage When Starting an Association
4.6 Chunk Rejections During an Association Setup
4.6.1 When Is an INIT Not Acceptable?
4.6.2 When Is a Cookie Not Worth Eating?
4.7 Handling Unexpected Initialization Chunks
4.7.1 Association Tie-Tags and Their Values
4.7.2 Handling Overlapping Initialization Chunks
4.7.3 Case Study 1:Initialization Collision
4.7.4 Case Study 2:Peer Restart
4.7.5 A Lost COOKIE-ACK
4.8 IETF Debate and Issues
4.9 Summary
4.10 Questions
5 User Data Transfer
5.1 User Message Transfer Overview
5.1.1 How User Messages Are Sent
5.1.2 How User Messages Are Received
5.1.3 Summary of Data Transfer Overview
5.2 Obeying the Transmission Rules
5.2.1 Congestion Window and Receiver Window
5.2.2 Rules for Data Transmission
5.3 Acknowledgment Rules
5.3.1 Where Should a SACK Be Sent?
5.3.2 When Should a SACK Be Sent?
5.3.3 What Should Be Reported in a SACK?
5.3.4 Revoking an Acknowledgment by the Receiver
5.3.5 Processing of Received SACK by Data Sender
5.4 Management of Retransmission Timer
5.4.1 Determine Retransmission Timeout(RTO)
5.4.2 Retransmission Timer Rules
5.4.3 Handling Retransmission Timer Expiration
5.5 Multi-homed Data Sender and Receiver
5.5.1 Selection of Primary Transport Address
5.5.2 Transferring Data between Multi-homed Endpoints
5.5.3 Sending a SACK on Duplicate Data
5.6 Stream Identifier and Stream Sequence Number
5.6.1 Ordered and Unordered Message Delivery
5.7 Passing a Payload Protocol Identifier
5.8 Fragmentation and Bundling of User Messages
5.8.1 When Should User Messages Be Fragmented?
5.8.2 How Should User Messages Be Fragmented?
5.8.3 Reassembling a Fragmented Message at the Data Receiver
5.8.4 User Message Bundling
5.9 Adler-32 Checksum
5.9.1 Generation of the Adler-32 Checksum by the Data Sender
5.9.2 Validation of the Adler-32 Checksum by the Data Receiver
5.10 Error Handling
5.10.1 Handling a Data Chunk with an Invalid Stream Identifier
5.10.2 Handling an Empty Data Chunk
5.10.3 Handling Out-of-State Data
5.11 IETF Debate and Issues
5.12 Summary
5.13 Questions
6 Congestion Control and avoidance
6.1 The Cause of Network Congestion Collapse
6.2 Basic Concept of Congestion Control
6.3 SCTP Congestion Control Algorithm
6.3.1 How Does Your cwnd Grow?
6.3.2 How Does Your cwnd Shrink?
6.4 Interesting Details of the Algorithms
6.5 Path MTU Discovery
6.5.1 A Refresher on How PMTU Works
6.5.2 PMTU Discovery in SCTP
6.6 Explicit Congestion Notification
6.7 IETF Debate and Issues
6.8 Summary
6.9 Questions
7 Failure Detection and Recovery
7.1 The Types of Failure SCTP Detects
7.1.1 Unreachable Destination Address
7.1.2 Unreachable Peer Endpoint
7.2 How to Detect an Unreachable Address
7.2.1 Using HEARTBEAT Chunks to Monitor Reachability
7.2.2 Address-Unreachability Detection Algorithm
7.2.3 More on Using the SCTP HEARTBEAT
7.2.4 Handling an Unreachable Primary Destination Address
7.3 How to Detect an Unreachable Peer
7.3.1 When an Association Enters the Dormant State
7.4 Fault Resilience Communication and Routing Configuration
7.4.1 Maximizing Path Diversity
7.4.2 Asymmetric Multi-homing Configuration
7.4.3 Effects of Source Address Selection
7.5 IETF Debate and Issues
7.6 Summary
7.7 Questions
8 Auxiliary SCTP Packet Handling Functions
8.1 Handling Out-of-the-Blue SCTP Packets
8.2 SCTP Packet Verification Tag Rules
8.2.1 Basic Verification Tag Rules
8.2.2 special Verification Tag Rules
8.3 IETF Debate and Discussion
8.4 Summary
8.5 Questions
9 Close of an Association
9.1 The Graceful Shutdown
9.1.1 Sending SHUTDOWN
9.1.2 Receiving SHUTDOWN
9.1.3 Sending SHUTDOWN-COMPLETE
9.1.4 Race Conditions and Lost Messages
9.2 The Abortive Shutdown
9.2.1 ABORT Usage
9.2.2 Sending an ABORT
9.2.3 Receiving an ABORT
9.3 IETF Debate and Issues
9.4 Summary
9.5 Questions
10 IANA and Future Extension of SCTP
10.1 SCTP Port Number Assignment
10.2 IETF Chunk Extensions
10.3 IETF Parameter Extensions
10.4 IETF Extensions to Error Causes
10.5 Payload Protocol Identifier
10.6 Summary
11 A Sockets API for SCTP
11.1 A Quick Review of the TCP Sockets API
11.1.1 The Server-Side Application
11.1.2 The Client-Side Application
11.2 The TCP-Style SCTP Sockets API Extension
11.3 The UDP-Style SCTP Sockets API Extension
11.3.1 A View of a Client Using a UDP-Style SCTP socket
11.3.2 A View of a Server Using a UDP-Style SCTP socket
11.4 Common API Mechanisms for Both Models
11.4.1 Using the sendmsg() and recvmsg() Calls with SCTP
11.4.2 Notification Information
11.5 Summary
11.6 Questions
12 Comparing SCTP to TCP
12.1 The Similarities between SCTP and TCP
12.1.1 Startup
12.1.2 Reliability and Ordering
12.1.3 Congestion Control
12.1.4 Closing Down
12.2 The Differences Between SCTP and TCP
12.2.1 Differences at Startup
12.2.2 Head-of-Line Blocking
12.2.3 Message Boundaries
12.2.4 Unordered Delivery
12.2.5 Selective Acknowledgment
12.2.6 Multi-homing
12.2.7 A Closing Difference
12.3 Summary
12.4 Questions
13 Using Streams in SCTP
13.1 A File Transfer Application
13.2 A Telephone Call Control Application
13.3 A Web Browser
13.4 Summary
13.5 Questions
14 A User Space Implementation of SCTP
14.1 The Big Picture
14.2 Data Structures
14.3 Events and the API
14.4 Association Setup
14.4.1 When an Upper Layer Issues an Associate Primitive
14.4.2 When a Peer Sends the SCTP Endpoint an INIT
14.5 Data Transfer
14.5.1 SACK Processing
14.5.2 Inbound DATA Chunk Processing
14.5.3 Finishing Off by Sending
14.6 Congestion Control,PMTU,and RTO
14.6.1 Congestion Control
14.6.2 PMTU Discovery
14.6.3 RTO Calculation
14.7 Fault Management
14.8 Tag and Out-of-the-Blue Handling
14.9 Association Close-Down
14.9.1 At the Upper Layer's Request
14.9.2 Reception of a SHUTDOWN
14.10 Summary
REFERENCES
GLOSSARY AND ABBREVIATIONS
INDEX
猜您喜欢