sharpshooter
1.0.0
Sharpshooter هو بروتوكول شبكة موثوق به يستخدم UDP.
إنه بروتوكول موجه للاتصال تمامًا مثل TCP.
لا تحتوي على خصائص الحزمة، يمكنك تجربتها لتجاوز بعض اكتشاف خصائص البروتوكول، وقاعدة لبروتوكول نقل تطبيق P2P.
فيما يتعلق بالتعليمات، يمكنك رؤية المثال dir، لقد قدمت مثالين بسيطين.
إذا كنت تريد تحويل TCP إلى Sharpshooter، فيمكنك تجربة https://github.com/soyum2222/sharpshooter-tunel.
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | CONTENT(.......) |
SIZE:
contain SQE CMD CONTENT byte size . but not contain itself byte size .
SQE
sequence number, continuous data package, SQE is continuous.
CMD
0:ack
1:NORMAL
2:first handshack
3:second handshack(response first handshack)
4:third handshack
5:close connction(FIN)
6:response close
7:health check
8:response health
ACK package
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | ackSQE1(4byte)| ackSQE2(4byte) | ackSQE3(4byte) | ... |
The package max length can't over DEFAULT_INIT_PACKSIZE or Sniper.packageSize
When receive ack like :
| SIZE(4byte) | SQE(4byte) | CMD(2byte) | ackSQE1(4byte)| ackSQE2(4byte) | ackSQE3(4byte) |
if ackSQE1 == ackSQE2 and ackSQE1 < ackSQE3 this situation means ackSQE1 to ackSQE3 is continuous number .
eg: receive data : |0|0|0|1|1|10| , this means other party sent ack 1 to 10.
ping.go
بونغ.غو
send_file.go
تلقي_ملف.go
حاول نقل ملف 100M
يعتمد الاستخدام على حالة الشبكة وحجم نافذة الإرسال