06 - 把数据"完整"送达应用程序的TCP
本帖最后由 不二如是 于 2020-2-8 11:37 编辑上一讲说完了 UDP,这次来说 TCP 。
UDP 虽然传输速度快,但不能保证数据可靠性~
对于浏览器请求,或者邮件这类要求数据传输可靠性(reliability)的应用,如果使用 UDP 来传输会存在两个问题:
**** Hidden Message *****
基于这两个问题,我们引入 TCP 了。
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
相对于 UDP,TCP 有下面两个特点:
[*]对于数据包丢失的情况,TCP 提供重传机制
[*]TCP 引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件
和 UDP 头一样,TCP 头除了包含了目标端口和本机端口号外。
还提供了用于排序的序列号,以便接收端通过序号来重排数据包。
传输模型和上一讲中 UDP 的一样,只不过将 UDP 换为 TCP 。
下面我们再看下完整的 TCP 连接过程。
通过这个过程你可以明白 TCP 是如何保证重传机制和数据包的排序功能的。
给大家一张完整生命周期图。
一个完整的 TCP 连接的生命周期包括了“建立连接”,“传输数据”和“断开连接”三个阶段。
首先,建立连接阶段
这个阶段是通过“三次握手”来建立客户端和服务器之间的连接。
TCP 提供面向连接的通信传输。
面向连接是指在数据通信开始之前先做好两端之间的准备工作。
所谓三次握手是指:
在建立一个 TCP 连接时,客户端和服务器总共要发送三个数据包以确认连接的建立。
其次,传输数据阶段
在该阶段,接收端需要对每个数据包进行确认操作,也就是接收端在接收到数据包之后,需要发送确认数据包给发送端。
所以当发送端发送了一个数据包之后,在规定时间内没有接收到接收端反馈的确认消息。
则判断为数据包丢失,并触发发送端的重发机制。
同样,一个大的文件在传输过程中会被拆分成很多小的数据包。
这些数据包到达接收端后,接收端会按照 TCP 头中的序号为其排序,从而保证组成完整的数据。
最后,断开连接阶段
数据传输完毕之后,就要终止连接了,涉及到最后一个阶段“四次挥手”来保证双方都能断开连接。
到这里鱼油应该就明白了:
TCP 为了保证数据传输的可靠性,牺牲了数据包的传输速度。
因为“三次握手”和“数据包校验机制”等把传输过程中的数据包的数量提高了一倍。
本讲了解 TCP 协议,是为了下一讲开始介绍的 HTTP~
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )
感谢楼主无私奉献 丢包
页:
[1]