py网络_Socket简介笔记
Socket编程
Python属于高级语言,所以对于所有的网络程序开发不可能让开发者自行处理具体的OSI模型,应该采用统一的模式进行定义,这样才有了Socket编程。
Socket(套接字)是一种对TCP网络协议进行的一种保证(或者称为协议的一种抽象应用),它本身最大的特点是提供了不同进程之间的数据通讯操作,如下图。之所以把Socket作为协议的抽象实现,主要的原因在于,所有的网络协议其组成是十分繁琐的,如果所有的开发者去研究具体的通讯协议则会对开发带来很大的难度,所以在不同的编程语言内部就会考虑对一些网络协议进行包装,这样才有了Socket的概念。

TCP/UDP
Socket主要是针对于两种协议的包装: TCP/UDP
- TCP(Transmission Control Protocol、传输控制协议):采用有状态的通讯机制进行传输。在通讯时会通过三次握手机制保证与一个指定节点的数据传输的可靠性,在通讯完毕后会通过四次握手机制关闭连接。由于在每次数据通讯前都需要大量的时间进行连接控制,所以执行性能较低,且系统资源占用较大;
- UDP (User Datagram Protocol、用户数据报协议):采用无状态的通讯机制进行传输。没有了TCP中复杂的握手与挥手处理机制,这样就节约了大量的系统资源,同时数据传输性能较高,但是由于不保存单个节点的连接状态,所以发送的数据不一定可以被全部接收。UDP不需要链接就可以直接发送数据,并且多个接收端都可以接收到同样的信息,所以使用UDP适合于广播操作。

不管使用的是TCP协议还是UDP协议,都是对传输层操作的保证,数据按照OSI七层模型来讲也一定要通过网络层进行路由的配置,同时利用数据链路层添加数据帧,最终利用物理层进行发出,但是由于Socket机制的存在,所以开发者只需要编写处理的核心代码即可,而至于说如何传输的,如何进行具体的协议操作,就完全被封装起来。
py网络_Socket简介笔记
https://blog.wangxk.cc/2020/02/04/py网络-Socket简介笔记/