- ♂️ 作者:海码007
- 专栏:计算机四大基础专栏
- 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
- 标题:【计网 Socket编程】详解 中科大郑烇老师笔记 (九)
- ❣️ 寄语:书到用时方恨少,事非经过不知难。
- 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正
正式进入Socket的学习,学习完Socket的相关知识后,对以后得网络开发会更加得心应手。
先简单回顾一下 TCP/IP 网络层次模型:
- 套接字(Socket)是在应用层和传输层之间的一个接口,用于实现网络通信。它并不属于计算机网络的特定层次,而是在网络编程中使用的一种编程接口。
- 套接字本身并不是一种协议,而是通过网络传输层协议(如TCP或UDP)来实现数据的传输。套接字提供了一组标准的函数接口,使得应用程序能够方便地进行网络通信操作,而不需要关注底层协议的细节。
- 一个Socket是一对IP地址和端口。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。你可以这么理解:socket是进程之间用来对话的中间层工具。
应用进程使用传输层提供的服务才能够交换报文,实现应用层协议,实现应用。
两个应用进程需要借助 Socket API 使用传输层向应用层提供的传输服务来实现报文的交换。
TCP(传输控制协议)和 UDP(用户数据报协议)是两种常用的网络传输协议,它们在套接字编程中使用不同的方式进行网络通信。
- TCP Socket 使用 TCP 协议提供可靠的、面向连接的、字节流的服务,适用于需要确保数据完整性和顺序的应用场景。
- UDP Socket 使用 UDP 协议提供不可靠(数据UDP数据报)、无连接的服务,适用于实时性要求较高、数据丢失可接受的应用场景。
套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
TCP服务:从一个进程向另一个进程可靠地传输字节流。
使用TCP Socket编程,客户端和服务器端需要分别进行以下操作:
- 客户端
- 创建一个TCP套接字对象。
- 连接到服务器:使用套接字对象的connect函数,指定服务器的IP地址和端口,发起与服务器的连接请求。
- 进行数据交换:通过套接字对象的send和receive函数,向服务器发送数据并接收服务器的响应数据。
- 关闭连接:当通信完成或需要关闭连接时,调用套接字的close函数来关闭连接。
- 服务器端
- 创建一个TCP套接字对象。
- 绑定地址和端口:将套接字绑定到服务器的本地IP地址和端口上。
- 监听连接请求:调用套接字的listen函数,将套接字置于监听状态,等待客户端的连接请求。
- 接受连接:当有客户端发起连接请求时,调用套接字的accept函数来接受连接,创建一个新的套接字对象,用于与该客户端进行通信。
- 进行数据交换:通过新创建的套接字对象的send和receive函数,与客户端进行数据的发送和接收操作。
- 关闭连接:当通信完成或需要关闭连接时,调用套接字的close函数来关闭连接。
需要注意的是,客户端和服务器端的具体实现方式会因所使用的编程语言和套接字接口的不同而有所差异。以上是一般情况下的操作流程,具体的实现细节可能会有所不同。
使用UDP Socket编程,客户端和服务器端需要分别进行以下操作:
- 客户端:
- 创建一个UDP套接字对象。
- 发送数据:通过套接字对象的send to函数,将数据发送给服务器的IP地址和端口。
- 接收响应数据:通过套接字对象的recvfrom函数,接收服务器发送回来的响应数据。
- 关闭套接字:当通信完成或需要关闭套接字时,调用套接字的close函数来关闭套接字。
- 服务器端:
- 创建一个UDP套接字对象。
- 绑定地址和端口:将套接字绑定到服务器的本地IP地址和端口上。
- 接收数据:通过套接字对象的recvfrom函数,接收来自客户端的数据。
- 处理请求并发送响应:根据接收到的数据进行相应的处理,并通过套接字对象的send to函数,将响应数据发送给客户端的IP地址和端口。
- 关闭套接字:当通信完成或需要关闭套接字时,调用套接字的close函数来关闭套接字。
需要注意的是,UDP套接字编程的特点是无连接、不可靠,因此在数据交换过程中可能会存在数据丢失或乱序的情况。而TCP套接字编程是基于连接的、可靠的传输方式。具体的实现方式会因所使用的编程语言和套接字接口的不同而有所差异。以上是一般情况下的操作流程,具体的实现细节可能会有所不同。