เกณฑ์วิธีถ่ายโอนแฟ้ม

**เอฟทีพี** หรือ **เกณฑ์วิธีถ่ายโอนแฟ้ม** () เป็นโพรโทคอลเครือข่ายชนิดหนึ่ง ใช้สำหรับแลกเปลี่ยนและจัดการไฟล์บนเครือข่ายทีซีพี/ไอพีเช่นอินเทอร์เน็ต เอฟทีพีถูกสร้างขึ้นด้วยสถาปัตยกรรมแบบระบบรับ-ให้บริการ (client-server) และใช้การเชื่อมต่อสำหรับส่วนข้อมูลและส่วนควบคุมแยกกันระหว่างเครื่องลูกข่ายกับเครื่องแม่ข่าย โปรแกรมประยุกต์เอฟทีพีเริ่มแรกโต้ตอบกันด้วยเครื่องมือรายคำสั่ง สั่งการด้วยไวยากรณ์ที่เป็นมาตรฐาน แต่ก็มีการพัฒนาส่วนต่อประสานกราฟิกกับผู้ใช้ขึ้นมาสำหรับระบบปฏิบัติการเดสก์ท็อปที่ใช้กันทุกวันนี้ เอฟทีพียังถูกใช้เป็นส่วนประกอบของโปรแกรมประยุกต์อื่นเพื่อส่งผ่านไฟล์โดยอัตโนมัติสำหรับการทำงานภายในโปรแกรม เราสามารถใช้เอฟทีพีผ่านทางการพิสูจน์ตัวจริงด้วยชื่อผู้ใช้และรหัสผ่าน หรือเข้าถึงด้วยผู้ใช้นิรนาม

นอกจากนี้ยังมีทีเอฟทีพี (Trivial File Transfer Protocol) ซึ่งมีลักษณะคล้ายกับเอฟทีพีที่ลดความซับซ้อนลง แต่ไม่สามารถควบคุมให้ทำงานประสานกันได้ และไม่มีการพิสูจน์ตัวจริง

## ประวัติ
เอฟทีพีมีการกำหนดลักษณะเฉพาะครั้งแรกใน RFC 114 เมื่อ 16 เมษายน พ.ศ. 2514 จากนั้นถูกเปลี่ยนโดย RFC 765 เมื่อเดือนมิถุนายน พ.ศ. 2523 และต่อมาก็ถูกเปลี่ยนอีกครั้งหนึ่งโดย RFC 959 เมื่อเดือนตุลาคม พ.ศ. 2528 ซึ่งเป็นรุ่นที่ใช้กันอยู่ในปัจจุบัน มีมาตรฐานอีกจำนวนหนึ่งที่พยายามเสริมคุณลักษณะเข้าไปในเอกสารขอความเห็นรุ่นดังกล่าว ตัวอย่างเช่น RFC 2228 เมื่อเดือนมิถุนายน พ.ศ. 2540 เสนอให้เพิ่มส่วนขยายสำหรับความปลอดภัย และ RFC 2428 เมื่อเดือนกันยายน พ.ศ. 2541 เพิ่มการรองรับสำหรับไอพีวี6 และกำหนดวิธีการส่งผ่านไฟล์แบบวิธีรับการร้องขอชนิดใหม่

## การใช้
จากการสรุปไว้โดยเอกสารขอความเห็น เอฟทีพีใช้สำหรับ
* ส่งเสริมการแบ่งปันไฟล์ (โปรแกรมคอมพิวเตอร์และ/หรือข้อมูล)
* กระตุ้นให้ใช้งานคอมพิวเตอร์ระยะไกลอย่างเป็นนัยและโดยทางอ้อม
* ปกป้องผู้ใช้จากความหลากหลายในระบบหน่วยเก็บไฟล์ระหว่างแม่ข่ายที่ต่างกัน (ผู้ใช้ไม่จำเป็นต้องทราบว่าระบบไฟล์เป็นอย่างไร)
* ส่งผ่านข้อมูลอย่างมีประสิทธิภาพและเชื่อถือได้

## การทำงาน

เครื่องลูกข่ายเริ่มต้นสร้างการเชื่อมต่อไปยังเครื่องแม่ข่ายโดยใช้ทีซีพีบนพอร์ตหมายเลข 21 การเชื่อมต่อนี้คือ *การเชื่อมต่อส่วนควบคุม* ซึ่งจะเปิดอยู่ตลอดเวลาขณะที่มีการใช้งาน หลังจากนั้น *การเชื่อมต่อส่วนข้อมูล* บนพอร์ตหมายเลข 20 จะถูกสร้างขึ้นตามความจำเป็นเพื่อส่งผ่านข้อมูลไฟล์ คำสั่งที่ส่งโดยเครื่องลูกข่ายไปยังส่วนควบคุมมีรูปแบบเป็นข้อความแอสกี และจบคำสั่งด้วย CRLF (อักขระปัดแคร่ตามด้วยอักขระป้อนบรรทัด) ตัวอย่างเช่น RETR *filename* เป็นคำสั่งรับข้อมูลไฟล์ที่ต้องการจากเครื่องแม่ข่ายมายังเครื่องลูกข่าย

หลังจากเครื่องแม่ข่ายได้รับคำสั่งแล้ว จะตอบกลับด้วยรหัสสถานภาพเป็นตัวเลขสามหลักพร้อมกับข้อความแอสกีถ้ามี บนการเชื่อมต่อส่วนควบคุม ตัวอย่างเช่น 200 หรือ 200 OK หมายความว่าคำสั่งล่าสุดสำเร็จผล การส่งผ่านไฟล์บนการเชื่อมต่อส่วนข้อมูลที่กำลังดำเนินอยู่สามารถยุติลงได้ด้วยการส่งคำสั่งให้หยุดไปบนการเชื่อมต่อส่วนควบคุม

เอฟทีพีสามารถทำงานได้ใน *วิธีส่งการร้องขอ* หรือ แอคทีฟโหมด (active mode) และ *วิธีรับการร้องขอ* พาสซีฟโหมด (passive mode) ซึ่งเป็นการเลือกว่าให้จัดการการเชื่อมต่อที่สองอย่างไร ด้วยวิธีส่งการร้องขอ เครื่องลูกข่ายจะส่งหมายเลขไอพีและพอร์ตที่ต้องการใช้ส่งผ่านข้อมูลให้กับเครื่องแม่ข่าย จากนั้นเครื่องแม่ข่ายจะเปิดการเชื่อมต่อนั้นกลับมา ในขณะที่วิธีรับการร้องขอ เครื่องแม่ข่ายจะส่งหมายเลขไอพีและพอร์ตให้กับเครื่องลูกข่ายก่อน จากนั้นเครื่องลูกข่ายจะสร้างการเชื่อมต่อดังกล่าว (แนวคิดตรงข้ามกับวิธีส่งการร้องขอ) วิธีรับการร้องขอถูกคิดค้นขึ้นมาเพื่อใช้ในกรณีเครื่องลูกข่ายตั้งอยู่หลังไฟร์วอลล์ และไม่สามารถรับการเชื่อมต่อทีซีพีที่ไม่รู้จักจากภายนอกได้ วิธีการทั้งคู่ได้รับการปรับปรุงเมื่อเดือนกันยายน พ.ศ. 2541 เพื่อให้รองรับไอพีวี6 และปรับแต่งวิธีรับการร้องขอทำให้เกิดเป็น *วิธีรับการร้องขอแบบเสริม* (extended passive mode) ขึ้นมา

ขณะที่ส่งผ่านข้อมูลไปบนเครือข่าย การแสดงออกของข้อมูลสามารถใช้ได้สี่อย่าง ซึ่งมีเพียงสองชนิดที่ใช้กันโดยทั่วไป
* *วิธีข้อมูลแอสกี* ใช้สำหรับข้อมูลชนิดข้อความธรรมดาเท่านั้น (หากใช้กับข้อมูลชนิดอื่นจะทำให้ไฟล์เสีย)
* *วิธีข้อมูลไบนารี* เครื่องที่ส่งข้อมูลจะส่งไปทีละไบต์ และเครื่องที่รับข้อมูลจะรับเป็นกระแสข้อมูลไบต์ (bytestream) มาตรฐานเอฟทีพีเรียกวิธีนี้ว่า *วิธีข้อมูลอิมเมจ*
ส่วนที่เหลืออีกสองชนิดคือ *วิธีข้อมูล[[เอบซีดิก]]* และ *วิธีข้อมูลไฟล์เฉพาะที่* ถูกยกเลิกการใช้งานไปแล้ว สำหรับไฟล์ข้อความธรรมดา เราสามารถเลือกการควบคุมรูปแบบและโครงสร้างการบันทึกที่แตกต่างกันได้ แม้ว่าคุณลักษณะเหล่านี้แทบจะไม่ได้ใช้ในปัจจุบัน วิธีการส่งผ่านข้อมูลต่าง ๆ เหล่านี้สามารถเลือกใช้ได้ตามต้องการ แต่วิธีการปริยายที่ใช้กันในปัจจุบันจะเป็นการส่งกระแสข้อมูลเสมอ

## ความปลอดภัย
ลักษณะเฉพาะเริ่มแรกของเอฟทีพีใช้วิธีการส่งผ่านไฟล์ที่ไม่มีการรักษาความปลอดภัย เพราะไม่มีวิธีการใดที่ระบุการส่งผ่านแบบเข้ารหัสข้อมูล หมายความว่าภายใต้การกำหนดค่าเครือข่ายส่วนใหญ่ ชื่อผู้ใช้ รหัสผ่าน คำสั่งเอฟทีพี และไฟล์ที่ส่งผ่าน สามารถถูกดักจับได้โดยใครก็ตามที่อยู่บนเครือข่ายเดียวกันด้วยตัวดักจับกลุ่มข้อมูล (packet sniffer) สิ่งนี้เป็นปัญหาหนึ่งของโพรโทคอลอินเทอร์เน็ตโดยทั่วไป เช่น เอชทีทีพี เอสเอ็มทีพี เทลเน็ต เป็นต้น จึงเกิดการคิดค้นเอสเอสแอลเพื่อการเข้ารหัสขึ้นมาใช้ การแก้ปัญหาความปลอดภัยนี้คือใช้ เอสเอฟทีพี (SSH File Transfer Protocol) หรือ เอฟทีพีเอส (FTP over SSL) ซึ่งเพิ่มการเข้ารหัสด้วยเอสเอสแอล (หรือทีแอลเอส) ไปบนเอฟทีพีธรรมดา ตามที่ระบุไว้ใน RFC 4217

## เอฟทีพีนิรนาม
เครื่องแม่ข่ายที่ให้บริการเอฟทีพีอาจมีการเพิ่มระดับการเข้าถึงโดยผู้ใช้นิรนาม (anonymous FTP) นั่นคือไม่ต้องระบุตัวตนกับเครื่องแม่ข่าย โดยทั่วไปผู้ใช้ต้องล็อกอินเข้าสู่บริการด้วยชื่อบัญชี anonymous และเครื่องแม่ข่ายมักจะร้องขอให้ใส่รหัสผ่านเป็นที่อยู่อีเมลแทน ถึงกระนั้นก็ตาม บริการเอฟทีพีไม่สามารถตรวจสอบว่าที่อยู่อีเมลนั้นมีตัวตนอยู่จริงหรือเป็นของผู้ใช้จริงหรือไม่

โปรแกรมลูกข่ายเอฟทีพีสมัยใหม่มักจะซ่อนกระบวนการล็อกอินแบบนิรนามจากผู้ใช้ และป้อนข้อมูลหลอก ๆ เป็นรหัสผ่าน (เนื่องจากโปรแกรมอาจไม่สามารถรับรู้ที่อยู่อีเมลของผู้ใช้ได้)

โพรโทคอลโกเฟอร์ (Gopher) เป็นทางเลือกอีกทางหนึ่งเพื่อการเข้าถึงเอฟทีพีของผู้ใช้นิรนาม เช่นเดียวกับทีเอฟทีพีและเอฟเอสพี (File Service Protocol)

## เอฟทีพีระยะไกล (เอฟทีพีเมล)
เมื่อการเข้าถึงเอฟทีพีถูกจำกัด บริการเอฟทีพีระยะไกล (เอฟทีพีเมล) สามารถใช้งานแทนได้เพื่อแก้ปัญหานี้ อีเมลที่บรรจุคำสั่งเอฟทีพีที่สร้างขึ้นจะถูกส่งไปยังเครื่องให้บริการเอฟทีพีระยะไกล ซึ่งเครื่องนั้นเป็นเมลเซิร์ฟเวอร์ที่สามารถแจงส่วนอีเมลที่รับมาแล้วดำเนินการคำสั่งเอฟทีพีได้ และส่งกลับข้อมูลใด ๆ ที่ดาวน์โหลดไปทางอีเมลเป็นไฟล์แนบ วิธีนี้มีความยืดหยุ่นน้อยกว่าการใช้โปรแกรมลูกข่ายเอฟทีพี เพราะไม่สามารถแสดงรายการไดเรกทอรีหรือปรับแต่งคำสั่งได้อย่างทันใจ และอาจเกิดปัญหาไฟล์แนบที่มีขนาดใหญ่ไม่สามารถส่งผ่านไปถึงผู้รับ เนื่องจากผู้ใช้อินเทอร์เน็ตทุกวันนี้สามารถเข้าถึงเอฟทีพีได้โดยตรงอยู่แล้ว กระบวนการเหล่านี้จึงไม่มีการใช้อีกต่อไป

## เอฟทีพีกับเว็บเบราว์เซอร์
เว็บเบราว์เซอร์และตัวจัดการไฟล์รุ่นใหม่ ๆ ส่วนใหญ่สามารถติดต่อกับเครื่องให้บริการเอฟทีพีได้ แม้ว่าอาจไม่มีการรองรับส่วนขยายโพรโทคอลเช่นเอฟทีพีเอส การใช้เว็บเบราว์เซอร์และตัวจัดการไฟล์สามารถจัดดำเนินการไฟล์ระยะไกลบนเอฟทีพี ด้วยส่วนติดต่อที่คล้ายกับระบบไฟล์เฉพาะที่ สามารถกระทำได้โดยป้อนยูอาร์แอลของเอฟทีพีในรูปแบบนี้
 ftp(s)://
 (ตัวอย่างเช่น ftp://ftp.gimp.org/ )

สำหรับชื่อผู้ใช้และรหัสผ่านสำหรับการล็อกอิน สามารถใส่ได้พร้อมกันในยูอาร์แอลด้วยรูปแบบนี้ (ถ้าไม่ใส่ในตอนแรก ระบบจะถามทีหลัง)
 ftp(s)://:@:

เว็บเบราว์เซอร์ส่วนมากจำเป็นต้องใช้วิธีรับการร้องขอ (passive mode) ซึ่งเครื่องให้บริการไม่ได้รองรับคุณลักษณะนี้ทุกเครื่อง เว็บเบราว์เซอร์บางโปรแกรมอนุญาตให้ดาวน์โหลดไฟล์ได้อย่างเดียว ไม่มีวิธีอัปโหลดไฟล์ไปยังเครื่องแม่ข่าย

## อ้างอิง

* เอฟทีพีคืออะไร

หมวดหมู่:โพรโทคอลข้อความที่สามารถอ่านได้
หมวดหมู่:โพรโทคอลถ่ายโอนไฟล์บนเครือข่าย

หมวดหมู่:ประวัติอินเทอร์เน็ต
หมวดหมู่:โพรโทคอลชั้นโปรแกรมประยุกต์
หมวดหมู่:มาตรฐานอินเทอร์เน็ต