Bài viết này tổng hợp khá nhiều kiến thức cơ bản về domain, địa chỉ IP, subnet, Ping, FTP, TCP... và rất là dài, nhưng rất hữu ích. Hi vọng bạn có thể kiên trì đọc hết.
Lưu ý: Đây là bài viết đã được đăng từ năm 2003, có thời gian mình sẽ cập nhật lại kỹ hơn.
Domain name - những vấn đề cơ bản
1. Domain name là gì?
Máy tính có thể làm việc rất tốt với những con số nhưng con người thì không. Khi cần kết nối với một thiết bị trên mạng thì bạn chỉ cần đánh IP của thiết bị đó. Điều này hiển nhiên là rất rắc rối và khó nhớ, vì vậy tên miền (domain) được tạo ra.
Giống như file, tên miền cũng có đuôi, chúng có ý nghĩa như sau:
- .COM: thương mại, công ty hoặc bất kỳ người nào.
- .EDU: giáo dục, thường là các trường đại học hoặc trường học.
- .MIL: quân sự.
- .GOV: chính phủ.
- .ORG: các tổ chức, thường là các tổ chức hoạt động phi thương mại.
Tuy nhiên mọi người cũng có thể có domain này.
CH, .DE, .VN...: Tuỳ thuộc vào quốc gia đã đăng ký theo tiêu chuẩn thế giới.
Một vài trang web có thể có 2 phần mở rộng là .COM.VN.
Tên miền được đưa ra bởi Internic và bạn phải mua nó. Ví dụ nếu bạn muốn có một web site có tên miền quantrimang.com thì bạn phải trả tiền cho Internic để có được site này. Sau đó bạn không cần phải trả tiền cho các domain như hi.quantrimang.com...
Khi đánh một tên miền thì sẽ có một server là DNS (Domain Server Name) tìm kiếm trong bảng tham chiếu xem số IP tương ứng là gì. Nếu không tìm được, nó sẽ tìm ở một DSN khác! Cùng một IP, có thể có nhiều tên miền khác nhau và điều này thường xảy ra. Ví dụ: nếu ISP của bạn là vnn.com và web site của bạn là http:// www.vnn.com/mypage thì bạn có trả tiền cho tên miền mypage.com và mọi người có thể truy cập vào site của bạn bằng http://www.www.mypage.com và tất nhiên là http://www.vnn.vom/mypage vẫn tồn tại. Dấu " / " chỉ ra thư mục mà lưu trữ trang web trên server.
2. Domain có thể nói lên điều gì
Khi bạn kết nối với ISP, bạn sẽ có một IP và IP này sẽ có một tên miền. Ví dụ: ISP của bạn là vnn.com thì bạn có thể có tên miền là users.server1.vnn.com và mọi người có thể biết ISP của bạn là ai và quốc tịch của bạn là gì.
3. Đổi tên miền như thế nào
Có thể dăng ký một tên mới, mua một IP cố định hoặc đổi ISP. Bảng tham chiếu DNS được tạo ra từ yêu cầu của DNS chứa tên miền. Ví dụ nếu bạn sở hữu "name.com" DNS server sẽ gởi yêu cầu đến DNS server của bạn về "ten.name.com". Bảng tham chiếu này không thể bị sữa chữa trừ khi bạn có toàn quyền truy cập vào DNS server. Nhưng không có một bảng tham chiếu nào có đầy đủ tất cả các tên miền. Vì vậy khi nó không tìm được tên miền thì nó sẽ gởi yêu cầu đến một DNS khác. Để tăng tốc đọ xử lí, DNS còn có một bộ nhớ cache. Khi có nhiều người cùng yêu cầu một tên miền, thì DNS server sẽ tìm trong cache trước. Nếu bạn gởi thông tin giả đến DNS cache và người khác cùng đến một địa chỉ họ cũng sẽ nhận được thông tin giả mạo đó.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tìm hiểu về địa chỉ IP
1. Địa chỉ IP là gì?
Mỗi máy tính khi kết nối vào Internet đều có một địa chỉ duy nhất, đó chính là địa chỉ IP. Địa chỉ này dùng để phân biệt máy tính đó với các máy khác còn lại trên mạng Internet - địa chỉ IP là một số 32 bit, = 4 byte nên có thể xem một địa chỉ IP được tạo thành từ 4 số có kích thước 1 byte, mỗi số có giá trị từ 0 đến 255. Mỗi địa chỉ IP đều gồm 2 phần là địa chỉ mạng (network) và địa chỉ máy (host) - ví dụ về địa chỉ IP: 45.10.0.1, 168.10.45.65,...
2. Làm sao để xem địa chỉ IP của mình và địa chỉ IP của một trang Web?
Để xem địa chỉ của mình thì bạn vào Start --> Run rồi gõ lệnh: winipcfg hoặc bạn vào trang www.whatismyip.com, nó sẽ hiển thị IP của bạn
Để xem địa chỉ của một trang Web thì bạn dùng lệnh nslookup
3. Các lớp địa chỉ IP
Toàn bộ địa chỉ IP được chia vào 6 lớp khác nhau: A,B,C,D,E và loopback. Mỗi lớp sẽ có cách xác định địa chỉ network và địa chỉ host khác nhau.
Biểu đồ:
Ghi chú: N=Network, H=Host
Giải thích:
Lớp A: bit đầu tiên bằng 0, 7 bit tiếp theo N dành cho địa chỉ network nên có tối đa 27-2=126 trên lớp A, 24 bit còn lại H.H.H dành cho địa chỉ host nên mỗi mạng thuộc lớp A sẽ có tối đa là 224-2=17.777.214 máy. Nguyên nhân phải trừ đi 2 vì có hai địa chỉ được dành riêng là địa chỉ mạng (x.x.x.0) và địa chỉ broadcast (x.x.x.255). Lớp A chỉ dành cho các địa chỉ của các tổ chức lớn trên thế giới. Vùng địa chỉ IP của lớp A là 1.0.0.1 đến 126.0.0.0
Lớp B: bit 0 = 0, 14 bit tiếp theo dành cho địa chỉ netwrok, 16 bit còn lại dành cho địa chỉ host. Tổng số mạng trên lớp B là 16382, mỗi mạng chứa tối đa 65.643 máy(cách tính tương tự như lớp A). Lớp B được dành cho các địa chỉ của các tổ chức hạng trung trên thế giới. Vùng địa chỉ dành cho lớp B là 128.1.0.0 đến 192.254.0.0
Lớp C: 3 bit đầu tiên là 110, 22 bit tiếp theo dành cho network, 8 bit còn lại dành cho host. Số mạng tối đa trên lớp C là 4194302, số host tối đa trên mỗi mạng là 245. Lớp C được dành cho các tổ chức nhỏ và cả máy tính của bạn nữa;). Vùng địa chỉ của lớp C là 192.0.1.0 đến 223.255.254.0
Lớp D: 4 bit đầu tiên luôn là 1110. Lớp D được dành cho các nhóm multicast, vùng địa chỉ từ 224.0.0.0 đến 239.255.255.255
Lớp E: 4 bit đầu tiên luôn là 1111. Lớp E được dành cho mục đích nghiên cứu, vùng địa chỉ từ 240.0.0.0 đến 254.255.255.255
Loopback: địa chỉ quay trở lại, 127.x.x.x. Bạn thường bắt gặp địa chỉ IP 127.0.0.1, đây chính là địa chỉ IP quay trở lại máy tính mà bạn đang dùng để kết nối vào mạng.
Ví dụ: 128.7.15.1
bin | 10000000 | 00000111 | 00001111 | 00000001 |
dec | 128 | 7 | 15 | 1 |
2 bit đầu tiên là 10, như vậy địa chỉ này thuộc lớp B (N.N.H.H), từ đó bạn có thể suy ra được địa chỉ mạng là 128.7 và địa chỉ máy là 15.1.
Bạn cũng có thể dựa vào byte đầu tiên của địa chỉ IP để xác định một cách nhanh chóng và chính xác nó thuộc lớp nào?!
Lớp | Byte đầu tiên của địa chỉ IP |
A | 1-126 |
B | 128-191 |
C | 192-223 |
D | 224-239 |
E | 240-254 |
Loopback | 127 |
Có một số địa chỉ IP đặc biệt sau:
- 0.0.0.0: địa chỉ của máy hiện tại
- 255.255.255.255: địa chỉ broadcast giới hạn của mạng cục bộ
- x.x.x.255: địa chỉ boardcast trực tiếp của mạng x.x.x.0
- 127.x.x.x: địa chỉ loopback
Ví dụ:
Gateway trên hình vẽ thuộc 2 mạng khác nhau nên nó phải có đến 2 địa chỉ IP là 128.10.2.70 và 192.5.48.7
3. Chi tiết về subnet
Để cấp phát địa chỉ IP cho các mạng khác nhau một cách hiệu quả và dễ quản lí, người ta dùng một kĩ thuật được gọi là subnet. Subnet sẽ vay mượn một số bit của hostid để làm subnet mask (mặt nạ mạng). Tôi sẽ chỉ rõ cho các bạn qua các ví dụ.
Bạn chỉ cần nhớ 3 điều sau:
- Subnet mask có tất cả các bit network và subnet đều bằng 1, các bit host đều bằng 0
- Tất cả các máy trên cùng một mạng phải có cùng một subnet mask
- Để phân biệt được các subnet (mạng con) khác nhau, bộ định tuyến dùng phép logic AND
- Ví dụ 1: địa chỉ lớp mạng lớp B 128.10.0.0 có thể subnet như sau:
(a) dùng 8 bit đầu tiên của hostid để subnet:
Subnet mask = 255.255.255.0
Network | Network | Subnet | Host |
11111111 | 11111111 | 11111111 | 00000000 |
255 | 255 | 255 | 0 |
Như bạn thấy số bit dành cho subnet sẽ là 8 -> có tất cả 28-2=254 subnet (mạng con). Địa chỉ của các subnet lần lượt là 128.10.0.1, 128.10.0.2, 128.10.0.3,..., 128.10.0.245. 8 bit dành cho host nên mỗi subnet sẽ có 28-2=254 host, địa chỉ của các host lần lượt là 128.10.xxx.1, 128.10.xxx.2, 128.10.xxx.3,..., 128.10.xxx.254.
Giả sử như bạn có một mạng lớp B địa chỉ 128.10.0.0 được subnet với subnet mask = 255.255.255.0 như sau:
Làm thế nào để gateway G có thể phân biệt được các host thuộc mạng con 128.10.1.0 hay 128.10.2.0? Nó sẽ thực hiện phép AND địa chỉ IP của host với subnet mask 255.255.255.0.
*[H1] 128.10.1.1 AND 255.255.255.0
128. 10. 1.1 = 10000000.00001010.00000001.00000001
AND 255.255.255.0 = 11111111.11111111.11111111.00000000
Kết quả = 10000000.00001010.00000001.00000000
*[H2] 128.10.2.2 AND 255.255.255.0
128. 10. 1.1 = 10000000.00001010.00000010.00000010
AND 255.255.255.0 = 11111111.11111111.11111111.00000000
Kết quả = 10000000.00001010.00000010.00000000
Như vậy gateway G có thể dễ dàng xác định được địa chỉ subnet của H1 và H2 và biết được nó thuộc 2 subnet khác nhau.
(b) chỉ dùng 7 bit đầu tiên của hostid để subnet:
Subnet mask = 255.255.254.0 = 11111111.11111111.11111110.00000000
Như vậy số bit dành cho subnet sẽ là 7 -> có tất cả 27-2=126 subnet(mạng con). Nhưng bù lại, mỗi subnet sẽ có đến 510 host do 9 bit sau được dành cho host, 29-2=510. Địa chỉ của các subnet và host như sau:
Subnet ID | Hosts |
128.10.0.0 | 128.10.0.1 - 128.10.0.254 |
128.10.2.0 | 128.10.2.1 - 128.10.3.254 |
128.10.4.0 | 128.10.4.1 - 128.10.5.254 |
... | ... |
128.10.254.0 | 128.10.254.1 - 128.10.255.254 |
Ví dụ 1: 128.10.2.1 & 128.10.3.254 ?!
128.10. 2.1 = 10000000.00001010.00000010.00000001
AND 255.255.254.0 = 11111111.11111111.11111110.00000000
Kết quả = 10000000.00001010.00000010.00000000
128. 10. 3.254 = 10000000.00001010.00000011.11111111
AND 255.255.254. 0 = 11111111.11111111.11111110.00000000
Kết quả = 10000000.00001010.00000010.00000000
-> 128.10.2.1 & 128.10.3.254 thuộc cùng 1 subnet
Ví dụ 2: 128.10.2.1 & 128.10.5.75 ?
128.10. 2.1 = 10000000.00001010.00000010.00000001
AND 255.255.254.0 = 11111111.11111111.11111110.00000000
Kết quả = 10000000.00001010.00000010.00000000
128. 10. 5.75 = 10000000.00001010.00000101.01001011
AND 255.255.254. 0 = 11111111.11111111.11111110.00000000
Kết quả = 10000000.00001010.00000100.00000000
-> 128.10.2.1 & 128.10.5.75 thuộc 2 subnet khác nhau
4. Phân biệt giữa địa chỉ IP tỉnh và địa chỉ IP động
Các máy tính kết nối vào mạng Internet thường xuyên, chẳng hạn như 1 WEB server hoặc FTP server luôn phải có một địa chỉ IP cố định gọi là địa chỉ IP tĩnh. Đối với các máy tính thỉnh thoảng mới kết nối vào Internet, chẳng hạn như máy của tôi và bạn dùng kết nối cùng kết nối quay số đến ISP. Ví dụ mỗi lần tôi dùng Internet, DHCP (Dynamic Host Configuration Protocol) server của VDC ISP sẽ cung cấp cho tôi một địa chỉ IP chẳng hạn như 203.162.30.209. Lần sau tôi vào lại mạng Internet, địa chỉ IP của tôi có thể là 203.162.30.186 vì DHCP server của VDC sẽ chọn một địa chỉ IP còn rãnh để cấp phát cho máy tôi. Như vậy, địa chỉ IP của máy tôi là địa chỉ IP động.
Để xác định được địa chỉ IP động của máy mình khi đang dùng Internet, trên Windows bạn hãy chạy Start/Run: winipcfg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tìm hiểu Ping
Ping là gì?
Ping là một chương trình cho phép bạn xác định một host còn hoạt động (alive) hay không?
Một ví dụ về Ping!
C:\Users\Admin>ping quantrimang.com
Pinging quantrimang.com [209.54.218.119] with 32 bytes of data:
Reply from 209.54.218.119: bytes=32 time=80ms TTL=120
Reply from 209.54.218.119: bytes=32 time=133ms TTL=120
Reply from 209.54.218.119: bytes=32 time=115ms TTL=120
Reply from 209.54.218.119: bytes=32 time=3ms TTL=120
Ping statistics for 209.54.218.119:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 133ms, Average = 82ms
C:\Users\Admin>
quantrimang.com (209.54.218.119) -> alive!
Nếu bạn nhận được thông báo "Host Alive", điều này có nghĩa là host không còn hoạt động!
Ping hoạt động ra sao?
Ping gởi một ICMP message "echo request" đến host. Nếu nhận được một ICMP message "echo reply" của host, ping sẽ thông báo host còn hoạt động. Nếu không nhận được ICMP message "echo reply" của host, ping sẽ thông báo host này đã ngừng hoạt động!
Format của ICMP "echo request" và "echo reply" có dạng như sau:
Bất cứ lúc nào host nhận được một ICMP request message, nó sẽ phản hồi trở lại với một identifier và số sequence number. Trong hầu hết các hệ thống Unix, trường indentifier được đặt số Process ID của tiến trình gởi gói packet đi. Vì vậy, nếu bạn ping cùng một lúc nhiều lần đến một hệ thống Unix, giá trị indentifier mà bạn nhận được trong mỗi lần ping sẽ khác nhau!
Trường sequence number có giá trị mặc định là 0. Giá trị này sẽ được tăng một sau mỗi lần hệ thống phản hồi ICMP request message của chương trình ping. Ping sẽ in ra giá trị sequence number của mỗi lần nhận packet, điều này cho chúng ta biết được các gói packet có gặp lỗi hay không?!
(Để biết chi tiết về các trường khác, bạn hãy tham khảo các bài viết về giao thức TCP-IP!)
Bây giờ chúng ta hãy xem qua ví dụ cuối cùng:
# ping hackingtruths.box.sk
Pinging hackingtruths.box.sk [194.x.yyy.227] with
32 bytes of data:
32 bytes from 194.x.yyy.227: icmp_seq=0
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=1
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=2
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=3
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=4
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=5
ttl=225 time=0 ms
32 bytes from 194.x.yyy.227: icmp_seq=6
ttl=225 time=0 ms
...
Ở dòng đầu tiên, ping phân tích hostname ra địa chỉ ip. Bạn có nhận thấy giá trị icmp_seq tăng dần từ 0 sau mỗi lần ping nhận được ICMP message "echo reply" từ host không? Như vậy là các gói packet mà chúng ta nhận điều không gặp lỗi gì hết! Ping còn cho chúng ta biết thời gian TTL(Time To Live) nữa! Ping lưu thời gian mỗi lần gởi ICMP message "echo request". Khi nhận được ICMP message "echo reply" từ host, Ping sẽ lấy thời gian hiện tại trừ đi giá trị này sẽ ra TTL!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tìm hiểu FTP
Giới thiệu
FTP là chữ viết tắc của File Transfer Protocol - Giao thức truyền file. FTP là một giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy!
Một số lệnh phổ biến của FTP
Sau đây là danh sách một số lệnh thường dùng kèm theo hướng dẫn mà bạn cần biết!
- ascii: chuyển sang chế độ truyền file theo dạng văn bản.
- binary: chuyển sang chế độ truyền file theo dạng nhị phân.
- cd [directory]: chuyển vào thư mục directory.
- cdup: chuyển lên thư mục cấp trên một cấp.
- close: ngắt kết nối với máy chủ.
- del [remote-file]: xóa 1 file trên máy chủ.
- dir [remote-directory|file]: liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ.
- help [command]: cho biết hướng dẫn về lệnh.
- command lcd [local-directory]: đặt lại thư mục làm việc trên client là local-directory.
- ls [remote-directory|file] [-la]: liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ; tham số -la sẽ liệt kê tất cả có kèm theo mô tả về quyền.
- mdelete [remote-files]: xóa nhiều file trên máy chủ.
- mget [remote-files]: download các files trên máy chủ về.
- mkdir: tạo thư mục có tên directory-name.
- mput [local-files]: upload các files lên máy chủ.
- open host [port]: kết nối đến máy chủ FTP có hostname là host và đang chạy dịch vụ FTP ở cổng port.
- put [remote-file]: upload local-file lên máy chủ với tên mới là remote-file nếu được.
- pwd: cho biết thư mục đang làm việc hiện thời.
- quit: thoát.
- recv [local-file]: nhận remote-file trên máy chủ và lưu trên máy tính với tên local-file nếu được.
- rename [from] [to]: đổi tên file hoặc thư mục from thành to
- rmdir directory-name: xóa thư mục có tên directory-name.
- send local-file [remote-file]: gởi local-file từ máy tính lên máy chủ với tên mới là remote-file nếu được.
- status: cho biết trạng thái của phiên làm việc hiện tại.
- syst: cho biết hệ điều hành của máy chủ.
- user user-name [password] [account]: login vào với tên là user-name, mật khẩu là password, tài khoản là account.
- ?: gọi hướng dẫn.
Các ví dụ
Để dễ hiểu, các bạn hãy xem các ví dụ sau:(tôi sử dụng các này để upload mấy file lên website đó, không cần dùng các chương trình FTP mạnh như WS_FTP Pro, FTPNet, CuteFTP, AbsoluteFTP, ...!) Tôi lưu trang web cần tải lên server trong c:\website! Bây giờ tôi sẽ tải nó lên!
C:\website>ftp myftpsrv // kết nối đến máy chủ myftpsrv
Connected to myftpsrv.
User (ftpsrv:(none)): dt
331 User name okay, need password.
Password:
230 User logged in, proceed.
ftp> pwd // cho biết thư mục hiện tại đang làm việc!
257 "/home/dt" is current directory.
ftp> status // xem trạng thái hiện tại
Type: ascii; Verbose: on ; Bell: Off ; Prompting: on ; Globbing: on
Debugging: Off ; Hash mark printing: Off . // ascii=1
ftp> cd www // chuyển vào thư mục www
250 Directory changed to /home/dt/www
ftp> put index.html // upload file index.html lên server
200 PORT Command successful.
150 Opening ASCII mode data connection for index.html.
226 Transfer complete.
ftp: 2095 bytes sent in 0.00Seconds 2095000.00Kbytes/sec.
ftp> mkdir tools // tạo thư mục /home/dt/www/tools
257 "/home/dt/www/tools" directory created.
ftp> cd tools // chuyển vào thư mục tools
250 Directory changed to /home/dt/www/tools
ftp> lcd c:\website\tools // thay đổi lại local directory = c:\website\tools
Local directory now C:\website\tools.
ftp> bin // chuyển sang chế độ truyền file nhị phân
200 Type set to I.
ftp> mput *.* // upload tất cả các file trong c:\website\tools lên server, vào /home/www/tools/
mput test.zip? y
200 PORT Command successful.
150 Opening BINARY mode data connection for test.zip.
226 Transfer complete.
ftp: 10168 bytes sent in 0.06Seconds 169.47Kbytes/sec.
mput test.exe? y
200 PORT Command successful.
150 Opening BINARY mode data connection for test.exe.
226 Transfer complete.
ftp: 54625 bytes sent in 0.11Seconds 496.59Kbytes/sec.
ftp> ls -la // liệt kê nội dung của /home/www/tools
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr--r-- 1 dt group 0 Sep 30 14:13 .
drwxr--r-- 1 dt group 0 Sep 30 14:13 ..
-rwxr--r-- 1 dt group 54625 Sep 30 14:14 test.exe
-rwxr--r-- 1 dt group 10168 Sep 30 14:14 test.zip
226 Transfer complete.
ftp: 247 bytes received in 0.00Seconds 247000.00Kbytes/sec.
ftp> del test.exe // tôi lỡ tay upload lên file test.exe, bây giờ tôi cần phải xóa nó
250 DELE command successful.
ftp> cd .. // chuyển lên thư mục cấp trên
250 Directory changed to /home/dt/www
ftp> mkdir cgi-bin2 // tạo thư mục mới
257 "/home/dt/www/cgi-bin2" directory created.
ftp> rename cgi-bin2 cgi-bin // tôi đã nhập vào sai mất rồi, bây giờ phải đổi tên lại thôi!
350 File or directory exists, ready for destination name
250 RNTO command successful.
ftp> cd cgi-bin // chuyển vào thư mục cgi-bin
250 Directory changed to /home/dt/www/cgi-bin
ftp> lcd c:\website\cgi-bin // đặt lại local directory!
Local directory now C:\website\cgi-bin.
ftp> ascii // chuyển sang chế độ truyền file văn bản vì tôi cần upload một số file .cgi + .pl
200 Type set to A.
ftp> put test.cgi // upload file test.cgi
200 PORT Command successful.
150 Opening ASCII mode data connection for test.cgi.
226 Transfer complete.
ftp: 222 bytes sent in 0.00Seconds 222000.00Kbytes/sec.
ftp> ls -la // xem nội dung của /home/www/cgi-bin
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr--r-- 1 dt group 0 Sep 30 14:16 .
drwxr--r-- 1 dt group 0 Sep 30 14:16 ..
-rwxr--r-- 1 dt group 222 Sep 30 14:17 test.cgi
226 Transfer complete.
ftp: 182 bytes received in 0.00Seconds 182000.00Kbytes/sec.
ftp> site chmod 755 test.cgi // đặt quyền 755(wrxx-xr-x) cho file test.cgi
ftp> ls -la // tôi liệt kê lại thư mục cgi một lần nữa
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr-xr-x 1 dt group 0 Sep 30 14:16 .
drwxr-xr-x 1 dt group 0 Sep 30 14:16 ..
-rwxr-xr-x 1 dt group 222 Sep 30 14:17 test.cgi
226 Transfer complete.
ftp: 182 bytes received in 0.00Seconds 182000.00Kbytes/sec.
ftp> bye // tất cả đã xong, bây giờ tôi có thể ngắt kết nối được rồi!
221 Goodbye!
C:\website>
Hi vọng là bạn hiểu được ví dụ trên!
Nói thêm về FTP
Làm thế nào để kết nối với một máy chủ FTP qua một proxy-server, chẳng hạn như Wingate? Chỉ cần ftp đến proxy-server này và gõ vào như dạng sau, user@host[:port]. Ví dụ máy tôi đang chạy Wingate-FTP ở cổng 21 và Serv-U FTP-
Server v2.5i ở cổng 2121, tôi có thể kết nối đến Serv-U FTP-Server v2.5i qua Wingate-FTP như sau:
C:\>ftp localhost
Connected to dt.
220 WinGate Engine FTP Gateway
ready
User (dt:(none)): dt@localhost:2121
331 User name okay, need
password.
Password: 230
User logged in, proceed.
ftp>
Okay, bây giờ tôi upload và download file như bình thường được rồi!
Hack với FTP
Đôi khi FTP cũng cho biết một số thông tin rất quan trọng! Bạn dễ dàng đoán được hệ điều hành của máy chủ FTP! Hãy xem các ví dụ sau:
C:\>ftp localhost
Connected to dt.
220 dt Microsoft FTP Service (Version 1.0).
User (dt:(none)): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230-Windows 95 FTP Service.
230 Anonymous user logged in as anonymous.
Yeah! Chắc ăn là server này là PWS chạy trên Windows!
Nếu như admin vô hiệu hóa dòng quảng cáo trên thì sao!? Vẫn còn cách khác! Bạn login vào và phát lệnh syst như sau:
ftp> literal syst
215 Windows_NT
version 4.10
Hình như hệ điều hành của máy chủ là Win9.x hoặc WinNT thì phải! (Nếu bạn đang chạy Linux* thì chỉ cần gõ syst).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tìm hiểu TCP
Đây là bài viết của NNTSOFT aka You-Know-Who trong ourviet. Tôi chỉ có nhiệm vụ là decode mine-encode file ra và post nó lên đây. Hy vọng là tác giả không phàn nàn. Xin thành thật cảm ơn tác giả.
TCP/IP
TCP/IP gồm 4 lớp giao thức, tương ứng với 7 lớp giao thức của chuẩn ISO OSI. Bốn lớp đó gồm (kể theo thứ tự từ trên xuống dưới): Application layer, Host-to-host layer, Internet layer, cuối cùng là Physical layer. TCP nằm ở lớp thứ 3 (Host-to-host layer), IP nằm ở lớp thứ 2 (Internet layer).
Tên | Số thứ tự |
Application layer | 4 |
Host-to-host layer | 3 |
Internet layer | 2 |
Physical layer | 1 |
Đi từ trên xuống dưới, lớp ứng dụng sẽ xử lý thông tin và ra lệnh gửi/nhận đến lớp TCP để truyền và nhận dữ liệu. TCP là viết tắt của Transmission Control Protocol tạm dịch là Cách thức điều khiển truyền. TCP phụ trách việc truyền và nhận dữ liệu.
TCP giúp cho lớp ứng dụng (Application layer) sử dụng lớp IP (lớp IP là vì lớp Internet chỉ có IP) (Internet Protocol, tạm dịch Giao thức liên mạng) một cách trong suốt. Điều này có nghĩa là lớp ứng dụng không cần biết đến phần cứng sẽ làm việc gì, ra sao, mà chỉ cần quan tâm đến việc xử lý dữ liệu của riêng mình.
TCP cũng đảm trách việc nhận đúng dữ liệu và gửi dữ liệu đó đến đúng chương trình cần nhận. TCP còn có chức năng kiểm tra và sửa lỗi thông qua việc đồng bộ hoá (synchronize) thông tin 2 đầu truyền dữ liệu và lời nhận biết (acknowledgement) từ phía nhận dữ liệu.
Lớp IP đảm trách việc tìm đường tối ưu để gửi dữ liệu qua mạng và đưa dữ liệu xuống cho lớp vật lý (Physical layer). Lớp vật lý chính thức chuyển dữ liệu thành các bit và truyền dữ liệu vào cáp (cable). Khi dữ liệu đến thì lớp vật lý nhận dữ liệu, gộp lại thành các bit, byte và chuyển lại cho lớp IP. Đến lượt lớp IP sau khi đã kiểm tra dữ liệu là thuộc về giao thức TCP sẽ trả dữ liệu đó cho lớp TCP (lưu ý, tôi dùng từ "lớp TCP" để chỉ đến giao thức TCP, TCP/IP không có "lớp TCP" mà là "Host-to-host layer", bao gồm TCP và UDP. UDP sẽ được nói ở phần cuối bài).
Nguyên tắc hoạt động
Mục này giới thiệu cách thức hoạt động của lớp TCP và lớp IP.
Các tính chất của TCP:
- Có tính kết nối (connection oriented) với giao tiếp 3 lượt (3-way handshake).
- Phát hiện và sửa lỗi (error detection & recovery).
TCP là một giao thức có tính kết nối. Điều này có nghĩa là mọi kết nối đều có sự thông tin trước. Ví dụ A muốn kết nối tới B thì A phải thong báo cho B biết trước và đợi trả lời đồng ý từ B. Sự thông tin này diễn ra theo 3 bước (3-way handshake) như sau:
- Bước 1: A gửi thông điệp muốn kết nối tới B. (SYN)
- Bước 2: B gửi thông điệp đồng ý kết nối lại cho A. (ACK, SYN)
- Bước 3: A gửi thông điệp đã nhận được sự đồng ý lại cho B. (ACK)
Trong đó: SYN: synchronize, đồng bộ hoá kết nối, ACK: acknowledgement, sự nhận biết.
Diễn giải quá trình:
Bước 1: A gửi một SYN message tới B, thông báo cổng (port) cần kết nối tới, dung lượng đường truyền của A, khả năng gửi bao nhiêu thông điệp không cần nhận biết (windowing, giải thích sau), và các thông tin khác.
Bước 2: B nhận được thông tin từ A, nếu chấp nhận kết nối sẽ gửi trả thông báo đã nhận được yêu cầu kết nối từ A và chấp nhận sự kết nối, đồng thời cũng gửi thêm thông tin về B như khả năng gửi bao nhiêu thông điệp không cần nhận biết v.v...
Bước 3: A gửi trả ACK message cho B thông báo rằng A đã nhận được. Kết nối thành công.
Ngoài ra, khi muốn chấm dứt kết nối, bốn bước sau sẽ được thực hiện:
- Bước 1: A gửi tín hiệu chấm dứt kết nối. (SYN)
- Bước 2: B nhận tín hiệu và gửi trả tín hiệu cho biết đã nhận. (ACK)
- Bước 3: B gửi tín hiệu cho Application layer thông báo kết nối sẽ bị chấm dứt đồng thời gửi trả cho A tín hiệu thông báo đồng ý chấm dứt. (SYN)
- Bước 4: A gửi lại cho B tín hiệu cho biết A đã nhận được thông điệp từ B. (ACK)
Nói tóm lại, TCP có tính kết nối. TCP có tính phát hiện lỗi vì mọi thông điệp gửi theo TCP đều được kiểm tra thông qua một số nguyên 32 bit cho biết giá trị CRC (Cyclic Redundant Check) của thông điệp được gửi.
Bên gửi sẽ tính giá trị CRC và gửi kèm trong thông điệp. Bên nhận sẽ tính lại giá trị đó và so sánh với giá trị do bên gửi gửi đi. Nếu không đúng có nghĩa là đã có sự sai sót xảy ra. TCP có tính sửa lỗi vì khi phát hiện ra sai sót, bên nhận sẽ gửi thông điệp báo sai tới bên gửi, đề nghị gửi lại thông điệp bị sai.
Không phải sau mỗi một thông điệp được gửi đi thì đều có một thông điệp thông báo đã nhận được từ bên nhận gửi trả về. Có thể sau 10 thông điệp được gửi đi thì mới có một thông điệp thông báo nhận được gửi trả. Đó gọi là khả năng gửi không cần nhận biết.
Ví dụ: A gửi cho B 6 lượt, mỗi lượt 1000 bytes, khả năng gửi không cần nhận biết của A là 3, B nhận được thông điệp đầu hoàn chỉnh, thông điệp thứ 2 bị sai, các thông điệp sau bình thường.
Quá trình đó sẽ diễn ra như sau:
1. A gửi cho B 3 thông điệp lần lượt.
2. B gửi lại cho A ACK message với giá trị 2000. Nếu B nhận được tất cả các thông điệp hoàn chỉnh, B sẽ gửi lại cho A một ACK message với giá trị 4000 (là giá trị kế tiếp mà A có thể gửi).
3. A gửi lại cho B message thứ 2 (từ vị trí 2000 đến vị trí 2999) và chờ. Lúc này A hy vọng rằng B nhận được thông điệp thứ nhất và thông điệp thứ ba hoàn chỉnh, A sẽ không phải gửi lại toàn bộ các thông điệp từ chỗ bị sai mà chỉ gửi thông điệp bị sai.
4. B gửi lại cho A ACK message với giá trị 4000 cho biết B nhận được 3 thông điệp đầu hoàn chỉnh và A có thể gửi tiếp các thông điệp sau, bắt đầu từ vị trí 4000.
5. A gửi cho B thông điệp thứ 4, 5 và 6. 6. B gửi trả ACK message với giá trị 7000. Giả sử trong khi gửi thông điệp 4, 5, 6, A chưa kịp gửi thông điệp thứ 5 thì đã nhận được ACK message từ B với giá trị 5000 thì lúc đó window của A sẽ được sửa thành giá trị 3.
Nếu A đã gửi thông điệp 4, 5 và nhận được ACK message của B với giá trị 5000 thì window của A được sửa thành 2, A có thể gửi tiếp 2 thông điệp 6 và 7. Có nghĩa là tối đa A có thể gửi ‘window’ lần số thông điệp. Mỗi lần gửi, giá trị window giảm cho đến khi bằng 0. Khi nhận được ACK message, giá trị đó sẽ thay đổi, tăng lên cho đến khi số thông điệp đã gửi đi mà chưa nhận được ACK message bằng giá trị window chính).
Trong quá trình truyền tín hiệu như vậy, nếu bên B cảm thấy có thể nhận được tín hiệu nhanh hơn thì bên B sẽ gửi SYN message lại cho A, thông báo muốn tăng giá trị window lên (giảm thời gian và số ACK message được gửi đi). Bên A sẽ gửi trả ACK message và tự tăng giá trị window lên theo yêu cầu của bên B. Ngược lại, B sẽ đề nghị A giảm giá trị window xuống.
Ngoài ra, số lượng thông tin được gửi đi trong mỗi thông điệp cũng có thể thay đổi tuỳ vào đường truyền. Với TCP, lượng thông tin này được đo bằng đơn vị byte. MTU (maximum transmission unit) là số transmission unit (đơn vị truyền) (với TCP được tính là byte) tối đa mỗi thông điệp có thể chứa.
Nói tóm lại, sự liên lạc bằng TCP có tính phát hiện và sửa lỗi, cũng như có sự can thiệp một cách tự động của lớp TCP phụ thuộc vào điều kiện đường truyền. TCP phân biệt các thông điệp gửi cho chương trình này và thông điệp gửi cho chương trình khác thông qua socket. Socket là một khái niệm để chỉ 2 giá trị cần thiết khi khởi tạo kết nối. Đó là địa chỉ IP (IP address) của máy và cổng (port).
Giả sử B chạy một server, nhận kết nối ở cổng 80, có địa chỉ IP là 1.1.1.1. A là máy khách, chạy 2 chương trình client để kết nối tới B, A có địa chỉ là 1.1.1.2. Client đầu tiên dùng port 1024, client thứ 2 dùng port 1025. Khi B nhận tín hiệu kết nối từ client thứ 1, B hiểu rằng tín hiệu đó từ địa chỉ IP 1.1.1.2 và từ port 1024. Tương tự, B hiểu client thứ 2 từ socket khác.
Như vậy, khi B trả lời A, B sẽ gửi thông tin tới socket tương ứng với client 1 hay 2 của A. Khi A gửi cho B, B cũng biết thông tin đó từ client 1 hay 2 gửi cho mình thông qua việc nhận biết thông tin đó xuất phát từ socket của client 1 hay 2. Quá trình chuyển thông tin cho lớp ứng dụng này được gọi là multiplexing.
Nói thêm về UDP
UDP là một giao thức truyền khác, cũng nằm ở lớp thứ 3 (Host-to-host layer), cũng làm nhiệm vụ như TCP. UDP khác TCP ở chỗ là một giao thức không có tính kết nối, không có sự kiểm tra và sửa lỗi. UDP dựa vào lớp trên (lớp ứng dụng) để làm việc này. UDP viết tắt của Unreliable Datagram Protocol (tạm dịch giao thức truyền không đáng tin). Chương trình sử dụng UDP phải tự cài đặt phần kiểm tra dữ liệu.
Tuy nhiên, điểm mạnh của UDP là ở chỗ vì không có nhiều tính toán và các thông tin kiểm tra khác nên UDP nhanh hơn TCP, sử dụng ít bộ nhớ cũng như thời gian của CPU hơn. UDP cũng dùng địa chỉ IP và port để nhận biết và chuyển thông tin cho lớp trên.
IP có chức năng chuyển thông tin đi qua mạng đến nơi cuối. IP làm được việc này nhờ vào một bảng chỉ đường (routing table) dựa trên địa chỉ mạng (network address), không phải dựa trên địa chỉ máy tới) và chuyển thông tin đó tới máy cuối.
Trên đường đi, thông tin có thể qua nhiều trạm trung gian (tài liệu cũ dùng từ gateway, tài liệu mới dùng từ router), cũng sử dụng lớp IP để chuyển tiếp (forward) các tín hiệu đó tới các trạm khác gần máy đích hơn. Cách tính địa chỉ mạng, địa chỉ máy (host address), địa chỉ mạng con (subnet address) và các vấn đề liên quan đến việc đánh địa chỉ sẽ được trình bày trong bài khác.
Tài liệu tham khảo:
- Internetworking with TCP/IP volume I
- TCP/IP illustrated volume I
- Sybex CCNA Study Guide v2.0
IP ĐỘNG LÀ GÌ ?
Mỗi ISP đều có một Server lŕm nhiệm vụ phân phát số IP khi có một máy online và thu hồi lại số IP đó khi máy đó Disconnect. Một máy tính có thuê bao đường truyền tốc độ cao (nghĩa là luôn luôn online) thì được các ISP gán cho một số IP cố định (gọi là IP tĩnh), còn máy tính dùng Modem để kết nối Internet được ISP gán cho một số IP tạm thời khi online để được nhận biết trên Internet, khi máy tính này Disconnect thì số IP đó được lấy về để cấp phát cho máy tính khác online (số IP này gọi là IP động).
Nói tóm lại, máy tính dùng Modem mỗi lần online là có số IP khác nhau. Dùng Scan Ip để Scan các địa chỉ Ip! Sau khi có kết quả bạn dùng Telnet để Login vào Computer đó với IP đó, kčm theo Port của Victim' s Computer, thông thường là Port 80, 8000, 8001 TCP.
Che dấu IP khi lên mạng
Chào các bạn! gần đây có một số bạn hỏi tôi về vấn đề che IP khi lên mạng. Sau khi đi dạo bơi trên Internet một thời gian thì tôi thấy một số tài liệu có đề cập đến các chương trình như: DC_JS, Genius, Stealth Anonymizer, Multiproxy....
Theo tôi thì chẳng cần đến những chương trình này. Tất cả những gì mà bạn cần là Browser, Telnet và một chút kỹ năng về mạng. Tôi xin mạn phép đem chút ít hiểu biết nông cạn của mình ra chia sẻ với bạn.
Dưới đây là cách che IP khi hành sự (Web, E-mail, FTP, Telnet). Chắc nhiều bạn sẽ nghĩ là bài đơn giản như vậy mà cũng send lên, mong bạn thông cảm.... Tôi send lên cho các bạn Beganner.
Che IP khi duyệt Web:
Quá đơn giản, khỏi nói bạn cũng biết... Chỉ cần dùng Proxy là Ok liền. Kiếm các trang Web Proxy đã được Config sẵn, bạn chỉ việc lên đó gõ địa chỉ trang Web mà bạn muốn Visit ẩn danh vào-Ok.
Nếu bạn lên Internet kiến được một cái Proxy đại loại như sau: 208.57.0.100:80...Port 80, ồ đúng đây là Proxy cho Web rồi.
Bạn khởi động Inernet Explorer. Vào Tools/Internet Options/ Connection/Lan Setting. Nhấn vào Use a Proxy Setting/Advance....Ở đây có các Form để cấu hình Proxy cho Web, FTP.... bạn Copy 208.57.0.100 vào Address và = 80 vào Port. FTP bạn xem kiếm được cái Proxy nào thì copy vào notepad (FTP co Port mac dinh la 21). Để cho chắc bạn cứ chọn xài các Anonymous Proxy.
Che IP send Mail:
Bạn có thể dùng chương trình Dnd... Nó có thể tạo IP giả cũng như giả mạo luôn được cả Host nữa. Bạn nào ngại Download nó thì cứ xài Webmail. Rồi dùng Proxy để truy cập vào Webmail để Send mail. IP của bạn khi truy cập vào Webmail cũng như trên Header của cái Mail send đi sẽ là IP của cái Proxy mà bạn dùng.
Che IP khi Telnet và FTP:
Đến đây thì bạn có thể làm theo như cách mà bạn camaptrang@ đã đề cập đến hôm nọ. Kiếm cái Wingate Sever, Telnet vào nó....Tiếp đó Telnet, hoặc FTP vào mục tiêu mà bạn muốn che IP. Ip mà Server nó log được chính là Ip của Wingate Server.
Các lệnh của Telnet thì tùy, nếu Server xài Winnt thì các dòng lệnh của nó giống như các dòng lệnh DOS, nếu Sever xài Unix/Linux thì các dòng lệnh của nó giống như Unix/Linux.
Còn FTP thì có các dòng lệnh chuẩn sau (bất cứ Server xài OS nào): Đầu tiên bạn gõ: ftp host để connect vào Server FTP, nếu là Server Anonymous thì User/Pass bạn có thể nhập Guest, Anonymous hoặc cái gì cũng OK hết (đối với các Server loại này bạn chỉ có thể Download, dir, cd thôi... nói chung là không có quyền sửa đổi các File trên Server), nếu là Server Normal thì nó sẽ đổi User/Pass.... bạn phải có User/Pass trước khi Connect (với Server loại này bạn có toàn quyền sửa đổi, di chuyển, del.... không giới hạn các file trên Server).
Sau khi thành công bạn sẽ thấy dạng. ftp> - OK! bạn đã connect được vào FTP Server rồi đó.
Dưới đây là các lệnh FTP. Nếu quen có khi bạn khỏi cần dùng các chương trình FTP như Cute FTP, WS FTP pro... nữa. Bạn type lệnh là xong.
- dir-hiển thị thư mục và file trên Server.
- cd-chuyển đổi giữa các thư mục trên Server.
- get-Download 1 file từ Server.
- mget-Download nhiều file từ Server.
- put-upload 1 file lên Server.
- mput-upload nhiều file lên Server.
- pwd-hiển thị thư mục hiện hành trên Server.
- mkdir-tạo thư mục.
- rmdir-xoá thư mục chmod-thiết lập tùy chọn cho thư mục/file
- hash-hiển thị chi tiết thông tin về việc truyền nhau dữ liệu.
- ascii-chuyển sang chế độ ascii.
- binary-chuyển sang chế độ nhị phân.
- close-chấm dứt kết nối.
- quit-thoát khỏi môi trường FTP.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~