资源描述
试验3: 可靠数据传输协议-GBN协议设计与实现
1.试验目
了解滑动窗口协议基础原理; 掌握 GBN 工作原理; 掌握基于UDP 设计并实现一个 GBN 协议过程与技术。
2.试验环境
Ø 接入 Internet 试验主机;
Ø Windows xp 或 Windows 7/8;
Ø 开发语言: C/C++(或 Java)等。
3.试验内容
1) 基于 UDP 设计一个简单 GBN 协议, 实现单向可靠数据传输(服务器到用户数据传输)。
2) 模拟引入数据包丢失, 验证所设计协议有效性。
3) 改善所设计 GBN 协议, 支持双向数据传输;
4.试验设计
1) Client:
函数列表:
各函数功效:
函数名
传入参数
功效
client_GBN_5
sentence: 须发送内容
用户端主函数
PACKER
sentence: 须打包内容
data_len: 每包默认长度
把要发送内容根据默认长度进行打包, 返回数据包列表与数据包格式
sender
pl: 数据包列表
fmt: 数据包格式
nextseqnum: 下一序列号
base: 基序列号
recver
nextseqnum: 下一序列号
base: 基序列号
状态转换图:
2) Server:
状态转换图:
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)
server: ('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\x00Nor 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 next 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
recver: 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!
base: 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
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'
展开阅读全文