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区别相关推荐

  1. 什么是Socket?websocket和socket区别?

    socket是对TCP/IP协议的封装,是一个(TCP/IP网络的API 函数(接口)). 是传输层到应用层间的辅助API. websocket和socket区别? 相当于 JS和java区别. 无区 ...

  2. TCP,IP,HTTP,SOCKET区别和联系

    物理层-- 数据链路层-- 传输层--                       TCP协议 会话层-- 我 们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便 ...

  3. Http 与 Socket 区别

    HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据.HT ...

  4. [网络]------TCP UDP HTTP Socket 区别

    关于这几个的概念,网上已经很全面了,在这个做个笔记: 前提须知: 1.协议就是大家提前约定的一种规范,后人照着这个遵循就可以,也可以将语言理解为一种协议 2.网络通信的世界中,有七层协议(应用层,表示 ...

  5. Http、Socket、WebSocket之间联系与区别

    一.WebSocket和Socket区别 可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系.HTTP 协议有一个缺陷:通信 ...

  6. 一文了解websocket和socket(论点:概念、流程、区别)

    文章目录 概念 Websocket Socket 通信流程 Websocket Socket 区别

  7. Socket编程(Android客户端+PC服务器端)

    一个多月没有写东西了,感觉像过了一个暑假...废话不多说了,今天来记录一下这两天学习Socket的内容.按照我研究思路来进行一步步的深入Socket. 一.什么是Socket 网络上的两个程序通过一个 ...

  8. 线程与进程,http、https(post、get),socket(tcp、udp)的拆包和粘包,protocol buffer、大头小头简述

    一.tcp和udp区别? 三次握手安全:tcp建立连接(三次握手),安全可靠(有序,无差错.无丢失.无重复): 建立连接:udp通信前不需建立连接,不可靠传输(视频.音频通话): 分组开销:TCP面向 ...

  9. Unix Socket

    原文链接:https://blog.csdn.net/zhangkun2609/article/details/84188465 一. 功能 用于同一台主机间的进程间通讯(IPC). 二. 特点 不需 ...

最新文章

  1. 【Java面试题】37 说出ArrayList,Vector, LinkedList的存储性能和特性
  2. android arm
  3. oracle用户怎么更改空间,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...
  4. Java方法重载与方法重写
  5. 78%的iPhone用户手机没有安装过新软件
  6. LeetCode-18-4Sum
  7. python selenium翻页_Selenium翻页的实现方法实例
  8. plsql 存储过程 批量提交_新一代的键值存储 KVell SOSP 2019
  9. android Fragments (Android官方文档中文版)
  10. docker配置深度学习环境
  11. 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计
  12. 苹果手机的计算机怎么设置快捷键大全,苹果Macbook快捷键使用大全,超详细!...
  13. Linux常见命令tar
  14. 根据特征码搜索基址,VC写的源码
  15. 最简单的 UE 4 C++ 教程 —— 扫描多线轨迹【十六】
  16. 稿费一般多少钱一千字_为什么我在刊物发表文章会给稿费千字多少元不等,而网上却没有?...
  17. 每日一问-ChapGPT-20221231-关于中医的各国看法
  18. 【EasyUI篇】一整套EasyUI示例集锦
  19. 上网设备linux共享网络,共享上网 - Linux Wiki
  20. Steam如何转换区服(以PES2021日服为例)

热门文章

  1. 聊天室登录php,聊天室技术(二)-- 登录_PHP
  2. 用户研究专题:桌面研究定性研究
  3. 教师招聘计算机面试技能测试,教师招聘面试中技能测试指什么
  4. 五金与机械行业的WMS系统方案
  5. JavaWeb-简析MVC三层架构
  6. Masm for MAC安装教程+实例分析
  7. Lr CC Classic 2018 for Mac
  8. html怎么在文字中加小方框,css之列表数据前加上小方框
  9. avl二叉树 java_平衡二叉树之AVL树(Adelson-Velsky and Landis Tree)简介及Java实现
  10. 循环-05. 兔子繁衍问题