第04章 套接字与数据流
- 格式:ppt
- 大小:472.50 KB
- 文档页数:59


Socket TCP会话原理一、概述1.1 Socket概念Socket(套接字)是网络通信的基础,它是网络通信的端点,能够实现不同主机之间的数据传输。
1.2 TCP协议TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,它提供了可靠的数据传输和对数据包进行排序和错误校正的功能。
二、TCP会话建立2.1 三次握手2.1.1 第一次握手:客户端发送SYN报文,告诉服务端客户端想要连接。
2.1.2 第二次握手:服务端接收到客户端的SYN报文后,发送SYN+ACK报文,告诉客户端已经收到请求,愿意接受连接。
2.1.3 第三次握手:客户端接收到服务端的SYN+ACK报文后,发送ACK报文确认,表示连接建立成功。
2.2 会话数据传输在TCP会话建立成功后,双方可以进行数据的传输,数据包会通过网络传输到目的地,并且在接收端按序组装成完整的数据流。
三、TCP会话终止3.1 四次挥手3.1.1 第一次挥手:客户端发送FIN报文,表示数据发送完毕。
3.1.2 第二次挥手:服务端接收到FIN报文后,发送ACK报文,表示收到了客户端的结束信号。
3.1.3 第三次挥手:服务端发送FIN报文,表示服务端数据发送完毕。
3.1.4 第四次挥手:客户端接收到服务端的FIN报文后,发送ACK报文,表示收到了服务端的结束信号。
四、TCP会话的特点4.1 可靠性TCP提供了可靠的数据传输,通过序列号、确认和重传机制来确保数据的正确性和完整性。
4.2 有序性TCP会话可以保证数据包的有序到达,不会出现数据包乱序的情况。
4.3 全双工TCP会话是全双工的,双方可以同时进行数据的发送和接收,实现真正的双向通信。
五、TCP会话的应用5.1 网络通信TCP会话被广泛应用于各种网络通信场景,如HTTP、FTP等应用层协议都是基于TCP协议的。
5.2 远程登入SSH等远程登入工具使用TCP会话来建立客户端与服务端之间的连接,实现远程管理和操作。
套接字编程原理一、客户机/服务器模式在网络中最常用的通信模式是客户机/服务器模式(Client/Server模式或C/S模式)。
服务器方要先启动,并监听指定端口,等待客户端的请求,根据客户端的请求提供相应服务。
二、基本套接字一般来说,要进行网络通信,必须要在网络的每一端都要建立一个套接字,两个套接字之间是可以建立连接的,也是可以无连接的,并通过对套接字的“读”、“写”操作实现网络通信功能。
类似于文件的打开、读、写、关闭的方式。
套接字有三种类型:数据流套接字(SOCK_STREAM):对应TCP协议。
数据报套接字(SOCK_DGRAM):对应UDP协议。
原始套接字(SOCK_RAW)。
通过使用原始套接字,可以将网卡设为混杂模式。
并且可以捕获到的数据包不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌,通过对这些在低层传输的原始信息的分析可以得到更多网络的信息。
一个完整的网间通信需要一个五元组来标识:(协议,本地地址,本地端口号,远地地址,远地端口号)三、基本套接字系统调用为了更好地说明套接字编程原理,下面给出几个基本套接字系统调用说明。
1.创建套接字──socket()应用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段,其调用格式如下:SOCKET PASCAL FAR socket(int af, int type, int protocol);参数af:指定通信发生的区域,UNIX系统支持的地址族有:AF_UNIX、AF_INET、AF_NS等,而DOS、WINDOWS中仅支持AF_INET,它是互连网区域。
参数type:描述要建立的套接字的类型。
参数protocol:说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则置为0,使用默认的协议。
根据这三个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号。
socket套接字的概念套接字(socket)是网络编程中的一个重要概念,用于在不同节点之间建立通信连接,实现数据的传输和通信的实时交互。
下面我们从以下几个方面来介绍套接字的概念及其作用。
一、套接字的定义和作用套接字是一种抽象数据类型,用于表示一个网络通信的端点,可以理解为给应用程序提供了一种接口,使其能够通过网络与其他应用程序进行通信。
套接字是应用层与传输层间交互的一种方式,它提供了一种可靠的、面向连接的、双向数据传输的网络通信服务。
二、套接字的类型由于套接字在不同情况下有不同的用途,因此其类型也有所差异。
在Unix系统中,套接字一般分为以下几种类型:1. 流式套接字(SOCK_STREAM):基于TCP协议,提供面向连接的可靠数据传输服务。
它是一种面向字节流的套接字类型,可用于实现长连接。
2. 数据报套接字(SOCK_DGRAM):基于UDP协议,提供无连接的、不可靠的数据传输服务。
它是一种面向数据包的套接字类型,可用于实现短连接或者需要时间敏感的场景。
3. 原始套接字(SOCK_RAW):提供完全自由的数据包传输服务,在传输层及以下各层的数据包都可以被访问到。
它可以用于网络协议的实现及测试。
4. 信号套接字(SOCK_SEQPACKET):提供可靠的面向连接的数据传输服务,接收方只能够依次按短的数据包与发送方通信,保证数据的有序性。
三、套接字的编程接口套接字编程接口提供了开发人员在应用程序中使用网络通信技术的一套标准API,其主要包括以下几个方面:1. 套接字的创建和销毁:通过socket函数创建套接字,然后使用close 函数释放套接字资源。
2. 套接字的命名:使用bind函数将套接字与本地的IP地址和端口号进行绑定。
3. 套接字的连接:使用connect函数将套接字连接到远程主机的IP地址和端口号。
4. 数据的读取和写入:使用read和write函数进行数据的收发操作。
5. 套接字的监听:使用listen函数将套接字置于被动监听状态,等待远程客户端的连接请求。