Linux下C语言实现TCP socket通信服务端与客户端

TCP简介

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP服务端与客户端之间的通信遵循以下基本原理:

1. **建立连接(三次握手)**:
   - 客户端向服务器发送一个SYN(同步序列编号)报文段,请求建立连接。
   - 服务器接收到SYN后,会以一个SYN-ACK(同步确认)报文段响应客户端,表示同意建立连接。
   - 客户端接收到服务器的SYN-ACK后,再回传一个ACK(确认)报文段给服务器,告知服务器已准备好开始数据传输。

2. **数据传输**:
   - 连接建立后,双方可以进行数据交换。TCP保证数据包按序到达,并且提供流量控制和拥塞控制机制来避免网络过载。
   - 每个发送的数据段都有一个序列号,接收方可以根据这个序列号重组数据包。
   - 接收方在接收到数据后会发送ACK给发送方,表明已经成功接收了多少数据。
   - 如果某个数据段丢失或损坏,发送方将重发该数据段,直到正确接收到对应的ACK为止。

3. **终止连接(四次挥手)**:
   - 当一方完成数据发送后,它可以发送FIN(结束)报文段给另一方,表示它不再有数据要发送了。
   - 接收FIN的一方会发送一个ACK给对方,确认收到了FIN。
   - 接收到ACK的一方等待一段时间确保对方已经接收到自己的FIN后,也会发送一个FIN给对方。
   - 最后,接收第二个FIN的一方发送ACK给对方,然后双方都关闭连接。

4. **可靠性**:
   - TCP使用校验和、序列号、确认应答(ACK)、超时重传等机制来确保数据传输的可靠性。
   - 如果在一个设定的时间内没有收到确认,TCP会自动重传数据包。

5. **流量控制**:
   - 使用滑动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W说编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值