课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Socket编程是程序员在学习计算机网络的时候需要重点掌握的一个编程技术,而今天我们就通过案例分析来了解一下,Socket编程的概念与特点,下面就开始今天的主要内容吧。
1、Socket是什么
Socket是一个抽象层,主要是把TCP/IP层复杂的操作抽象为几个简单的接口提供给应用层调用,进而实现应用进程在网络中通信。Socket主要是端到端之间的传输协议(网络层之上的协议)。因为Socket是一种高层的抽象网络API,是一种端到端的通信,只能访问到端到端协议之上的网络层和传输层。
Socket起源于Unix,在Unix中,一切皆文件,Socket也不例外,是一种打开-读/写-关闭的模式实现的。在服务器和客户端各自维护了一个文件。
2、TCPSocket的文件结构
在内核中,Socket是一个文件,不过Socket对应的inode不是保存在硬盘上,而是在内存中,该inode指向了Socket在内核的Socket结构。内核的Socket接口主要由两个队列:发送队列,接收队列。
对于每个监听Socket,内核都为其维护了两个队列:
未完成队列(incompleteconnectionqueue):这个队列的套接字服务端正在等待完成TCP三次握手,处于SYN_RCVD状态;
已完成连接队列(completedconnectionqueue):完成了三次握手的Socket连接会进入这个队列,处于ESTABLISHED状态。
3、基于UDP的Socket通信交互流程
UDP不需要三次握手,所以不需要listen和connect,但是交互仍然需要IP和端口号,需要bind。
UDP不用维护连接状态,所以不需要针对每个连接建立一组Socket,只需要一个就可以了。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。