TCP客户端与服务器函数调用过程及特殊情况

TCP连接的建立通过三次握手完成,客户端先发送SYN请求,服务器回应SYN和ACK,客户端再次发送ACK确认连接。释放连接则需要四次挥手,包括客户端发送FIN,服务器确认并发送FIN,客户端再次确认,最后服务器发送ACK。特殊情况包括连接中断、服务器进程崩溃、服务器主机崩溃等,解决方式包括重试、keep-alive策略等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP客户端与服务器函数调用过程及特殊情况

在这里插入图片描述
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:

SYN(synchronous建立联机)

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束)

RST(reset重置)

URG(urgent紧急)

Sequence number(顺序号码)

Acknowledge number(确认号码)

一般而言服务器是被动建立连接,服务器调用socket创建套接字,bind给socket分配具体的ip地址以及端口号,再调用listen函数将刚创建好的socket放入监听队列,之后调用accept等待指定地址(协议)的客户端的连接。

客户端调用socket创建套接字,随后connect来建立连接,客户端的socket的bind操作在connect中隐藏完成。

调用connect之后发生“三次握手”建立TCP连接,随后客户端与服务器之间开始传输数据;

  1. 第一次握手:客户端发送SYN标志,序列号seq(随机生成,图中序列号是0是wireshark做了相对处理),源端口随机生成,目标端口5000(程序决定)
  2. 第二次握手:服务端发回客户端,ACK标识同意接收连接,此时从客户端到服务端单向连
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值