Bất kỳ dữ liệu nào đc yêu cầu từ server sẽ đc đưa trở lại client thông qua "data port".
Port number cho kết nối và cách mà việc kết nối dữ liệu đc khởi tạo phụ thuộc vào cách mà client gửi yêu cầu đến theo dạng active hay passive.
1/Active mode: client chỉ là kẻ bắt đầu 1 phiên giao dịch
Trong active mode, client sẽ là kẻ đưa ra yêu cầu phiên kết nối từ port cao(>1024) đến port 21 của server.
+Ngay sau khi nhận đc yêu cầu này, server sẽ đáp trả lại 1 ACK đến client. Đồng thời, client cũng sẽ lắng nghe trên 1 port cao nào đó, chờ đợi tín hiệu đến từ server.
+Sau khi đã thiết lập đc kết nối, server sẽ dùng port 20 của nó để truyền dữ liệu đến 1 port cao khác đang lắng nghe trên client
+Một vấn đề xảy ra cho phía client, đó là firewall. Thực chất, client ko phải là kẻ bắt đầu phiên truyền dữ liệu mà chính xác là nó sẽ lắng nghe trên 1 port nào đó đã đc server biết trước để server connect tới.Với firewall, việc một tín hiệu từ bên ngoài cố gắng kết nối vào bên trong sẽ bị deny!
2/Passive mode:client là kẻ bắt đầu cả 2 phiên giao dịch
+Với vấn đề firewall cho active mode nên đã xuất hiện mode thứ 2 trong FTP là passive mode.
+Tại passive mode thì client là kẻ ra lệnh, trong cả 2 lần thì client đều là kẻ chủ động đưa ra kết nối, điều này khắc phục tình trạng firewall ở trên
+Khi khởi tạo kết nối, client sẽ đồng thời tạo ra 2 port cao. Port đầu tiên dùng để kết nối đến port 21 của server, và port thứ 2 sẽ dùng để vận chuyển dữ liệu
+Port thứ nhất sẽ liên lạc với server qua port21 và nói cho server biết rằng đây là passive mode.Khi biết đây là passive mode thì server sẽ lắng nghe trên 1 port cao, ko phải port20 và sẽ trả lại thông tin cho client biết rằng đang lắng nghe ở port nào. Sau khi đã biết port lắng nghe tại server, client sẽ dùng port cao thứ 2 để kết nối đến port cao mới đc tạo ra tại server, server sẽ đáp trả lại bằng 1 ACK để chấp nhận!
-----Summary------
Active FTP :- command : client( port >1024) ---> server(port 21)
- data : client ( port>1024 ) <--- server (port 20)
- command : client (port>1023) ---> server (port 21)
- data : client(port >1024) ---> server(port >1024)
Cảm ơn bạn. Bài viết hay quá!!!
ReplyDelete