Tuesday, August 24, 2010

FTP Active and Passive mode

Ko giống với hầu hết các giao thức khác trên Internet, FTP yêu cầu nhiều port để làm việc. Khi 1 ứng dụng FTP client khởi tạo 1 kết nối đến 1 FTP server, nó sẽ mở port 21 trên server-gọi là "command port". Port này đc dùng để đưa ra các câu lệnh đến server.
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)
Passive FTP :
  • command : client (port>1023) ---> server (port 21)
  • data : client(port >1024) ---> server(port >1024)

Thursday, August 19, 2010

FIle system trong Linux /proc


Linux kernel có 2 chức năng chính:
  • Điều khiển truy cập đến các thiết bị trong máy tính
  • Vạch ra kế hoạch làm việc, khi nào và như thế nào cho các processes hoạt động với các thiết bị đó.
/proc/ là thư mục chứa 1 cấu trúc các files đặc biệt nói lên tình trạng hiện tại của kernel, cho phép các ứng dụng và users có thể "nhìn thấy" tình trạng của hệ thống.
Bên trong /proc/ ta có thể nhìn thấy đc sự đa dạng của các thông tin chi tiết về hệ thống phần cứng và bất cứ process nào đang hoạt động. Hơn nữa, một vài files trong /proc/ có thể đc điều khiển bởi các users và các ứng dụng để trao đổi những sự thay đổi trong cấu hình đến kernel.


1.A Virtual File System
Trong Linux, mọi thứ đều là file, hoặc là dạng text, hoặc là dạng binary. Nhưng /proc/ chứa 1 định dạng khác gọi là virtual file. Vì lý do này cho nên /proc/ cũng thường đc gọi là virtual file system.
Các virtual files như /proc/interrupts, /proc/meminfo, /proc/mounts và /proc/partitions cung cấp một cái nhìn lướt qua nhưng đầy đủ(cho tới hiện tại) về tình trạng của hệ thống phần cứng. Và, các file như /proc/filesystems và thư mục /proc/sys/ cũng cung cấp các thông tin về việc cấu hình hệ thống.

Với mục địch phân chia rõ ràng, các files chứa các thông tin nào thì sẽ đc nhóm vào 1 nhóm và lưu trong 1 subdir. Ví dụ, /proc/ide/ chứa các thông tin cho tất cả các thiết bị IDE.Cũng như vậy, processes dirs cũng chứa các thông tin về mỗi process đang chạy trong hệ thống

1.1.Viewing Virtual Files
Trong /proc/ ta có thể sử dụng các câu lệnh thông thường như cat, more, less để xem đc ngay các thông tin hệ thống. Ví dụ, nếu muốn xem thông tin về CPU ta có thể:
cat /proc/cpuinfo

1.2.Chaging Virtual Files

Thông thường thì các subdir trong /proc ở chế độ read-only. Nhưng có 1 vài dir có thể đc dùng để điều chỉnh các thiết lập của kernel, những việc này thường diễn ra ở thư mục /proc/sys/
-Ví dụ, để thay đổi hostname ta có thể:

echo newhostname > /proc/sys/kernel/hostname

-Một số file sử dụng hệ nhị phân nên ta có thể chỉ nhìn thấy 0 hoặc 1. Khi cat /proc/sys/net/ipv4/ip_forward có thể trả về 0 hoặc 1. 0 có nghĩa là ko forward gói tin, 1 là forward.

2.Top-level FIles within /proc/

-/proc/apm: cung cấp thông tin trạng thái về Advance Power Managerment(APM) thông qua câu lệnh apm.
-/proc/cpuinfo: các thông tin về CPU
-/proc/cryto: thông tin mã hoá của hệ thống
-/proc/filesystems: các filesystem có thể đc kernel hỗ trợ.
-/proc/meminfo:xác định thông tin về dung lượng RAM đc sử dụng.
-/proc/modules: tất cả các modules đc load vào kernel.
.....


Tham khảo: RedHat Enterprise Linux Deployment Guide