tcp和udp的区别与联系(tcp和udp的工作原理)

80酷酷网    80kuku.com

TCP和UDP的区别与联系

tcp是面向连接的,udp不是面向连接的,就相当于我们生活中打电话或者微信聊天,要先嘟嘟嘟连接,之后才可以打电话聊天,这个就是面向连接的,也是比较可靠的,udp是不用先去做连接的,所以叫做面向非连接,类似生活中发短信,直接发送过去。

tcp和udp的区别与联系(tcp和udp的工作原理)(图1)

  • TCP协议面向连接,UDP协议面向非连接;(链接)
  • TCP协议传输速度慢,UDP协议传输速度快;(速度)
  • TCP有丢包重传机制,UDP没有;(重传)
  • TCP协议保证数据正确性,UDP协议可能丢包;(正确性)
  • TCP适合传递大量数据,UPD适合传递少量数据。(数据量)

网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket)和UNIX System V的TLI(已经被淘汰),来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket,而现在又是网络时代,网络中进程通信是无处不在,这就是我为什么说“一切皆socket”。

一、TCP工作原理

TCP建立连接的过程

TCP是一种可靠的面向连接全双工传输层协议。 TCP连接的建立是一个三次握手的过程。

tcp和udp的区别与联系(tcp和udp的工作原理)(图2)

1、主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接, 此数据段的序列号(seq)为a。

2、服务器A回复标识了SYN+ ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认。

3、主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文的确认。

TCP传输过程

TCP的可靠传输还体现在TCP使用了确认技术来确保目的设备收到了从源设备发来的数据并且是准确无误的。

tcp和udp的区别与联系(tcp和udp的工作原理)(图3)

确认技术的工作原理如下:

目的设备接收到源设备发送的数据段时,会向源端发送确认报文,源设备收到确认报文后继续发送数据段,如此重复

TCP流量控制

滑动窗口机制运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。

tcp和udp的区别与联系(tcp和udp的工作原理)(图4)

考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。

TCP关闭连接

主机在关闭连接之前,要确认收到来自对方的ACK

tcp和udp的区别与联系(tcp和udp的工作原理)(图5)

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手

二、UDP工作原理

UDP传输过程

使用UDP传输数据时,由应用程序根据需要提供报文到达确认排序流量控制等功能。

通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

tcp和udp的区别与联系(tcp和udp的工作原理)(图6)

UDP不提供重传机制,占用资源小,处理效率高。

tcp和udp的区别与联系(tcp和udp的工作原理)(图7)

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: