Skip to main content

Socket通讯

ElegyAbout 2 minossocket

Socket通讯

因为很久以前就知道了沙盒可以使用socket通讯进行传输程序 但是其实一直没有深度了解一下 只是大概知道有这么一个东西 现在仔细了解一下顺便把udp tcp等东西再进行了解一下

参考文章:socket通讯原理及例程(一看就懂)-腾讯云开发者社区-腾讯云 (tencent.com)open in new window

(3 封私信 / 38 条消息) TCP和Udp的区别是什么? - 知乎 (zhihu.com)open in new window

TCP/IP UDP

udp(user data protocol 用户数据协议)属于TCP/IP协议的家族 这里放原文中的图 很方便理解

这里写图片描述
这里写图片描述
  • 然后这里涉及到了udp和tcp 这就不得不去提及一下那一张很生草但是又形象的图了

    img
    img
    • 我们可以从图中大概知道 tcp是面对连接的传输层协议 传输数据之前都是必须创建链接的 tcp是一对一的两点服务 tcp是有序号的 并且在进行传输的时候比如我发送了一个数据过去 对面会返回我已经收到 所以我们可以清楚的知道哪些数据是成功收到的哪些数据是失败的 这样我们就可以针对失败的数据重发包
    • udp是不需要链接的 可以一对多 多对多
    • tcp的开销较大 因为首部长度在无选项的时候是20字节 所以还会更长 而udp是固定的8字节

socket的加入

这里也是放原文的图 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口

socket是传输层的协议

这里写图片描述
这里写图片描述
  • socket的存在将大量的复杂网络通讯协议等隐藏了起来 我们主要是针对socket提供的接口进行一个调用

WEBsocket

websocket是通过模仿socket协议产生的 我们只需要关心我们监听了什么端口然后调用read函数返回了什么数据 我们如何处理数据以及怎么把数据返还回去 但是值得注意的是websocket应用层协议socket就是上文讲述的是传输层的协议

  • websocket是建立在TCP协议之上的 我们需要进行TCP的三次握手 但是到了真正传输的时候是不需要HTTP传输的

  • WebSocket 是类似 Socket 的 TCP 长连接的通讯模式