1、如何理解Socket
两台计算机相互通讯靠的就是Socket,类似于2个人通讯要靠电话,也就是说Socket就是程序之间的电话。Socket英文意思是孔、插座,作为进程通讯机制,取后一种意思,通常也成为套子节,用于描述IP地址和端口。IP地址指向某台服务器,端口用于连接到某一个应用程序。
socket在通讯过程中所处位置(作用)理解:
比如上图所示:男生要到女生宿舍找自己女朋友出去玩,不能直接进入女生宿舍去找,要经过宿管大妈,由宿管大妈打电话告知你的女朋友,电话打通后你们之间再进行通话了。这里宿管大妈就是负责监听的Socket,如果有男生(客户端发送请求)来了就创建一个负责通信的socket(电话机),从而使该男生(客户端)与对应女生(服务端某应用程序)可以通信了。socket开始就是服务器端负责监听的(相当于宿管大妈),看有没有客户端发送请求到服务器端,有的话就创建一个负责通信的Socket。Socket接口是TCP/IP网络最为通用的API,也是在INTERNET上进行应用开发最为通用的API。
2、TCP协议和DUP协议
协议:类似于两个人打电话有一个默认协议就是都说普通话,如果大家都说家乡话,可能都听不懂,在网络中常用的协议有:UDP和TCP协议。
TCP/IP协议:Transmission Control Protocol/Internet Protocol,传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网设计的。
TCP协议属于TCP/IP协议族中的一种,相对于DUP协议安全稳定,在TCP传输过程中要经过3次握手,传输效率相对低。
客户端向服务器发消息(比如问服务器你有空吗?),服务器端回复:我有空,客户端再发回给服务器端:我知道你有空了。经过三次握手后,客户端和服务器端才开始通信。
UDP(User Data Protocol,用户数据协议,是与TCP相对应的协议。它也属于TCP/IP协议族中的一种。它只管发,不管对方有没有接收。DUP协议:快速、效率高、不稳定,容易发生数据丢失。客户端直接发给服务器,不管服务器是否有空接收数据等。……都发给服务器。类似于发电报、电台广播。
两种协议比较,无所谓好坏,各有好处。当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。也即是说视频传输的时候用UDP(特点:快速效率高),因为视频聊天时更希望看到的是对方流畅不卡,但是清晰度可以低点。
3、端口分类
公认端口:公认端口也被称为常用端口,端口号为0到1023,它们紧密的绑定一些特殊的服务。通常,这些端口的通信明确的表明了某种服务协议,不可再重新定义它的作用对象。如:80端口用于http通讯、23号端口则是Telnet服务专用的。
注册端口:注册端口的端口号为1024到49151,它们松散地绑定一些服务,也即有许多服务绑定于这些端口,这些端口同样用于许多其他目的,且多数没有明确定义对象,不同的程序可以根据需要自己定义。常用于一些大型企业。这些端口对网络的安全十分重要,所以,对于服务器来说一般要关闭这些端口。
动态或私有端口:动态/或私有端口的端口号为49152到65535,理论上不应该把常用服务分配在这些端口上,但实际上有较为特殊的程序,特别是一些木马就非常喜欢使用这些端口,因为这些端口常常不会引起人们的注意,容易隐藏。
注:我们编程一般也就用这些端口,以免跟其他服务端口冲突。
来源:CSDN
作者:小目标一个亿
链接:https://blog.csdn.net/wwwwerewrew/article/details/103770803