网络协议详解---TCP、HTTP、WebSocket、socket、轮询等

一、网络结构

  1. 五层网络结构
    ‌应用层‌ :支持网络应用,提供进程间的通信服务。主要协议包括HTTP、FTP、SMTP等。
    ‌运输层‌ :负责为应用程序进程提供端到端的通信服务。主要协议有TCP和UDP。
    ‌网络层‌ :负责数据包的路由选择和传输。主要协议是IP。
    ‌数据链路层‌ :负责将数据封装成帧并在物理网络上传输。主要设备包括交换机。

    物理层‌:负责在物理媒体上传输比特流,定义物理设备的标准和接口。

  2. OSI七层网络结构
    应用层 :定义了用于在网络中进行通信和传输数据的接口;(Http协议位于该层)
    表示层 :定义不同系统中数据的传输格式,编码和解码规范等;
    会话层 :管理用户的会话,控制用户间逻辑连接的建立和中断;
    传输层 :管理着网络中端到端的数据传输;(Tcp协议位于该层)
    网络层 :定义网络设备间如何传输数据;(IP位于该层)
    链路层 :将上面的网络层的数据包封装成数据帧,便于物理层传输;
    物理层:这一层主要就是传输这些二进制数据

  3. TCP/IP四层结构
    应用层‌ :这是TCP/IP协议的最上层,负责处理应用程序的逻辑。应用层包含了许多协议,如SMTP(简单邮件传输协议)、FTP(文件传输协议)、HTTP(超文本传输协议)等,这些协议使得不同的应用程序能够进行通信和交互。
    ‌传输层‌ :在这一层中,主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供面向连接的、可靠的数据传输服务,适用于需要高可靠性的应用,如文件传输;而UDP提供无连接的服务,适用于实时应用,如视频会议和IP电话。
    ‌网络层‌ :网络层的主要协议是IP(网际协议),负责数据包的路由和转发。这一层还包含ICMP(Internet控制消息协议)和IGMP(Internet组管理协议),用于网络管理和组管理。
    ‌数据链路层‌:也称为网络接口层,负责处理物理链路上的数据帧。这一层的主要协议有ARP(地址解析协议)和RARP(逆地址解析协议),负责物理地址和逻辑地址之间的转换,以及错误检测和流量控制。

  4. 不同网络结构的优缺点
    ‌五层结构‌ :简洁且综合了OSI和TCP/IP的优点,适合教学和学习。
    OSI七层结构‌ :概念清晰,理论完整,但实际应用中较为复杂。
    TCP/IP四层结构‌:实际应用中广泛使用,简单且高效。

二、不同网络协议之间的区别

https://blog.csdn.net/m0_64974617/article/details/144369086

https://baijiahao.baidu.com/s?id=1756408946862921970\&wfr=spider\&for=pc

TCP

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议的主要特点包括:

bash 复制代码
tcp://127.0.0.1:8888
面向连接:在数据传输之前,需要建立连接。
可靠传输:通过序列号、确认应答、重传机制等确保数据的可靠传输。
字节流:数据以字节流的形式传输,不关心数据的边界。

为什么要有http,不能直接用TCP通信吗?

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议

WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

HTTP

HTTP 超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用层协议。HTTP协议是一个无状态的、请求/响应式的协议,客户端(通常是浏览器)发送请求到服务器,服务器处理请求后返回响应。HTTP协议的主要特点包括:

bash 复制代码
http://ip:port/path
无状态:每个请求都是独立的,服务器不会保留客户端的状态信息。 	
请求/响应模式:客户端发送请求,服务器必须回复响应。
文本协议:HTTP协议默认使用文本格式进行通信。
  • HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为"一次连接"。
  • 在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
  • 在HTTP 1.1中,则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
  • 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种"短连接"。
  • 要保持客户端程序的在线状态,需要不断地向服务器发起连接请求,通常情况下即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次"保持连接"的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端"在线"。若服务器长时间无法收到客户端的请求,则认为客户端"下线",若客户端长时间无法收到服务器的回复,则认为网络已经断开。

WebSocket

WebSocket协议是一种在单个TCP连接上进行全双工通信的协议。WebSocket也是基于TCP协议之上的应用层协议,他的出现解决了HTTP协议无法服务器主动推送的问题。

bash 复制代码
ws://ip:port/path
全双工通信:客户端和服务器可以同时发送和接收数据。
持久连接:连接一旦建立,可以长时间保持,不必频繁地打开和关闭连接。
高效:由于连接是持久的,减少了握手的开销,适合实时应用。
兼容性:WebSocket协议可以通过HTTP/HTTPS协议进行握手,确保与现有网络基础设施的兼容性。
二进制数据:支持传输二进制数据,适合多媒体应用。

Socket

Socket(套接字)是网络通信的基础,是不同主机之间进行通信的端点,以支持不同的传输层协议(TCP/UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

在TCP/IP协议栈中,Socket提供了一种方式,使应用程序可以通过网络进行数据交换。Socket本身并不是协议,而是一个调用接口(API),通过Socket,才能使用TCP/IP协议。

可以把Socket理解为一个工具,可以用这个工具来使用TCP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了一些最基本的函数接口,比如create、

listen、connect、accept、send、read和write等等。

三、即时通信---轮询、长轮询、长连接、WebSocket

https://cloud.tencent.com/developer/article/2063255

随着互联网技术的快速发展,现代Web应用对于实时通信的需求越来越高。传统的HTTP协议由于其无状态和请求-响应模式的限制,在实现高效、低延迟的实时通信方面存在一定的局限性。为了解决这一问题,WebSocket协议应运而生,它提供了一种在单个TCP连接上进行全双工通信的机制

实现即时通讯常见的有四种方式:轮询、长轮询(comet)、长连接(SSE)、WebSocket。

轮询

很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由客户端浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。

优点:后端编码比较简单

缺点:这种传统的模式带来很明显的缺点,即客户端的浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

长轮询

客户端向发起一个到服务端的请求,然后服务端一直保持连接打开,直到数据发送到客户端为止。

优点:避免了服务端在没有信息更新时的频繁请求,节省流量

缺点:服务器一直保持连接会消耗资源,需要同时维护多个线程,而服务器所能承载的 TCP 连接是有上限的,所以这种轮询很容易导致连接上限。

长连接

客户端和服务端建立连接后不进行断开,之后客户端再次访问这个服务端上的内容时,继续使用这一条连接通道

优点:消息即时到达,不发无用请求

缺点:与长轮询一样,服务器一直保持连接是会消耗资源的,如果有大量的长连接的话,对于服务器的消耗是巨大的,而且服务器承受能力是有上限的,不可能维持无限个长连接。

WebSocket

客户端向服务器发送一个携带特殊信息的请求头(Upgrade:WebSocket )建立连接,建立连接后双方即可实现自由的实时双向通信。

优点:

较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。

更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。

保持连接状态。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

缺点:相对来说,开发成本和难度更高

相关推荐
hgdlip3 小时前
ip地址和网络号关系是什么
网络·tcp/ip·网络号
@Young Cheung3 小时前
springboot指定ssl版本连接
网络·网络协议·ssl
玩电脑的辣条哥3 小时前
Unbuntu下怎么生成SSL自签证书?
网络·网络协议·ssl
何陈陈3 小时前
【Linux】HTTPS
linux·服务器·网络·网络协议·http·https·哈希算法
大福是小强7 小时前
043_Tcpip Instruments in Matlab中连接和调试采用TCP/IP协议的仪器
tcp/ip·matlab·echo·多网段·连接仪器·回声服务器
努力成为DBA的小王17 小时前
Linux(网络协议和管理)
linux·运维·服务器·网络·网络协议
摸五休二17 小时前
链接定位技术解析:如何实现精准 GPS 定位与 IP 地址获取
网络·网络协议·tcp/ip
群联云防护小杜17 小时前
黑客如何找到App中的源IP:原理与防范
运维·服务器·前端·网络·网络协议·tcp/ip