sharpshooter
1.0.0
Sharpshooter는 UDP를 사용하는 신뢰성 있는 네트워크 프로토콜입니다.
TCP와 마찬가지로 연결 지향 프로토콜입니다.
패킷 특성이 없으므로 일부 프로토콜 특성 감지를 우회하고 P2P 응용 프로그램 전송 프로토콜의 기반을 우회해 볼 수 있습니다.
지침에 대해서는 예제 디렉토리를 볼 수 있으며 간단한 예제를 제공했습니다.
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
receive_file.go
100M 파일 전송을 시도해보세요
활용도는 네트워크 상태 및 전송 창 크기에 따라 달라집니다.