|
|
|
| Может ли быть несколько tcp-пакетов в одной ip-датаграмме? И наоборот, tcp-пакет состоять из нескольких ip-датаграмм? | |
|
|
|
|
|
|
|
для: dump
(21.11.2011 в 14:21)
| | >Может ли быть несколько tcp-пакетов в одной ip-датаграмме?
Теоретически да, размер позволяет... практически маловероятно - усилий на их склеивание уйдет больше, чем просто на отправку в разных датаграммах.
>И наоборот, tcp-пакет состоять из нескольких ip-датаграмм?
Вообще, допустимый размер ip-датаграммы с лихвой перекрывает максимальный размер tcp-пакета. Однако вышестоящий tcp-пакет, можно хоть по байту разрезать и пересылать в разных ip-датаграммах, если нижележащий код и оборудования "решат" по каким-то причинам так действовать (задано так, большие пакеты теряются) - никто им помешать не сможет.
PS Но вообще тут я уже могу врать, на таком уровне не копался (вернее копался, но довольно давно)... | |
|
|
|
|
|
|
|
для: cheops
(21.11.2011 в 15:34)
| | >Теоретически да, размер позволяет...
Т.е. это не запрещено стандартами? И что обе описанные ситуации(когда ip-датаграмма либо меньше, либо больше tcp-пакета) могут быть реализованы с tcp/ip стеке Windows или UNIX? | |
|
|
|
|
|
|
|
для: dump
(21.11.2011 в 16:05)
| | Второй точно не запрещен, а первый - вычитывать нужно. Однако, если это разрешено, то все стеки эту ситуацию обрабатывают корректно. Собственно получателю не так много работы - нужно просто распаковать IP-датаграмму и взять от туда два или более TCP-пакета. Только вот что-то мне подсказывает, что скорее всего такая ситуация места не имеет, а может и явно запрещена - это нужно читать RFC (точно я не знаю, могу покопаться в своей библиотеки, если будет время). | |
|
|
|