Http、Websocket、Socket、TCP

Http、Websocket、Socket、TCP
类别含义
应用层↓HTTP与WEBSOCKET超文本传输协议 与 全双工通信协议
接口↓SOCKET不是协议,套接字,TCP/IP网络的一个调用接口(API)
传输层↓TCP 与UDP传输控制协议 与 用户数据报协议
网络层↓IP网络协议
1、HTTP(超文本传输协议)
HTTP含义特点
HTTP是基于TCP协议的应用,请求时需建立TCP连接,而且请求包中需要包含请求方法,URI,协议版本等信息,请求结束后断开连接,完成一次请求/响应操作。故称为短连接。通信只能由客户端发起,做不到服务器主动向客户端推送信息
  • (1)HTTP/1.1中的keep-alive所保持的长连接则是为了优化每次HTTP请求中TCP连接三次握手的麻烦和资源开销,只建立一次TCP连接,多次的在这个通道上完成请求/响应操作。
2、WEBSOCKET(全双工通信协议)
WEBSOCKET含义特点
WEBSOCKET是一种在单个TCP连接上进行全双工通信的协议。包含两部分,一部分是“握手”,一部分是“数据传输”。服务器可以主动传送数据给客户端。解决了服务器与客户端全双工通信的问题
  • (1)单工、半双工、全双工
    • 单工:信息只能单向传送;
    • 半双工:信息能双向传送但不能同时双向传送;
    • 全双工:信息能够同时双向传送。
  • (2)WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
3、Socket(套接字)
SOCKET含义特点
SOCKET只是一种连接模式,不是协议,socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)通过Socket,我们才能使用TCP/IP协议
  • (1)socket是为了实现通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议,它工作在 OSI 模型会话层(第5层)。
  • (2)Socket通信流程:Socket连接需要一对套接字,一个运行于客户端,另一个运行于服务端!之间的连接分为三个步骤:服务器监听,客户端请求,连接确认。https://blog.csdn.net/h12kjgj/article/details/73610778
    在这里插入图片描述
4、TCP(传输控制协议)
TCP/UDP含义特点
TCP面向连接的一种传输控制协议,TCP连接之后,客户端和服务器可以互相发送和接收消息,在客户端或者服务器没有主动断开之前,连接一直存在,故称为长连接连接有耗时,传输数据无大小限制,准确可靠,先发先至。
UDP无连接的用户数据报协议,所谓的无连接就是在传输数据之前不需要交换信息,没有握手建立连接的过程,只需要直接将对应的数据发送到指定的地址和端口就行不稳定,速度快,可广播,一般数据包限定64KB之内,先发未必先至。
  • (1)tcp三次握手建立连接: 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
    • 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
    • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  • (2)过程:三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
    • 第一次对话:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”;
    • 第二次对话:主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在 * 发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”
    • 第三次对话:主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”。
5、异同点
- HTTP和WebSocket都是基于TCP协议。
- HTTP通信过程属于“你推一下,我走一下”的方式,客户端不发请求则服务器永远无法发送数据给客户端。
- WebSocket则在进行第一次HTTP请求之后,其他全部采用TCP通道进行双向通讯
- Socket是一套协议封装后的接口,用于建立Socket连接。
- http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
- socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。
  • (1)WebSocket和Http的异同点,对于 WebSocket 来说,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。
同、异WebSocketHttp
建立在TCP之上,通过TCP协议来传输数据建立在TCP之上,通过TCP协议来传输数据
可靠性传输协议可靠性传输协议
应用层协议应用层协议
WebSocket是HTML5中的协议,全双工通信的协议,支持持久连接,HTTP不支持持久连接HTTP是单向协议,只能由客户端发起,做不到服务器主动向客户端推送信息。
  • (2)WebSocket和Socket的异同点
同、异WebSocketSocket
WebSocket是应用层协议Socket本身并不是一个协议,是一个套接字,TCP/IP网络的API,多指传输层网络接口
  • (3) Socket和TCP/IP
    Socket是对TCP/IP协议的封装,像创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。
  • (4)图解
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值