计算机网络-TCP和UDP

TCP和UDP的区别

  1. TCP是面向连接的,发送数据前要建立连接,UDP是无连接的。
  2. TCP是可靠的,UDP是不可靠的。通过TCP连接传送的数据,无差错、不丢失、不重复并且是按序到达,UDP是尽最大努力交付TCP提供可靠交付的手段:校验和、重传控制、序号标识、滑动窗口、确认应答、丢包时的重发控制。
  3. UDP具有良好实时性、工作效率比TCP高,适合传输速度快和实时性要求高的通信和广播。
  4. TCP连接只能是点对点交付,UDP支持一对一,一对多,多对多的交互通信。
  5. 对于资源要求也不同,TCP要求系统资源多,UDP要求系统资源少。

TCP保证可靠交付的手段

为何TCP不适用于实时传输

TCP不是因为建立连接的握手阶段影响的实时性。是因为TCP的滑动窗口机制进行流量控制时,滑动窗口是自适应的,影响滑动窗口的二个因素:1.网络延时,2.传输速度。滑动窗口大小与延时、传输速度成正比。一定网络环境中,延时可以认为是固定的,因此滑动窗口仅与传输速度有关。当传输实时数据时,数据流通量比较固定,窗口处于一个不大不小的固定值,这个值恰好把当前生产的数据实时传输给对方,但当网络丢包时,按照TCP协议,滑动窗口减少一半,滑动速率减半,发送速率小于数据产生速率,一些数据就滞留在发送端,然后滑动窗口将不断增大,直到积累的数据全部发送完毕,这种现象叫做TCP流量抖动,会产生较大的突发时延,所以实时传输不用TCP。

TCP的三次握手和四次挥手

TCP建立连接:三次握手
TCP断开连接:四次挥手
TCPtcp报文格式
ACK:确认需要有序,SYN:发起一个新连接,FIN:释放一个连接。

三次握手
在这里插入图片描述第一次握手:
Client将标志位SYN置1,随机产生一个值seq=J,并将数据包发给Server。Client进入SYN_SENT状态,等到Server确认。

第二次握手:
Server收到数据包,看到SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置1,随机产生一个值,将数据包发给Client确认连接请求,Server进入SYN_RCVD状态。

第三次握手:
Client收到确认后若ACK=1,则将数据包发送给Server,Server检查ACK为1则连接建立成功,Client和Server进入ESTABLISHED状态完成三次握手,可以传输数据。

第一次握手:
Client不能确认任何东西,Server确认了对方发送正常。
第二次握手:
Client确认:自己发送、接收正常,对方发送、接收正常。Server确认:自己接收正常,对方发送正常。
第三次握手:
Client确认:自己发送、接收正常,对方发送接收正常。Server确认:自己发送、接收正常,对方发送、接收正常。

如果是两次握手的缺陷:
在这里插入图片描述
当A发送一个消息给B,由于网络原因,消息阻塞在某个节点,阻塞时间超过等待,A会认为这个消息丢失了,然后重新发送信息。然后AB之间重新建立了一个连接,完成了通信工作。之后,这个被认为是失效的信息,到达了B,对于B,认为是一个新的请求链接消息,向A发送确认,但是对于A来说,他认为没有发送消息,所以A不会理会B的消息,但是B会一直等待A的消息,这会导致B的时间被浪费,所以不可行。

四次挥手的过程

在这里插入图片描述
第一次挥手:
Client发送一个FIN,用来关闭Client->Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:
Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。
第三次挥手:
Server发送一个FIN,用来关闭Server->Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:
Client收到FIN时,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次握手。

为何建立链接是三次握手,关闭链接是四次握手
建立链接:三次握手的目的是为了防止A端已经失效的连接请求突然传到B端,被误认为是A端再次发出的一个新的连接请求,如果B端这时又在发送确认报文,表示同意连接,就会发生错误。
关闭链接:四次挥手的原因是tcp是全双工通信,通信是双向的。

UDP如何尽量提高到达率

传输层无法保证数据的可靠传输,只能通过应用层来实现,实现的方法按照tcp可靠性传输的方式,只是实现不在传输层,实现转移到应用层。
实现确认机制,重传机制,窗口确认机制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值