TCP/IP详解 读书笔记:TCP:传输控制协议

TCP的服务

TCP为应用层提供一种面向连接的、可靠的字节流服务。
一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP。
TCP通过以下方式提供可靠性:

  1. 应用数据被切割为TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段。
  2. TCP发出一个段后启动一个定时器,用以等待目的端确认收到该报文段,如果没有及时收到一个确认响应,将重发该报文段。
  3. 当TCP收到发自TCP连接另一端的数据将会发送一个确认,这个确认不是立即发送,而是会进行一点延迟。
  4. TCP将保持首部和数据的检验和。目的是检验数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将会丢弃报文段和不确认收到此报文段,发送端将会重发该报文段。
  5. 如有必要,TCP将会对收到的数据进行重新排序,并将收到的数据以正确的顺序交给应用层。
  6. TCP接收端会自动丢弃重复的数据。
  7. TCP提供流量控制。

TCP的首部

TCP数据被封装在一个IP数据报中:

TCP包首部图:

TCP首部中有6个标志比特,简单介绍其用法:

  • URG:紧急指针有效;
  • ACK:确认序号有效;
  • PSH:接收方应该尽快将此报文段交给应用层;
  • RST:重建连接;
  • SYN:同步序号用来发起一个连接;
  • FIN:发送端完成发送任务;

TCP首部通常大小为20个字节。

当建立一个新连接时,SYN标志变为1.序号字段包含由该主机选择的该连接的初始序号ISN。该主机将会发送的第一个字节需要就为此ISN加一,因为SYN标志消耗了一个序号。
每一个传输的字节都被计数,确认序号包含发送的一端所确认的一端所期望收到的下一个序号。确认序号是上次已经成功收到的数据字节序号加一。只有ACK标志为1时确认序号字段才有效。
TCP可以看做一个没有选择确认或否认的滑窗协议,TCP首部中的确认序号表示发送方已经成功收到字节,不包含确认序号所指字节

posted @   Huangzzzzz  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示