linux下使用TCP存活(keepalive)定时器
2008-05-22 14:34
/*由
hi.baidu.com/zhihui3409
收集整理,转载时请附带
此行*/
一、什么是keepalive定时器?[
1]
在一
个空闲的(
idle
)
TCP
连接上,没有任
何的数据流,许多
TCP/IP
的初学者都对此感到惊奇。也就是说,如果
TCP
连
接两端没有任何一个进程在向对方发送数据,那么在这两个
TCP
模块之间没有任何的数据交换。你可能
在其它的网络协议中发现有轮询(
polling
),但在
TCP
中
它不存在。言外之意就是我们只要启动一个客户端进程,同服务器建立了
TCP
连接,不管你离开几小
时,几天,几星期或是几个月,连接依旧存在。中间的路由器可能崩溃或者重启,电话线可能
go down
或
者
back up
,只要连接两端的主机没有重启,连接依旧保持建立。
这就
可以认为不管是客户端的还是服务器端的应用程序都没有应用程序级(
application-level
)
的定时器来探测连接的不活动状态(
inactivity
),从而引起任何一个应用程序的终止。
然
而有的时候,服务器需要知道客户端主机是否已崩溃并且关闭,或者崩溃但重启。许多实现提供了存活定时器来完成这个任务。
存活
定时器是一个包含争议的特征。许多人认为,即使需要这个特征,这种对对方的轮询也应该由应用程序来完成,而不是由
TCP
中
实现。此外,
如果两个终端系统之间的某个中间网络上有连接的暂时中断,那么存活选项(
option
)
就能够引起两个进程间一个良好连接的终止。例如,如果正好在某个中间路由器崩溃、重启的时候发送存活探测,
TCP
就
将会认为客户端主机已经崩溃,但事实并非如此。
存活
(
keepalive
)并不是
TCP
规范的
一部分。在
Host Requirements RFC
罗列有不使用它的三个理由:(
1
)
在短暂的故障期间,它们可能引起一个良好连接(
good connection
)被释放(
dropped
),
(
2
)它们消费了不必要的宽带,(
3
)在以
数据包计费的互联网上它们(额外)花费金钱。然而,在许多的实现中提供了存活定时器。
一些
服务器应用程序可能代表客户端占用资源,它们需要知道客户端主机是否崩溃。存活定时器可以为这些应用程序提供探测服务。
Telnet
服
务器和
Rlogin
服务器的许多版本都默认提供存活选项。
个人
计算机用户使用
TCP/IP
协议通过
Telnet
登
录一台主机,这是能够说明需要使用存活定时器的一个常用例子。如果某个用户在使用结束时只是关掉了电源,而没有注
相关文档:
LINUX(运行在VWMARE)上自带的SVN,Windows上装的是TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.msi。
在Linux上配置SNV。
1、创建repository。
> svnadmin create /myhome/svnhome/project
其中svnhome是放svn的目录,下一级是不同的repository名。
2、准备好源代码。按下列目录排好。
project/branches
project/ ......
1、LINUX下TTY、CONSOLE、串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的?
tty和console这些概念主要是一些虚拟设备的概念,而串口更多的是指一个真正的设备驱动。Tty实际是一类终端I/O设备的抽象,它实际上更多的是一个管理的概念,目的是向上层的VFS提供 ......
1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到
比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面 ......
今天装了个RHCL5,不能加载网卡就更别说驱动了,用以下命令查看下网卡信息:
一、找硬件
[root@localhost
~]# kudzu --probe --class=network
class: NETWORK
bus: PCI
detached: 0
device: eth0
desc: "Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet
"
vendorId: 10ec
dev ......