上QQ阅读APP看书,第一时间看更新
1.2.1 TCP的应用场景
TCP为应用层提供可靠的传输服务,发送端按顺序发送数据,接收端按顺序接收数据,其间若发生丢包、乱序等情况,TCP须负责重传和排序。下面是TCP的应用场景。
● 客户端和服务端需要多次交互才能实现应用程序的功能,比如接收电子邮件使用的POPv3和发送电子邮件使用的SMTP,传输文件使用的FTP。
● 应用程序传输的文件需要分段传输,比如通过Web浏览器访问网页或者使用QQ聊天软件传输文件时。
例如,从网络中下载一个大小为500MB的电影或200MB的软件,这么大的文件需要拆分成多个数据包进行发送,发送过程可能需要持续几分钟或几十分钟。其间,发送端以字节流的形式将发送的内容一边发送一边放入缓存,传输层会将缓存中的字节流分段并编号,然后按顺序发送。这一过程需要发送端和接收端建立连接,并协商通信过程的一些参数(比如一个段的最大字节等)。需要说明的是,这里所说的段在网络层加上IP首部即可形成数据包。如果因网络不稳定而造成某个数据包丢失,发送端必须重新发送丢失的数据包,否则会造成接收的文件不完整。如果发送端发送速率太快,接收端来不及处理,此时接收端还会通知发送端降低发送速率甚至停止发送,这就是TCP的流量控制功能。Internet中的流量不固定,流量高峰时段可能产生网络拥塞(这一点很好理解,就像城市上下班高峰时的交通堵塞一样)。发生网络拥塞时,来不及转发的数据包就会被路由器丢弃。在传输过程中TCP会一直探测网络是否拥塞,进而来调整发送速率。TCP有拥塞避免机制。
如图1-14所示,发送端的发送速率由网络是否拥塞和接收端接收速率两个因素控制,哪个速率低,就用那个速率发送。
图1-14 TCP拥塞避免机制示意