TCP 传输控制协议(12)


RECEIVE调用
CLOSED状态
假如用户没有权利访问这个连接,返回"error: connection illegal for this proces
s" 。假如有权利,则返回"error: connection does not exist" 。
在LISTEN,SYN-SENT和SYN-RECEIVED状态下
在进入ESTABLISHED状态后,将数据放入队列预备处理 。假如队列中没有空间,返回"er
ror: insufficient resources" 。
在ESTABLISHED,FIN-WAIT-1和FIN-WAIT-2状态下
假如没有接收到足够的数据段满足请求,将请求放入队列 。假如队列中没有空间记录RE
CEIVE,返回"error: insufficient resources" 。重新将接收数据段放入接收缓冲区,
并返回给用户 。在这种情况下,可以设置PUSH标记 。假如RCV.UP比现在传送给用户的要
大,通知用户有紧急数据 。
CLOSE-WAIT状态
因为远方TCP已经发送了FIN,RECEIVE必须由现在在缓冲区但还未传送给用户的数据满足
。假如没有数据了,RECEIVE会得到"error: connection closing"的响应 。
在CLOSING,LAST-ACK和TIME-WAIT状态下返回"error: connection closing".
 
CLOSE 调用
CLOSED状态
假如用户没有权利访问这个连接,返回"error: connection illegal for this proces
s" 。假如有权利,则返回"error: connection does not exist" 。
LISTEN状态
存在着的任何RECEIVE都会返回"error: closing"的响应 。删除TCB,然后进入CLOSED状
态并返回 。
SYN-SENT状态
删除TCB并返回"error: closing"响应给任何在队列中的SEND或RECEIVE 。
SYN-RECEIVED状态
假如没有发送SEND,而且没有等待发送的数据了,则形成并发送FIN数据段,进入FIN-W
AIT-1状态;否则在进入ESTABLISHED状态后将命令保存在队列中等待处理 。
ESTABLISHED状态
将这一命令保存在队列中,直到所有正在进行的SEND完成后,形成并发送FIN数据段,然
后进入FIN-WAIT-1状态 。
在FIN-WAIT-1和FIN-WAIT-2状态下
严格地说,这将会是个错误,会收到"error: connection closing" 。只要第二个FIN没
有发出,也可以收到一个"ok"响应 。
CLOSE-WAIT状态
直到所有SEND命令完成后再将这个请求放入队列;然后发送FIN数据段,进入CLOSING状
态 。
在CLOSING,LAST-ACK和TIME-WAIT状态下返回"error: connection closing" 。
 
ABORT调用
CLOSED状态
假如用户没有权利访问这个连接,返回"error: connection illegal for this proces
s" 。假如有权利,则返回"error: connection does not exist" 。
LISTEN状态
任何存在的RECEIVE都应该返回"error: connection reset",删除TCB,进入CLOSED状态
,然后返回 。
SYN-SENT状态
对于所有在队列中的SEND和RECEIVE,都返回"connection reset",删除TCB,进入CLOS
ED状态,然后返回 。
在SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2和CLOSE-WAIT状态
发送数据段,对于所有在队列中的SEND和RECEIVE,都返回"co
nnection reset",;所有要进行传送或重新传送的数据段马上进行,删除TCB,进入CL
OSED状态,然后返回 。
在CLOSING,LAST-ACK和TIME-WAIT状态下返回"ok",删除TCB,进入CLOSED状态,然后返
回 。
 
STATUS 调用
CLOSED状态
假如用户没有权利访问这个连接,返回"error: connection illegal for this proces
s" 。假如有权利,则返回"error: connection does not exist" 。
LISTEN状态
返回"state = LISTEN"和TCB指针 。
SYN-SENT状态
返回"state = SYN-SEND"和TCB指针 。
SYN-RECEIVED状态
返回"state = SYN-RECEIVED"和TCB指针 。
ESTABLISHED状态
返回"state = ESTABLISHED"和TCB指针 。
FIN-WAIT-1状态
返回"state = FIN-WAIT-1"和TCB指针 。

推荐阅读