СПОСОБ ИЗМЕНЕНИЯ СОСТОЯНИЯ ПРОТОКОЛА ПЕРЕДАЧИ С УПРАВЛЕНИЕМ ПОТОКОМ

1. Способ изменения состояния протокола передачи с управлением потоком, включающий следующие шаги:
если протокол передачи с управлением потоком (SCTP) на локальном конце решает, что имеются неотправленные данные в буфере передачи, и окно приема SCTP на противоположном конце больше или равно длине первых неотправленных в настоящий момент данных после того, как ассоциация SCTP на локальном конце входит в состояние ОЖИДАНИЕ ЗАКРЫТИЯ, то SCTP локального конца отправляет первые неотправленные данные к SCTP противоположного конца и закрывает ассоциацию SCTP, если ответ не получен от SCTP противоположного конца.
2. Способ по п.1, в котором
упомянутое отсутствие ответа от SCTP противоположного конца означает, что ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
3. Способ по п.1, в котором
упомянутое отсутствие ответа от SCTP противоположного конца конкретно означает, что
SCTP на локальном конце устанавливает максимальное число повторных передач данных и повторно передает первые неотправленные данные к SCTP противоположного конца, если ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой, после того как первые неотправленные данные переданы к SCTP противоположного конца; и
SCTP на локальном конце решает, что ответ не получен от SCTP противоположного конца, когда число повторных передач данных равно максимальному числу повторных передач данных, и ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
4. Способ по п.1 или 2, включающий следующий шаг:
закрывая ассоциацию, SCTP на локальном конце также сообщает о разрыве ассоциации пользователю верхнего уровня и отправляет сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на закрытое состояние.
5. Способ по п.1 или 2, включающий следующие шаги, когда SCTP на локальном конце решает, что имеются неотправленные данные в буфере передачи, и окно приема SCTP противоположного конца меньше чем длина первых неотправленных в настоящий момент данных:
SCTP локального конца отправляет сообщение зондирования к SCTP противоположного конца, причем это сообщение зондирования является первыми данными, помеченными как неотправленные в буфере передачи;
запускает таймер Tw ожидания передачи сообщения зондирования, и если SCTP на локальном конце получает сообщение ответа от SCTP противоположного конца перед истечением таймера Tw ожидания передачи сообщения зондирования, то SCTP на локальном конце определяет порядковый номер передачи (TSN) и окно приема в выборочном подтверждении приема (SACK) в сообщении ответа; определяет, что TSN, полученный от SCTP противоположного конца, больше или равен TSN первых данных, помеченных как неотправленные в буфере передачи, а окно приема в сообщении ответа больше или равно длине первых данных, помеченных как неотправленные в буфере передачи, и тогда удаляет данные, TSN которых равен TSN в SACK, и все данные перед упомянутыми данными из буфера передачи, и определяет все остающиеся данные в буфере передачи как неотправленные.
6. Способ по п.5, далее включающий следующий шаг:
если SCTP на локальном конце не получает сообщение ответа от SCTP противоположного конца после истечения таймера Tw ожидания передачи сообщения зондирования, SCTP на локальном конце закрывает ассоциацию, сообщая о разрыве ассоциации пользователю верхнего уровня и отправляя сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на закрытое состояние.
7. Способ по п.5, далее включающий:
если SCTP на локальном конце не получает сообщение ответа от SCTP противоположного конца после истечения таймера Tw ожидания передачи сообщения зондирования, SCTP на локальном конце определяет, является ли число передач сообщения зондирования меньшим, чем максимальное число передач сообщения зондирования, и если да, то SCTP на локальном конце повторно передает сообщение зондирования и добавляет 1 к числу передач сообщения зондирования; иначе SCTP на локальном конце закрывает ассоциацию, сообщает о разрыве ассоциации пользователю верхнего уровня и отправляет сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на закрытое состояние.
8. Способ по п.1 или 2, далее включающий:
если SCTP на локальном конце определяет, что нет никаких неотправленных данных в буфере передачи, то SCTP на локальном конце проверяет, имеются ли данные, помеченные как отправленные, и если нет, то SCTP на локальном конце отправляет сообщение ЗАКРЫТИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на состояние ОТПРАВЛЕНО ЗАКРЫТИЕ; а если есть данные, помеченные как отправленные, то SCTP на локальном конце, определяет, получен ли ответ от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
9. Способ по любому из пп.1-3, далее включающий:
после того как SCTP локального конца отправляет первые неотправленные данные к SCTP противоположного конца, SCTP на локальном конце помечает эти данные как отправленные, корректирует окно приема SCTP противоположного конца путем вычитания из него длины данных, переданных в этот раз, и если ответ получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой, то SCTP на локальном конце удаляет данные, для которых ответ был получен от SCTP противоположного конца, из буфера передачи;
после того как все данные из буфера передачи локального конца SCTP успешно отправлены и получен ответ от SCTP противоположного конца, SCTP на локальном конце отправляет сообщение ЗАКРЫТИЕ к SCTP противоположного конца и изменяет состояние SCTP на локальном конце на состояние ОТПРАВЛЕНО ЗАКРЫТИЕ.
10. Способ по п.5, в котором
упомянутое окно приема относится к размеру остающегося пространства в буфере приема SCTP противоположного конца, который переносится в данных ответа от SCTP противоположного конца;
упомянутое сообщение зондирования относится к сообщению, переданному от SCTP локального конца к SCTP противоположного конца для того, чтобы обнаружить данные, принятые SCTP противоположного конца, и длину окна приема.