TCP vs Http vs Socket
OSI七层模型
OSI
Open System Interconnect是ISO早在1985年就确立的一种网络互联模型;确立模型的意义在于,任何的厂商可以根据这个模型提供统一的规范。
OSI分七层:(自顶向下)
- 应用层:直接面向应用程序的,HTTP/HTTPs/FTP/SMTP/POP3/WebSocket
- 表示层:将应用层的数据,进行转换/加密
- 会话层:所有与会话相关的,比如建立会话,管理会话,维持会话,SSL/TLS
- 传输层:建立/管理/维护,端到端的连接,TCP/UDP
- 网络层:IP,路由,IP/IPv4
- 数据链路层:
- 物理层:
特征:对等通信,数据从A传输到B,那么A和B必须位于OSI七层中的同一层
TCP/IP五层模型
将OSI七层模型中的,应用层+表示层+会话层 合并 为应用层
TCP vs UDP
- TCP是面向连接的,建立连接需要进行3次握手和4次分手,也就是各种ACK;而UDP不是面向连接的,传送数据不先建立连接,也不在乎ACK;所以UDP无连接,不可靠
- 但是UDP这种无连接这种特性使得它效率更高,实时性更好
- TCP服务器最大并发连接数:由于端口号上限为65535,所以TCP服务器理论上可承受的最大并发连接数也是65535,但实际上受限于系统性能,即文件句柄数
ulimit -n
Http vs Socket
Http
协议是建立在TCP协议之上的应用层协议,它封装了Http数据,使用Tcp层进行传输;同时它属于短连接,即每次连接都需要close
- Http 1.0:每次请求都需要建立一个单独的连接,处理完请求后,自动释放连接
- Http 2.0:一次请求可以处理多个连接,不需要等待一个请求处理完毕才处理下一个请求
Socket
是种抽象概念,它最主要的作用:对TCP/IP,即传输和网络层的操作进行了抽象封装,它提供了接口API,将复杂的TCP/IP操作隐藏起来
Socket vs WebSocket
- Socket是抽象概念;WebSocket是应用层协议
WebSocket vs Http
- WebSocket也是同Http一样,建立在Tcp之上的
- WebSocket需要使用Http进行一次握手,之后,就模拟Socket,使用Tcp层进行数据传输
- WebSocket是双向传输的,Http是单向的
WebSocket vs Html5
WebSocket是Html5标准的一部分