前言
- 这段时间学了一下用C#网络编程
- 补了一下这方面的知识
- 其实我以前也系统学习过这方面的知识,但总是抓不住重点,看完就忘记了
层级关系
-
这篇博文写的很好 我参考一下
https://blog.csdn.net/zhangym199312/article/details/78346652
-
http属于应用层协议,web应用这层协议来传输数据,底层调用tcp/udp,但是http是一个短连接,并且请求只能由客户端发出
-
socket属于一个接口,对TCP和UDP进行了一个封装,它可以建立一个长连接,它在层中的位置如下图
-
websocket 是新的应用层协议,见名知意,属于web端的一种建立长连接的方式,通过长连接,我们就可以构建类似客户端进程一样的web应用
TCP 与UDP
- tcp是建立在连接之上的协议,需要三次握手,四次挥手,在建立连接之前,不会发送有效数据
- udp是无连接的协议,客户端与服务端,只管发送和接收,不管数据是否到达与其准确性
注意事项
- 长连接由于各种意外或者突发状况的发生会导致连接中断
- 所以我们需要发送心跳包,自己定义数据格式。当超过某个时间间隔,没有接收到心跳的时候,就断定连接中断。关闭连接,释放资源