总算是把TCP协议这些东西复习的差不多,就把复习过程中的一些问题用QA的方式来一个总结。
TCP协议与UDP协议主要区别
UDP是面向数据封包的,封包之间没有相互关系,并且也不提供可靠传输等功能。
TCP是面向数据流的,报文段之间有次序关系,并且会提供可靠传输、流量控制、拥塞控制等功能。
举个例子:
UDP只关心把这个数据封包发送出去完事儿,至于对方收没收到就不关心了。
TCP不仅关心报文段发没发出去,还要知道对方收没收到,是不是按次序收到的,会不会发送的太快对方来不及接收。
TCP为什么要进行拥塞控制
网络中的路由器会有一个数据包处理队列,当路由器接收到的数据包太多而一下子处理不过来时,就会导致数据包处理队列过长。此时,路由器就会无条件的丢弃新接收到的数据封包。
这就会导致上层的TCP协议以为数据包在网络中丢失,进而重传这些数据包,而路由器又会丢弃这些重传的数据包,如此以往,就会导致网络性能急剧下降,引起网络瘫痪。
因此,TCP需要控制数据包发送的数量来避免网络性能的下降。
拥塞控制与流量控制的区别
引用书上的答案:
- 拥塞控制就是防止过多的数据注入到网络中,这样可以防止网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
- 流量控制往往指点对点通信量的控制,是个端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
TCP的发送窗口到底是多大
发送窗口的上限值 = Min{rwnd, cwnd}
rwnd:接收方接收窗口
cwnd:发送方拥塞窗口