เรามีงานตามกำหนดการที่จะถ่ายโอนไฟล์ขนาดใหญ่ (~130 MB) ระหว่างเซิร์ฟเวอร์ Windows สองเครื่องโดยใช้โปรแกรม FTP บรรทัดคำสั่งของ Windows มันช้าอย่างเจ็บปวด (ใช้เวลาประมาณ 30 นาที) และสิ้นสุดในบางครั้งก่อนที่การโอนจะเสร็จสิ้น เซิร์ฟเวอร์คือ 2003 (กำลังส่ง) และ 2008 (กำลังรับ)

ถ้าฉันโอนไฟล์ด้วยตนเอง โดยใช้ GUI ของ FileZilla มันจะทำงานได้เร็วกว่ามากและเสร็จในไม่กี่นาที ฉันไม่สามารถใช้วิธีนี้ได้เพราะเราต้องการให้สิ่งนี้ทำงานโดยอัตโนมัติและ FileZilla ไม่สามารถเขียนสคริปต์ได้

ฉันยังสังเกตเห็นว่าเมื่อฉันปิดใช้งานไฟร์วอลล์ Windows 2003 บรรทัดคำสั่ง FTP จะเร็วขึ้นมาก และถึงความเร็วเท่ากับ FileZilla

ดังนั้น ดูเหมือนว่าฉันมีวิธีแก้ปัญหาในการปิดใช้งาน/เปิดใช้งานไฟร์วอลล์ก่อนและหลังการโอน แต่หลังจาก Googling อย่างกว้างขวาง ดูเหมือนว่าจะไม่ใช่ปัญหาทั่วไป และฉันรู้สึกว่ามีการกำหนดค่าบางอย่างผิดพลาด

ใครสามารถให้ความกระจ่างว่าทำไมการปิดใช้งานไฟร์วอลล์จึงช่วยเพิ่มความเร็วได้อย่างมาก? และทำไม FileZilla ถึงเร็วกว่า command-line FTP (เมื่อเปิดใช้งานไฟร์วอลล์)

answer

ICMP เป็นข้อกำหนดของโฮสต์อินเทอร์เน็ต บางครั้งผู้ดูแลระบบบล็อก ICMP ทั้งหมดเนื่องจาก "ได้ยินว่าบางแห่งมีความเสี่ยงด้านความปลอดภัย" แต่ ICMP ไม่ใช่ทางเลือกและ TCP ก็อาศัยมัน (อย่างน้อยต้องอนุญาต'การแตกแฟรกเมนต์' )

  1. คุณต้องรู้ว่าอะไรกำลังปิดกั้นอยู่ก่อน ดาวน์โหลด Process Monitor จาก Sysinternals (Microsoft)

  2. ในโปรแกรมนั้น เลือกเฉพาะ "แสดงกิจกรรมเครือข่าย" (ปุ่มบนแถบด้านซ้ายบน)

  3. ตรวจสอบแพ็กเก็ตและค้นหา FTP

    server1.domain.com:12345 -> server2.domain.com:21

  4. คลิกขวาที่ชื่อของกระบวนการและเลือกรวมเพื่อเพิ่มกระบวนการที่กำลังเรียกใช้ ftp

  5. ทดสอบการถ่ายโอน ftp ด้วยไฟร์วอลล์และไม่ใช้ไฟร์วอลล์

  6. เปรียบเทียบข้อมูลทั้งสอง มันควรจะเป็นพอร์ตที่ถูกบล็อกโดยไฟร์วอลล์ คุณควรเปิดพอร์ตนั้นระหว่างพีซีทั้งสองเครื่อง

ปัญหาคือ FTP บรรทัดคำสั่งใช้ FTP โหมดแอ็คทีฟ

Filezilla จะสลับไปที่โหมดพาสซีฟ ftp โดยอัตโนมัติ ซึ่งเป็นมิตรกับไฟร์วอลล์มากกว่า

บรรทัดคำสั่ง FTP รองรับการใช้งานเท่านั้น ดังนั้นคุณจึงติดอยู่ตรงนั้น

ใช้ยูทิลิตี้สำรองสำหรับ ftp ที่รองรับโหมดพาสซีฟจากบรรทัดคำสั่ง (มีตัวเลือกบรรทัด cmd สำหรับ filezilla ที่อาจตอบสนองความต้องการของคุณ)