开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

tcp的复杂机制

简介:
+关注继续查看

懂socket编程的人不一定理解tcp协议,实际上很多计算机编程高手都不一定懂tcp协议,编程高手很多都是对api很理解,对于api下面的机制就不一定理解了,我是一个学网络出身的人,在我会用java或者c写hello world之前我就知道了tcp的原理,记得当时为tcp的滑动窗口,慢启动等着迷过,成夜成夜的研究路由协议和交换机原理,仅为理解mss,mtu等等概念,然后白天申请到机房去做实验...后来看了linux源码,看了linux中对tcp/ip协议栈的实现,突然发现竟然是如此复杂,tcp的三次握手在socket编程时是看不到的,但是在内核中却能看到,必须在内核中看到,如果内核都不实现协议栈,那么靠谁实现呢?三次握手在linux中是通过一个状态机来实现的,三次握手完毕后跳出内核的状态机,进入用户空间的socket进程。

典型的tcp协议要求每一个数据段发送之后都要有一个ack回复,然后才能发送下一个数据段,虽然这样能保证数据的可靠传输,但是效率呢?由于tcp是全双工通信,在等待一个数据段的ack恢复之前网络将会闲置,因此效率将会受到极大影响,因此协议提出了滑动窗口子协议,专门负责数据的传输,滑动窗口子协议分为简单的停-等协议,后退N协议,以及选择重传协议三个子子协议,其实三个子子协议可以由一个例程表示,只是一个例程的三个不同情况,比如发送和接收窗口都为1时就是简单的停等协议。三个子子协议都很复杂,只有靠这种复杂的机制才换取了网络链路的高效利用。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274129

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
TCP协议的状态
TCP协议的状态
0 0
TCP 重传机制
TCP 重传机制
0 0
UDP和TCP的优缺点
UDP和TCP的优缺点
0 0
TCP和UDP原理
port 网络门口0-65536 8080tomcat 80网页默认 1521 oracle 3306 mysql 协议(TCP、UDP) TCP 点对点模式 面向连接的 先连接后通信 ...
646 0
tcp和udp的区别
(1)TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务; (2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作; (3)也正因为以上特征,UDP具有较好的实时性,工作效率较TCP协议高; (4)UDP段结构比TCP的段结构简单,因此网络开销也小。
260 0
TCP协议 及 TCP粘包现象
TCP协议 及 TCP粘包现象 TCP,Transmission Control Protocol,传输控制协议。这是一个面向连接的传输层协议。 与之相对的无连接协议为UDP,用户数据报协议。 传输层的基本数据单位为——报文。网络层——包。数据链路层为——帧。物理层——比特。 TCP提供面向连接的可靠服务,传送数据之前必须先建立连接,传送完毕要释放链接。 服务器端使用的端口号:熟
1107 0
TCP与UDP区别
来源:http://blog.sina.com.cn/s/blog_493309600100clrw.html TCP与UDP区别 TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。
668 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
TCP Cluster for mqtt技术实施方案
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载