计算机网络第三弹——TCP协议如何保证传输的可靠性 TCP和UDP的区别 TCP和UDP分别对应的常见应用层协议

TCP提供面向连接的、可靠的字节流服务。面向连接意味着客户端和服务器在彼此交换数据之前必须先建立一个TCP连接;字节流服务意味着两个应用程序通过TCP连接交换8bit字节构成的字节流,TCP不存在字节流中插入记录标识符。
TCP的可靠性应该是对于UDP不可靠传输来说的,因为UDP提供的是不可靠的数据报服务,不保证数据报能到达接收端,可能会有丢失,处于传输层之下的IP层也不可靠的,仅提供尽力的端到端数据传输服务,UDP在IP层上并未采取其他措施保证数据传输的可靠性,所以TCP得可靠性是基于不可靠的IP层在传输层增加措施以提供可靠的数据传输服务,主要是指传输数据不会损坏或丢失,而且所有数据都是按照发送顺序进行传送。

对于可靠性,TCP通过如下方式进行保证:

  • 数据包校验:目的是检测数据在传输过程中的任何变化,若校验包出错,则丢弃报文不给出响应,这时TCP发送数据端超时后会重发数据。
  • 超时重发:当TCP发出一个段之后,启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
  • 对失序数据包重排序:TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层。
  • 丢弃重复数据:将丢弃重复数据。
  • 应答机制:当TCP收到来自另一端的数据,它将发送一个确认。
  • 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

使用更简洁的说法就是:

  • 校验和:检验数据是否损坏
  • 定时器:分组丢失则重传
  • 序号:用于检测丢失的分组和冗余的分组
  • 确认:接收方告知发送方正确接收分组已经期望的下一个分组;否定确认:接收方通知发送方未被正确接收的分组
  • 窗口和流水线:用于增加信道的吞吐量

TCP和UDP的区别:

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,他们之间的区别包括:

  • 是否连接:TCP是面向连接的,UDP是无连接的,TCP的发送发要确认接收方是否收到数据段(3次握手协议)
  • 传输可靠性:TCP是可靠的,UDP是不可靠的;TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复,它通过为每个数据报提供一个序号来完成此恢复,为确保正确收到数据,TCP要求目标计算机成功收到数据时发回一个确认(即ACK),如果在某个时限内未收到相应的ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复,但是接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。UDP协议不能保证数据准确无误的到达目的地,并不是说UDP就完全无法知道是否发生了错误,一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发
  • TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式
  • TCP是面向字节流的,UDP是面向报文的(流模式和数据报模式)
  • TCP拥有拥塞控制机制,UDP没有拥塞控制,适合媒体通信
  • TCP要求系统资源较多,UDP较少
  • TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大,TCP传送数据段的时候要给段标号,UDP协议不用

当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP是更好地选择;反之,当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。


TCP和UDP分别对应的常见应用层协议:

1.TCP对应的应用层协议:

  • FTP:定义了文件传输协议,使用21端口。下载文件,上传主页都是用到FTP服务。
  • SMTP:定义了简单邮件传送协议,用于发送邮件,使用的是25端口。
  • HTTP:从Web服务器传输超文本到本地浏览器的传送协议。
  • Telnet:一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。
  • POP3:和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议使用的是110端口,只要你有相应的使用POP3协议的程序(例如Foxmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接使用邮件程序就可以收到邮件(如163邮箱就是没有必要先进入网易网站,再进入自己的邮箱来收信)。

2.UDP对应的应用层协议:

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

可参考如下图示:



主要参考自:点击打开链接 点击打开链接

猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80840263