1、试验3: 可靠数据传输协议-GBN协议设计与实现 1.试验目 了解滑动窗口协议基础原理; 掌握 GBN 工作原理; 掌握基于UDP 设计并实现一个 GBN 协议过程与技术。 2.试验环境 Ø 接入 Internet 试验主机; Ø Windows xp 或 Windows 7/8; Ø 开发语言: C/C++(或 Java)等。 3.试验内容 1) 基于 UDP 设计一个简单 GBN 协议, 实现单向可靠数据传输(服务器到用户数据传输)。 2) 模拟引入数据包丢失, 验证所设计协议有效性。 3) 改善所设计 GBN 协议, 支持双向数据传输; 4.
2、试验设计 1) Client: 函数列表: 各函数功效: 函数名 传入参数 功效 client_GBN_5 sentence: 须发送内容 用户端主函数 PACKER sentence: 须打包内容 data_len: 每包默认长度 把要发送内容根据默认长度进行打包, 返回数据包列表与数据包格式 sender pl: 数据包列表 fmt: 数据包格式 nextseqnum: 下一序列号 base: 基序列号 recver nextseqnum: 下一序列号 base: 基序列号 状态转换图: 2) Server:
3、 状态转换图: 3) 数据包结构: 发送方: 数据包包含序列号与内容 接收方: 只含接收到数据包序号 5.试验结果 1) Client: 2) Server: 具体对照: CLIENT SERVER 确定服务器与用户端地址、 接口 socket: ('127.0.0.1', 50000) binded client: ('127.0.0.1', 50000) server: ('127.0.0.1', 50001) socket: ('127.0.0.1', 50) client: ('127.0.0.1', 50) serve
4、r: ('127.0.0.1', 50) 准备发送文本序列: [b'\x00\x00\x00\x00I am the bone of my ', b'\x01\x00\x00\x00sword.Steel is my bo', b'\x02\x00\x00\x00dy, and fire is my b', b'\x03\x00\x00\x00lood.I have created ', b'\x04\x00\x00\x00over a thousand blad', b'\x05\x00\x00\x00es.Unknown to Death,', b'\x06\x00\x00\x0
5、0Nor known to Life.Ha', b'\x07\x00\x00\x00ve with stoodpain t', b'\x08\x00\x00\x00o create many weapon', b'\t\x00\x00\x00s.Yet,those hands wi', b'\n\x00\x00\x00ll never hold anythi', b'\x0b\x00\x00\x00ng.So as I pray, Unl', b'\x0c\x00\x00\x00imited Blade Works\x00\x00'] 进行收发 start timer go to n
6、ext packet recver: go on! base: 0 start timer go to next packet recver: go on! base: 1 start timer go to next packet recver: go on! base: 2 start timer go to next packet recver: go on! base: 3 start timer go to next packet recver: go on! base: 4 start timer go to next packet rec
7、ver: go on! base: 5 start timer go to next packet recver: go on! base: 6 start timer go to next packet recver: go on! base: 7 start timer go to next packet recver: go on! base: 8 start timer go to next packet recver: go on! base: 9 start timer go to next packet recver: go on! ba
8、se: 10 start timer go to next packet recver: go on! base: 11 start timer go to next packet 0 I am the bone of my b'\x00\x00\x00\x00' 1 sword.Steel is my bo b'\x01\x00\x00\x00' 2 dy, and fire is my b b'\x02\x00\x00\x00' 3 lood.I have created b'\x03\x00\x00\x00' 4 over a thousand blad
9、b'\x04\x00\x00\x00' 5 es.Unknown to Death, b'\x05\x00\x00\x00' 6 Nor known to Life.Ha b'\x06\x00\x00\x00' 7 ve with stood pain t b'\x07\x00\x00\x00' 8 o create many weapon b'\x08\x00\x00\x00' 9 s.Yet,those hands wi b'\t\x00\x00\x00' 10 ll never hold anythi b'\n\x00\x00\x00' 11 ng.So as I pray, Unl b'\x0b\x00\x00\x00' 12 imited Blade Works 发送完成时, 直接结束。 超时两次后结束。此处不另设结束信号。 SENDER:FINISHED RECVER:FINISHED base: 11 SENDER:QUIT 1 RECVER:QUIT 1 socket: closed. b'\x0c\x00\x00\x00' error: timeout error: timeout socket: closed. b'\r'






