TCP、UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议。
一、UDP主要特点:传输的是用户数据报协议。
1.UDP
是无连接的,即发送数据之前不需要建立连接。
2.UDP
使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
3.UDP
是面向报文的。UDP
没有拥塞控制,很适合多媒体通信的要求。
4.UDP
支持一对一、一对多、多对一和多对多的交互通信。
5.UDP
的首部开销小,只有 8
个字节。
发送方 UDP
对应用程序交下来的报文,在添加首部后就向下交付 IP
层。UDP
对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP
多长的报文,UDP
就照样发送,即一次发送一个报文。接收方 UDP
对 IP
层交上来的 UDP
用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
连接只能是点对点的(一对一)。
提供全双工通信。
一个分组
计时器实现。
应当比数据在分组的平均往返时间更多一些。
所有的确认都是基于序号而不是基于报文段。
后,再按序交付上层的应用进程。
TCP 连接上实现流量控制。
拥塞控制方法:
MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。每经过一个传输轮回,拥塞窗口(发送端)就加倍。
ssthresh 减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口
cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大.
的 TCP
向 B
发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是
x。
的 TCP
收到连接请求报文段后,如同意,则发回确认。 B
在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack
= x + 1,自己选择的序号 seq = y。
收到此报文段后向 B
给出确认,其 ACK = 1, 确认号
ack = y + 1。A
的 TCP
通知上层应用进程,连接已经建立。
的 TCP
收到主机 A
的确认后,也通知其上层应用进程:TCP
连接已经建立
A 这个方向的连接也释放了。
有机状态图:
转载自:TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
TCP、UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议。
一、UDP主要特点:传输的是用户数据报协议。
1.UDP
是无连接的,即发送数据之前不需要建立连接。
2.UDP
使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
3.UDP
是面向报文的。UDP
没有拥塞控制,很适合多媒体通信的要求。
4.UDP
支持一对一、一对多、多对一和多对多的交互通信。
5.UDP
的首部开销小,只有 8
个字节。
发送方 UDP
对应用程序交下来的报文,在添加首部后就向下交付 IP
层。UDP
对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP
多长的报文,UDP
就照样发送,即一次发送一个报文。接收方 UDP
对 IP
层交上来的 UDP
用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
连接只能是点对点的(一对一)。
提供全双工通信。
一个分组
计时器实现。
应当比数据在分组的平均往返时间更多一些。
所有的确认都是基于序号而不是基于报文段。
后,再按序交付上层的应用进程。
TCP 连接上实现流量控制。
拥塞控制方法:
MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。每经过一个传输轮回,拥塞窗口(发送端)就加倍。
ssthresh 减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口
cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大.
的 TCP
向 B
发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是
x。
的 TCP
收到连接请求报文段后,如同意,则发回确认。 B
在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack
= x + 1,自己选择的序号 seq = y。
收到此报文段后向 B
给出确认,其 ACK = 1, 确认号
ack = y + 1。A
的 TCP
通知上层应用进程,连接已经建立。
的 TCP
收到主机 A
的确认后,也通知其上层应用进程:TCP
连接已经建立
A 这个方向的连接也释放了。
有机状态图: