SOCKET与底层TCP协议的关系

客户端调用connect
    底层发送SYN包到服务端
    如果此时服务端尚未listen,
        则返回RST+ACK,connect返回失败;
    如果此时服务端已经调用listen,
        如果listen队列未满,
            返回SYN+ACK,客户端应答ACK,握手完成,connect返回成功;
        如果listen队列已满,
            返回RST+ACK,connect返回失败;

服务端调用accept与否不影响握手


连接建立之后
调用shutdown(SD_SEND),底层发送FIN包到对方,对方应答ACK
调用shutdown(SD_RECEIVE),
    如果此时没有数据等待recv,
        则不做任何处理,可正常发送数据;
    如果此时有数据在等待recv或者后续收到数据,
        则发送RST+ACK,之后连接终端,双方都不能再发送/接收数据;

调用shutdown后,套接字相关资源未释放,直到closesocket
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值