http,websocket和socket详解

一,HTTP     

        1,概念:http是目前应用最广泛的一个网络传输协议,是属于网络应用层的面向对象的协议.

       1.1,HTTP1.1解决TCP3次握手4次挥手耗性能问题:

如果有大量的连接,每次在连接,关闭时都要经历3次握手,4次挥手,这很显然会造成性能低下.因此,HTTP1.1开始,默认采用持久连接,使用了一种叫做keepalive connections 的机制,它可以在传输数据后仍然保持连接,当客户端再次获取数据时,直接使用刚刚空闲下来的连接,而无需再次握手.低线路负载,提高传输速度.

 

      Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

       1.2,HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

 

       1.3,TCP长连接:client向server发起连接,server接受client连接,双方建立连接,client与server完成一次请求后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

 

   2,请求方式:

   一共有8种请求方式,常用的请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE

 

   3,返回码:

   每次请求,都会有状态码返回,常见的状态码有:

   200,请求成功

   206,请求内容局部成功

   403,拒绝或者禁止访问

   404,客户端请求语法错误,一般是连接地址不对.

   500,服务器出现异常.宕机.

 

        4.,Http是客服端发起请求,服务端才响应,发一次,响应一下,ajax的轮询,也是让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。这样就很被动,服务端不能主动联系客户端,只能由客户端发起。得不停的发起.

 

 

二,websocket     

 

       1,WebSocket就很好的解决被动性问题,只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。不用再次发起网络请求,服务端有消息就会自己发过来.它允许服务端主动向客户端推送数据。比如在app上websocket获取并展示客户的时时消费情况.

 

        2,WebSocket同HTTP一样也是应用层的协议. 都是基于TCP的,可靠性的传输协议。但是它是一种双向通信协议,是建立在TCP之上的,并且Websocket是一个持久化的协议,而HTTP是非持久化的协议。WebSocket protocol 是HTML5一种新的协议,但Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手。一开始的握手需要借助HTTP请求完成。 

 

        3,WebSocket在建立握手时,通过 HTTP/1.1 协议的101状态码进行握手。但是建立之后,在真正传输时候是不需要HTTP协议的,而是使用TCP协议.

 

        4,Websocket使用ws或wss的统一资源标志符,类似于HTTPS,其中wss表示在TLS之上的Websocket

 

       5,Websocket使用和 HTTP 相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket协议使用80端口;运行在TLS之上时,默认使用443端口。

       6,优点:

    实时性更强,很好的控制开销(协议的头部较小),保持连接.

三,socket 

    

        1,概念:Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口.

         1.1,在程序内部提供了与外界通信的端口,也就是端口通信.它通过建立socket连接,可以为通信双方的数据传输提供一个通道

         1.2,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

       2,当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

        3,和机顶盒通信可以采用socket(自己决定采用udp的scoket还是tcp的socket,一般采用的是tcp的socket)

        4, Socket的分类
        4.1, 根据不同的的底层协议,Socket的实现是多样化的.这里只介绍TCP/IP协议族的内容.

        4.2,在这个协议族当中主要的Socket类型为流套接字(streamsocket)和数据报套接字(datagramsocket)。

        4.3,流套接字将TCP作为其端对端协议,提供了一个可信赖的字节流服务。

        4.4,数据报套接字使用UDP协议,提供数据打包发送服务。 下面,

       5,tcp的scoket和udp的socket的区别

       使用UDP方式android端和服务器端接收可以看出,其实android端和服务器端的发送和接收大庭相径,只要端口号正确了,相互通信就没有问题,

        TCP使用的是流的方式发送,UDP是以包的形式发送。

         

         

感谢:

   基于android的Socket通信         

 

四,总计:

1,传输层的TCP是基于网络层的IP协议的,
2,而应用层的HTTP协议又是基于传输层的TCP协议的,
3,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口.

(二)websocket 和socket区别   

    1,websocket是应用层的协议,而socket是传输控制层的协议.  

    

(三)websocket 和http区别        

 相同点:

   1,都是应用层的协议

   2,都是基于tcp,并且都是可靠的协议

不同点:

    1,websocket是持久连接的协议,而http是非持久连接的协议.

    2,websocket是双向通信协议,模拟socket协议,可以双向发送消息,而http是单向的.

    3,websocket的服务端可以主动向客服端发送信息,而http的服务端只有在客户端发起请求时才能发送数据,无法主动向客户端发送信息.

 

(四)HTTPS和HTTP的区别主要为以下四点:

1、https协议需要到ca申请证书,一般免费证书很少,需要交费。

2、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

 

五,长连接和短连接

       1,短连接:在HTTP1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。

       2,长连接:在HTTP 1.1,客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端再发送请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。

       优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。

       劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

借鉴:

 

WebSocket介绍,与Socket的区别

https://blog.csdn.net/wwd0501/article/details/54582912

看完让你彻底搞懂Websocket原理

https://blog.csdn.net/frank_good/article/details/50856585

WebSocket介绍,与Socket的区别

https://blog.csdn.net/wwd0501/article/details/54582912

长连接、短连接、长轮询和WebSocket

https://blog.csdn.net/sweetsuzyhyf/article/details/60572795

 

  • 15
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值