首先,TCP是一个面向字节流的协议,它不会对自己的内容做出任何的解释,也不需要做出解释,具体的解释由上层的协议来处理。

  其次,TCP是一个面向字节流的协议,它会对它发送的每一个字节负责,确保每一个字节都可以正确的发送。在TCP协议中,SYN与FIN字节是占用字节序列号的,因此TCP协议必须对其负责,如果他们在发送的过程中出现了任何的意外,导致最后并没有发送成功,TCP会对此进行处理(比如重传)。而ACK是不占用字节序列号的,TCP是不会对一个只含有ACK标志的TCP报文做任何保证。

  最后,直观上看,如果真的需要确认ACK,会形成一个死循环,一直反复确认。本质上说,TCP是一个面向字节流的协议,之所以不用确认ACK报文,是因为ACK报文在TCP连接中是不占用字节序列号的(当然其本身包含在TCP头部中是需要占有物理内存的,就好比卡车运沙,我们只需要确认沙子的量,而卡车则不用去关心),ACK报文本身是用来确认上次的报文是否发送成功,如果ACK出现了问题没发送到对方手中,那对方会认为自己的数据没有发送成功从而重新发送,从而导致己方再次发送ACK报文(相当于回退到两步之前,对方发送数据,己方发送ACK报文(此时再次发送ACK报文相当于ACK重传)),实际上,由于累计确认机制的存在,当己方的ACK报文发送成功时,对方继续发送新的数据报,此时该数据报中更新的字节序列号就是对之前的ACK报文的确认,只有你成功告诉我我发送成功了(ACK报文成功到达),我才会发送新的数据。

  

  

最新文章

  1. PHP的流程控制结构
  2. Java 入门(一) - 环境变量
  3. [源码]String StringBuffer StringBudlider(2)StringBuffer StringBuilder源码分析
  4. Ubuntu Kylin15下PHP环境的搭建(LAMP)
  5. 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享
  6. java取整和java四舍五入方法 转自董俊杰
  7. VPW协议解析
  8. 通过WMI配置IP
  9. PHP程序开发人员要掌握的知识
  10. Knight Tournament
  11. 【JSON异常系列】new JSONObject对象时卡死原因
  12. 搭建typescript开发环境最详细的全过程
  13. Linux系列教程(二十二)——Linux的bash变量
  14. mysql之查询
  15. Junit集成测试
  16. robotframework测试用例加入注释
  17. 爬虫案例(js动态生成数据)
  18. 3P - Snooker
  19. PWN入门
  20. 如何优化Mysql数据库

热门文章

  1. vscode简单使用介绍及个人常用扩展插件
  2. Linux 常用密令总结 ------随用随记吧
  3. 【Codeforces 350B】Resort
  4. 洛谷 P1131 BZOJ 1060 [ZJOI2007]时态同步
  5. hdu 1576扩展欧几里得算法
  6. uva 10276 / pc 110908
  7. POJ 1696
  8. POJ 3678
  9. ASIHTTPRequest框架的简单使用
  10. C++数组类模板