协议文档的书写——文件上传

    协议,即网络协议,是通信的计算机双方必须共同遵守的一组约定。

    在这里,以文件传输为例写一个协议文档。

    需求

    现有客户端和服务器端,客户端要向服务器端传输一个文件,服务器收到文件校验正确后返回响应,制定一个协议服务器的文件上传协议。

    需求分析:

    在上传前,对于要传输的文件本身,要有一个约定:

  • 文件名:文件命名要符合文件命名规范,主要包括文件名长度,格式等。,根据需求的不同命名规范不同。
  • 文件大小:上传文件的大小要符合服务器端的限制。上传的文件大小可以无限制,但是文件过大的话可能会造成客户端卡顿等现象。对于服务器来说,大文件也是一个考验,会消耗性能。
  • 文件标识:对于上传的文件要有一个唯一性标识,以便于服务器检验上传的文件的正确性,例如通过文件指纹(MD5)技术验证。

    在确定了上传文件得相关约定后,就可以上传了,同样的,对于上传的过程也要有一个约定:

  • 客户端准备将文件上传给服务器,此时先发送消息给服务器提出上传请求。
  • 服务器在收到请求后,做好相关准配置准备工作等待上传并回复允许发送消息。
  • 客户端收到回复后,上传文件和文件的基本校验信息。
  • 服务端在接收到文件后,对文件进行校验,确认上传过程中文件没有被更改,是客户端要上传的文件,给客户端一个上传成功回复。

至此,在明白了需求后,就可以去实现了。


    文件上传协议制定:

上面需求分析已经得出协议分为两部分——连接和传输,所以协议也分为两部分。

  • 通信协议:确定通信协议为tcp/ip协议。
  • 连接协议:

制定连接协议头,包含具体的字段信息和对于字段的描述等内容。

见下表:


字段类型大小描述
namestring 文件的命名规范
sizeint322GB上传的文件内容的最大值
md5string 文件的指纹,用来验证文件传输的唯一性
要上传的文件要符合表中要求才能上传。
  • 传输协议

制定传输连接协议见下图:


箭头①表示客户端向服务器发送请求:想要发送文件,客户端将标志位SYN=1的数据包发送给服务器,并生成一个seq=J。然后客户端进入SYN_SENT状态,等待回复。

箭头②表示服务器收到SYN=1的数据包后,将标志位SYN和ACK都设置为1,并且ack=J+1,随机产生seq=K。然后将数据包发送给客户端确认连接,服务器进入SYN_RCVD状态,等待文件。

箭头③表示客户端收到数据包后,确认ack是否为J+1,ACK是否为1,正确则将标志位设置为1,ack=K+1。然后将数据包再次发送给服务器,服务器检查ack是否为K+1,ACK是否为1,正确则建立连接。客户端就可以上传文件了。

箭头④表示服务器收完文件后,检查文件的指纹验证是否是要上传的文件,是则回复给客户端上传成功。

至此,一份简单的文件上传协议文档就写好了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值