เหตุใดจึงมีโหมด ASCII ใน FTP ซึ่งแพร่หลายในซอฟต์แวร์และการใช้งาน FTP ในปัจจุบัน? ทำไมไม่ใช้เลขฐานสองโดยไม่คำนึงถึงข้อมูลเสมอ
เหตุใดจึงมีโหมด ASCII ใน FTP ซึ่งแพร่หลายในซอฟต์แวร์และการใช้งาน FTP ในปัจจุบัน? ทำไมไม่ใช้เลขฐานสองโดยไม่คำนึงถึงข้อมูลเสมอ
คำตอบ:
หากมีข้อสงสัยให้อ่านRFC :
โครงสร้างไฟล์เป็นค่าเริ่มต้นที่จะถือว่าถ้าคำสั่ง STRUcture ไม่ได้ใช้ แต่โครงสร้างไฟล์และเร็กคอร์ดต้องยอมรับสำหรับไฟล์ "text" (เช่นไฟล์ที่มี TYPE ASCII หรือ EBCDIC) โดยการใช้งาน FTP ทั้งหมด โครงสร้างของไฟล์จะส่งผลต่อทั้งโหมดการถ่ายโอนของไฟล์ (ดูหัวข้อในโหมดการส่งข้อมูล) และการตีความและการจัดเก็บไฟล์
โครงสร้าง "ธรรมชาติ" ของไฟล์จะขึ้นอยู่กับโฮสต์ที่จัดเก็บไฟล์ โดยทั่วไปไฟล์ซอร์สโค้ดจะถูกเก็บไว้ใน IBM Mainframe ในเร็กคอร์ดความยาวคงที่ แต่ใน DEC TOPS-20 เป็นสตรีมของอักขระที่แบ่งพาร์ติชันเป็นบรรทัดตัวอย่างเช่น หากการถ่ายโอนไฟล์ระหว่างไซต์ที่แตกต่างกันนั้นมีประโยชน์ต้องมีวิธีใดวิธีหนึ่งในการรับรู้ข้อสันนิษฐานของอีกฝ่ายเกี่ยวกับไฟล์
ฯลฯ ฯลฯ ... กล่าวโดยย่อคือเพื่อให้แน่ใจว่าการแสดงข้อความในการเข้ารหัสหนึ่งครั้งได้รับการแปลงอย่างถูกต้องเมื่อถ่ายโอนไปยังโฮสต์โดยใช้การเข้ารหัสที่แตกต่างกัน
เนื่องจากระบบปฏิบัติการที่แตกต่างกัน (Windows, UNIX, VAX) ใช้วิธีการสิ้นสุดบรรทัดที่แตกต่างกันสำหรับไฟล์ข้อความธรรมดา
Windows (DOS) ใช้คู่ CR / LF, UNIX ใช้เพียงหนึ่งคู่เท่านั้น โหมด ASCII แปลงคู่ CRLF และโหมด BIN ไม่ได้
รอน
ฉันคิดว่ามันเป็นเพราะบางครั้งมันสะดวก ย้อนกลับไปในวันที่ FTP เป็นวิธีที่คุณได้รับไฟล์จากระบบหนึ่งไปสู่อีกระบบหนึ่งมันเป็นเครื่องประหยัดเวลาขนาดใหญ่ - คุณไม่จำเป็นต้องรู้ว่าระบบอยู่ที่ปลายอีกด้านหนึ่งเพื่อให้สามารถอ่านไฟล์ข้อความได้
แต่ใช่แล้วส่วนใหญ่มันเป็นเพียงความรำคาญในวันนี้ เพียงแค่เป็นเครื่องที่ไม่มีโอเคติคอลสำหรับมือใหม่!
โหมด ASCII มีที่มาในวันที่การเข้ารหัสอักขระและ EOL เป็นปัญหาจริง แต่ฉันต้องการเห็นลูกค้า ftp ลบหรืออาจซ่อนตัวเลือกนี้ในวันนี้ ทุกวันนี้มันเป็นแค่การประชุม EOL ที่ยุ่งเหยิงระหว่างระบบ แต่ฉันพบว่าตัวแก้ไขข้อความที่เหมาะสมส่วนใหญ่ไม่สนใจอีกต่อไป ดังนั้นเพื่อหลีกเลี่ยงการทำให้ไฟล์ไบนารีเสียหาย (หรือแม้แต่ไฟล์ที่มีข้อความ) ฉันแนะนำให้ใช้โหมดไบนารีสำหรับทุกสิ่ง
มีการใช้โหมด ASCII เพื่อให้ซอฟต์แวร์สามารถเปลี่ยนอักขระ EOL โดยอัตโนมัติเป็นค่าที่เหมาะสมสำหรับไคลเอนต์ / เซิร์ฟเวอร์ขึ้นอยู่กับว่าคุณกำลังอัปโหลด / ดาวน์โหลด หากคุณกำลังอัปโหลดไปยังระบบประเภทเดียวกันกับที่คุณใช้อยู่โหมดเหล่านี้จะไม่แตกต่างกัน
เหตุผลสำหรับโหมดนี้แม้ว่าจะเป็นเพราะไม่ใช่ซอฟต์แวร์ทั้งหมดในระบบทั้งหมดจะจัดการ EOL ได้อย่างถูกต้องซึ่งไม่ใช่ประเภทที่เหมาะสมของ EOL (ตัวอย่างเช่นซอฟต์แวร์ Windows จำนวนมากจะจัดการเฉพาะ "\ r \ n" อย่างถูกต้องและจะรบกวนบางสิ่ง น่ากลัวใน "\ n")