TCP与UDP的区别

一、通信模型

       计算机与网络设备相互通信时,双方必须约定好怎么通信。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

        开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为OSI),简称OSI模型,将计算机网络体系结构划分为以下七层: 

  • 物理层:将数据转换为可通过物理介质传送的电子信号,相当于邮局中的搬运工人。
  • 数据链路层:决定访问网络介质的方式。在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。
  • 网络层:使用权数据路由经过大型网络,相当于邮局中的排序工人。
  • 传输层:提供终端到终端的可靠连接,相当于公司中跑邮局的送信职员。
  • 会话层:允许用户使用简单易记的名称建立连接,相当于公司中收寄信、写信封与拆信封的秘书。
  • 表示层:协商数据交换格式,相当公司中简报老板、替老板写信的助理。
  • 应用层:用户的应用程序和网络之间的接口。

        TCP/IP是一系列网络协议的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP等都属于TCP/IP族内的协议。TCP/IP模型是互联网的基础,这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。

  • 链路层:负责封装和解封装IP报文,发送和接收地址解析协议(ARP)/逆向地址解析协议(RARP)报文等。
  • 网络层:负责路由以及把分组报文发送给目标网络或主机。
  • 传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
  • 应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。
OSI七层模型TCP/IP模型功能包含协议
物理层链路层以二进制数据形式在物理媒介上传输数据ISO2110,IEEE802,IEEE802.2
数据链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU
网络层网络层为数据包选择路由IP,ICMP,RIP,OSPF,BGP,IGMP
传输层传输层提供端对端的接口TCP,UDP
会话层应用层解除或建方与别的接点的联系没有协议
表示层数据格式化,代码转换,数据加密没有协议
应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

 

 

 

 

 

 

 

 


        在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端经过各层时都要附加上相应层的协议头,数据链路层还需要封装协议尾。也就是说要对数据进行协议封装,以标识对应层所用的通信协议。

二、TCP:

        是Transmission Control Protocol的简称,中文名是传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。由IETF的RFC793定义。

        1、TCP的连接过程(三次握手):

             第一次握手:客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入SYN-SENT状态。

             第二次握手:服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入SYN-RECEIVED状态。

             第三次握手:当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHED 状态,此时连接建立成功。

        2、TCP的断开过程(四次挥手):

             第一次挥手:当客户端认为数据发送完成时,它会向服务端发送连接断开请求,告诉服务端不会再发送数据。

             第二次挥手:服务端收到客户端的连接断开请求后,会告诉应用层要释放链接。然后会发送ACK包给客户端,并进入 CLOSE_WAIT状态,此时表明客户端到服务端的连接已经释放,不再接收客户端发的数据。但是因为TCP连接是全双工的,所以 服务端仍旧可以发送数据给客户端。

             第三次挥手:如果此时服务端还有数据没有给客户端发完则会继续发送,如果发送完毕则会向客户端发送连接断开请求,然后服务端便进入LAST-ACK状态。

             第四次挥手:客户端收到服务端的断开请求后,向服务端发送确认应答,此时客户端进入TIME-WAIT 状态。该状态会持续 2MSL(MSL是Maximum Segment Lifetime英文缩写,中文译为“报文最大生存时间”) ,若该时间段内没有服务端的重发请求,就进入 CLOSED 状态。当服务端收到客户端的确认应答后,也进入CLOSED状态。

        TCP有如下特点:

  • 面向连接的

         发送数据之前必须在两端建立连接,建立连接的方法是“三次握手”,这样能建立可靠的连接。

  • 仅支持单播传输

         每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

  • 面向字节流

         TCP是在不保留报文边界的情况下以字节流方式进行传输。头部最少20个字节,最大60个字节。

  • 传输可靠

         判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端时包的按序接收。当接收端成功收到字节时会给发送端发回一个相应的确认(ACK);如果发送端在合理的往返时延(RTT,是Round-Trip Time的英文缩写)内未收到接收端发回的确认,那么对应的数据(假设丢失了)将会被重新发送。

  • 拥塞控制

         当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞。

三、UDP:

        是User Datagram Protocol的简称, 中文名是用户数据报协议。是一种无连接的协议,也就是说,当报文发送之后是无法得知是否安全完整地被接收到。它有以下特点:

  • 面向无连接

         UDP是不需要和TCP一样在发送数据前进行三次握手建立连接的,想发数据就开始发送了。并且也只是对数据报文的搬运,不会对数据报文进行任何拆分和拼接操作。具体来说就是:

         1>在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP协议头标识是UDP协议,然后就传递给网络层了;

         2>在接收端,网络层将数据传递给传输层,UDP只去除IP报文头就传递给应用层,不会任何拼接操作。

  • 有单播,多播,广播的功能

         UDP不仅支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说UDP提供了单播,多播,广播的功能。

  • 面向报文

         UDP对应用层传过来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文。

  • 高效

         头部开销小,仅需8个字节,传输数据时是很高效的。UDP头部包含了以下几个数据:

         1>两个16位的端口号,分别为源端口(可选字段)和目标端口;

         2>整个数据报文的长度;

         3>整个数据报文的检验和IPv4(可选字段),用于发现头部信息和数据中的错误;

在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.youkuaiyun.com/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.youkuaiyun.com/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、付费专栏及课程。

余额充值