Socket、Http、TCP/IP、UDP
来源:互联网 发布:文笔比较好的网络作者 编辑:程序博客网 时间:2024/05/22 07:41
HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的
tcp协议: 对应于传输层
ip协议: 对应于网络层
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的
Socket和http协议都可以实现数据传输,但两种传输方式有什么 各自的特点,和缺点,如何选择合适的传输方式。
1 数据传输方式
1.1 Socket传输的定义和其特点
所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议。Socket处于网络协议的传输层。
UDP协议:广播式数据传输,不进行数据验证,不是面向连接的协议
TCP协议:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
Socket 传输的特点:
优点
1) 传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)
传输数据时间短,性能高
适合于客户端和服务器端之间信息实时交互
可以加密,数据安全性强
缺点:
需对传输的数据进行解析,转化成应用级的数据
对开发人员的开发水平要求高
相对于Http协议传输,增加了开发量
1.2 基于Http协议传输的定义和其特点
目前基于http协议传输的主要有http协议 和基于http协议的Soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。
基于http协议的传输特点
优点:
基于应用级的接口使用方便
程序员开发水平要求不高,容错性强
缺点:
传输速度慢,数据包大(Http协议中包含辅助应用信息)
如实时交互,服务器性能压力大。
数据传输安全性差
2 各数据传输方式的适用范围
2.1 Socket传输适用范围
基于Socket传输的特点:Socket 传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,如网络游戏,手机应用,银行内部交互等
2.2 基于Http协议传输的适用范围
基于http协议传输的特点:基于http协议传输方式适合于对传输速度,安全性 要求不是很高,且需要快速开发的应用。如公司OA系统,互联网服务等。
- Socket、Http、TCP/IP、UDP
- Socket、Http、TCP/IP、UDP
- TCP/IP Socket Http UDP
- tcp/ip ,udp,http,socket
- TCP/UDP/IP/Http Socket
- Socket、Http、TCP/IP、UDP
- IP/TCP UDP/SOCKET/HTTP
- TCP/IP HTTP UDP Socket
- ip,TCP,UDP,HTTP,TCP/IP,SOCKET
- socket、http、tcp、udp、tcp|ip
- socket http tcp/ip udp讲解
- TCP/IP、UDP、 Http、Socket的区别
- TCP/IP、UDP、 Http、Socket的区别
- TCP/IP、Http、Socket以及UDP
- TCP/IP UDP HTTP Socket释疑
- TCP、UDP、IP HTTP SOCKET区别
- socket、HTTP、TCP、UDP、IP的区别
- 网络协议:TCP/IP、UDP、Http、Socket
- 如何用一个语句判断一个整数是不是二的整数次幂?
- 你不太熟悉的JVM命令配置参数
- leetcode_125. Valid Palindrome 判断字母数字回文串,大小写转化
- C编程中使用全局变量应注意的事项
- 约瑟夫环的实现
- Socket、Http、TCP/IP、UDP
- 几种算法的总结
- 自己开发简单web服务器二(Node.js实现)
- poj 1017Packets
- 帧动画、补间动画、属性动画
- SpringBoot入门
- 网络编程入门
- uses-permission
- [回归基础系列]-简单选择排序[JAVA]