zoukankan      html  css  js  c++  java
  • 【刷题】网络:TCP与UDP

    区别

    • TCP提供面向连接的、可靠的数据流传输,UDP提供的是非面向连接的、不可靠的数据流传输。
      • TCP传送数据之前建立连接,传送结束后释放连接,UDP传送数据之前不建立连接,收到后不给出任何确认。
      • tcp:提供可靠交付的服务(无差错,不丢失,不重复,且按序到达)(校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。)。
      • udp:尽最大努力交付(不保证可靠交付)。
    • TCP适用于大文件,UDP适用于小文件。
    • TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
      • TCP面向字节流,UDP面向报文。
    • 每一条TCP连接只能是点对点的(一对一),UDP支持一对一、一对多、多对一和多对多的交互通信。
      • TCP提供全双工通信,UDP无拥塞控制。
    • TCP注重数据安全性,传输慢;UDP数据传输快,但是其安全性却一般。
    • TCP对应的协议和UDP对应的协议不同。
    • UDP无拥塞控制,适用于实时应用;
    • UDP首部开销小,8B,TCP20B。

    其他

    • TCP的主要特点是:

    面向连接。
    每一条TCP连接只能是点对点的(一对一)。
    提供可靠交付的服务(无差错,不丢失,不重复,且按序到达)(校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。)。
    提供全双工通信。
    面向字节流。

    • UDP的主要特点是:

    无连接。
    尽最大努力交付(不保证可靠交付)。
    面向报文。
    无拥塞控制。
    支持一对一、一对多、多对一和多对多的交互通信。
    首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。

    TCP对应的协议和UDP对应的协议

    TCP对应的协议:

    (1) FTP:定义了文件传输协议,使用21端口。
    (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
    (5) HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

    UDP对应的协议:

    (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    (3) TFTP(Trivial File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

    TCP如何实现可靠性传输?

    • 校验,序号,确认机制、重传机制、滑动窗口。
      • 重传:超时和冗余ACK

    怎么让udp实现可靠连接

    UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响。

    传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

    最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。

    1、添加seq/ack机制,确保数据发送到对端
    2、添加发送和接收缓冲区,主要是用户超时重传。
    3、添加超时重传机制。
    详细说明:送端发送数据时,生成一个随机seq=x,然后每一片按照数据大小分配seq。数据到达接收端后接收端放入缓存,并发送一个ack=x的包,表示对方已经收到了数据。发送端收到了ack包后,删除缓冲区对应的数据。时间到后,定时任务检查是否需要重传数据。

    目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。

    参考链接

    END

  • 相关阅读:
    svn cleanup failed–previous operation has not finished 解决方法
    开源SNS社区系统推荐
    从网络获取图片本地保存
    MS SQL Server 数据库连接字符串
    KeepAlive
    Configure Git in debian
    sqlserver query time
    RPi Text to Speech (Speech Synthesis)
    SQL Joins with C# LINQ
    search or reseed identity columns in sqlserver 2008
  • 原文地址:https://www.cnblogs.com/anliux/p/12567465.html
Copyright © 2011-2022 走看看