网络编程笔记1_UDP和TCP

UDP一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现。

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP如何保证了可靠传输?确认机制、重传机制、滑动窗口。

 

1 用户数据报协议UDP

UDP不保证UDP数据包会到达目的地,也不保证到达的先后顺序会不变,也不保证每个包只会到达一次。 

1)缺乏可靠性:如果想保证UDP包能够顺利到达目的地,需要在应用程序中添加一些特性,来自对端的确认、本端的超时超时与重传。

2)每个UDP数据包都有一个长度,到达目的地后,长度也一起传递给接收端应用程序。TCP是一个字节流协议,没有边界记录,需要应用程序自己表示数据报文的开始、以及长度。

3)无连接。一个客户端可以使用一个UDP套接字发数据报给服务器A,之后又使用这个套接字发数据报给其他服务器。服务器也可以用同一个套接字接收不同客户端发来的UDP数据报。

常见的应用

UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。


音视频使用UDP时,对于缺数据的部分:

1)等待应用程序的措施,来自对端的确认、本端的超时超时与重传。

2)应用程序采取一些恢复措施,arqfec。通过前后的几个包恢复出丢失的包。

3)确实的较多无法恢复时,会产生卡顿,以缓冲好的部分播放的慢一些,留出时间等待未到达的数据包到达。

 

2 TCP

1)TCP提供客户与服务器的连接。建立连接、传数据、终止连接。

2)TCP提供可靠性。确认、超时、重传、RTT估算、序号列。

确认TCP向一端发数据,要求对端返回确认消息,如果没有收到确认,TCP自动重传并等待更长的时间。数次重传都失败后,才会放弃,所花总时间一般为410分钟。

TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。

RTT估算TCP含有用于动态估算客户端与服务器之间往返时间的算法,以便知道要等待一个确认要多长时间。

序号列TCP通过给每个字节关联一个序号列,对所发的数据进行排序。

 

序列号为当前端成功发送的数据位数,确认号为当前端成功接收的数据位数,SYN标志位和FIN标志位也要占1位。

 


MSL:最长分节生命期。

由于实现的不同,TIME_WAIT状态在1分钟到4分钟不等,存在该状态的两个原因:

1)可靠地实现TCP全双工连接的终止

2)允许老的重复分节在网络上消失

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值