您的位置:首页 > 理论基础 > 计算机网络

TCP,UDP和socket,Http之间的联系与区别

2016-07-08 13:17 393 查看

因为最近做一个智能家居项目,首先要通信用socket,为了及时先用UDP判断是内网外网建立链接,再用TCP实时通信。

首先了解定义

http://www.360doc.com/content/14/0325/09/1317564_363500997.shtml

TCP的优点:

可靠,稳定

TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源

TCP的缺点:

慢,效率低,占用系统资源高,易被攻击

TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。

而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

UDP的优点:

快,比TCP稍安全

UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……

UDP的缺点:

不可靠,不稳定

因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

基于上面的优缺点,那么:

什么时候应该使用TCP:

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给

对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等

传输文件的协议,POP、SMTP等邮件传输的协议。

在日常生活中,常见使用TCP协议的应用如下:

浏览器,用的HTTP

FlashFXP,用的FTP

Outlook,用的POP、SMTP

Putty,用的Telnet、SSH

QQ文件传输

…………

什么时候应该使用UDP:

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可

以使用UDP。

比如,日常生活中,常见使用UDP协议的应用如下:

QQ语音

QQ视频

TFTP



1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。

在网络层有:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有:TCP协议与UDP协议。

在应用层有:FTP、HTTP、TELNET、SMTP、DNS等协议。

因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

2、HTTP协议是建立在请求/响应模型上的。

首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。

HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。

另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。

3、结论:

虽然HTTP本身是一个协议,但其最终还是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。

Socket是什么呢?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: