Tài liệu là đề cương môn học Mạng máy tính chủ yếu dành cho sinh viên trường ĐH Khoa học tự nhiên ĐHQGHCM. Tài liệu này là của tôi tự soạn, sưu tầm từ sách, đề thi các năm, nguồn tiếng Anh.
Trang 1ĐỀ CƯƠNG MẠNG MÁY TÍNH CHƯƠNG 1: GIỚI THIỆU
Bài tập trong sách
BT2 So sánh TCP/IP và OSI:
So với mô hình OSI thì giao thức TCP/IP được nhiều người tin cậy và sử dụng hơn Bởi theo quan niệm thì mô hình OSI chỉ là mô hình cũ, công cụ để tham khảo Ngược lại giao thức TCP/IP cho phép nới lỏng các quy tắc và cung cấp các nguyên tắc chung
Nếu xét về phương pháp tiếp cận thì TCP/IP tiếp cận theo chiều ngang, còn OSI tiếp cận
theo chiều dọc Điểm khác biệt lớn nhất giữa hai giao thức này có lẽ là sự kết hợp giữa các
tầng với nhau Đối với giao thức TCP/IP thì tầng phiên và tầng trình diễn được kết hợp với nhau trong tầng ứng dụng Còn đối với mô hình OSI thì mỗi tầng khác nhau sẽ thực hiện một nhiệm vụ khác nhau Về thiết kế thì các giao thức trong TCP/IP được thiết kế trước rồi sau đó mới phát triển mô hình Ngược lại trong OSI thì mô hình được phát triển trước sau đó mới
phát triển giao thức
BT5
Bot là viết tắt của robot, tức các chương trình tự động thường xuyên được sử dụng trong thế giới Internet Một thành phần quan trọng của các bot này là những sự kiện mà chúng có thể dùng để phát tán nhanh chóng tới máy tính khác Xây dựng kế hoạch cần thận cho chương trình tấn công sẽ giúp thu được kết quả tốt hơn với thời gian ngắn hơn (như xâm phạm được
Nội dung Mô hình OSI Mô hình TCP/IP
Giống nhau Đều có kiến trúc phân lớp; đều có lớp Network và lớp Transport; cùng sử dụng
kỹ thuật chuyển Packet
Độ tin cậy và
phổ biến
Nhiều người cho rằng đây là mô hình
cũ, chỉ để tham khảo, số người sử dụng hạn chế hơn so với TCP/IP
Được chuẩn hóa, nhiều người tin cậy
và sử dụng phổ biến trên toàn cầu
Trong tầng ứng dụng có tầng trình diễn
và tầng phiên được kết hợp với nhau
Thiết kế Phát triển mô hình trước sau đó sẽ
Trang 2nhiều máy tính hơn chẳng hạn) Một số n bot kết nối vào một kênh đơn để chờ lệnh từ kẻ tấn công thì được gọi là một botnet
Các botnet được sử dụng thường xuyên trong các cuộc tấn công Distributed Denial of Service (DDoS) Một kẻ tấn công có thể điều khiển số lượng lớn máy tính bị chiểm quyền điều khiển tại một trạm từ xa, khai thác băng thông của chúng và gửi yêu cầu kết nối tới máy đích Nhiều mạng trở nên hết sức tồi tệ sau khi hứng chịu các cuộc tấn công kiểu này Và trong một
số trường hợp, thủ phạm được tìm thấy ngay khi đang tiến hành cuộc phá hoại (như ở các cuộc chiến dotcom)
Tấn công DDoS là một biến thể của Foolding DoS (Tấn công từ chối dịch vụ tràn) Mục đích của hình thức này là gây tràn mạng đích, sử dụng tất cả băng thông có thể Kẻ tấn công sau
đó sẽ có toàn bộ lượng băng thông khổng lồ trên mạng để làm tràn website đích Đó là cách phát động tấn công tốt nhất để đặt được nhiều máy tính dưới quyền kiểm soát Mỗi máy tính
sẽ đưa ra băng thông riêng (ví dụ với người dùng PC cá nhân nối ADSL) Tất cả sẽ được dùng một lần, và nhờ đó, phân tán được cuộc tấn công vào website đích Một trong các kiểu tấn công phổ biến nhất được thực hiện thông qua sử dụng giao thức TCP (một giao thức hướng kết nối), gọi là TCP syn flooding (tràn đồng bộ TCP) Cách thức hoạt động của chúng là gửi đồng thời cùng lúc một số lượng khổng lồ yêu cầu kết nối TCP tới một Web Server (hoặc bất
kỳ dịch vụ nào khác), gây tràn tài nguyên server, dẫn đến tràn băng thông và ngăn không cho người dùng khác mở kết nối riêng của họ Quả là đơn giản nhưng thực sự nguy hiểm! Kết quả thu được cũng tương tự khi dùng giao thức UDP (một giao thức không kết nối)
Lý thuyết IP subnetting
1 Địa chỉ IP classful:
- Nhược điểm: Lãng phí không gian địa chỉ; Khó quản trị, bảo trì; Tính bảo mật kém
- Địa chỉ private: Địa chỉ sử dụng nội bộ, được định nghĩa trong RFC 1918
Trang 3=> Mạch chuyển mạch gói hiệu quả hơn ở đa số tình huống trong thời điểm hiện tại
Tuỳ thuộc vào tình huống cụ thể, lựa chọn mạng chuyển mạch cho phù hợp Cả 2 mạng đều vẫn còn phổ biến trong các hệ thống mạng viễn thông Internet vận hành dựa trên mạng chuyển mạch gói Dễ thấy, các cuộc gọi VoIP (Mess, Zalo, v.v) kém ổn định hơn hẳn so với cuộc gọi điện thoại Bù lại chi phí thì lại rẻ hơn nhiều vì sử dụng tài nguyên hợp lý hơn
Lý thuyết mô hình OSI (trang 68 giáo trình)
- OSI là mô hình tham chiếu kết nối hệ thống mở Mô hình này được tạo nên nhờ vào nguyên lý phân tầng, giải thích về kỹ thuật kết nối giữa các máy tính và thiết lập giao thức mạng giữa các máy tính đó
- Mô hình OSI chia giao tiếp mạng thành 7 tầng Từ tầng 1 đến tầng 4 là là những lớp thuộc cấp thấp, nó thực hiện nhiệm vụ di chuyển dữ liệu Từ tầng 5 đến tầng 7 là lớp thuộc cấp cao, thực hiện nhiệm vụ đặc thù và chuyển tiếp dữ liệu
Trang 4- Những ưu điểm của OSI đó là:
• OSI phân thành nhiều tầng nhỏ và đơn giản hơn
• OSI chuẩn hóa các thành phần mạng để phát triển dễ dàng hơn
• OSI chuẩn hóa giao diện giữa các tầng
• Dữ liệu được truyền nhanh chóng và dễ dàng hơn
- Là giao diện chính để người dùng tương tác với chương trình ứng dụng,
và qua đó với mạng Một số ví dụ về các ứng dụng trong tầng này bao gồm HTTP, Telnet, FTP (giao thức truyền tập tin) và các giao thức truyền thư điện tử như SMTP, IMAP, X.400 Mail
- Thực hiện các chức năng sau:
+ Dịch các mã ký tự từ ASCII sang EBCDIC
+ Chuyển đổi dữ liệu, ví dụ từ số interger sang số dấu phẩy động
+ Nén dữ liệu để giảm lượng dữ liệu truyền trên mạng
+ Mã hoá và giải mã dữ liệu để đảm bảo sự bảo mật trên mạng
Tầng 5:
Tầng phiên
(Session
Layer)
- Kiểm soát các (phiên) hội thoại giữa các máy tính
- Thiết lập, quản lý và kết thúc các kết nối giữa trình ứng dụng địa phương
và trình ứng dụng ở xa
- Hỗ trợ hoạt động song công (duplex) hoặc bán song công (half-duplex) hoặc đơn công (simplex) và thiết lập các quy trình đánh dấu điểm hoàn thành - giúp việc phục hồi truyền thông nhanh hơn khi có lỗi xảy ra, vì điểm
đã hoàn thành đã được đánh dấu - trì hoãn, kết thúc và khởi động lại
- Mô hình OSI uỷ nhiệm cho tầng này trách nhiệm "ngắt mạch nhẹ nhàng" (graceful close) các phiên giao dịch (một tính chất của giao thức kiểm soát giao vận TCP) và trách nhiệm kiểm tra và phục hồi phiên, đây là phần thường không được dùng đến trong bộ giao thức TCP/IP
- Tầng vận chuyển kiểm soát độ tin cậy của một kết nối được cho trước Một số giao thức có định hướng trạng thái và kết nối Có nghĩa là tầng này
có thể theo dõi các gói tin và truyền lại các gói bị thất bại
- Một ví dụ điển hình của giao thức tầng 4 là TCP Tầng này là nơi các thông điệp được chuyển sang thành các gói tin TCP hoặc UDP Ở tầng 4 địa chỉ được đánh là address ports, thông qua address ports để phân biệt được ứng dụng trao đổi
Trang 5Tầng 3:
Tầng mạng
(Network
Layer)
- Cung cấp các chức năng và quy trình cho việc truyền các chuỗi dữ liệu có
độ dài đa dạng, từ một nguồn tới một đích, thông qua một hoặc nhiều mạng, trong khi vẫn duy trì chất lượng dịch vụ mà tầng giao vận yêu cầu
- Tầng mạng thực hiện chức năng định tuyến Các thiết bị router hoạt động tại tầng này - gửi dữ liệu ra khắp mạng mở rộng, làm cho liên mạng trở nên khả thi (còn có thiết bị chuyển mạch (switch) tầng 3, còn gọi là chuyển mạch IP) Đây là một hệ thống định vị địa chỉ lôgic Hệ thống này có cấu trúc phả
có đẳng cấp
- Ví dụ điển hình nhất là Ethernet Những ví dụ khác về các giao thức liên kết dữ liệu (data link protocol) là các giao thức HDLC; ADCCP dành cho các mạng point-to-point hoặc mạng chuyển mạch gói và giao thức ALOHA cho các mạng cục bộ
- Chức năng và dịch vụ căn bản được thực hiện bởi tầng vật lý bao gồm: + Thiết lập hoặc ngắt mạch kết nối điện với một môi trường truyền dẫn phương tiện truyền thông
+ Tham gia vào quy trình mà trong đó các tài nguyên truyền thông được chia sẻ hiệu quả giữa nhiều người dùng, chẳng hạn giải quyết tranh chấp tài nguyên và điều khiển lưu lượng
+ Điều chế (modulation), hoặc biến đổi giữa biểu diễn dữ liệu số của các thiết bị người dùng và các tín hiệu tương ứng được truyền qua kênh truyền thông
- Ethernet nhập tầng vật lý với tầng liên kết dữ liệu vào làm một
Trang 6Lý thuyết mô hình TCP/IP
- Mô hình TCP/IP có sự kết hợp giữa các giao thức riêng biệt Nhiệm vụ của mỗi giao thức là giúp máy tính có thể kết nối, truyền thông tin qua lại với nhau TCP là giao thức điều khiển truyền nhận còn Internet Protoco (IP) là giao thức liên mạng TCP/IP gồm 4 tầng đó là tầng ứng dụng, tầng mạng, tầng giao vận và tầng vật lý
- Các giao thức phổ biến nhất của mô hình TCP/IP: FTP, HTTP, HTTPS ba giao thức được dùng nhiều nhất của TCP/IP FTP là giao thức giúp cho máy tính có thể gửi dữ liệu không giới hạn đến một hay nhiều máy tính khác HTTP có chức năng truyền dữ liệu không an toàn giữa người dùng web và máy chủ web HTTPS là giao thức được dùng để truyền dữ liệu an toàn giữa người dùng web và máy chủ web
- Ưu điểm của TCP/IP là:
• Mô hình TCP/IP không chịu sự kiểm soát của tổ chức nào Do đó, người dùng có thể tự
do sử dụng
• Có khả năng tương thích với các mạng, hệ điều hành và phần cứng máy tính
• Có khả năng khả năng định tuyến, mở rộng và nhận định được đường dẫn tốt nhất thông qua mạng
CHƯƠNG 2: TẦNG ỨNG DỤNG (APPLICATION)
Bài tập trong sách
BT3 “Out-of-band” data (dữ liệu ngoài băng) là dữ liệu được truyền qua luồng độc lập với
luồng dữ liệu chính trong “band” Gọi là FTP gửi thông tin điều khiển “out-of-band” vì FTP
Trang 7dùng ít nhất 2 kết nối TCP song song để truyền dữ liệu, trong đó 1 kết nối chỉ truyền thông tin điều khiển, không truyền dữ liệu chính/truyền tập tin
BT9 Khi người dùng truy cập trang web lần đầu tiên, máy chủ sẽ tạo một ID number độc nhất,
tạo lối vào cơ sở dữ liệu back-end và trả về ID number này dưới dạng cookie Cookie này được lưu trữ trên máy tính người dùng và được quản lý bởi trình duyệt Trong mỗi lần truy cập (và mua hàng) tiếp theo, trình duyệt sẽ trả lại cookie cho trang web Do đó, trang web biết khi nào người dùng này đang truy cập trang web
Cách giải khác: Site có một CSDL cookies để định danh khách hàng bằng cookies Khi khách hàng đăng nhập lần đầu (chưa có cookies) sẽ được site khởi tạo cho 1 cookies ID tương ứng
Và gửi “Set cookies ID:” này về cho browser Những lần sau, khi truy cập site, browser sử dụng
ID đã được cấp để thông báo với site về trạng thái của trình duyệt, từ đó site có thể thông qua ID và định danh
* Minh hoạ: Giả sử tên site e-commerce là abc.com
User đăng nhập vào site abc.com lần đầu tiên; Web server của site tại một cookie ID tương ứng cho user này là ID = 712; Web server thêm ID này vào CSDL cookie của webserver; Web server gửi ID này về cho browser, browser thêm ID và site vào tập cookies (thêm dòng {712; abc.com}); User truy cập, mua hàng bình thường Server sẽ lưu các thông tin này tương ứng với cookie ID đã cấp cho user; Lần sau truy cập abc.com, browser của user gửi cookie ID
đã được cấp từ trước cho site, site dự vào ID này tìm kiếm thông tin của user tương ứng; Site trả về thông tin mua hàng trước đây đã lưu trữ cho người dùng xem
P1 Câu hỏi: Đúng/Sai Giải thích?
a) Một người dùng yêu cầu từ 1 trang web 1 text và 3 hình ảnh, client sẽ gửi 1 tin nhắn yêu
cầu và nhận 4 tin nhắn phản hồi? Sai
The client would receive a response for eachrequest so if it sent a request then it would get a response of the same amount So if it send three requests it would get three responses and
so on
b) 2 trang web khác biệt có thể gửi qua cùng 1 kết nối kiên trì Đúng
The book says “Moreover, multiple web pages residing on the same server can be sent from the sever to the same client over a single persistent TCP connection.” This suggestion that both web pages are from the MIT and are probably on the same server
c) Với một kết nối không kiên trì giữa trình duyệt và máy chủ có thể cho 1 gói tin TCP thực
hiện 2 request HTTP khác nhau Sai
A non-persistent connection would handle each web page in a separate connection So each separate connection needs a new request This has some draw backs since each new connection can take longer to respond
d) Header của HTTP response message cho biết thời điểm sửa đổi cuối cùng của đối tượng
response Sai
This tells when the date header was created and not when it was modified Found on page
106 it states “The Date: header line indicated the time and date when the HTTP response was created and sentby the server
e) Thông điệp yêu cầu của giao thức HTTP không thể rỗng Đúng
Trang 8If one request succeeds, then the information would be supplied as a response But if the response fails then an error message would be returned A 404 Not Founds response would occur if it wasn’t found so it’s not possible for a reply to be empty
Ứng dụng Client Server
DHCP 68 67 UDP Cấp phát IP động cho các máy trong
network, tránh trường hợp 2 máy trong cùng mội
network bị trùng IP HTTP Linh động 80 TCP Kết nối giữa Client và Server
Chia sẻ, truyền thông tin qua Internet HTTPS Tương tự HTTP, nhưng có kết nối an
toàn được cung cấp bởi SSL hoặc TLS SMTP Linh động 25 TCP Truyền tải thư điện tử trên mạng
Internet DNS Linh động 53 UDP và TCP Chuyển đổi tên miền thành IP và ngược
lại
(data 20)
TCP Trao đổi tập tin qua mạng
POP3 Bất kỳ 110 TCP Kéo email từ server về client
IMAP Bất kỳ 143 TCP Chỉ kéo email headers về, nội dung vẫn
còn trên server Thay đổi trên client sẽ được chuyển lên server
Telnet Bất kỳ 23 TCP Điều khiển máy tính từ xa qua dòng lệnh SSH 22 TCP Telnet có mã hóa
Lý thuyết các nguyên tắc chung của ứng dụng mạng (trang 92 giáo trình)
1 So sánh client-server và P2P: (trang 94 giáo trình)
Server cung cấp dịch vụ cho client do dữ
liệu được lưu trữ tập trung trên server
Mỗi peer có thể cung cấp dịch vụ và cũng có thể yêu cầu dịch vụ, do mỗi máy có dữ liệu riêng
Cần có người quản trị mạng Không cần có người quản trị mạng
Cần máy chủ, phần cứng và HĐH Cần khá ít phần cứng, có thể không cần đến
HĐH và máy chủ Việc chia sẻ thông tin là quan trọng hơn Việc kết nối giữa các máy quan trọng hơn
Trang 9Có 1 server phục vụ khách hàng, do đó có
nhiều cơ hội máy chủ bị tắc nghẽn
Các server được phân phối trong một hệ thống, do đó ít có khả năng máy chủ bị tắc nghẽn
Chi phí cao hơn Chi phí thấp hơn
Có khả năng mở rộng và ổn định hơn
Nếu số lượng server là cố định, thì khi số
lượng client tăng lên khả năng chuyển dữ
liệu cho mỗi client sẽ giảm xuống
Càng có nhiều máy tham gia mạng thì khả năng tổng thể của hệ thống mạng càng lớn
2 Ưu, nhược điểm client-server và P2P (cần tham khảo bảng trên)
- Ưu điểm của client-server:
+ Dễ dàng mở rộng hệ thống mạng
+ Với mô hình Client server, người dùng có thể truy cập dữ liệu từ xa, thực hiện các thao tác gửi, nhận file hay tìm kiếm thông tin đơn giản
- Nhược điểm của client-server:
+ Cần bảo trì, bảo dưỡng server thường xuyên
+ Khả năng bảo mật thông tin mạng là một hạn chế nữa của Client server Bởi vì, nguyên
lý hoạt động của client-server là trao đổi dữ liệu giữa server và client ở 2 khu vực địa lý khác nhau Trong quá trình trao đổi dữ liệu, khả năng thông tin mạng bị lộ là điều dễ xảy
ra
3 Khái niệm tiến trình (process):
- Tiến trình là một phần của ứng dụng đang chạy trên máy VD: browser đang mở nhiều tab, mỗi tab truy cập 1 site khác nhau Có n tab -> tổng cộng có n tiến trình Web-client đang chạy
- Tiến trình thực ra là “chương trình” đang chạy trên máy tính Vì ứng dụng ngày ngay tích hợp và xử lý quá nhiều chương trình cùng lúc nên thuật ngữ tiến trình ra đời
- Tiến trình được định danh bởi port, giúp các tiến trình phân biệt với nhau
4 Khái niệm socket:
- Phục vụ giao tiếp giữa 2 tiến trình trên 2 máy khác nhau Bất kỳ tiến trình nào giao tiếp với nhau cũng cần thông qua tầng mạng, tiến trình gửi/nhận các thông điệp từ mạng gọi là socket
- Socket là một tiến trình riêng biệt không liên quan đến các tiến trình cung cấp dịch vụ cho end-user của ứng dụng Socket là interface hỗ trợ giữa tầng Ứng dụng và tầng Vận chuyển
- Socket có thể giúp người lập trình ở tầng Ứng dụng quản lý một số thuộc tính ở tầng Vận chuyển như: lựa chọn giao thức vận chuyển (UDP/TCP), cài đặt buffer_size, max_segment_size,… (như 1 filter)
- Mô hình hoạt động: Tiến trình end-user <-> socket nhận data <-> giao tiếp ở tầng mạng <-> socket gửi data <-> tiến trình end-user
=> Hiểu socket như một tiến trình trung gian giúp kết nối giữa tầng Ứng dụng và tầng Giao vận Tiến trình này giúp người ở Tầng Ứng dụng thiết đặt một số thông số kết nối cho tầng Giao vận
Lý thuyết HTTP (trang 106 giáo trình)
1 Minh họa giao thức HTTP:
Trang 102 So sánh HTTP không thường trực và HTTP thường trực
- Cần 2RTT cho mỗi kết nối
- Hệ điều hành quản lý (overhead) từng
kết nối TCP
- Trình duyệt thường xuyên phải tạo các
kết nối TCP song song để với các đối tượng
liên quan (referenced object)
- Cần 1RTT cho tất cả các đối tượng
- Server giữ kết nối mở sau khi phản hồi
- Những tin nhắn HTTP sau đó giữa client
và server được gửi thông qua kết nối mở
đó
- Client gửi yêu cầu ngay khi nó bắt gặp đối tượng liên quan ( referenced object)
3 Tấn công HTTP flood DDoS:
a) Khái niệm: Tấn công HTTP flood là một loại tấn công từ chối dịch vụ phân tán (DDoS) được
thiết kế để áp đảo server mục tiêu với các yêu cầu HTTP Khi mục tiêu đã bão hòa với các yêu
cầu và không thể đáp ứng lưu lượng truy cập thông thường, việc từ chối dịch vụ sẽ xảy ra đối
với các yêu cầu bổ sung từ người dùng thực tế
b) Cách thức hoạt động:
Các cuộc tấn công HTTP flood là một loại tấn công lớp “layer 7” “layer 7” là ứng dụng của
mô hình OSI và đề cập đến các giao thức internet như HTTP HTTP là cơ sở của các yêu cầu
internet dựa trên trình duyệt và thường được sử dụng để tải các trang web hoặc gửi nội dung
biểu mẫu qua Internet Giảm thiểu các cuộc tấn công layer ứng dụng đặc biệt phức tạp, vì lưu
lượng độc hại rất khó phân biệt với lưu lượng thông thường
Để đạt được hiệu quả tối đa, các tác nhân độc hại thường sử dụng hoặc tạo ra các botnet
để tối đa hóa tác động của cuộc tấn công của họ Bằng cách sử dụng nhiều thiết bị bị nhiễm
phần mềm độc hại, kẻ tấn công có thể tận dụng những nổ lực của chúng bằng cách tung ra
một khối lưu lượng tấn công lớn hơn
Trang 11Có hai loại tấn công HTTP flood:
+ Tấn công HTTP GET – hình thức tấn công này, nhiều máy tính hoặc thiết bị khác được phối hợp để gửi nhiều yêu cầu cho hình ảnh, tệp hoặc một số dữ liệu khác từ server mục tiêu Khi mục tiêu bị quá tải (ngập) trong các yêu cầu và phản hồi đến, việc từ chối dịch vụ
sẽ xảy ra đối với các yêu cầu bổ sung từ các nguồn lưu lượng hợp pháp
+ Tấn công POST HTTP – thông thường khi một biểu mẫu được gửi trên một trang web, server phải xử lý yêu cầu đến và đẩy dữ liệu vào một layer liên tục, thường là cơ sở dữ liệu Quá trình xử lý dữ liệu biểu mẫu và chạy các lệnh cơ sở dữ liệu cần thiết là tương đối nhiều so với lượng sức mạnh xử lý và băng thông cần thiết để gửi yêu cầu POST Cuộc tấn công này sử dụng sự chênh lệch về mức tiêu thụ tài nguyên tương đối, bằng cách gửi trực tiếp nhiều yêu cầu bài đến máy chủ được nhắm mục tiêu cho đến khi dung lượng của nó
bị bão hòa và xảy ra sự từ chối dịch vụ
c) Cách phòng chống:
Như đã đề cập trước đó, giảm nhẹ các cuộc tấn công layer 7 rất phức tạp và thường là nhiều mặt Một phương pháp là thực hiện một thách thức đối với máy yêu cầu để kiểm tra xem đó có phải là bot hay không, giống thử nghiệm captcha thường được tìm thấy khi tạo tài khoản trực tuyến Bằng cách đưa ra một yêu cầu như thách thức tính toán JavaScript, nhiều cuộc tấn công có thể được giảm nhẹ
Các cách khác để ngăn chặn HTTP flood bao gồm sử dụng tường lửa ứng dụng web (WAF),quản lý IP cơ sở dữ liệu uy tín để theo dõi và chọn lọc chặn các lưu lượng độc hại, và được phân tích nhanh chóng bởi các kỹ sư Có lợi thế về quy mô với hơn 20 triệu tài sản Internet cho phép Cloudflare khả năng phân tích lưu lượng truy cập từ nhiều nguồn khác nhau
và giảm thiểu các cuộc tấn công tiềm năng bằng các quy tắc WAF được cập nhật nhanh chóng
và các chiến lược giảm thiểu khác để loại bỏ lưu lượng DDoS của layer ứng dụng
Lý thuyết FTP (trang 126 giáo trình)
1 Cách thức hoạt động:
Trang 12← Truyền dữ liệu
-
← Truyền dữ liệu
-
← QUIT
→
← QUIT
→
2 Điểm khác biệt của FTP so với HTTP:
+ Có ít nhất 2 kênh TCP song song: 1 để điều khiển (control, dùng port 21); 1 để truyền tập tin (dùng port 20)
+ Mỗi tập tin truyền sẽ có 1 kênh truyền tập tin riêng biệt
+ Chỉ có một kênh điều khiển duy nhất trong suốt phiên sử dụng
+ Kênh điều khiển liên tục duy trì và kiểm tra trạng thái của client
=> Giao thức FTP quan tâm tới trạng thái của client (HTTP là phi trạng thái)
Lý thuyết email (trang 129 giáo trình)
1 Email hiện đại:
+ Có 4 thực thể, minh hoạ bằng giao tiếp giữa A và B qua email
[Trình xem thư A – máy chủ A – máy chủ B – trình xem thư B]
+ Máy chủ là hộp thư của user
+ Trình xem thư có thể là ứng dụng mail/trình duyệt web/v.v
+ Để gửi mail dùng giao thức SMTP hoặc SMTP + HTTP
+ Để đọc mail từ hộp thư dùng giao thức POP3/IMAP/HTTP
+ Đọc thư có thể truy cập trực tiếp vào máy chủ A hoặc B để đọc thư, nhưng với lượng user lớn và sử dụng máy chủ chung như hiện nay, truy cập trực tiếp sẽ xảy ra nhiều vấn đề
-> giao thức truy cập mail
+ POP3 là giao thức đọc mail tải toàn bộ mail xuống và là giao thức 1 chiều, trong khi đó IMAP chỉ get header và là giao thức 2 chiều
2 Giao thức SMTP:
Giao thức SMTP là giao thức để truyền thư từ -> máy chủ người gửi và từ đó tới -> máy chủ người nhận
3 Cách thức hoạt động:
+ SMTP khách tạo kết nối TCP tới SMTP chủ qua port 25
+ Thiết lập kết nối thành công, 2 máy trao đổi thông tin điều khiển
+ Sau khi hoàn tất quá trình giới thiệu và bắt tay (handshaking), SMTP khách có thể bắt đầu gửi thư cho SMTP chủ
+ Không như FTP, muốn gửi thư khác, có thể dùng lại kết nối TCP, không cần tạo lại + Sau khi không còn thư để gửi – đóng kết nối
Lý thuyết DNS (trang 139 giáo trình)
1 Cách thức hoạt động:
Trang 132 DNS spoofing (tấn công giả mạo DNS):
a) Cách thức tấn công:
- DNS Hijacking: làm nhiệm vụ cài phần mềm độc hại vào máy tính của người dùng
- DNS Cache Poisoning (hoặc còn gọi là Spoofing): chiếm quyền điều khiển DNS Cache và tiến hành thay đổi giá trị, thông tin trong đó thành thông tin của giả mạo
Ví dụ, khi bạn gõ địa chỉ quantrimang.com vào thanh địa chỉ của trình duyệt, hệ thống sẽ tiến hành xác nhận thông tin địa chỉ IP tương ứng với tên miền quantrimang.com và trả thông tin lại cho máy tính (kết quả là website quantrimang.com hiển thị đầy đủ trên trình duyệt) 1 tên miền có thể chứa nhiều địa chỉ IP, và khi bạn truy cập vào quantrimang.com thường xuyên thì hệ thống sẽ ghi nhận đây là website cần ghi nhớ, để rút ngắn thời gian cho những lần truy cập sau
Trang 14Bên cạnh đó, điểm khác biệt này lại được hacker khai thác khá triệt để (tất nhiên chúng
đã chuẩn bị sẵn nhiều server DNS giả mạo), và trong số nhiều địa chỉ DNS giả mạo đó sẽ có 1/10 tỉ lệ thành công, và được ưu tiên hơn so với DNS chính hãng của ISP (hacker tiến hành gửi tín hiệu đi liên tục) Đây là cách "làm việc" của DNS Cache Poisoning
Và vì cách làm việc riêng biệt như trên, DNS Hijacking và DNS Cache Poisoning được sử dụng xen kẽ lẫn nhau
b) Cách phòng chống:
- Bảo vệ máy tính từ bên trong: Thông thường, các cuộc tấn công DNS thường được thực hiện
từ bên trong mạng của bạn Vì vậy, để phòng chống DNS Spoofing thì bạn cần đảm bảo các thiết bị mạng của mình luôn an toàn Như vậy, nguy cơ bị DNS Spoofing sẽ giảm đáng kể, giảm khả năng các Host bị thỏa hiệp và được dùng để khởi chạy tấn công DNS Spoofing
- Không dựa vào DNS cho các hệ thống an toàn, bảo mật: Đối với các hệ thống an toàn, có
độ nhạy cảm cao và đòi hỏi tính bảo mật thì không nên duyệt internet trên nó Đây là một cách hiệu quả để không phải dùng đến DNS Nếu bạn có Hostname để thực hiện một số công việc thì bạn nên điều chỉnh những gì cần thiết trong file cấu hình thiết bị
- Dùng hệ thống phát hiện xâm nhập – IDS: IDS là một hệ thống có khả năng phát hiện xâm nhập Khi nó được đặt và triển khai đúng sẽ có thể vạch mặt hình thức giả mạo DNS và ARP Cache
- Thay thế DNS bằng DNSSEC: DNSSEC là một giải pháp mới dùng để thay thế cho DNS DNSSEC sử dụng các bản ghi DNS có chữ ký để đảm bảo sự hợp lệ hóa đáp trả truy vấn
CHƯƠNG 3: TẦNG VẬN CHUYỂN (TRANSPORT)
Bài tập trong sách
BT1 Có Các nhà phát triển có thể xử lý truyền dữ liệu tin cậy ở tầng Ứng dụng Tuy nhiên,
điều này sẽ đòi hỏi một lượng lớn công việc và gỡ lỗi Ở tầng Ứng dụng, phần mềm có thể tự
xử lý độ tin cậy Ví dụ, phần mềm có thể lưu các trường ở header TCP mà không có ở header UDP trong phần dữ liệu của gói để tự mô phỏng lại quá trình TCP
Để đảm bảo độ tin cậy, nhà phát triển sẽ cần thêm ở lớp ứng dụng:
- Chức năng ACK giúp đảm bảo các phân đoạn dữ liệu nhận được
- Sequence number giúp sắp xếp thứ tự các phân đoạn dữ liệu
- Kiểm soát luồng dữ liệu
BT2 Do UDP nhanh hơn và ít theo quy tắc hơn Các nhà lập trình có thể không muốn phần
mềm của mình sử dụng chức năng kiểm soát tắc nghẽn của TCP do chức năng này có thể khiến việc truyền dữ liệu chậm hơn Mặt khác, TCP đã được phát triển, xây dựng sâu vào trong nhân của hệ điều hành, vào phần cứng nên để có thể đưa ra sự thay đổi lớn cho TCP gần như là điều không thể Đối với UDP, họ có thể tự xử lý độ tin cậy cho nó theo ý muốn của mình
BT10 Đối với mỗi kết nối thường trực, Web server tạo một socket riêng Mỗi socket kết nối
được xác định bằng 4-tuple: IP nguồn, port nguồn, IP đích, port đích Khi Host C nhận các gói tin, nó sẽ kiểm tra 4 trường này trong datagram/segment để xác định socket sẽ truyền phân đoạn TCP Do đó, các request từ A và B đi qua các socket khác nhau Cả hai socket này đều sử dụng port đích là 80; tuy nhiên, ID các socket này có giá trị khác nhau theo địa chỉ IP nguồn
Trang 15BT11 Sequence number cần thiết để receiver xác định xem một gói tin tới có chứa dữ liệu
mới hay là một gói truyền lại; hỗ trợ sắp xếp thứ tự; và cung cấp một số thông tin về các gói
có khả năng bị mất Timer cần thiết để phát hiện các gói bị mất Nếu không nhận được ACK cho một gói đã gửi trong khoảng thời gian của timeout của gói, gói đó (hoặc ACK hoặc NACK của nó) xem như đã mất Do đó, gói tin cần được gửi lại
BT18+19 Fast Restransmit: Thường thì một segment được truyền lại khi vượt quá thời gian
chờ gửi lại (thựcchất là khoảng thời gian chờ gói tin hồi đáp) Với Fast Retramsmit, khi bên gửi nhận được 3 gói ACK phản hồi giống nhau thì bên gửi sẽ lập tức truyền lại segment bị mất
mà không cần phải chờ cho tới khi hết timeout
Fast Recovery: Khi nhận được một gói tin ACK hồi đáp cho dữ liệu đã gửi Lúc này kích thước cwnd = ssthresh Thuật toán Fast Recovery quy định việc thực hiện thuật toán tránh tắc nghen ngay khi thực hiện phát lại nhanh
P14 Câu hỏi: Giả sử phía gửi sẽ gửi dữ liệu không thường xuyên Giao thức chỉ dùng NAK có
thích hợp hơn giao thức sử dụng ACKs hay không? Tại sao?
Bây giờ giả sử phia gửi đã có rất nhiều dữ liệu để gửi và kết nối end-to-end có rất ít mất mát Trong trường hợp này, giao thức chỉ dùng NAK có thích hợp hơn giao thức sử dụng ACKs không? Tại sao?
Trả lời: Trong giao thức chỉ dùng NAK, mất gói x chỉ có thể phát hiện được bởi phía nhận khi
phía nhận nhận được gói x-1 và ngay sau đó là x+1
Nếu phía gửi gửi không thường xuyên, và có 1 khoảng thời gian delay dài giữa 2 gói tin x và x+1 thì chỉ đến khi nào gói x+1 được gửi đi và đến được phía nhận thì phía nhận mới phát hiện được là gói x bị mất => sẽ mất 1 khoảng thời gian dài để khôi phục gói x theo giao thức chỉ dùng NAK
Mặt khác, nếu dữ liệu được gửi thường xuyên thì việc khôi phục theo giao thức chỉ dùng NAK
sẽ xảy ra rất nhanh chóng Hơn nữa, nếu lỗi không thường xuyên xảy ra thì NAK chỉ thỉnh thoảng mới được gửi (khi cần thiết) còn ACK thì không cần gửi Do dó làm giảm đáng kể trong thông tin phản hồi
=> Giao thức chỉ dùng NAK tối ưu hơn giao thức sử dụng ACK
Lý thuyết TCP và UDP (trang 225 giáo trình)
1 Mô tả ACK và seq của TCP trong quá trình duyệt web
Trang 162 TCP truyền thông tin cậy: TCP đảm bảo dữ liệu gửi đúng 100% Ở tầng vận chuyển, TCP
xây dựng dịch vụ truyền dữ liệu tin cậy trên nền dịch vụ không tin cậy của IP Dịch vụ truyền
dữ liệu tin cậy của TCP đảm bảo rằng: luồng dữ liệu mà bên nhận nhận và đọc được là
không lỗi, không trùng lặp, đúng thứ tự và sẽ được gửi lại nếu mất gói tin TCP sử dụng thời
gian timeout, gói tin ACK, sequence number, kỹ thuật checksum để thực hiện dịch vụ này…
3 Ứng dụng sử dụng UDP:
- DHCP sử dụng UDP là vì: DHCP là giao thức cấp phát địa chỉ IP tự động UDP cho phép
truyền gói tin quảng bá (broadcast), cụ thể là cấu trúc gói UDP không cần thiết chứa địa chỉ
nguồn (trong khi TCP bắt buộc phải có) nên client có thể gửi request tới DHCP server khi chưa
có địa chỉ IP
- DNS sử dụng UDP (DNS cũng có thể sử dụng TCP) là vì:
+ UDP là giao thức phi kết nối, không có cơ chế bắt tay Nếu ứng dụng DNS gửi request
thì nó có thể không nhận được response (mất request hoặc response) Khi đó, nó sẽ gửi
request cho một DNS server khác hoặc báo không nhận được response về ứng dụng Do
đó, DNS sử dụng UDP để tránh được sự chậm trễ, giúp việc phân giải tên miền diễn ra
nhanh hơn
+ Thông tin cần thiết trong gói tin truy vấn DNS là rất ít, phù hợp cho việc dùng UDP
4 Đảm bảo truyền thông tin cậy cho UDP:
Để dùng giao thức UDP mà dữ liệu được đảm bảo 100% thì việc đảm bảo truyền dữ liệu
tin cậy sẽ được thực hiện ở tầng Ứng dụng Cụ thể là, ở tầng Ứng dụng ta cài đặt thêm các
chức năng tương tự như TCP là: theo dõi kết nối, gói tin xác nhận, sắp xếp thứ tự, điều khiển
luồng,…
Một giải pháp có thể nghĩ tới đó là: Ngoài các gói tin gửi đến receiver thì sender gửi thông
tin là danh sách các gói tin đó Tương tự, receiver gửi lại cho sender danh sách các gói tin chưa
nhận được để sender gửi lại Ngoài ra, các chức năng khác cũng được thực hiện bằng các kỹ
Trang 17thuật trên tầng Ứng dụng Các ứng dụng, phần mềm hỗ trợ truyền tin cậy bằng UDP là Lite, UDT,… Giao thức HTTP/3 cũng được triển khai thực hiện trên UDP vì TCP đã được phát triển, xây dựng sâu trong HĐH, phần cứng, nên gần như không thể đưa ra sự thay đổi lớn cho TCP còn UDP thì hoàn toàn không bị giới hạn gì cả
UDP-Tất nhiên, việc đảm bảo việc truyền thông tin cậy cho UDP sẽ làm mất bản chất của UDP
và khiến việc truyền tin chậm hơn
5 So sánh TCP và UDP:
TCP đảm bảo dữ liệu nhận chính xác và đúng thứ tự như khi gửi, nhờ xác nhận đã nhận
gói tin bằng ACK
TCP có nhiều phương pháp kiểm tra tính đúng đắn của dữ liệu; còn UDP chỉ có checksum TCP có header là 20 byte, cho phép 40 byte dữ liệu tùy chọn; UDP có header 8 byte, chỉ
cho phép dữ liệu bắt buộc
TCP chậm vì thực hiện nhiều chức năng; UDP nhanh vì cung cấp hạn chế các chức năng TCP là tốt nhất cho các ứng dụng yêu cầu độ tin cậy: web, truyền file, email và Secure
Shell (SSH)…;
UDP là tốt nhất cho các ứng dụng yêu cầu tốc độ, chấp nhận bị mất mát/lỗi: VPN, phát
video trực tuyến, VoIP, phát sóng trực tiếp và chơi game trực tuyến…
TCP có sự sắp xếp thứ tự giữa các gói tin bằng sequence number
TCP có cơ chế điều khiển luồng (flow control)
Nếu gói tin bị lỗi hoặc mất thì TCP truyền lại (retransmisson); UDPbỏ qua gói tin lỗi
TCP có quản lý kết nối: mở kết nối bằng 3 bước, đóng kết nối bằng 4 bước
6 TCP flow control (kiểm soát luồng):
- Flow control là quy trình quản lý số khung truyền dữ liệu giữa hai đầu kết nối của mạng lưới, giúp hạn chế bên gửi làm tràn bộ nhớ đệm của bên nhận
- Cả bên gửi (sender) và bên nhận (receiver) làm nhiệm vụ điều khiển tốc độ
- Vì cơ chế hoạt động của dịch vụ này là receiver sẽ nói cho sender biết bộ nhớ đệm của receiver còn bao nhiêu thông qua giá trị của trường Cửa số nhận (Window) trong mỗi gói tin gửi đến sender Tương tự, sender cũng phải theo dõi lượng dữ liệu đã gửi nhưng chưa được báo nhận Để đảm bảo không làm tràn bộ nhớ đệm, sender phải giữ lượng dữ liệu đã gửi nhưng chưa được báo nhận không vượt quá kích thước cửa sổ nhận mà receiver đã cung cấp
7 TCP congestion control (kiểm soát tắc nghẽn):
Nếu hai ứng dụng (một sử dụng TCP, một sử dụng UDP) muốn gửi càng nhiều dữ liệu càng tốt để tranh giành băng thông thì: Vì TCP điều chỉnh theo lượng tài nguyên có sẵn và UDP gửi càng nhiều dữ liệu càng tốt nên TCP sẽ ngắt kết nối và nhường gần như toàn bộ băng thông mạng cho ứng dụng sử dụng UDP
8 Quản lý kết nối của TCP:
- Nguyên nhân TCP mở kết nối cần 3 bước:
Bắt tay hai chiều sẽ chỉ cho phép một bên thành lập ISN và bên kia thừa nhận điều đó Có nghĩa là chỉ một bên có thể gửi dữ liệu Nhưng TCP là một giao thức truyền thông hai chiều,
Trang 18có nghĩa là đầu cuối phải có khả năng gửi dữ liệu một cách đáng tin cậy Cả hai bên cần thành lập ISN và cả hai bên cần phải thừa nhận ISN của bên kia
Vì vậy, trong thực tế, những gì bạn có chính xác là mô tả của bạn về bắt tay hai chiều, nhưng theo từng hướng Do đó, bốn sự kiện xảy ra Và một lần nữa, hai lá cờ ở giữa xảy ra trong cùng một gói Vì ba gói như vậy có liên quan đến một quá trình khởi tạo kết nối TCP đầy
đủ
- Nguyên nhân TCP đóng kết nối cần 4 bước:
The way is actually two pairs of two-way handshakes If termination is a REAL way actions, the 2 and 3 indeed can be set 1 at the same packet But this a two-phase work: the first phase (i.e the first two-way handshake) is :
four-Client -FIN -> Server Client < -ACK - Server
At this moment the client has been in FIN_WAIT_2 state waiting for a FIN from Server As
a bidirectional and full-duplex protocol, at present one direction has break down, no more data would be sent, but receiving still work, client has to wait for the other "half-duplex" to
Trang 199 Cấu trúc gói tin TCP:
- Gói tin TCP Reset (RST):
When an unexpected TCP packet arrives at a host, that host usually responds by sending
a reset packet back on the same connection A reset packet is simply one with no payload
and with the RST bit set in the TCP header flags
There are a few circumstances in which a TCP packet might not be expected; the two
most common are: (1) The packet is an initial SYN packet trying to establish a connection to
a server port on which no process is listening; (2) The packet arrives on a TCP connection
that was previously established, but the local application already closed its socket or exited
and the OS closed the socket
Other circumstances are possible, but are unlikely outside of malicious behavior such as
attempts to hijack a TCP connection
Lý thuyết các nguyên lý truyền dữ liệu tin cậy (trang 202 giáo trình)
1 So sánh Go-Back-N và Selective Repeat:
Truyền lại tất cả các khung được gửi sau khung
mà nghi ngờ bị hỏng hoặc bị mất
Chỉ truyền lại những khung hình bị nghi ngờ bị mất hoặc bị hỏng