skcptun
skcptun เป็นอุโมงค์ KCP ที่เข้ารหัสสำหรับ OpenWRT และ Linux และ MacOS ซึ่งใช้งานในภาษา C และ Lua
สถานะ
- “ไม่ใช่ว่าใช้ไม่ได้”
- ปัจจุบันเป็นเวอร์ชันที่มีการเพิ่ม Lua และเวอร์ชัน C เพียงอย่างเดียวจะไม่ได้รับการบำรุงรักษาอีกต่อไป
ลักษณะเฉพาะ
- ขึ้นอยู่กับอุโมงค์ที่เข้ารหัส UDP ที่เชื่อถือได้ ข้อมูลการส่งผ่านที่เข้ารหัสจะไม่มีลักษณะเฉพาะ
- สามารถใช้เพื่อเร่งความเร็วการเชื่อมต่อเครือข่ายด้วยโหมดรวดเร็วและโหมดปกติ ความเร็วในการส่งข้อมูลที่วัดได้ของโหมดรวดเร็วนั้นมากกว่าการส่งผ่าน TCP มาก (เครื่องหมายมาตรฐาน)
- ปัจจุบันรองรับสองโหมด: โหมด TUN และโหมด TCP
- ในโหมด TUN ไคลเอนต์และเซิร์ฟเวอร์ต่างก็สร้างการ์ดเครือข่ายเสมือนบนส่วนเครือข่ายเดียวกัน ไคลเอนต์ส่งแพ็กเก็ต IP ทั้งหมดไปยังเซิร์ฟเวอร์อย่างโปร่งใสผ่านอุโมงค์ KCP ที่เข้ารหัส คล้ายกับโหมด VPN แบบดั้งเดิม
- ในโหมด TCP ไคลเอนต์จะรับฟังพอร์ตหนึ่งพอร์ต (หรือมากกว่า) และส่งข้อมูลที่ได้รับทั้งหมดไปยังเซิร์ฟเวอร์อย่างโปร่งใสผ่านอุโมงค์ KCP ที่เข้ารหัส เซิร์ฟเวอร์จะส่งข้อมูลไปยังเซิร์ฟเวอร์ที่กำหนดอย่างโปร่งใส โดยทั่วไปจะใช้เมื่อโหมด TUN ถูกบล็อก
- คุณสามารถใช้สคริปต์ Lua เพื่อใช้บริการที่คุณกำหนดเองตาม API ที่ skcptun ให้มา
ติดตั้ง
สภาพแวดล้อมการทำงาน: Linux, MacOS
ไลบรารีที่ต้องพึ่งพา: OpenSSL, libev
หลังจากดาวน์โหลดซอร์สโค้ดและแตกไฟล์แล้ว:
cd skcptun
mkdir build
cd build
cmake ..
make
หากคุณโคลนโดยตรง คุณจะต้องอัปเดตโมดูลย่อย:
git submodule update --init --recursive
การกำหนดค่าสภาพแวดล้อม
โหมด TCP
- กำหนดค่าไฟล์กำหนดค่าและเริ่มใช้งาน
โหมดทูน
- เนื่องจากอุโมงค์ถูกสร้างขึ้นผ่านเทคโนโลยีการ์ดเครือข่ายเสมือน จึงจำเป็นต้องทำการตั้งค่าเครือข่ายที่จำเป็น
- ยกตัวอย่าง Linux (Debian) เคอร์เนลจำเป็นต้องรองรับโมดูล tun ยืนยันด้วยคำสั่ง "modinfo tun"
- ต้องติดตั้งชุดเครื่องมือ "iproute2" และ "iptables"
เซิร์ฟเวอร์
- เปิดใช้งานการส่งต่อ IP เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ "/etc/sysctl.conf" และดำเนินการ "sysctl -p" เพื่อให้มีผล
net.ipv4.ip_forward=1
net.ipv4.conf.all.route_localnet = 1
net.ipv4.conf.default.route_localnet = 1
net.ipv4.conf.[网卡接口].route_localnet = 1
net.ipv4.conf.lo.route_localnet = 1
net.ipv4.conf.[虚拟网卡接口].route_localnet = 1
- เปิดการส่งต่อ IP และแก้ไขนโยบายการส่งต่อเริ่มต้น "iptables -P FORWARD ACCEPT"
- แก้ไขที่อยู่ต้นทางของ nat ไปยังที่อยู่ของการ์ดเครือข่ายขาออก "iptables -t nat -A POSTROUTING -s 192.168.2.1/24 -o enp1s0 -j MASQUERADE"
ลูกค้า
ใช้
- configfile คือไฟล์คอนฟิกูเรชัน
- หากเป็นโหมด TUN จำเป็นต้องมีสิทธิ์รูทจึงจะรันได้
ไฟล์การกำหนดค่า:
ไฟล์การกำหนดค่าเป็นไฟล์ Lua อ้างอิงถึง "skcptun_config_sample" มีความคิดเห็นอยู่ข้างใน
ตัวแปรภายในจัดทำโดย skcptun
SKT
"skt" เป็นตัวแปรส่วนกลางในตัวที่ใช้โดยสคริปต์ Lua รวมถึง "skt.conf.*", "skt.api.*" และ "skt.cb.*"
ข้อมูลการกำหนดค่าของ skcptun
"skt.conf.*": ตัวแปรข้อมูลการกำหนดค่าเปิดเผยโดย skcptun ไปยังสคริปต์ Lua
skt.conf.tun_ip
ต้องตั้งค่า IP ของการ์ดเครือข่ายเสมือน ไคลเอนต์ และเซิร์ฟเวอร์ในส่วนเครือข่ายเดียวกัน ซึ่งใช้ได้ในโหมด "tun_client" และ "tun_server"
skt.conf.tun_mask
ซับเน็ตมาสก์ของการ์ดเครือข่ายเสมือน การตั้งค่าไคลเอ็นต์และเซิร์ฟเวอร์สอดคล้องกัน และใช้ได้ในโหมด "tun_client" และ "tun_server"
skt.conf.skcp_serv_conf_list_size
หมายเลขของ "skcp_serv_conf"
skt.conf.skcp_serv_conf_list[i].ดิบ
ตัวชี้ i-th "skcp_serv_conf" ใช้เพื่อส่งพารามิเตอร์ไปยัง API
skt.conf.skcp_serv_conf_list[i].addr
ที่อยู่ IP ของ i-th "skcp_serv_conf"
skt.conf.skcp_serv_conf_list[i].พอร์ต
พอร์ตของ i-th "skcp_serv_conf"
skt.conf.skcp_serv_conf_list[i].คีย์
สตริงที่เข้ารหัสของ i-th "skcp_serv_conf"
skt.conf.skcp_serv_conf_list[i].ตั๋ว
ตั๋วการเข้าถึงที่ตกลงกันระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ i-th "skcp_serv_conf" ถูกต้องในโหมด "tun_client" และ "proxy_client"
skt.conf.skcp_serv_conf_list[i].max_conn_cnt
จำนวนการเชื่อมต่อสูงสุดสำหรับ i-th "skcp_serv_conf" ใช้ได้ในโหมด "proxy_server" และ "tun_server"
การกำหนดค่า skt.conf.skcp_cli_conf_list* เหมือนกับ skt.conf.skcp_serv_conf_list*
skt.conf.etcp_serv_conf_list_size
จำนวน "etcp_serv_conf_list"
skt.conf.etcp_serv_conf_list[i].ดิบ
ตัวชี้ของเซิร์ฟเวอร์ tcp "etcp_serv_conf" ใช้เพื่อส่งพารามิเตอร์ไปยัง API
skt.conf.etcp_serv_conf_list[i].addr
ที่อยู่การฟังของเซิร์ฟเวอร์ TCP
skt.conf.etcp_serv_conf_list[i].พอร์ต
พอร์ตการฟังของเซิร์ฟเวอร์ TCP
skt.conf.etcp_cli_conf_list_size
จำนวน "etcp_cli_conf_list"
skt.conf.etcp_cli_conf_list[i].ดิบ
ตัวชี้ของไคลเอนต์ tcp "etcp_cli_conf" นั้นใช้เพื่อส่งพารามิเตอร์ไปยัง API
skt.conf.etcp_cli_conf_list[i].addr
ที่อยู่การเชื่อมต่อของไคลเอนต์ tcp ถูกต้องในโหมด "พร็อกซีเซิร์ฟเวอร์"
skt.conf.etcp_cli_conf_list[i].พอร์ต
พอร์ตการเชื่อมต่อของไคลเอ็นต์ TCP ใช้ได้ในโหมด "พร็อกซีเซิร์ฟเวอร์"
Lua API ภายในจัดทำโดย skcptun
"skt.api.*" ซึ่งเป็น API ที่ถูกเปิดเผยโดย skcptun ไปยังสคริปต์ Lua
skt.api.skcp_init (conf, วนซ้ำ, skcp_mode)
เริ่มต้น skcp
- พารามิเตอร์
- conf: การกำหนดค่าของ skcp
- วนซ้ำ: วัตถุวนรอบเหตุการณ์
- skcp_mode: โหมดเริ่มต้น skcp, จำนวนเต็ม, 1 หมายถึงโหมดเซิร์ฟเวอร์, 2 หมายถึงโหมดไคลเอ็นต์
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนวัตถุ skcp สำเร็จ
skt.api.skcp_free(skcp)
ทำลายและปล่อย skcp
- พารามิเตอร์
- ค่าส่งคืน: ไม่มี
skt.api.skcp_req_cid (skcp ตั๋ว)
ขอรหัสการเชื่อมต่อจากเซิร์ฟเวอร์ skcp
- พารามิเตอร์
- วัตถุ skcp
- ตั๋ว: ตั๋วที่สอดคล้องกันในข้อมูลการกำหนดค่าสตริง
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืน "ตกลง" สำเร็จ
skt.api.skcp_send(skcp, cid, buf)
ส่งข้อความผ่าน skcp
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- buf: เนื้อหาข้อความ, สตริง
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนจำนวนไบต์ที่ส่งสำเร็จ >= 0 เป็นจำนวนเต็ม
skt.api.skcp_close_conn (skcp, cid)
ปิดการเชื่อมต่อ skcp
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนค่า 0 สำเร็จ เป็นจำนวนเต็ม
skt.api.skcp_get_conn (skcp, cid)
รับการเชื่อมต่อ skcp
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- วัตถุที่ประสบความสำเร็จ
skt.api.etcp_server_init (conf, วนซ้ำ)
เริ่มต้นเซิร์ฟเวอร์ etcp
- พารามิเตอร์
- conf: การกำหนดค่าของ skcp
- วนซ้ำ: วัตถุวนรอบเหตุการณ์
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนอ็อบเจ็กต์เซิร์ฟเวอร์ etcp สำเร็จ
skt.api.etcp_server_free (ฯลฯ )
ทำลายและปล่อยเซิร์ฟเวอร์ etcp
- พารามิเตอร์
- ค่าส่งคืน ไม่มี
skt.api.etcp_server_send (etcp, fd, buf)
ส่งข้อความถึงลูกค้าผ่าน ฯลฯ
- พารามิเตอร์
- วัตถุเซิร์ฟเวอร์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- buf: เนื้อหาข้อความ, สตริง
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนจำนวนไบต์ที่ส่งสำเร็จ > 0 เป็นจำนวนเต็ม
skt.api.etcp_server_get_conn (etcp, fd)
รับการเชื่อมต่อกับเซิร์ฟเวอร์ etcp
- พารามิเตอร์
- วัตถุเซิร์ฟเวอร์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนอ็อบเจ็กต์ conn สำเร็จ
skt.api.etcp_server_close_conn (etcp, fd, เงียบ)
ปิดการเชื่อมต่อเซิร์ฟเวอร์ etcp
- พารามิเตอร์
- วัตถุเซิร์ฟเวอร์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- เงียบ: ไม่ว่าจะปิดเงียบหรือไม่ก็ตาม เหตุการณ์ "on_close" จะถูกทริกเกอร์
- ค่าส่งคืน: ไม่มี
skt.api.etcp_client_init (conf, วนซ้ำ)
เริ่มต้นไคลเอนต์ etcp
- พารามิเตอร์
- conf: การกำหนดค่าของ skcp
- วนซ้ำ: วัตถุวนรอบเหตุการณ์
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนอ็อบเจ็กต์ไคลเอนต์ etcp สำเร็จ
skt.api.etcp_client_free(etcp)
ทำลายและปล่อยไคลเอนต์ etcp
- พารามิเตอร์
- ค่าส่งคืน: ไม่มี
skt.api.etcp_client_send (etcp, fd, buf)
ส่งข้อความไปยังเซิร์ฟเวอร์ผ่าน ฯลฯ
- พารามิเตอร์
- วัตถุไคลเอนต์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- buf: เนื้อหาข้อความ, สตริง
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนจำนวนไบต์ที่ส่งสำเร็จ > 0 เป็นจำนวนเต็ม
skt.api.etcp_client_create_conn (etcp, addr, พอร์ต)
สร้างการเชื่อมต่อ ฯลฯ
- พารามิเตอร์
- วัตถุไคลเอนต์ etcp
- addr: จำเป็นต้องเชื่อมต่อกับที่อยู่เซิร์ฟเวอร์ สตริง
- พอร์ต: จำเป็นต้องเชื่อมต่อกับพอร์ตเซิร์ฟเวอร์
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืน fd ที่สร้างขึ้นซึ่งเป็นประเภทจำนวนเต็มสำเร็จ
skt.api.etcp_client_close_conn (etcp, fd)
ปิดการเชื่อมต่อไคลเอนต์ etcp
- พารามิเตอร์
- วัตถุไคลเอนต์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.api.etcp_client_get_conn (etcp, fd)
รับการเชื่อมต่อไคลเอ็นต์ ฯลฯ
- พารามิเตอร์
- วัตถุไคลเอนต์ etcp
- fd: fd ที่สอดคล้องกัน, จำนวนเต็ม
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งคืนอ็อบเจ็กต์ conn สำเร็จ
skt.api.tuntap_write(fd, buf)
เขียนข้อมูลลงในการ์ดเครือข่ายเสมือน
- พารามิเตอร์
- fd: fd ของการ์ดเครือข่ายเสมือน จำนวนเต็ม
- buf: ข้อมูลที่จะเขียน, สตริง
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- จำนวนไบต์ที่เขียนสำเร็จ จำนวนเต็ม
skt.api.get_from_skcp(skcp ชื่อ)
รับค่าฟิลด์ที่สอดคล้องกันในวัตถุ skcp ได้แก่: "skcp.name"
- พารามิเตอร์
- วัตถุ skcp
- ชื่อ: ชื่อฟิลด์ใน skcp ปัจจุบันรองรับเฉพาะฟิลด์ "fd" สตริงเท่านั้น
- ส่งกลับค่า
- ความล้มเหลวส่งกลับค่า "ไม่มี error_msg"
- ส่งกลับค่าที่สอดคล้องกับชื่อใดๆ สำเร็จ
skt.api.get_ms()
รับจำนวนมิลลิวินาทีตั้งแต่ปี 1970 สำหรับระบบปัจจุบัน
- พารามิเตอร์: ไม่มี
- ค่าส่งคืน:
skt.api.hton32(i)
แปลงตัวแปรจำนวนเต็ม 32 บิตจากลำดับไบต์ของโฮสต์ไปเป็นลำดับไบต์ของเครือข่าย
- พารามิเตอร์
- i: ประเภทจำนวนเต็มตามลำดับไบต์ของโฮสต์
- ส่งกลับค่า
- ส่งกลับจำนวนเต็มตามลำดับไบต์ของเครือข่าย
skt.api.ntoh32(i)
แปลงตัวแปรจำนวนเต็ม 32 บิตจากลำดับไบต์ของเครือข่ายไปเป็นลำดับไบต์ของโฮสต์
- พารามิเตอร์
- i: ประเภทจำนวนเต็มตามลำดับไบต์ของเครือข่าย
- ส่งกลับค่า
- ส่งกลับจำนวนเต็มตามลำดับไบต์ของโฮสต์
skt.api.band(ก, ข)
ดำเนินการตรรกะ AND ระดับบิตกับจำนวนเต็มสองตัวแล้วส่งคืนผลลัพธ์
skt.api.bor(ก, ข)
ดำเนินการตรรกะหรือการดำเนินการระดับบิตกับจำนวนเต็มสองตัวแล้วส่งคืนผลลัพธ์
skt.api.bxor(ก, ข)
ดำเนินการ XOR ระดับบิตกับจำนวนเต็มสองตัวแล้วส่งคืนผลลัพธ์
skt.api.blshift(i, n)
เลื่อนจำนวนเต็มไปทางซ้ายทีละ n บิต แล้วส่งคืนผลลัพธ์
skt.api.brshift(i, n)
เลื่อนจำนวนเต็มไปทางขวาทีละ n บิตแล้วส่งคืนผลลัพธ์
skt.api.lookup_dns (โดเมน)
การจำแนกชื่อโดเมน
- พารามิเตอร์
- โดเมน: ชื่อโดเมนที่จะแก้ไข, สตริง
- ส่งกลับค่า
- ส่งกลับ IP ที่สอดคล้องกันในรูปแบบเส้นประ (IPV4) สตริง
อินเทอร์เฟซการติดต่อกลับที่สคริปต์ Lua จำเป็นต้องใช้
"skt.cb.*" จำเป็นต้องใช้อินเทอร์เฟซที่แตกต่างกันตามโหมดการเริ่มต้นที่แตกต่างกันสำหรับการโทรกลับ skcptun
skt.cb.on_init (วนซ้ำ)
อินเทอร์เฟซการติดต่อกลับแรกที่เรียกเมื่อสคริปต์เริ่มทำงาน และจะถูกเรียกเพียงครั้งเดียวเท่านั้น
- ช่วงที่ถูกต้อง: ทุกโหมด
- พารามิเตอร์
- วนซ้ำ: วัตถุวนรอบเหตุการณ์
- ค่าส่งคืน: ไม่มี
skt.cb.on_skcp_accept(skcp, cid)
เซิร์ฟเวอร์ skcp สร้าง cid ได้สำเร็จ และถูกเรียกเพียงครั้งเดียวเท่านั้นสำหรับการเชื่อมต่อแต่ละครั้ง
- ช่วงที่ถูกต้อง: "proxy_server", "tun_server"
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.cb.on_skcp_check_ticket(skcp, ตั๋ว)
เซิร์ฟเวอร์ skcp จะตรวจสอบว่าตั๋วถูกต้องหรือไม่
- ช่วงที่ถูกต้อง: "proxy_server", "tun_server"
- พารามิเตอร์
- วัตถุ skcp
- ticket: ตั๋วที่ต้องได้รับการตรวจสอบ, สตริง
- ค่าส่งคืน:
- ส่งกลับ 0 หากการยืนยันสำเร็จ
- หากการตรวจสอบล้มเหลว ระบบจะส่งกลับค่าที่ไม่ใช่ศูนย์
skt.cb.on_skcp_recv_cid(skcp, cid)
skcp ได้รับ cid ซึ่งบ่งชี้ว่ามีการสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ skcp สำเร็จแล้ว นั่นคือโครงสร้างอะซิงโครนัสของ "skt.api.skcp_req_cid(skcp, ticket)" จะถูกส่งคืน
- ช่วงที่ถูกต้อง: "proxy_client", "tun_client"
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.cb.on_skcp_recv_data(skcp, cid, buf)
skcp รับข้อมูลที่สอดคล้องกับการเชื่อมต่อของ cid
- ช่วงที่ถูกต้อง: ทุกโหมด
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- buf: เนื้อหาข้อความที่ได้รับ, สตริง
- ค่าส่งคืน: ไม่มี
skt.cb.on_skcp_close(skcp, cid)
การโทรกลับเมื่อ skcp ปิดการเชื่อมต่อโดยทั่วไปอาจเกิดจากการหมดเวลาหรือรับคำสั่งปิดจากเพียร์ การเชื่อมต่อยังไม่ถูกปิดอย่างแท้จริงในขณะนี้
- ช่วงที่ถูกต้อง: ทุกโหมด
- พารามิเตอร์
- วัตถุ skcp
- cid: รหัสการเชื่อมต่อของ skcp จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.cb.on_tcp_accept(fd)
เซิร์ฟเวอร์ TCP ได้รับการร้องขอการเชื่อมต่อ
- ช่วงที่ถูกต้อง: "proxy_client", "tun_client"
- พารามิเตอร์
- fd: fd ร้องขอโดยการเชื่อมต่อ จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.cb.on_tcp_recv(fd, buf)
รับข้อมูล TCP ที่สอดคล้องกับการเชื่อมต่อของ fd
- ช่วงที่ถูกต้อง: ทุกโหมด
- พารามิเตอร์
- fd: fd ของการเชื่อมต่อ, จำนวนเต็ม
- buf: เนื้อหาข้อความที่ได้รับ, สตริง
- ค่าส่งคืน: ไม่มี
skt.cb.on_tcp_close(fd)
ปิดการเชื่อมต่อ tcp ที่สอดคล้องกับ fd การเชื่อมต่อยังไม่ได้ปิดอย่างแท้จริงในขณะนี้
- ช่วงที่ถูกต้อง: ทุกโหมด
- พารามิเตอร์
- fd: fd ของการเชื่อมต่อ, จำนวนเต็ม
- ค่าส่งคืน: ไม่มี
skt.cb.on_tun_read(buf)
รับข้อมูลจากการ์ดเครือข่ายเสมือน
- ช่วงที่ถูกต้อง: "tun_client", "tun_server"
- พารามิเตอร์
- buf: เนื้อหาข้อความที่ได้รับ, สตริง
- ค่าส่งคืน: ไม่มี
skt.cb.on_beat()
โทรเรียกทุกวินาที
- ช่วงที่ถูกต้อง: "proxy_client", "tun_client"
- พารามิเตอร์: ไม่มี
- ค่าส่งคืน: ไม่มี
ทดสอบ
สิ่งแวดล้อม
- เซิร์ฟเวอร์:ลินุกซ์/1C/1G
- ไคลเอนต์: MacOS / 8C / 8G
- สถานะเครือข่าย ค่า ping:
21 packets transmitted, 20 packets received, 4.8% packet loss
round-trip min/avg/max/stddev = 159.492/164.087/171.097/3.232 ms
ประมวลผลข้อมูล (RTT)
- จำนวนการเชื่อมต่อ: 1; แพ็กเก็ตข้อมูล: 1000; ช่วงเวลาการส่ง: 100ms
TCP RTT:
------------
Min = 161.0
Max = 1239.0
Average = 293.956
NR = 1000
Skcptun RTT:
------------
Min = 160.0
Max = 487.0
Average = 181.618
NR = 1000
- จำนวนการเชื่อมต่อ: 10 แพ็กเก็ตข้อมูล: 1000 ช่วงเวลาการส่ง: 100ms
TCP RTT:
------------
Min = 159.0
Max = 1076.0
Average = 262.500
NR = 10000
Skcptun RTT:
------------
Min = 159.0
Max = 534.0
Average = 174.251
NR = 10000
สรุปแล้ว
- ภายใต้สภาพแวดล้อมเครือข่ายเดียวกัน ผลการปรับปรุงความเร็วจะอยู่ที่ประมาณ 30%-40%
สังเกต
- เพิ่งเขียนเสร็จเพื่อใช้งานส่วนตัวและฟังก์ชั่นต่างๆกำลังสมบูรณ์แบบ
- โปรดแน่ใจว่าไม่ได้ใช้มันเพื่อเร่งการเข้ารหัสพร็อกซี sock5