TCP/UDP 协议,和 HTTP、FTP、SMTP,区别及应用场景
一、OSI 模型
OSI 模型主要作为一个通用模型来做理论分析,而TCP/IP 协议模型是互联网的实际通讯协议,两者一般做映射分析,以下不做严格区分和声明(好吧,比较懒); OSI 整个模型层次大致可以分为3个主要层面来看 |.............主机...............| 操作系统和软件等 应用、表示、会话 |.............网络...............| 互联网络和相关协议 传输、网络 (TCP/IP) |.............介质...............| 物理介质相关 数据链路、物理 下图模型为OSI 1,主机需要网络传输数据, 网络本质上是一种服务,主机和网络之间靠传输层接口,就好比你要叫快递送东西; 2,网络可以提供两种服务: 1)可靠,面向连接;(TCP) 就像靠谱的快递,每一步都有反馈和监控,当然价格也是呵呵... 2)不可靠,尽力而为的传输 (UDP) 就像某些不靠谱的快递或者听都没听过的XX快递,价格低,但是能不能到就靠运气了。 3,两种服务无所谓好坏,TCP 的可靠是需要消耗很多资源的,效率低 (大块,重要的文件等) UDP 不保证可靠性,但是效率高(视频,语音,不重要的小文件等) 4,而其他的“ HTTP、FTP、SMTP 等所谓的“Application-layer Protocol”协议”指的是在TCP/IP 通讯协议框架下具体实现特定功能的应用(HTTP 用来实现超文本传输,FTP文件传输,SMTP处理邮件等等),两者的关系,咳咳,关系通俗的说: TCP和UDP以及IP 协议是互联网络通讯的基础,就像《宪法》,而应用协议就像具体的《刑法》、《民法》、《婚姻法》、《未成年人保护法》......等等,在某个领域的特定应用和具体实现,但是最基本的一条:违宪无效。 下图模型为TCP/IP栈
二、TCP与HTTP的区别
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把 IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。 TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
7 | 应用层 | 例如、、、、、、、、、、、 |
6 | 表示层 | 例如、、、、 |
5 | 会话层 | 例如、、、ISO 8327 / CCITT X.225、、、、、 |
4 | 传输层 | 例如、、、、、、 |
3 | 网络层 | 例如、、、、、、、、、、、 |
2 | 数据链路层 | 例如、、、、、、、、 |
1 | 物理层 | 例如、、、 |
三、TCP,UDP,HTTP应用场景
Socket实现服务器与客户端之间的物理连接,并进行数据传输。主要有TCP/UDP两个协议。Socket处于网络协议的传输层。
TCP:传输控制协议,面向连接的的协议,稳定可靠。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。 UDP:广播式数据传输,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
优点:1.传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低
2.传输数据时间短,性能高
3.适合C/S之间信息实时交互
4.可以加密,数据安全性高
缺点: 1.需要对传输的数据进行解析,转化为应用级的数据
2.对开发人员的开发水平要求高
3.相对于Http协议传输,增加了开发量
Http请求主要有http协议,基于http协议的soap协议,常见的http数据请求方式有get和post,web服务
优点:1.基于应用级的接口使用方便
2.要求的开发水平不高,容错性强
缺点: 1.传输速度慢,数据包大。
2.如实现实时交互,服务器性能压力大
3.数据传输安全性差