首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

20.8 OpenSSL 套接SSL传输文件

有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接章节中也进行过详细讲解,此处我们还是使用原来的密钥对...,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接,与保存文件路径即可,其他部分同上。...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接: %d \n", inet_ntoa(their_addr.sin_addr), ntohs(their_addr.sin_port...,传入socket套接字句柄,需要发送的文件路径void UploadFile(SSL* ptr, const char* FilePath){ int FileSize = GetFileSize(

16240

20.8 OpenSSL 套接SSL传输文件

有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接章节中也进行过详细讲解,此处我们还是使用原来的密钥对...,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接,与保存文件路径即可,其他部分同上。...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接: %d \n", inet_ntoa(their_addr.sin_addr), ntohs...,传入socket套接字句柄,需要发送的文件路径 void UploadFile(SSL* ptr, const char* FilePath) { int FileSize = GetFileSize

23151
您找到你想要的搜索结果了吗?
是的
没有找到

20.4 OpenSSL 套接AES加密传输

那么我们就可以使用这些加密算法对网络中的数据包进行加密处理,加密算法此处我们先采用AES算法,在网络通信中,只需要在发送数据之前对特定字符串进行加密处理,而在接收到数据后在使用相同的算法对数据进行恢复即可,读者如果有了套接编程的基础...0; } 接着是客户端代码,如下所示,首先设置aes_key密钥对,此处需要保持服务端与客户端密钥的一致性,在发送数据之前先调用AES算法对字符串进行加密处理,接着在调用send函数将加密后的字节序传输到服务器端...WSACleanup(); } system("pause"); return 0; } 读者可自行编译上方代码,首先运行服务端然后再运行客户端,至此数据会被加密传输到对端

19550

20.5 OpenSSL 套接RSA加密传输

一般情况下,当RSA密钥长度为1024位时,可以加密长度为128节,密钥长度为2048位时,可以加密长度为245节;当密钥长度为3072位时,可以加密长度为371节。...20.5.1 加解密算法封装 在之前的章节中我们都是使用命令行的方式手动生成密钥对文件,其实在OpenSSL中我们完全可以使用SDK提供的函数自动生成对应的加密密钥对文件,如下一段代码中,CreateRSAPEM...} // 建立Socket套接 SOCKET client_socket; client_socket = socket(AF_INET, SOCK_STREAM, 0); struct...if (WSAStartup(MAKEWORD(2, 0), &WSAData)) { return 0; } // 建立Socket套接 SOCKET server_socket...ServerAddr.sin_port = htons(9999); ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 绑定套接

26550

20.7 OpenSSL 套接SSL加密传输

在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手...privkey.pem也就是私钥,接着利用私钥文件生成cacert.pem证书文件,该文件的有效期为1095天也就是三年,当然此处由于是测试可以使用自定义生成,如果在实际环境中还是需要购买正规签名来使用的...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接编程保持一致,如下是服务端完整代码实现。...= 2) { WSACleanup(); return 0; } // 创建套接 if ((sockfd = socket(AF_INET, SOCK_STREAM,...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接: %d \n", inet_ntoa(their_addr.sin_addr), ntohs

33860

20.7 OpenSSL 套接SSL加密传输

在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手...也就是私钥,接着利用私钥文件生成cacert.pem证书文件,该文件的有效期为1095天也就是三年,当然此处由于是测试可以使用自定义生成,如果在实际环境中还是需要购买正规签名来使用的。...服务端实现代码与原生套接通信保持高度一致,在连接方式上同样采用了标准API实现,唯一的不同在于当accept函数接收到用于请求时,我们需要通过SSL_new产生一个SSL对象,当需要发送数据时使用SSL_write...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接编程保持一致,如下是服务端完整代码实现。...= 2) { WSACleanup(); return 0; } // 创建套接 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) ==

27120

Linux网络套接(二)

首先是写出服务器的代码,代码的思路是这样的: ①首先为服务器创建套接,因为这个是TCP协议,TCP是面向连接的,因此服务器是需要进入监听状态才能让客户端连接,所以使用socket接口创建出来的套接是属于监听套接...,会给父进程发送信号 ServerceIO(new_sock); //关闭套接,也就是关闭fd //如果忘记关闭不需要的文件描述符,导致文件描述符泄漏...,因此不需要关闭监听套接 //选择新线程分离,就不需要等待了 //新线程分离后,就拿着提供服务的套接走,去进行通信, 通信完毕关闭这个套接即可 pthread_t tid;...⑥进行网络通信,使用文件读写的方式,read/wirte的方法。关 ⑦闭监听套接close(fd),本质:a、在系统层面,释放曾经申请的文件资源和连接资源等待。...⑧关闭用于通信的套接close() && server/client,本质是在网络层面进行四次挥手! 三次握手: 在服务器建立连接的时候: 调用socket, 创建文件描述符。

1.9K30

Linux网络-套接编程基础

Linux网络编程套接 零、前言 一、网络基础知识 1、源IP地址和目的IP地址 2、源MAC地址和目的MAC地址 3、认识端口号 4、PORT VS PID 5、TCP和UDP协议 6、网络字节序...二、socket编程接口 1、sockaddr结构 2、socket 常见API 零、前言 本章就Linux网络编程进行概念及接口学习,下一篇则是简单的进行上手网络套接编程 一、网络基础知识 1...,但是在套接编程时需要填入的一些数据字段是需要我们主动进行网络字节序的转化 为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换...,还支持本地的进程间通信(域间套接) 因此套接提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in结构体是用于跨网络通信的,而sockaddr_un结构体是用于本地通信的...为了让套接的网络通信和本地通信能够使用同一套函数接口,于是就出现了sockeaddr结构体,该结构体与sockaddr_in和sockaddr_un的结构都不相同,但这三个结构体头部的16个比特位都是一样的

1.4K20

套接

套接最早是UC Berkeley为BSD操作系统设计的。现在POSIX标准化了套接。在Linux和Unix下的套接是一致的。...套接是通信端点的一种抽象。在Linux下socket是文件的一种。也就是说可以使用read和write函数去处理套接。...在Linux下创建一个原始套接的时候,需要拥有超级用户权限,用来防止恶意程序。 在Linux下,我们使用函数socket来创建一个套接,这和Python所提供的方法并没有什么区别。...这在同一域和套接类型的时候是有用的,可以指定选择某一个特定的协议。 socket函数返回一个套接描述符,本质上是一个文件描述符。...一般而言,除了lseek不能用来操作套接以外,其余的文件操作函数都是可以的。

1.2K00

Linux网络-TCPUDP套接编程

填写struct sockaddr结构的前16位:本地通信设置为AF_UNIX,网络通信设置为AF_INET(IPv4)或AF_INET6(IPv6) type:套接协议的传输类型:对于UDP的数据报式传输则填入...SOCK_DGRAM,对于TCP的流式传输则填入SOCK_STREAM protocol:创建套接的协议类别。...相比于UDP套接来说,TCP套接与之在一些地方是相同的,但是TCP的特点是面向链接的流式套接,所以还是有很大的区别的 1、创建套接 同样的tcp的服务端和客户端首先第一件事是创建套接文件...这是一个输入输出型参数 返回值:获取连接成功返回接收到的套接文件描述符,获取连接失败返回-1,同时错误码会被设置 套接文件之间的区别: socket函数创建的套接文件:用于不断获取客户端发来的连接请求...,同文件的读写是一样是流式的,那么对于TCP来说,使用文件读写的方式进行读写套接文件同样可以达到数据发送和接收的目的 读取套接文件数据,即为接收对应套接建立链接的远端发送来的消息;向套接文件进行写入数据

3.6K10

Socket(套接

长连接通常就是: 连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接; 心跳包就是在客户端和服务端间定时通知对方自己状态的一个自己定义的命令,按照一定的时间间隔发送,类似于心跳...** 1.对套接编程的理解,它的协议是如何的? socket通常称为“套接”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接向网络发出请求或应答网络请求。...(2)客户端请求:客户端的套接必须首先描述它要连接的服务器的套接,指出服务器端套接的地址和端口号,然后就向服务器端套接提出连接请求。...(3)连接确认:是指当服务器端套接监听到或者说接收到客户端套接的连接请求,它就响应客户端套接的请求,建立一个新的线程,把服务器端套接的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。...HTTP的传输速度慢,数据包大,数据传输安全性差,如实现实时交互,服务器性能压力大。

1.2K10

Python套接

套接:通信的端点 套接 有两种类型的套接:基于文件的和面向网络的。 IPC:进程间通信。...Python只支持AF_UNIX(基于文件)、AF_NETLINK(使用标准的BSD套接接口进行用户级别和内核级别代码之间的IPC)、AF_TIPC(透明的进程间通信)、AF_INET(基于网络)家族...面向连接的套接与无连接的套接 面向连接的套接 面向连接的套接:在进行通信之前必须先建立一个连接。这种类型的通信也称为虚拟电路或流套接。 实现这种连接类型的主要协议是传输控制协议(TCP)。...无连接的套接 与虚拟电路形成鲜明对比的是数据报类型的套接,它是一种无连接的套接。实现这种连接类型的主要协议是用户数据报协议(UDP)。...为了创建UDP套接,必须使用SOCK_DGRAM(即datagram)作为套接类型。因为这些套接也使用因特网协议来搜寻网络中的主机,所以这个系统也称作UDP/IP。

1.5K20

Linux进程通信之Unix套接(二)

Unix套接通信之Udp tcp和udp的区别 Tcp是可靠、稳定的,需要经过三次握手来建立连接,收发消息经过确认、Udp是不可靠的、不需要建立连接 Tcp需要建立连接确认,速度要比Udp不需要经过连接的慢一点...*/ $file= 'unix_udp_server'; //创建socket $socket = socket_create(AF_UNIX,SOCK_DGRAM,0); //bind 到文件...socket_bind($socket,$file); while (1) { //从套接接收数据,无论它是否面向连接 $len = socket_recvfrom($socket...($status); fprintf(STDOUT,"child process exit pid=%s\n",$pid); 执行服务端代码php demo29.php,通过ls命令可以看到已经生成文件...,并且通过file命令可以看到生成的文件是一个socket文件,通过pstree -ap 查看启动的进程id,通过strace命令监控服务端进程 通过上面的执行结果可以看到,进程之间是可以进行通信的

1.7K20

Linux】网络基础+UDP网络套接编程

套接编程中,常见的有网络套接编程,原始套接编程,unix域间套接编程。 网络套接支持多主机跨网络通信,下面讲到的都是这个套接编程。...原始套接比较难,它可以绕过传输层直接访问网络层以及下面的层,抓包和网络监测工具就是通过原始套接来完成的,文章不谈论原始套接和unix域间套接,只谈论网络套接编程。...初始化服务器的第一步就是创建服务器的套接,通过套接文件描述符能够帮助我们实现UDP的全双工通信。...还有一个非常重要的知识点就是关于sockfd套接文件描述符,对sockfd进行读写操作时,实际操作的是文件描述符指向的套接文件控制块(socket file control block),该文件控制块内部有发送和接收的缓冲区...,在进行消息的读取和发送时离不开套接文件控制块的帮助,我们称这样的网络通信为全双工通信。

24510
领券