Socket、Http、TCP/IP、UDP的联系与区别

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  Socket传输的定义和其特点

   所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议。Socket处于网络协议的传输层。

   UDP协议:广播式数据传输,不进行数据验证,不是面向连接的协议

   TCP协议:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,

 

    TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

 

 

Socket 传输的特点:

   优点

            1)  传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)

  1. 传输数据时间短,性能高

  2. 适合于客户端和服务器端之间信息实时交互

  3. 可以加密,数据安全性强

 

   缺点:

  1. 需对传输的数据进行解析,转化成应用级的数据

  2. 对开发人员的开发水平要求高

  3. 相对于Http协议传输,增加了开发量

 

1.2  基于Http协议传输的定义和其特点

       目前基于http协议传输的主要有http协议 和基于http协议的Soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。

 

基于http协议的传输特点

   优点:

  1. 基于应用级的接口使用方便

  2. 程序员开发水平要求不高,容错性强

   缺点:

  1. 传输速度慢,数据包大(Http协议中包含辅助应用信息)

  2. 如实时交互,服务器性能压力大。

  3. 数据传输安全性差

 

各数据传输方式的适用范围

 2.1 Socket传输适用范围

 基于Socket传输的特点:Socket 传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,如网络游戏,手机应用,银行内部交互等

 

 2.2 基于Http协议传输的适用范围

       基于http协议传输的特点:基于http协议传输方式适合于对传输速度,安全性 要求不是很高,且需要快速开发的应用。如公司OA系统,互联网服务等。

 

转自:http://blog.csdn.net/xyylchq/article/details/7660915

          http://my.oschina.net/u/556624/blog/71484

转载于:https://www.cnblogs.com/xingwu/p/3706389.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

honeywell扫码枪取消回车_霍尼韦尔条码扫描器常见问题与解决方法

原标题:霍尼韦尔条码扫描器常见问题与解决方法对于用户使用无线条码扫描器还是有线,再使用过程中难免会遇到一些小问题,又不知道这么解决,下面兆麟条码技术部提供一些条码扫描器出现的问题以及解决方法,供大家参考学习…

Ubuntu Server 分区案例

为什么80%的码农都做不了架构师?>>> 只有一台服务器,配置硬盘1TB,内存4GB,既要做开发服务器,又要做Web服务器和数据库服务器,分区如下: 挂载点大小分区格式 /boot512MBext4/20GBext…

转:有关常量的知识点

整型常量十进制:18、-31long int型常量 123l、123L、123456l、123456Lunsigned int型常量 123u、 123U根据实际数据大小确定int型还是long型以数字“0”开始的整型常量是八进制数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见以…

python移位操作困惑

1.在使用python进行移位操作的时候发现python进行移位操作后的数值与其他语言不一样(java,php,javascript),然后google了下 看到了这篇帖子http://www.cnblogs.com/zhengyun_ustc/archive/2009/10/14/shifting.html,然后又看了看…

e480 黑苹果_Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要

Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要2020-03-28 21:00:244点赞17收藏4评论小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情概述近日在家闲来无事,一直…

Android -- WebView进度条

有系统actionbar requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能 setContentView(R.layout.main);//布局 setProgressBarIndeterminateVisibility(true);//在需要显示进度条的时候调用这个方法 setProgressBarIndeter…

360网络修复工具_为什么大家都在骂360,但是360依旧是很强?

相信很多小伙伴也多多少少的听说过就是不要随便装360,因为装上360会如何如何。这些人往往说起来也是很有道理,我在以前上学的时候也是这么觉得,但是后来工作之后发现并不是这样。360先说一下360安全卫士的功能,有系统优化、垃圾清…

c语言编程题目(一)

2017-05-09 19:54 1人阅读 评论(0) 收藏 举报转自:http://blog.csdn.NET/oqqhutu12345678/article/details/69524383 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * …

Java运行时内存

对于java程序员来说,并不必显示地对内存进行管理,一切都交给java虚拟机去做吧,而且,你也不一定做得比java虚拟机来得专业。好像所有内存管理都交给虚拟机去做就万事大吉了,但是,事实有时并非如此&#xff0…

中班机器人上课视频_家委会:出班费买智能扫地机器人,不用家长搞卫生了,莫名其妙...

【01】原来大家上学,几乎是很随意的样子,有人至没上过幼儿园,有的上过半年,然后就直接升小学。可即使是升小学了,家长也不会管,全凭自己了。可如今随着社会的发展,父母们都非常重视孩子们的学习…

Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...

睡眠机制 我们活着的时候,大脑会产生脑电波。脑电图仪器通过贴在人头上的一些电极读出脑电波的活动,然后把活动用图表显示出来。 睡眠过程可以分为5个过程,划分依据与大脑发出的脑电波类型。 当人清醒时,大脑发出β脑电波&#xf…

ue4集合类型_UE4粒子系统渲染管线概述

本文基于UE4版本4.25.3,对Cascade粒子系统的移动端渲染管线进行简单的概括和描述。Game Thread部分粒子系统Actor被Spawn(或所在的Level被加载)的时候,UParticleSystemComponent注册和初始化,并通过CreateSceneProxy函…

ip反查MAC地址

打开DOS命令提示符窗口,在窗口中输入命令“nbtstat -a IP”,如以上面查到的“10.10.3.21”为例,输入“nbtstat -a 10.10.3.21”转载于:https://www.cnblogs.com/jtm789/p/3715535.html

2、Sprite,SpriteBatch,Texture,TextureRegion的初步认识

昨天搭建了环境,今天就初步接触这个4个控件(Sprite,SpriteBatch,Texture,TextureRegion) 1、SpriteBatch 这个吗,我没有看api文档,偶是直接看土豆的博客学习的,我看了代码…

nedc和epa续航里程什么意思_NEDC、WLTP和EPA续航里程哪种最真实,用车注意事项都有什么...

我的理解是:从目前来看,衡量一款新能源电动汽车的性能指标,其中最为关键的就是车辆的续航里程,而这个续航里程使用不同的测试方法又会有不同的表现。从现有的续航里程测试标准来看,主要有NEDC、WLTP、EPA三种方式&…

javascript系列之执行上下文

写在前面:一 直想系统的总结一下学过的javascript知识,喜欢这门语言也热爱这门语言。未来想从事前端方面的工作,提前把自己的知识梳理一下。前面写了些 DOM的知识,略觉水平有限。没几个月就要开赴找工作的前线,奈何自己…

linux系统在虚拟机中迁移的技术难点

linux系统在虚拟机迁移中的技术难点通常我们期望虚拟机的迁移能够全部自动化或者部分自动化完成,但实际上Linux系统在P2V(Physical to virtual 物理到虚拟)和V2V(virtual to virtual)的迁移中可能遇到一些困难。1.磁盘…

Altium Designer 09简易教程(一)

【写的不好请谅解】 1、首先需要先准备好软件,这个大家就直接去网上找一下,安装也不难,如果有需要也可以给我留言哈嘻嘻嘻; 2、打开ad09; 3、大家会发现整个界面都是英语,可能看起来有点累吧,就…

莒南机器人_莒南42项重点建设项目公布!一定有你关注的

10日,县发改局公布莒南县2020年重点建设项目表!涉及工业、服务业、基础设施、现代农业等行业,共42项。详↓工业1、山东钢铁集团永锋临港有限公司临港先进优特钢产业基地一期项目投资方:山东钢铁集团永锋临港有限公司建设地点&…

配置Mysql实现主从复制与读写分离

环境说明 主从复制使用mysql自带的master与slave机制;读写分离使用mysql-proxy实现! 有服务器三台:s1,s2,s3。 s1为web服务器,装有httpd,php,mysql,mysql-proxy。 s2为主数据库服务器&#xff0…