http与Socket区别
来源:互联网 发布:台风莫兰蒂数据 编辑:程序博客网 时间:2024/05/22 05:02
HTTP:
超文本传输协议。
1.
典型的响应消息:
HTTP/1.0200 OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:"a030f020ac7c01:1e9f"
Content-length:39725426
Content-range:bytes55******/40279980
2.
Request 请求
请求的四种动作:
GET:从特定的源获取信息
POST:发送新的信息去特定的源
PUT:更新特定源的现有信息
DELETE:删除特定源上的现有信息
HTTP请求的组成:
request line:告诉服务器是哪一种请求正在发生和寻找的资源是什么
header:发送给服务器的附加信息,例如是哪个客户端发出的请求
body:在GET请求中可以是空的,在POST和PUT的请求中包含了数据
Response 响应
一次对服务器成功请求的结果被包含在一个响应中,这个响应是服务器返回给客户端的一个消息。这个来自服务器的响应包含了一个3位数字的状态代码(HTTP Status Codes)。这些代码是由1、2、3、4、5开头的。( http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81)
五种状态代码:
1xx:服务器正在执行你的请求
2xx:服务器响应成功
3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求,通常需要重定向
4xx:客户端错误
5xx:服务端错误
HTTP响应的组成:
response line:包含了HTTP状态代码
header:包含了关于服务器和这个响应的信息
body:响应的内容
数据格式
XML(Extensible Markup Language)可扩展标记语言
它和HTML很类似,都使用的是尖括号的标签,不同的是XML允许你使用你自己组装的标签
<pet>
<name>Jeffrey</name>
<species>Giraffe</species>
</pet>
JSON(Java Script Object Notation)JS对象符号
通常JSON和XML是二选一的,JSON的数据格式很类似于JavaScript的对象
{
"pets": {
"name": "Jeffrey",
"species": "Giraffe"
}
}
Socket:
1.
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
2.
一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。
3.
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
总结:
HTTP与Socket的区别:一个传输的快,一个传输的慢。但是他们都是基于TCP/IP/UDP的三种协议,进行数据传输的。
Socket 传输的特点:
传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低),传输数据时间短,性能高,适合于客户端和服务器端之间信息实时交互,可以加密,数据安全性强。
缺点:
需对传输的数据进行解析,转化成应用级的数据,对开发人员的开发水平要求高,相对于Http协议传输,增加了开发量。
一般用于:新闻推送等。
HTTP协议的传输特点:
基于应用级的接口使用方便,程序员开发水平要求不高,容错性强
缺点:
传输速度慢,数据包大(Http协议中包含辅助应用信息),如实时交互,服务器性能压力大。数据传输安全性差。
一般用于:点播,hls,http 直播:rtmp,hls,hds等协议。
为什么国内视频网站多采用HTTP协议传输视频,而国外多使用RTMP等专门的流媒体协议
1.直播受众较多就只能用cdn,http在cdn中支持较好。
2.http对客户端开发支持较好。
3.服务器端成本低,http用nginx就行,省了wowza的许可钱。
4.主播直播用户比较离散,定制功能较多,所以用http较少。
5.直播:RTMP(延迟低,适合对实时性要求比较高的情况,比如互动直播,延迟控制在3秒内,移动端播放器SDK需要自己搞)。
6.FLV OVER HTTP(延迟比RTMP高一点,来疯之类在用) 。
7.HLS(高延迟,至少9秒左右,适合游戏直播,Twich好像用这个)。
8.点播:HTTP-RANGE,
9.HLS(比较适合直播,移动端系统都支持,播放器PC端可以用开源的基于Flash插件的播放器,纯JS 的播放器就THEOPlayer比较靠谱)。
10.MPEG-DASH(youtube在用?现在还没有流行)。
- Http 与 Socket 区别
- Http 与 Socket 区别
- Http 与 Socket 区别
- Http 与 Socket 区别
- http与socket区别
- Http 与 Socket 区别
- Http 与 Socket 区别
- Http 与 Socket 区别
- http与Socket区别
- socket与http的区别
- http与socket连接区别
- Http与Socket连接区别
- socket与http的区别
- socket与HTTP的区别
- http与socket连接区别
- socket与http的区别
- socket与http的区别
- SOCKET与HTTP的区别
- 搭建Spring boot基本环境-idea
- linux tomcat启动与端口占用查看
- (AtCoder Grand Contest 019) C
- iOS逆向工具--usbmuxd使用
- Python培训机构学员感悟
- http与Socket区别
- Labview通过RS422通讯接口PC与下位机通信
- Swift 项目中可能用到的第三方框架
- idea使用笔记
- Java NIO -基础认知
- JDK源码分析之String(一)
- JS横竖屏检测
- redis的简单理解
- C# 16进制与字符串、字节数组之间的转换