TTL сообщает пакету, через сколько маршрутизаторов он может пройти, прежде чем сдаться, в то время как Keep Alive сообщает соединению, как долго он должен оставаться открытым без активности.
Из того, что я читал о Лингере, я не вижу разницы с поддержанием жизни, возможно, я что-то здесь упускаю.
РЕДАКТИРОВАТЬ: опция linger позволяет вам закрыть сокет, в то же время попросив его подождать некоторое время, чтобы убедиться, что данные все еще находятся на проводе; с этой страницы , мы читаем, что
В буфере исходящей сети могут оставаться данные, доступные после
Вы закрываете сокет. Если вы хотите указать количество времени, которое
Сокет попытается передать неотправленные данные после закрытия, создайте
LingerOption с включенным параметром, установленным в true, и секундами
параметр установлен на желаемое количество времени. Параметр секунд
используется для указания того, как долго вы хотите, чтобы гнездо оставалось
подключен до истечения времени ожидания. Если вы не хотите, чтобы гнездо осталось
после закрытия на любой промежуток времени создайте LingerOption
с включенным параметром, установленным в false. В этом случае сокет будет
немедленно закройте и все неотправленные данные будут потеряны. После создания передать
LingerOption для метода Socket.SetSocketOption. Если ты
отправка и получение данных с помощью TcpClient, а затем передать
LingerOption для метода TcpClient.LingerState.