2016-03-07 2 views
-1

Как долго хранится сетевой магазин ОС перед его отбрасыванием?Как долго хранится сетевой ресурс ОС перед его отбрасыванием?

Предположим, у меня есть открытый разъем на каком-либо порту, который открыт для входящих пакетов.

Что произойдет, если какой-либо другой хост в сети отправит много пакетов в этот сокет, а сокет не выдает вызов read() для чтения этих данных? Будет ли ОС начинать уничтожать данные в режиме FIFO, или OS перестанет принимать (отклонять) входящие пакеты?

Я прочитал, что в хранилищах ОС хранится трафик, связанный с гнездом в отдельных буферах, то есть для каждого (открытого) сокета существуют отдельные встроенные/исходящие буферы. Означает ли это, когда этот буфер заполнен?

Кроме того, что произойдет, если какой-либо хост отправляет пакеты в закрытый сокет? ОС отказывается от пакетов? Или они временно хранятся в некотором буфере?

+0

https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Flow_control –

+0

Вы должны прочитать RFC для TCP/UDP. Зачем спрашивать здесь, когда информация доступна бесплатно? Зачем просить, чтобы это было бессмысленно переписано? –

ответ

2

До тех пор, пока данные не будут прочитаны или местный разъем не будет закрыт.

В случае TCP, который подразумевает рекламу нулевого окна отправки для однорангового узла, когда буфер приема сокета заполнен. С другой стороны, сегмент TCP, который выходит из строя, может быть просто проигнорирован.

В случае UDP это подразумевает отбрасывание дейтаграмм, которые поступают после заполнения буфера приема сокета.

+0

Таким образом, в случае TCP данные не теряются, так как приемник заставит отправителя не отправлять больше, пока зеленый индикатор не будет обновлен окном. Однако в случае UDP данные будут потеряны, не так ли? – Shuzheng

+0

Это то, что означает «падение дейтаграмм». – EJP