计算机网络-传输层篇-套接字

    开胃菜 使用端口(Port)来标记不同的网络进程 端口(Port)使用16比特位表示(0~65535) {IP:Port} -》套接字 套接字(Socket)是抽象概念,表示TCP连接的一端 通过套接字可以进行数据发送或接收 TCP连接由两个套接字组成 客户端 《--TCP连接--》服务端 TCP = {Socket1:Socket2}={ {IP:Port}{IP:Port}} 为什么与其组成 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题 多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据 为了区别不同的应用程序进程和连接 许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接 生成套接字,主要有3个参数: 通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号 Socket原意是“插座” 通过将这3个参数结合起来,与一个“插座”Socket绑定 应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务 Socket可以看成在两个程序进行通讯连接中的一个端点 一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中 概念 要通过互联网进行通信,至少需要一对套接字 一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤: 服务器监听,客户端请求,连接确认 服务器监听: 是服务器端套接字并不定位具体的客户端套接字 而是处于等待连接的状态,实时监控网络状态 客户端请求: 是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字 为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求 连接确认: 是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求 它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了 而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求 通信流程 1、服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket 2、服务器为socket绑定ip地址和端口号 3、服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开 4、客户端创建socket 5、客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket 6、服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息 这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求 7、客户端连接成功,向服务器发送连接状态信息 8、服务器accept方法返回,连接成功 9、客户端向socket写入信息 10、服务器读取信息 11、客户端关闭 12、服务器端关闭
经验分享 程序员 微信小程序 职场和发展