网络协议设计

上传人:汽*** 文档编号:562871960 上传时间:2023-04-30 格式:DOCX 页数:7 大小:60.03KB
返回 下载 相关 举报
网络协议设计_第1页
第1页 / 共7页
网络协议设计_第2页
第2页 / 共7页
网络协议设计_第3页
第3页 / 共7页
网络协议设计_第4页
第4页 / 共7页
网络协议设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《网络协议设计》由会员分享,可在线阅读,更多相关《网络协议设计(7页珍藏版)》请在金锄头文库上搜索。

1、声明:仅仅用于交作业,小心与别人重复,被老师抓 问题描述: 设计一个简单的网络协议,要求有协议的功能、目标、协议的工作原理、协议算法 并编程实现文件传输协议协议功能:通过网络以字节形式传输文件 协议工作原理:全双工先信道传输发送端一次发送4 个字节 32 位。 接收端一次发送1个字节8 位。接收端缓冲区4个字节,平均分为4 块。协议详细和协议算法1、建立连接先发送方端请求建立连接,字节流数据首部 00 表示请求连接。请求建立连接时 231 位无 效。如:00111111接收端返回字节数据01位为 00 表示同意建立连接。不同意连接则不给予回应如:00111111发送端开始发送数据,接收端缓冲区

2、一共有4 块,每块大小为一个字节。 发送的字节 57 位表示本次发送的数据大小单位 byte 当数据发送完时,发送端发送的字节流首部 0、1 位为 11 表示发送结束发送端发送字节流首部01234567状态数据标记缓冲区块号本次数据长度8162431数据各位说明状态标识位00 请求连接01 正在发送11 发送结束 数据标记0 发送的数据是源数据1 发送的数据是加密后的数据 缓冲区块号 本次发送数据长度08 个字节接收端发送字节流01234567标识位缓冲区块号标识为00 同意建立连接01 缓冲区已刷新10 确认收到数据11 确认结束2、开始发送 发送端发送的字节状态标识位 为 01如:发送到第

3、1块缓冲区、大小为8 byte的数据源数据0 10 011110101100011010100101010018byte 数据保证数据的可靠性,发送时将源数据发一遍,将加密后的数据也发一遍,源数据和加密后的数据的差别由数据标记位区分。0表示发送的数据是源数据,1表示发送的数据是加密后的数 据。接收端接收数据时将数据接收到的源数据加密与接收到在发送端加密的数据比较,不同则把接 收到的数据丢弃。假如相同则给发送端回一个数据,表示该缓冲区块的数据接收成功,并且不 再接收往该缓冲区块的数据。如:第2缓冲块10110111接收端接受数据后不再发那个字节数据。当缓冲区填满以后发送端不再发送,接收端将缓冲区

4、 的数据则写入设备,并给发送端一个回应。表示可以发送端继续发送数据了。如:01111111发送端在发送数据后假如接收不到接收端的确认信息,则等待一个时间后继续发送。3、发送完成发送端在数据发送完后发送的结束标识字节,并等待接收端回应,如一段世间还不回应则继续 发送。如:11111111接收端回送确认结束如:11111111编程实现#include using namespace std;#define SEND_SIZE 32#define BACK_SIZE 8用int型数组模拟数据的位void SendEnd(const int* recData); /发送端处理函数 void Recev

5、ieEnd(const int* recData); /接收端处理函数void encode(int* data); /加密函数intpool4SEND_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; /

6、往接收端发送的数据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 = dat

7、ai;据大冲cout 开 始 给 接 收 端 发 送 源 数 小:sendData5*4+sendData6*2+sendData7+1B缓块:vvsendData3*2+sendData4vvendl;RecevieEnd(sendData);/往第二块缓冲区发送加密后数据 sendData2 = 1;encode(data); /将数据加密后在发一次for(int i=0; iSEND_SIZE-BACK_SIZE; i+) sendDatai+BACK_SIZE = datai;cout 开 始 给 接 收 端 发 送 加 密 后 的 数 据 大 小 :sendData5*4+sendD

8、ata6*2+sendData7+1B 缓 冲 块:vvsendData3*2+sendData4vvendl;RecevieEnd(sendData); else if(recData0=0 &recData1=1)/ 01 缓冲区已刷新coutvv发送端:好啊,继续发送.vvendl;coutvv文件传输结束,发送端请求结束vvendl; sendData0 = 1;sendData1 = 1;RecevieEnd(recData); else if(recData0=1 &recData1=0) / 10 确认收到数据coutvv发送端:我知道第vvrecData3*2+recData4

9、vv块缓冲区的数据成功 接收 了 vvendl;coutvv文件传输结束,发送端请求结束vvendl; sendData0 = 1;sendData1 = 1;RecevieEnd(recData); else/ 11 确认结束coutvv发送端:断开连接vvendl;/接收端处理函数void RecevieEnd(const int*recData)/recData 从发送端发送的数据int sendDataBACK_SIZE; /往发送端回送的数据 if(recData0=0 & recData1=0)/ 00 请求连接coutvv发送端请求连接vvendl; sendData0 = 0;

10、sendData1 = 0; else if(recData0=0 &recData1=1)/ 01 正在发送int piece = recData3*2+recData4; /缓冲块号int size = recData5 *4+recData6 *2+recData7+1; /本次发送数据大小 /coutvvpiecevv sfsfsfvvendl;if(recData2 = 0)/接收源数据coutvv接收到源数据数据大小:vvsizevvB缓冲块:vvpiecevvendl;/将数据存到指定的缓冲区块coutvv收到的数据为:vvendl;for(int i=8; iSEND_SIZE

11、; i+)poolpiecei-8 = recDatai; coutvvrecDataivv ;coutvvendl; else coutvv接收到加密后的数据大小:vvsizevvB缓冲块:vvpiecevvendl;int tempSEND_SIZE-BACK_SIZE;int i;for(i=0; ivSEND_SIZE-BACK_SIZE; i+)tempi = poolpiecei;encode(temp);for(i=0; ivSEND_SIZE-BACK_SIZE; i+)if(tempi != recDatai+8)break;if(SEND_SIZE-BACK_SIZE=i)

12、coutvv接收端:正确成功接收vvendl;sendData0 = 1;sendData1 = 0;for(int j=2; jvBACK_SIZE; j+)sendDataj = recDataj;SendEnd(sendData); elsecoutvv接收端:没有正确接收,不给予回应vvendl; else if(recData0=1 & recData1=0)/ else/ 11 发送结束coutvv发送端发送结束,接收端回应结束vvendl;sendData0 = 1;sendData1 = 1;SendEnd(sendData);void encode(int* data)int

13、codeSEND_SIZE-BACK_SIZE = 1,0,1,1,0,1,1,0, 1,0,1,0,1,0,1,0, 1,0,1,0,1,1,1,0;for(int i=0; iSEND_SIZE-BACK_SIZE; i+) datai = datai&codei;编译环境 windows 编译器 vc2008执行结果康 C:Wi n dow5system 3 2cmd. exeS3llirlie密曲晞冲如01100100061010010110 筍菽收瑞衣 劉如密后隹b:4B缓冲块:2 决biWISB-忌、键堆续 总结 此文件传输协议还有很多不足的地方 如:1、两次握手连接无法保证正确连接 2、当缓冲去未满时无法继续发送 3、程序也没有完全模拟出来

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号