先来一个讲TCP、UDP和HTTP关系的设计模式
一、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。 所以,HTTP自己就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。浏览器
TCP 是基于 TCP 协议实现的网络文本协议,属于传输层。 UDP 是和TCP 对等的,属于传输层,UDP 和 TCP 有重要的区别。服务器
二、HTTP协议是创建在请求/响应模型上的。首先由客户创建一条与服务器的TCP连接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。 HTTP/1.0为每一次HTTP的请求/响应创建一条新的TCP连接,所以一个包含HTML内容和图片的页面将须要创建屡次的短时间的TCP连接。一次TCP连接的创建将须要3次握手。 另外,为了得到适当的传输速度,则须要TCP花费额外的回路连接时间(RTT)。每一次连接的创建须要这种常常性的开销,而其并不带有实际有用的数据,只是保证连接的可靠性,所以HTTP/1.1提出了可持续连接的实现方法。HTTP/1.1将只创建一次TCP的连接而重复地使用它传输一系列的请求/响应消息,所以减小了连接创建的次数和常常性的连接开销。网络
这里有必要再讲一下三次握手的过程:并发
第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。tcp
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;ACK:确认字符(Acknowledgement)测试
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP链接成功)状态,完成三次握手。.net
三、结论:虽然HTTP自己是一个协议,但其最终仍是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。设计
Socket是什么呢? Socket是应用层与TCP/IP协议族通讯的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来讲,一组简单的接口就是所有,让Socket去组织数据,以符合指定的协议。blog
TCP(Transmission Control Protocol,传输控制协议)是基于链接的协议,也就是说,在正式收发数据前,必须和对方创建可靠的链接。一个TCP链接必需要通过三次“对话”才能创建起来,其中的过程很是复杂,咱们这里只作简单、形象的介绍,你只要作到可以理解这个过程便可。咱们来看看这三次对话的简单过程:主机A向主机B发出链接请求数据包:“我想给你发数据,能够吗?”,这是第一次对话;主机B向主机A发送赞成链接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工做)的数据包:“能够,你何时发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我如今就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,通过三次“对话”以后,主机A才向主机B正式发送数据。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非链接的协议,它不与对方创建链接,而是直接就把数据包发送过去! UDP适用于一次只传送少许数据、对可靠性要求不高的应用环境。好比,咱们常用“ping”命令来测试两台主机之间TCP/IP通讯是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,而后对方主机确认收到数据包,若是数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操做发送4个数据包(如图2所示)。你们能够看到,发送的数据包数量是4包,收到的也是4包(由于对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非链接的协议,没有创建链接的过程。正由于UDP协议没有链接的过程,因此它的通讯效果高;但也正由于如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,所以有时会出现收不到消息的状况。
tcp协议和udp协议的差异 TCP UDP 是否链接: TCP面向链接 UDP面向非链接 传输可靠性: TCP可靠 UDP不可靠 应用场合: TCP传输大量数据 UDP少许数据 速度: TCP慢 UDP快
参考文章:http://blog.csdn.net/hexinli/article/details/50500316
http://blog.csdn.net/u013485792/article/details/52100533
http://blog.csdn.net/sundacheng1989/article/details/28239711