http、socket、tcp、udp的区别及四层/七层网络协议

一、OSI模型也称七层网络模型 & TCP/IP 模型也称四层网络模型

http、socket、tcp、udp的区别及四层/七层网络协议_第1张图片

http、socket、tcp、udp的区别及四层/七层网络协议_第2张图片

二、SOCKET、TCP、UDP和HTTP的关系

1.socket 本身不是一种协议,而是用来操作TCP/UDP协议的接口。
而是对传输层中的 TCP/UDP 协议进行了封装,对用户隐藏了内部 TCP/UDP 是如何传输的,只提供一套接口(API)给程序员调用,从而完成socket编程。

2.通过socket接口,我们才能使用TCP/UDP协议。

3.而我们通常浏览网页用到的 http 协议,是建立在TCP协议之上的一种应用层协议(底层也是socket)。
(http协议最显著的特点是它是一种无状态连接,客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接,是一种“短连接”。)

http 等应用层协议,都是通过 socket 接口从而调用 tcp udp 等传输层协议,从而达到 网络通信。


  http
    ||
socket
    ||
tcp udp

我们编程不会直接去调用tcp udp,而是通过他们封装好的接口socket去通信。可以说,现在几乎网络上所有的通信,底层都是通过socket完成的,一切皆Socket

综上所述,我们编程不会直接去调用tcp udp,而是通过他们封装好的接口socket去通信。可以说,现在几乎网络上所有的通信,底层都是通过socket完成的,一切皆Socket。
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元

Socket连接与HTTP连接

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步:

  • 此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;
  • 若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

http协议是应用层的协议。有个比较形象的描述:
HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

————————————————
参考自:

socket、tcp、udp、http 的认识及区别_socket udp-CSDN博客

一篇搞懂tcp,http,socket,socket连接池之间的关系 - 知乎 (zhihu.com)

TCP、UDP、HTTP、SOCKET_http、tcp、udp、socket-CSDN博客

你可能感兴趣的:(网络,http,socket,tcp,udp,七层,四层,网络协议)