TCP/IP详解 读书笔记:TCP:传输控制协议
TCP的服务
TCP为应用层提供一种面向连接的、可靠的字节流服务。
一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP。
TCP通过以下方式提供可靠性:
- 应用数据被切割为TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段。
- TCP发出一个段后启动一个定时器,用以等待目的端确认收到该报文段,如果没有及时收到一个确认响应,将重发该报文段。
- 当TCP收到发自TCP连接另一端的数据将会发送一个确认,这个确认不是立即发送,而是会进行一点延迟。
- TCP将保持首部和数据的检验和。目的是检验数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将会丢弃报文段和不确认收到此报文段,发送端将会重发该报文段。
- 如有必要,TCP将会对收到的数据进行重新排序,并将收到的数据以正确的顺序交给应用层。
- TCP接收端会自动丢弃重复的数据。
- TCP提供流量控制。
TCP的首部
TCP数据被封装在一个IP数据报中:
TCP包首部图:
TCP首部中有6个标志比特,简单介绍其用法:
- URG:紧急指针有效;
- ACK:确认序号有效;
- PSH:接收方应该尽快将此报文段交给应用层;
- RST:重建连接;
- SYN:同步序号用来发起一个连接;
- FIN:发送端完成发送任务;
TCP首部通常大小为20个字节。
当建立一个新连接时,SYN标志变为1.序号字段包含由该主机选择的该连接的初始序号ISN。该主机将会发送的第一个字节需要就为此ISN加一,因为SYN标志消耗了一个序号。
每一个传输的字节都被计数,确认序号包含发送的一端所确认的一端所期望收到的下一个序号。确认序号是上次已经成功收到的数据字节序号加一。只有ACK标志为1时确认序号字段才有效。
TCP可以看做一个没有选择确认或否认的滑窗协议,TCP首部中的确认序号表示发送方已经成功收到字节,不包含确认序号所指字节
分类:
《TCP/IP详解》读书笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?