面试题之---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,请求内容局部成功

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

   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而抽象出来的一层,是位于应用层和传输控制层之间的一组接口.

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

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

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

,websocket socket区别   

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

    

,websocket http区别         

(一)相同点:

   1,都是应用层的协议

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

(二)不同点:

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

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

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

,长连接和短连接

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

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

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

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


借鉴:

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


猜你喜欢

转载自blog.csdn.net/qq_38859786/article/details/80523642