网络协议设计.doc_第1页
网络协议设计.doc_第2页
网络协议设计.doc_第3页
网络协议设计.doc_第4页
网络协议设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

声明:仅仅用于交作业,小心与别人重复,被老师抓问题描述:设计一个简单的网络协议,要求有协议的功能、目标、协议的工作原理、协议算法,并编程实现文件传输协议协议功能:通过网络以字节形式传输文件协议工作原理:全双工先信道传输发送端一次发送4个字节32位。接收端一次发送1个字节8位。接收端缓冲区4个字节,平均分为4块。协议详细和协议算法1、 建立连接先发送方端请求建立连接,字节流数据首部 00 表示请求连接。请求建立连接时231位无效。如:00111111接收端返回字节数据01位为00表示同意建立连接。不同意连接则不给予回应如:00111111发送端开始发送数据,接收端缓冲区一共有4块,每块大小为一个字节。发送的字节 57 位表示本次发送的数据大小单位 byte当数据发送完时,发送端发送的字节流首部 0、1位为 11 表示发送结束发送端发送 字节流首部01234567 状态数据标记 缓冲区块号 本次数据长度8162431 数据各位说明状态标识位00 请求连接01 正在发送11 发送结束数据标记0 发送的数据是源数据1 发送的数据是加密后的数据缓冲区块号本次发送数据长度08个字节接收端发送 字节流01234567 标识位缓冲区块号标识为00 同意建立连接01 缓冲区已刷新10 确认收到数据11 确认结束2、 开始发送发送端发送的字节状态标识位 为01如:发送到第1块缓冲区、大小为8 byte的数据源数据01001111010110001101010010101001 8byte 数据保证数据的可靠性,发送时将源数据发一遍,将加密后的数据也发一遍,源数据和加密后的数据的差别由数据标记位区分。0表示发送的数据是源数据,1表示发送的数据是加密后的数据。接收端接收数据时将数据接收到的源数据加密与接收到在发送端加密的数据比较,不同则把接收到的数据丢弃。假如相同则给发送端回一个数据,表示该缓冲区块的数据接收成功,并且不再接收往该缓冲区块的数据。如:第 2 缓冲块10110111接收端接受数据后不再发那个字节数据。当缓冲区填满以后发送端不再发送,接收端将缓冲区的数据则写入设备,并给发送端一个回应。表示可以发送端继续发送数据了。如:01111111发送端在发送数据后假如接收不到接收端的确认信息,则等待一个时间后继续发送。 3、 发送完成发送端在数据发送完后发送的结束标识字节,并等待接收端回应,如一段世间还不回应则继续发送。如:11111111接收端回送确认结束如:11111111编程实现#includeusing namespace std;#define SEND_SIZE 32#define BACK_SIZE 8/用int型数组模拟数据的位void SendEnd(const int* recData); /发送端处理函数void RecevieEnd(const int* recData); /接收端处理函数void encode(int* data); /加密函数int pool4SEND_SIZE-BACK_SIZE;int main()int dataSEND_SIZE = 0,0;SendEnd(data);return 0;/*发送端请求00 请求连接01 正在发送11 发送结束接收端回送00 同意建立连接01 缓冲区已刷新10 确认收到数据11 确认结束*/发送端处理函数void SendEnd(const int* recData)/recData 从接收端回送的的数据int sendDataSEND_SIZE; /往接收端发送的数据if(recData0=0 & recData1=0)/ 00 同意建立连接/往第二块缓冲区发送的源数据sendData0 = 0;sendData1 = 1;sendData2 = 0;sendData3 = 1;sendData4 = 0;sendData5 = 0;sendData6 = 1;sendData7 = 1;int data24 = 1,1,0,1,0,1,1,0, 0,1,0,0,0,0,1,0, 1,0,0,1,0,1,1,0;for(int i=0; iSEND_SIZE-BACK_SIZE; i+)sendDatai+BACK_SIZE = datai;cout开始给接收端发送源数据大小:sendData5*4+sendData6*2+sendData7+1B 缓冲块:sendData3*2+sendData4endl;RecevieEnd(sendData);/往第二块缓冲区发送加密后数据sendData2 = 1;encode(data); /将数据加密后在发一次for(int i=0; iSEND_SIZE-BACK_SIZE; i+)sendDatai+BACK_SIZE = datai;cout开始给接收端发送加密后的数据大小:sendData5*4+sendData6*2+sendData7+1B 缓冲块:sendData3*2+sendData4endl;RecevieEnd(sendData); else if(recData0=0 & recData1=1)/ 01 缓冲区已刷新cout发送端: 好啊,继续发送.endl;cout文件传输结束,发送端请求结束endl;sendData0 = 1;sendData1 = 1;RecevieEnd(recData); else if(recData0=1 & recData1=0)/ 10 确认收到数据cout发送端: 我知道第recData3*2+recData4 块缓冲区的数据成功接收了endl;cout文件传输结束,发送端请求结束endl;sendData0 = 1;sendData1 = 1;RecevieEnd(recData); else/ 11 确认结束cout发送端: 断开连接endl;/接收端处理函数void RecevieEnd(const int* recData)/recData 从发送端发送的数据int sendDataBACK_SIZE; /往发送端回送的数据if(recData0=0 & recData1=0)/ 00 请求连接cout发送端请求连接endl;sendData0 = 0;sendData1 = 0; else if(recData0=0 & recData1=1)/ 01 正在发送int piece = recData3*2+recData4; /缓冲块号int size = recData5*4+recData6*2+recData7+1; /本次发送数据大小/coutpiece sfsfsfendl;if(recData2 = 0)/接收源数据cout接收到源数据数据大小:sizeB 缓冲块:pieceendl;/将数据存到指定的缓冲区块cout收到的数据为:endl;for(int i=8; iSEND_SIZE; i+)poolpiecei-8 = recDatai;coutrecDatai ;coutendl; else cout接收到加密后的数据大小:sizeB 缓冲块:pieceendl;int tempSEND_SIZE-BACK_SIZE;int i;for(i=0; iSEND_SIZE-BACK_SIZE; i+)tempi = poolpiecei;encode(temp);for(i=0; iSEND_SIZE-BACK_SIZE; i+)if(tempi != recDatai+8)break;if(SEND_SIZE-BACK_SIZE=i)cout接收端: 正确成功接收endl;sendData0 = 1;sendData1 = 0;for(int j=2; jBACK_SIZE; j+)sendDataj = recDataj;SendEnd(sendData); elsecout接收端: 没有正确接收,不给予回应endl; else if(recData0=1 & recData1=0)/ else/ 11 发送结束cout发送端发送结束,接收端回应结束endl;sendData0 = 1;sendData1 = 1;SendEnd(sendData);void encode(int* data) int codeSEND_SIZE-BACK_SIZE = 1,0,1,1,0,1,1,0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论