TCP和UDP
来源:互联网 发布:vga矩阵切换器 编辑:程序博客网 时间:2024/06/15 00:34
1、定义
TCP (TransmissonControl Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IEFC的RFC 793定义。
UDP (User DatagramProtocol 用户数据报协议) 是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
2、区别
(1)TCP 面向连接(三次握手机制)、通信前需建立连接;UDP面向无连接,通信前不需要建立连接
(2)TCP 保障可靠传输(按序、无差错、不丢失、不重复);UDP不保障可靠传输,使用最大努力交付
(3)TCP面向字节流的传输,UDP面向数据报的传输
(4)每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信
(5)TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道
3、用途
TCP一般用于文件传输,发送或者接收邮件,远程登录等等
UDP一般用于即时通信,在线视频,网络语音通话等等
4、TCP建立连接时,三次握手的具体过程
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;
注释 SYN:同步序列编号
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入连接成功状态,完成三次握手。
5、TCP断开连接时,四次挥手的具体过程
TCP四次挥手,由于TCP连接时全双工的,因此每个方向都必须单独进行关闭,这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的(报文段4)。
(2)服务器B收到这个FIN,它发回一个ACK,确认序列号收到的序列加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)
注释:为什么建立连接协议是三次握手,而关闭连接却是四次握手?
这是因为服务端的LISTEN的状态下的SOCKET当收到SYN报文的建立连接请求后,它可以把ACK和SYN(ACK起应答作用,SYN起同步作用)放在一个报文里发送。但是关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。
- UDP和TCP 大全
- TCP和UDP
- TCP和UDP
- udp和tcp
- UDP和TCP 协议
- UDP和TCP小结
- TCP和UDP
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP
- UDP和TCP协议
- TCP、UDP和HTTP
- TCP和UDP
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP、UDP和HTTP
- 别傻啦,不会高数,你连人话都听不懂
- 【知识贴】战争中的数学应用
- 你知道吗?伯努利以前居然是医学博士!
- String类型与Integer类型的转换
- 量化投资分析
- TCP和UDP
- 1110分段函数
- Centos 7环境下使用nginx和uwsgi部署多站(最简单的方法)
- 软考之UML图深入学习(2)
- 安卓MVP模式
- 软考总结
- Latin1编码的中文
- 斯坦福大学「黑盒学习」研究:使用神经变分推理的无向图模型,可替代「采样」 | 附NIPS 2017论文
- HTTPS 工作原理和 TCP 握手机制