HTTP的三次握手and websocket的原理
HTTP的三次握手
如图,这三次是完整的三次握手的过程,第一次握手可以看到发送了一个SYN标示位,为了简单演示,说SYN=1,其实,就是SYN占据了第一个标识位,用图片只是为了更形象的展示这三个过程,返回的时候是一个SYN,再加上一个ACK。最后客户端再发送一个ACK给服务端,作为第一个标识位,这样一个过程就完成了一个三次握手
转载 : https://www.cnblogs.com/wzndkj/p/10018387.html
二,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阻塞,减少了延迟,实时性较好。
劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。
原文链接:https://blog.csdn.net/qq_38859786/article/details/80523642