- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六密钥交换算法.
《》名称:学 时:
一、目的Diffle-Hellman密钥交换算法掌握方法二、要求
图3-1:应用程序通信方式
2. 客户端和服务器进行密钥交换,并分别计算最终生成的密钥,看两者的密钥是否一致。
三、
以下解释它的过程(包括算法的数学部分):
更详细的算法描述见:Wiki
四、、
(1)根据实验原理部分对DES算法随机读写的要求,画出流程关系图,考虑各种可能,并实现。
六、由于实验代码相对较多,可以两个同学一组,分工完成实验。
附录:套接字编程的资料
基于C的面向连接的Socket编程模型
TCP协议是面向连接协议,它提供了一系列的数据纠错功能,可以保证在网络上传输的数据及时、无误的传给接收方。因此面向连接协议的Socket编程模型应用最为广泛,基于连接协议的服务是设计客户端/服务器应用程序时的标准。编程模型如图3-4所示。
模型中,服务器端的处理:
(1)使用socket系统调用,生成一个TCP协议模块与应用程序之间进行通信的套接字;使用bind系统调用指定端口号;
(2)使用bind系统调用指定端口号;
(3)使用listen系统调用,指定连接接收队列的长度,并等待来自客户端的连接请求。
前三步完成了启动服务器程序的工作。一旦listen监听到有客户端的连接,就调用accept接收连接。
希望与服务器通信的进程称为客户,客户所运行的计算机环境称为客户端,有时两个概念混用。
客户端的处理:
(1)使用socket系统调用,打开TCP协议模块与应用程序之间的通信线路;
(2)使用connect系统调用,指定IP地址和端口号,和服务器相应的服务应用程序建立TCP协议的连接请求;
客户端和服务器程序在建立连接后,使用send和recv调用完成数据的发送和接收工作。等待数据传送结束后,各自调用close关闭套接字。
使用TCP协议的Socket通信程序包括服务程序和客户程序。
图3-4:基于C的面向连接的socket编程模型
基于C的Socket编程相关函数和数据类型
1.sockadd和sockaddr_in结构:
① sockaddr 结构
struct sockaddr
{
unsigned short sa_family; /*地址族,AF_xxx有IPV4与IPV6等*/
char sa_data[14]; /*14字节的协议地址*/
};
sa_family一般为AF_INET,表示Internet协议族,如是AF_UNIX表示UNIX协议簇② in_add结构,用来存储四字节的IP地址
struct in_addr{
unsigned long s_addr;
};
③ sockaddr_in结构
struct sockaddr_in
{
short int sin_family; /*地址族*/
unsigned short int sin_port; /*端口号*/
struct in_add sin_addr; /*IP地址*/
unsigned char sin_zero[8]; /*填充0以保持与struct sockaddr同样大小*/
};
该结构中sin_zero使得sockaddr和sockaddr_in指针类型相互转换;sin_port和sin_addr必须是网络字节顺序,因为它们被封装在包的IP和UDP层,而sin_family不发送到网络上可以是本机字节顺序。
相关函数
1.socket()函数
该函数用于根据指定的地址族、数据类型和协议来分配一个套接字的描述字及其所用的资源。Socket函数原型为:
int socket( int domain , int type , int protocol ) ;
a、 参数domain指定地址描述,一般为AP_INET;
b、 参数type指定socket类型:SOCK_STREAM和SOCK_DGRAM;
c、参数protocol通常为0;
d、 函数返回值为一个整型socket描述符,在bind函数中调用。
2.bind()函数
该函数用于将一个本地地址与一个套接字绑定在一起。
int bind( int sockfd , struct sockadd* my_addr , int addrlen) ;
a、sockfd:socket描述符,使用socket函数返回值,将该socket与本机上的一个端口相关联。
在设计服务器端程序是需要调用bind函数,以在该端口上监听服务请求;而客户端一般不需要调用bind函数,因为只需知道服务器IP地址,并不关心客户通过哪个端口与服务器建立连接,内核会自动选择一个未被占用的端口供客户端来使用。
b、my_addr:指向包含本机IP地址及端口号等信息的soc
您可能关注的文档
- 实验一ARIMA模型建立与应用..doc
- 实验一C程序的运行环境和运行C程序的方法..doc
- 实验8路由综合实验与故障诊断..doc
- 实验7马尔科夫预测..docx
- 实验一ME软件配置及使用..doc
- 实验一FFT频谱分析及应用..doc
- 实验一SAS系统及数据集创建..doc
- 实验一snmp安装信息刺探以及安全策略..doc
- 实验一SAPERP基础知识以及系统认识..doc
- 实验一DOS常用命令及8088指令使用..doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)