android ------- TCP与UDP

TCP

TCP(Transmission Control Protocol,传输控制协议) 即传输控制协议,是一种传输层通讯协议服务器

 

特色:面向链接、面向字节流、全双工通讯、可靠网络

 

面向链接:指的是要使用TCP传输数据,必须先创建TCP链接,传输完成后释放链接,就像打电话同样必须先拨号创建一条链接,打完后挂机释放链接。性能

全双工通讯:即一旦创建了TCP链接,通讯双方能够在任什么时候候都能发送数据。spa

可靠的:指的是经过TCP链接传送的数据,无差错,不丢失,不重复,而且按序到达。.net

面向字节流:流,指的是流入到进程或从进程流出的字符序列。简单来讲,虽然有时候要传输的数据流太大,TCP报文长度有限制,不能一次传输完,要把它分为好几个数据块,可是因为可靠性保证,接收方能够按顺序接收数据块而后从新组成分块以前的数据流,因此TCP看起来就像直接互相传输字节流同样,面向字节流。视频

 

TCP创建链接

必须进行三次握手:若A要与B进行链接,则必须 blog

 

第一次握手:创建链接。客户端发送链接请求报文段,将SYN位置为1,Sequence Number为x;而后,客户端进入SYN_SEND状态,等待服务器的确认。即A发送信息给B进程

第二次握手:服务器收到客户端的SYN报文段,须要对这个SYN报文段进行确认。即B收到链接信息后向A返回确认信息资源

第三次握手:客户端收到服务器的(SYN+ACK)报文段,并向服务器发送ACK报文段。即A收到确认信息后再次向B返回确认链接信息io

 

(此时,A告诉本身上层链接创建;B收到链接信息后告诉上层链接创建。)

 

 

 

 

这样就完成TCP三次握手 = 一条TCP链接创建完成 = 能够开始发送数据

 

 

为何TCP创建链接须要三次握手?

防止服务器端由于接收了早已失效的链接请求报文从而一直等待客户端请求,从而浪费资源。

 

TCP释放链接四次握手

如今假设A主动释放链接:(数据传输结束后,通讯的双方均可释放链接),其释放TCP链接的过程以下:

第一次握手: A发送释放信息到B;(发出去以后,A->B发送数据这条路径就断了)

第二次握手: B收到A的释放信息以后,回复确认释放的信息:我赞成你的释放链接请求
第三次握手: B发送“请求释放链接“信息给A
第四次握手: A收到B发送的信息后向B发送确认释放信息:我赞成你的释放链接请求

 

首先进行关闭的一方将执行主动关闭,而另外一方执行被动关闭。

 

为何TCP释放链接须要四次挥手?

 

为了保证双方都能通知对方“须要释放链接”,即在释放链接后都没法接收或发送消息给对方

须要明确的是:TCP是全双工模式,这意味着是双向均可以发送、接收的

释放链接的定义是:双方都没法接收或发送消息给对方,是双向的

当主机1发出“释放链接请求”(FIN报文段)时,只是表示主机1已经没有数据要发送 / 数据已经所有发送完毕; 


可是,这个时候主机1仍是能够接受来自主机2的数据。

当主机2返回“确认释放链接”信息(ACK报文段)时,表示它已经知道主机1没有数据发送了 
但此时主机2仍是能够发送数据给主机1

当主机2也发送了FIN报文段时,即告诉主机1我也没有数据要发送了 
此时,主机1和2已经没法进行通讯:主机1没法发送数据给主机2,主机2也没法发送数据给主机1,此时,TCP的链接才算释放

 

 

 

UDP

(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非链接的协议,它不与对方创建链接,而是直接就把数据包发送过去!

 

特色:无链接的、不可靠的、面向报文、没有拥塞控制

无链接的:和TCP要创建链接不一样,UDP传输数据不须要创建链接,就像写信,在信封写上收信人名称、地址就能够交给邮局发送了,至于能不能送到,就要看邮局的送信能力和送信过程的困难程度了。

不可靠的:由于UDP发出去的数据包发出去就无论了,无论它会不会到达,因此极可能会出现丢包现象,使传输的数据出错。

面向报文:数据报文,就至关于一个数据包,应用层交给UDP多大的数据包,UDP就照样发送,不会像TCP那样拆分。

没有拥塞控制:拥塞,是指到达通讯子网中某一部分的分组数量过多,使得该部分网络来不及处理,以至引发这部分乃至整个网络性能降低的现象,严重时甚至会致使网络通讯业务陷入停顿,即出现死锁现象,就像交通堵塞同样。TCP创建链接后若是发送的数据由于信道质量的缘由不能到达目的地,它会不断重发,有可能致使愈来愈塞,因此须要一个复杂的原理来控制拥塞。而UDP就没有这个烦恼,发出去就无论了。

 

 

 

TCP与UDP区别总结:

一、TCP面向链接(如打电话要先拨号创建链接);UDP是无链接的,即发送数据以前不须要创建链接
二、TCP提供可靠的服务。也就是说,经过TCP链接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付
三、TCP面向字节流,其实是TCP把数据当作一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,所以网络出现拥塞不会使源主机的发送速率下降(对实时应用颇有用,如IP电话,实时视频会议等)
四、每一条TCP链接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通讯
五、TCP首部开销20字节;UDP的首部开销小,只有8个字节
六、TCP的逻辑通讯信道是全双工的可靠信道,UDP则是不可靠信道

 

 

 

参考资料

 

https://blog.csdn.net/guyuealian/article/details/52535294

https://blog.csdn.net/carson_ho/article/details/53366856

https://blog.csdn.net/qq_33951180/article/details/60767876

相关文章
相关标签/搜索