tcp和udp区别(udp连接过程)
tcp和udp的区别如下:1。udp是无连接的,tcp是面向连接的;2.udp是不可靠的传输,tcp是可靠的传输;3.udp面向消息传输,tcp面向字节流传输。
比较:
(学习视频推荐:java视频教程)
用户数据报协议(User Datagram Protocol)
UDP协议全称是用户数据报协议,在网络中用来处理类似TCP协议的数据包,是一种无连接协议。在现场视察模型中,第四层,即传输层,是IP协议的上层。UDP的缺点是不提供分组、组装和排序,也就是说,当一条消息被发送时,不可能知道它是否安全完整地到达。
它具有以下特征:
1.面向无连接
首先,UDP不需要像TCP一样,在发送数据之前通过三次握手建立连接。如果要发送数据,可以开始发送。而且他们只是数据消息的搬运工,不会对数据消息进行任何拆分和拼接操作。
具体来说,就是:
在发送端,应用层将数据传输到传输层的UDP协议,该协议只在数据上添加一个UDP头,然后传输到网络层。在接收端,网络层将数据传输到传输层,UDP将数据传输到应用层,无需任何拼接操作
2.它具有单播、组播和广播功能
UDP不仅支持一对一的传输模式,还支持一对多、多对多、多对一的模式,也就是说UDP提供单播、组播和广播功能。
3.UDP是面向消息的
发送方的UDP在添加报头后将应用程序移交的消息传递到IP层。UDP不合并或拆分应用层移交的消息,而是保留这些消息的边界。因此,应用程序必须选择适当大小的消息
4.不可靠的
首先,不可靠性体现在缺乏连接,通信不需要建立连接,想什么时候发就什么时候发,肯定不可靠。
而且收到的时候传输的是什么数据,数据不会备份,发送数据也不会在意对方是否正确接收了数据。
另外,网络环境起伏不定,但UDP因为没有拥塞控制,所以总是以恒定的速度发送数据。即使网络条件不好,传输速率也不会调整。这种实现的缺点是在恶劣的网络条件下可能会导致丢包,但优点是显而易见的。在一些实时性要求较高的场景下(比如电话会议),需要使用UDP来代替TCP。
5.报头的开销很小,在传输数据消息时非常高效。
三氯苯酚
当一台计算机要与另一台计算机通信时,两台计算机之间的通信需要顺畅可靠,以保证数据的正确收发。例如,当您想要查看网页或电子邮件时,您希望完整、有序地查看网页,而不会丢失任何内容。当你下载一个文件的时候,你想得到的是一个完整的文件,而不仅仅是其中的一部分,因为如果数据丢失或者乱序,那就不是你想要的了,所以用TCP。
TCP协议的全称是传输控制协议,是IETF RFC 793定义的面向连接、可靠、基于字节流的传输层通信协议。TCP是一种面向连接的可靠的流媒体协议。流量是一个不间断的数据结构,你可以把它想象成排水管中的水流。
1.TCP连接过程
第一次握手
客户端向服务器发送连接请求消息段。该消息段包含其自己的数据通信初始序列号。请求发送后,客户端进入SYN-SENT状态。
第二次握手
收到连接请求报文段后,如果服务器同意连接,会发送响应,响应中还会包含自己的数据通信初始序列号,发送后进入SYN-RECEIVED状态。
Di三次握手
当客户端收到连接同意的回复时,也会向服务器发送确认消息。客户端在发送此消息段后进入“已建立”状态,服务器在收到此响应后也进入“已建立”状态,此时连接已成功建立。
这里可能会有一个问题:为什么TCP建立连接需要三次握手而不是两次?这是因为这是为了防止服务器接收到无效的连接请求消息段,从而导致错误。
2.传输控制协议断开链接
TCP全双工,断开时需要两端发送FIN和ACK。
第一次握手
如果客户端A认为数据传输完成,则需要向服务器b发送连接释放请求。
第二次握手
b收到连接释放请求后会告诉应用层释放TCP链路。然后发送一个ACK包,进入CLOSE_WAIT状态,表示a到b的连接已经释放,a发送的数据不再接收。但是因为TCP连接是双向的,所以B仍然可以向a发送数据。
Di三次握手
此时B会继续发送未完成的数据,完成后会向A发送连接释放请求,然后B进入LAST-ACK状态。
第四次握手
收到释放请求后,a向b发送确认,此时a进入TIME-WAIT状态。这种状态将持续2MSL(最大网段生存期,指网络中一个网段的生存期,超时将被丢弃)。如果在此时间段内没有B的重传请求,则进入CLOSED状态。当B收到确认响应时,也进入CLOSED状态。
3.传输控制协议的特点
面向连接
面向连接意味着在发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,可以建立可靠的连接。建立连接为可靠的数据传输奠定了基础。
仅支持单播传输
每个TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持组播和广播传输。
面向字节流
与UDP不同,TCP不独立传输消息,而是以字节流的形式传输,不保留消息边界。
可靠传输
为了可靠传输,判断丢包,误码取决于TCP段号和确认号。为了保证消息传输的可靠性,TCP给每个包赋予一个序列号,序列号也保证了发送给接收实体的包的有序接收。然后,接收实体向成功接收的字节发回相应的确认。如果发送实体在合理的往返延迟(RTT)内没有接收到确认,则相应的数据(假设丢失)将被重传。
提供拥塞控制
当网络拥塞时,TCP可以降低注入网络的数据速率和数据量,缓解拥塞
TCP提供全双工通信
TCP允许通信双方的应用程序随时发送数据,因为TCP连接的两端都有缓冲区,用于临时存储双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓冲一段时间,一次发送更多的数据段(最大数据段大小取决于MSS)