TCP与UDP的区别

TCP/IP协议:

Transmission Control Protocol(传输控制协议)/Internet Protocol(因特网互联协议)的简写。

常见的协议所在OSI层和功能:



TCP协议:

TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

建立连接(三次握手)过程:

(1):客户端发送SYN(SEQ=x)给服务器端,进入SYN_SEND状态。

(2):服务器端收到客服端的SYN报文,回复SYN(SEQ=y,ACK=x+1)报文,进入SYN_REVD状态。

(3):客户端收到服务器端的SYN报文,回应(SEQ=x+1,ACK=y+1)报文,进入Established状态。

这样三次握手完成,TCP客户端和服务器端成功建立连接,可以开始传输数据了。

特点:
没有应用层的数据
SYN这个标志位只有在TCP建产连接时才会被置1
握手完成后SYN标志位被置0


图释:



断开连接(四次挥手)过程:

建立连接需要三次握手,断开连接需要四次挥手,这是由于TCP的半关闭导致的。

(1):某个应用进程首先调用close,称该端执行“主动关闭”。于是该端的TCP发送一个FIN分节,表示数据传输完毕。

(2):接收到FIN的对端,执行“被动关闭”,这个FIN有TCP确认。(FIN的接收也作为文件结束符传给接收端的应用程序,放在已排队等候该进程接收的其他数据之后,FIN的接收意味着接收端应用进程在该连接上再无额外数据接收)。

(3):一段时间过后,接收到文件结束符的应用进程将调用close关闭它的套接字,这导致它的TCP也发一个FIN。

(4):“主动关闭”端的TCP确认这个FIN。

由TCP的三次握手和四次断开可以看出:
TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础。

图释:




名词解释:

ACK 确认字符TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性。
SYN  同步序列号,TCP建立连接时将这个位置1。
FIN  
TCP报头的码位字段,该位置为1的含义为发送方传输完毕,用于关闭连接。

TCP的包头结构:
源端口 16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码 6位
窗口大小 16位
偏移量 16位
校验和 16位
选项  32位(可选)
这样我们得出了TCP包头的最小长度,为20字节。


UDP协议:

UDP(User Datagram Protocol)是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

特性:

(1):UDP是一个非连接的协议,传输数据之前源端和终端不建立连接。在发送端,UDP传送数据的速度仅受应用程序产生数据的速度、计算机能力、宽带的限制。在接受端,UDP把每个信息放入队列中,应用程序每次读取一个信息段。
(2):由于传输信息不需要建立连接,所以不用维护连接状态,包括收发状态等。所以一台服务器可以同时向多台客户机发送相同的信息。
(3):UDP信息包的标题短,只有八个字节,相比TCP的20个字节,开销少。
(4):吞吐量不受拥挤算法的影响,只受 用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5):UDP不保证可靠交互,因此主机不需要维护复杂的链接状态表。
(6):UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

我们经常使用ping命令来测试两台主机之间TCP/IP通信是否正常,其实ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

UDP的包头结构:
源端口 16位
目的端口 16位
长度 16位
校验和 16位




小结TCP与UDP的区别:

1.基于连接(TCP)与无连接(UDP);
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式(TCP)与数据报模式(UDP) ;http://blog.csdn.net/hanchaoman/article/details/6409106

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Socket编程中,TCPUDP是两种不同的传输协议。TCP(Transmission Control Protocol)是一种面向连接的协议,而UDP(User Datagram Protocol)是一种无连接的协议。它们在以下几个方面有所不同: 1. 连接性:TCP是面向连接的,它在通信之前需要先建立连接,然后在可靠的双向通信中保持这个连接。UDP是无连接的,每个数据包都是独立的,发送者和接收者之间没有建立连接的过程。 2. 可靠性:TCP提供可靠的数据传输,它使用确认和重传机制来确保数据的准确性和完整性。UDP不保证数据的可靠性,因此在传输过程中可能会丢失数据包。 3. 速度和效率:由于TCP提供的可靠性和连接管理的机制,它的速度相对较慢,而UDP不需要连接建立和维护的开销,因此速度更快。 4. 应用场景:TCP适用于需要可靠传输和顺序传输的应用,例如文件传输,电子邮件等。UDP适用于实时应用,例如音频和视频流,游戏等,对于这些应用来说,速度和实时性更为重要,而可靠性可以通过应用层来处理。 总结起来,TCP提供了可靠的、面向连接的传输,适用于重要数据的传输,而UDP提供了快速的、无连接的传输,适用于实时性要求较高的应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Scoket编程基础 -- TCPUDP 的 简介及其区别](https://blog.csdn.net/Czhenya/article/details/78299152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [TCPUDP 在socket编程中的区别(转载)](https://blog.csdn.net/LIN943168247/article/details/120264124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值