计算机网络(2)传输层

计算机网络(II)传输层

TCP与UDP的区别与优劣


面向连接 无连接
面向流字符 面向报文
可靠的 不可靠的
传输速度慢 传输速度快
对系统资源要求多 协议要求少

 TCP为什么要三次握手,四次挥手


3次握手:防止已过期的(可能因延时等原因)连接请求报文传送突然又传送到服务器,因而产生错误

4次挥手:为了保证(接收方)数据完全传送

三握四挥:

三次握手理解:

A:我要和你通信了

B:好的,我同意,咱们通信吧

C:嗯嗯,建立连接了

四次挥手理解:

分手情节:

A:我要和你分手

B:可是我还有好多话要说……(省略一万个字)

B:  算了,你既然不说话还是分手吧

A:  好的,

实际:当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必接收方所有的数据都全部发送给对方了,所以接收方未必会马上会关闭SOCKET,也即接收方可能还需要发送一些数据给对方之后,再发送FIN报文,直到你同意关闭连接,所以多数情况下,ACK报文和FIN报文都是分开发送的 。

TCP流量控制四机制


首先注意的是慢开始,所谓慢开始就是初始值设定为1,即拥塞窗口 cwnd=1

其次注意的是拥塞避免,就是每次增加量为1,那么可推出函数图像必然是 y=x+b

慢开始算法和拥塞避免算法使用规则

为了防止cwnd增长过大引起网络拥塞,设置一个慢开始门限(ssthresh状态变量)  

当cnwd<ssthresh,使用慢开始算法  

当cnwd=ssthresh,两者都可以使用

当cnwd>ssthresh,使用拥塞避免算法 

举例:如下图所示,无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢开始门限(ssthresh的值)设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法。
 
 

但是我们明显发现了这种方式需要两次慢开始,效率相当低,为此如何能够快速运行起来呢?这个时候引入了两个新的名词快速重传和快速恢复。(实际上没什么复杂的就是将令ssthresh=cwnd(max)/2,然后继续使用拥塞避免算法而已)

具体描述:

快速重传: 1. 快重传要求接收方在收到一个失序的报文段后就立即发出重复确认,而不要等到自己发送数据时确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。 2. 由于不需要等待设置的重传计时器到期,能尽早重传未被确认的报文段,能提高整个网络的吞吐量。 

快速恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,然后执行拥塞避免算法。 
 
 


TCP通过哪些方式来保证可靠性?


解方程 TCP可靠性一般步骤
归同类项 分割
移项 传送
检查(确定)是否移项正确 确认直到OK
如果错误,就划掉重新来 重发
求解检验(经检验方程正确) 通过检验和,排序,流量控制

具体形式:

1.分割成TCP认为最适合发送的数据块。2.确认机制,发送报文后,等待确认。3.重发机制,没有收到确认,将重发数据段。4.保持它首部和数据的校验和,确认数据的准确性。5.排序,丢弃重复的,流量控制。 

TCP、UDP为什么存在伪包头? 


UDP(TCP)检验和:是根据UDP(TCP)数据报和伪报头计算得到的差错检测值。伪报头并不会在网络中传送,校验和中所包含的伪报头内容可以避免目的端错误地接收错误的路由数据报。

发布了104 篇原创文章 · 获赞 165 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43914278/article/details/104144703