Nếu lựa chọn một máy tính để lưu trữ và cho phép các máy tính khác trên mạng sử dụng dữ liệu này sẽ làm tăng khả năng tập trung và duy trì các thông tin.. Nếu chỉ sử dụng một nơi để lưu
Trang 1Hµ Néi - 2005
Trang 2
NGƯỜI HƯỚNG DẪN PGS – TS NGUY ỄN VIỆT HƯƠNG
Hµ Néi - 2005
Trang 3Mục lục
Mở đầu 4
Chương I : Lý thuyết về mạng máy tính 6
1.1 Mạng máy tính 6
1.1.1 Định nghĩa mạng máy tính 6
1.1.2 Phân loại mạng máy tính 7
1.2 Giao thức mạng TCP/IP 9
1.2.1 Kiến trúc phân tầng OSI 9
1.2.2 Kiến trúc phân tầng TCP/IP 13
1.2.3 Giao thức liên mạng IP 15
1.2.3.1 Cấu trúc Header của IP Datagram 17
1.2.3.2 Quá trình phân mảnh gói dữ liệu 20
1.2.3.3 Phương pháp đánh địa chỉ trong TCP/IP 23
1.2.3.4 Định tuyến IP 27
1.2.4 TCP và UDP 29
1.2.4.1 Giao thức TCP 29
1.2.4.2 Giao thức UDP 36
1.2.5 Giao thức điều khiển ICMP và ARP 37
1.2.5.1 Giao thức ICMP 37
1.2.5.2 Giao thức phân giải địa chỉ ARP 38
1.3 Các dịch vụ thông tin trên mạng 39
1.3.1 Nguyên tắc tổ chức 40
1.3.2 Các dịch vụ thông tin cơ bản 41
1.3.2.1 Dịch vụ thư điện tử(E-mail) 41
1.3.2.2 Dịch vụ Web 41
1.3.2.3 Dịch vụ truyền file 42
1.3.2.4 Telnet 43
Chương II : điểm yếu về an ninh – an toàn mạng IP 44
2.1 Đánh giá các điểm yếu về an ninh-an toàn mạng IP 44
2.1.1 Tại sao mạng IP có nhiều điểm yếu về an ninh-an toàn? 44
2.1.2 Các điểm yếu về an ninh-an toàn 44
2.2 Các hình thức tấn công mạng máy tính 45
2.2.1 Do thám mạng 46
2.2.2 Các cuộc tấn công truy nhập 48
2.2.3 Tấn công từ chối dịch vụ (Denial of Service) 50
Chương III : công nghệ phòng chống xâm nhập 58
3.1 Tổng quan về an ninh mạng máy tính 58
3.2 Các lĩnh vực an ninh mạng máy tính 58
3.2.1 An toàn mạng (Network Security) 58
3.2.2 An toàn ứng dụng (Application Security) 59
3.2.3 An toàn hệ thống (System Security) 60
3.3 Thực hiện an ninh-an toàn mạng IP 62
3.4 Các thủ tục an ninh-an toàn 63
3.5 Công nghệ an ninh-an toàn IP 63
3.5.1 Công nghệ mã mật (Cryptography) 63
Trang 43.5.2 Công nghệ tường lửa (Firewalls) 67
3.5.3 Các công cụ giám sát (Monitoring Tools) 68
3.5.4 Các công cụ phân tích 69
Chương iV: Hệ phát hiện đột nhập - IDS (Intrusion Detection System) 72
4.1 Giới thiệu 72
4.2 Khái niệm chung 72
4.3 Phân loại những hoạt động phát hiện đột nhập (IDS) 75
4.4 Mô hình chức năng của một hệ phát hiện đột nhập 77
4.4.1 Bộ theo dõi giám sát 77
4.4.2 Bộ phân tích 77
4.4.4 Bộ phản ứng (Response): 78
4.5 Các đặc tính kỹ thuật của hệ phát hiện đột nhập 79
4.5.1 Các phương pháp phân tích phát hiện đột nhập 79
4.5.2 Những cách phản ứng lại sự đột nhập 81
4.6 Hệ phát hiện đột nhập mạng (Network based IDS-NIDS) 82
4.6.1 Khái niệm về hệ phát hiện đột nhập mạng 82
4.6.2 Một số dạng tấn công mà IDS phát hiện được 85
4.6.3 Cách bố trí hệ phát hiện đột nhập trong đoạn mạng bảo vệ 86
4.6.4 Ưu điểm của hệ phát hiện đột nhập mạng 87
4.6.5 Nhược điểm của hệ phát hiện đột nhậo mạng 88
4.7 Hệ phát hiện đột nhập trạm (Host based IDS-HIDS) 88
4.7.1 Định nghĩa 88
4.7.2 Một số chức năng của hệ phát hiện đột nhập trạm 90
4.7.2.1 Quản lý các kết nối tới máy tính nó bảo vệ 90
4.7.2.2 Giám sát được các hoạt động đăng nhập (Login) 91
4.7.2.3 Giám sát các hoạt động trên trạm 91
4.7.2.4 Quản lý các hoạt đông trên trạm mà nó bảo vệ 91
4.7.2.5 Quản lý tệp hệ thống 91
4.7.3 Cài đặt hệ thống phát hiện đột nhập trạm 92
Chương V : Xây dựng hệ thống NIDS và ứng dụng thực tế 94
5.1 Giới thiệu 94
5.1.1 Hệ SNORT 94
5.1.2 Tường lửa cá nhân (Personal Firewall) 95
5.2 Hệ thống NIDS Snort 95
5.2.1 Mô tả thuật toán và chương trình 95
5.2.2 Module bắt và giải mã gói (Packet Decoder) 97
5.2.3 Module tiền xử lý (Preprocessors) 101
5.2.4 Module phát hiện đột nhập (Detection Engine) 105
5.2.5 Module Cảnh báo - Lưu trữ (Logging and Alerting System) 108
5.2.6 Một số chương trình hiện thị và phân tích cảnh báo dựa trên cơ sở dữ liệu của Snort 109
5.2.6.1 Chương trình SAM 109
5.2.6.2 Chương trình ACID 110
5.2.7 Tập luật của hệ thống NIDS Snort 112
5.2.7.1 Cấu trúc của luật 112
5.2.7.2 Nội dung của luật (rule body) 114
Trang 55.2.8 Cấu hình Snort 115
5.3 Phát triển bộ đáp trả đối với sự đột nhập mạng dựa trên Snort 116
5.3.1 Khởi tạo đăng ký của bộ đáp trả 116
5.3.2 Thiết lập các tham số 117
5.3.2 Hành động đáp trả sự đột nhập 117
5.4 Tường lửa cá nhân (Personal Firewall) 117
kết luận 118
Tài liệu tham khảo 120
Trang 6Mở đầu
Có một nhận xét rất hay rằng “ Điều tuyệt vời của Internet là kết nối với mọi người, nhưng điều khủng khiếp nhất của Internet cũng là kết nối với mọi người”
Internet, mạng của các mạng thông tin máy tính toàn cầu ra đời đã
không ngừng phát triển đem lại cho con người rất nhiều lợi ích, đáp ứng
ngày càng phong phú hầu hết các dịch vụ thông tin của xã hội, của tri thức loài người, tiến tới trở thành hạ tầng thông tin liên lạc chính của xã hội thông tin tương lai
Cùng với việc ứng dụng CNTT, mạng Internet ngày càng phát triển, đặc biệt là sự phát triển của hệ thống Internet băng rộng thì số vụ xâm phạm an ninh, bảo mật thông tin mạng đã và đang gia tăng theo hàm số mũ Theo các chuyên gia về an ninh mạng, xu hướng gần đây cho thấy bên cạnh sự bùng
nổ của các loại virus và sâu máy tính, của các vụ tấn công vào các máy trạm không được bảo mật, số vụ tấn công ứng dụng ngày càng tăng, đặc biệt là các vụ tấn công ứng dụng Web do việc sử dụng các công nghệ Web ngày càng phổ biến Theo thống kê của tạp chí Computer Economics tháng
6/2004, các cuộc tấn công mạng trên toàn cầu gây thiệt hại hàng tỉ USD mỗi năm và con số này không ngừng gia tăng
Do đặc điểm nhiều người sử dụng và phân tán về mặt địa lý nên việc bảo
vệ các tài nguyên thông tin trên mạng tránh khởi sự mất mát, xâm phạm (dù vô tình hay cố ý) trong môi trường hiện nay là cực kỳ phức tạp Vì vậy, việc nghiên cứu, xây dựng, và quản lý một hệ thống mạng đảm bảo về an ninh-an toàn mạng đang là một vấn đề rất cần thiết trong bối cảnh hiện nay ở nước ta Hiện nay có rất nhiều công nghệ và giải pháp an ninh trên mạng nhưng vấn đề đặt cho người thiết kế và tích hợp hệ thống, cũng như các nhà quản trị mạng là phải chọn và xây dựng giải pháp phù hợp với yêu cầu kinh tế và kỹ thuật
Trang 7Trong luận văn này, tôi trình bày về một số công nghệ an ninh-an toàn mạng IP hiện nay đang được sử dụng Đồng thời tôi cũng đưa ra mô hình và giải pháp kết hợp giữa hệ phát hiện đột nhập mạng và tường lửa cá nhân để
đảm bảo an ninh-an toàn cho một mạng dùng riêng
Kết cấu của luận văn gồm 5 chương như sau :
Tôi xin chân thành cảm ơn PGS.TS Nguyễn Việt Hương người đã trực
tiếp hướng dẫn tôi, cùng các thầy cô ở khoa Điện Tử Viễn Thông trường Đại học Bách Khoa Hà Nội và các đồng nghiệp tại TT CNTT Ngân hàng Công Thương Việt Nam đã tạo điều kiện giúp đỡ tôi trong quá trình học tập và hoàn thành luận văn này
Trang 8Chương I : Lý thuyết về mạng máy tính
1.1 Mạng máy tính
1.1.1 Định nghĩa mạng máy tính
Mạng máy tính là một tập hợp các phần cứng và phần mềm được kết nối với nhau cho phép các máy tính có thể giao tiếp với nhau và chia sẻ các tài nguyên chung từ những vị trí địa lý khác nhau
Mạng máy tính bao gồm các thành phần chính sau:
- Máy phục vụ (Server) : Chia sẽ các tài nguyên và dịch vụ nói chung cho mạng
- Máy khách (Client) : Sử dụng các dịch vụ mạng mà Servers cung cấp
- Kết nối vật lý giữa các máy tính: Cáp mạng, wireless
- Các tài nguyên (Resources) : Dữ liệu, các ứng dụng và các phần cứng
được cung cấp bởi các Servers trên mạng cho các Client
- Giao thức mạng (Network protocol) : Ngôn ngữ cho phép các máy tính Server và Client giao tiếp với nhau
- Cấu trúc mạng (Network topology)
Mạng máy tính tạo ra môi trường làm việc với nhiều người sử dụng phân tán, cho phép nâng cao hiệu quả khai thác tài nguyên chung rất nhiều so với khi từng máy hoạt động đơn lẻ
Mạng máy tính có những ưu điểm so với sử dụng các máy tính riêng rẻ:
- Tăng độ tin cậy của hệ thống nhờ khả năng thay thế khi xảy ra sự cố đối với một máy tính nào đó (đặc biệt quan trọng đối với các ứng dụng tời gian thực)
- Chia sẻ dữ liệu: Những dữ liệu dùng chung cho nhiều người trên mạng
có thể được tập trung trên một máy Nếu lựa chọn một máy tính để lưu trữ và cho phép các máy tính khác trên mạng sử dụng dữ liệu này sẽ làm tăng khả năng tập trung và duy trì các thông tin Máy tính có các
Trang 9tính năng trên gọi là máy chủ phục vụ (server) có các phần mềm và hệ
điều hành đặc biệt dành riêng
- Chia sẻ tài nguyên phần cứng: Mạng máy tính có thể chia sẻ các tài nguyên phần cứng: fax, modems, máy quét (scanners), đĩa cứng (hard - disks), đĩa mềm (floppy - disks), ổ đĩa CD (CD- ROMS), Băng từ (Taper), máy vẽ (Plotter) Nhiều máy tính có thể dùng chung một thiết
bị phần cứng để tiết kiệm chi phí
- Duy trì dữ liệu: Một mạng máy tính cho phép các dữ liệu quan trọng
được tự động lưu trữ dự phòng tới một nơi để tránh bị lỗi khi có sự cố Việc bảo trì từ dữ liệu sao lưu trên từng máy độc lập là một công việc hết sức khó khăn và tốn nhiều thời gian Nếu chỉ sử dụng một nơi để lưu trữ các dữ liệu dự phòng (thông thường là lưu trữ vào băng từ trên một máy chủ của mạng), sẽ dễ dàng tìm kiếm để khôi phục lại dữ liệu đã bị mất
- Bảo vệ dữ liệu: Mạng máy tính cung cấp một môi trường bảo mật cho toàn mạng Với các máy tính độc lập, khi truy cập vào máy tính đó có nghĩa là truy cập được tất cả các thông tin có trên máy Mạng máy tính cung cấp cơ chế bảo mật (security) bằng mật khẩu (password), cho phép máy chủ mạng phân biệt quyền hạn sử dụng của từng người dùng
- Liên lạc với nhau: Mạng máy tính cúng có thể cho phép mọi người liên lạc với nhau Một trong những lợi ích lớn nhất của mạng đó là thư điện
tử Những người sử dụng mạng có thể ngay tức khắc gửi các thông điệp tới những người khác thông qua thư điện tử (electronic mail) Có thể gửi kèm các tài liệu vào thưu điện tử và có thể gửi chuyển tiếp cho nhiều người
1.1.2 Phân loại mạng máy tính
Trang 10Có nhiều cách phân loại mạng khác nhau tuỳ thuộc vào yếu tố được chọn
để làm chỉ tiêu phân loại như: khoảng cách địa lý, kỹ thuật chuyển mạch hay kiến trúc mạng Một số cách phân loại thường được dùng như sau:
a Phân loại theo khoảng cách địa lý
• Mạng cục bộ LAN (Local Area Network): là mạng được đặt
trong phạm vi tương đối nhỏ (trong một toà nhà, trong một trường học ) với khoảng cách lớn nhất giữa các máy tính chỉ trong vòng vài chục kilômét
• Mạng đô thị MAN (Metropolitan): Là mạng được cài đặt trong
phạm vi một đô thị hoặc trong một trung tâm kinh tế-xã hội có bán kính khoảng 100km trở lại
• Mạng diện rộng WAN (Wide Area Network): phạm vi của mạng
có thể vượt qua biên giới một quốc gia và thậm chí cả lục địa
• Mạng toàn cầu GAN (Global Area Network): phạm vi của
mạng trải rộng trên khắp cả các lục địa trên trái đất
b Phân loại theo cấu trúc liên kết mạng (Network Topology)
• Cấu trúc Bus (Bus topology): Đường truyền chính của mạng là
một đường cáp đơn được giới hạn hai đầu bởi một loại đầu nối
đặc biệt gọi là terminator Mỗi trạm được nối vào bus qua một
đầu nối chử T hoặc một bộ thu phát (Tranceiver) Các máy không thể đồng thời truyền dữ liệu trên mạng bus
• Cấu trúc Star (Star topology): Tất cả các máy tính nối vào
mạng thông qua một thiết bị trung tâm (hub, switch, router) Thiết bị này có nhiệm vụ nhận tín hiệu từ các máy tính và chuyển tín hiệu này đến các máy đích Thiết bị trung tâm này
đóng vai trò chính là thực hiện việc “bắt tay” giữa các máy tính
Trang 11cần trao đổi thông tin với nhau, thiết lập các liên kết point giữa chúng
point-to-• Cấu trúc Ring (Ring Topology): Các máy tính được nối với nhau
ở dạng vòng, tín hiệu được lưu chuyển trên vòng theo một chiều Mỗi máy tính được nối vào mạng thông qua bộ chuyển tiếp (repeater) có nhiệm vụ nhận tín hiệu rồi chuyển sang máy
kế tiếp trên vòng Như vậy tín hiệu được lưu chuyển trên vòng theo một chuổi liên tiếp các liên kết điểm-điểm giữa các repeater Có thể sử dụng phối hợp các kiểu ghép nối mạng bus, star, ring để mở rộng mạng
c Phân loại theo mô hình mạng (Network Models)
• Mạng ngang hàng (peer-to-peer): Trong mô hình mạng này, bất
kỳ một máy tính nào cũng có thể hoạt động ở cả hai chế độ Client và Server Nó có thể chia sẽ các tài nguyên của nó với các máy tính khác và cũng có thể sử dụng các tài nguyên của các máy tính khác chia sẽ với quyền phù hợp
• Mạng khách chủ (Client-Server): Trong mô hình mạng này, có tối thiểu một Server đóng vai trò quản lý tập trung các tài nguyên chia sẽ và các users, máy tính trên mạng
Trong thực tế, khi số lượng các máy tính trong mạng lớn hơn 10 máy thì mô hình mạng này thường được sử dụng nhằm quản lý tốt và tập trung hơn các tài nguyên, người sử dụng trong mạng
1.2 Giao thức mạng TCP/IP
1.2.1 Kiến trúc phân tầng OSI
Để việc tổ chức trao đổi số liệu giữa các ứng dụng trong hệ thống mạng được thuận tiện và không quá phức tạp, người ta phân chia hệ thống thành các chức năng nhỏ, có phân cấp, độc lập và “dựa vào nhau, có tác dụng tương hổ cho nhau” Nguyên tắc tổ chức hệ thống bằng cách phân chia
Trang 12hệ thống thành các chức năng có phân cấp không những cho phép giảm độ phức tạp thiết kế và thực hiện hệ thống thông qua việc xác định các chức năng cấu thành hệ thống và giao diện giữa các chức năng đó mà không qui
định bắt buộc phải thực hiện các chức năng đó như thế nào, mà còn cho phép thực hiện việc kết nối mở các hệ thống không đồng nhất, nghĩa là kết nối
giữa các hệ thống có kiến trúc phần cứng, phần mềm hệ thống và cấu trúc số liệu không giống nhau Mô hình 7 mức OSI là mô hình kết nối mở các hệ thống tính toán được xây dựng trên nguyên tắc phân mức chức năng như vậy Mô hình OSI hợp nhất các chuẩn mực chất lượng sau:
Được thiết kế để thiết lập nên các tiêu chuẩn cho hoạt động truyền dữ liệu, nhằm khuyến khích các khả năng liên kết hoạt động giữa nhiều nhà sản xuất
Bao gồm 7 tầng, với một tập hợp chức năng mạng cụ thể được phân phối cho từng phần và các nguyên tắc áp dụng giao diện giữa các tầng
Chỉ định một tập hợp giao thức và giao diện sử dụng ở mỗi tầng
Để xây dựng mô hình OSI, ISO cũng xuất phát từ kiến trúc phân tầng đã trình bầy ở trên, và dựa trên các nguyên tắc chủ yếu sau:
Cần hạn chế số lượng các tầng
Tạo ranh giới các tầng sao cho các chức năng khác nhau được tách biệt với nhau, và sử dụng công nghệ cho các tầng cũng độc lập với nhau
Các chức năng giống nhau được đặt vào cùng một tầng
Chọn ranh giới cho các tầng theo kinh nghiệm đã được chứng tỏ là thành công
Các chức năng được xác định sao cho có thể thiết kế tại tầng mà gây
ảnh hưởng ít nhất tới các tầng khác kề nó
Tạo một tầng khi dữ liệu được xử lý một cách khác biệt
Mỗi tầng chỉ có các ranh giới với tầng kề trên và dưới nó
Có thể chia một tầng thành nhiều tầng con khi cần thiết
Trang 13 Tạo các tầng con để cho phép giao tiếp với các tầng kế cận
Cho phép huỷ bỏ các tầng con khi thấy không các thiết
Mỗi tầng trong mô hình OSI tồn tại như một module đơn thể, nghĩa là việc thay đổi giao thức sử dụng trong một tầng không làm ảnh hưởng đến các tầng khác
Application Presentation Session Transport Network Datalink Physical
Hình 1.1 Cấu trúc mô hình OSI a) Tầng ứng dụng (Application Layer)
Có chức năng cung cấp các phương tiện để người sử dụng có thể truy nhập được vào môi trường OSI Đồng thời cung cấp các dịch vụ mạng
b) Tầng biểu diễn thông tin (Presentation Layer)
Tầng này hoạt động như bộ phiên dịch dữ liệu cho mạng Nó thực hiện việc chuyển đổi cú pháp dữ liệu để đáp ứng yêu cầu truyền dữ liệu của các ứng dụng qua môi trường OSI
c) Tầng phiên (Session Layer)
Tầng phiên cung cấp các chức năng quản lý truyền thông giữa các ứng dụng chạy trên các máy tính khác nhau như: Thiết lập, duy trì, đồng bộ hoá và huỷ bỏ các phiên truyền thông giữa các ứng dụng Ngoài ra nó còn thực hiện nhiều chức năng hỗ trợ khác nhau, cho phép các quy trình giao tiếp trên mạng như chứng thực người sử dụng và bảo vệ truy cập tài nguyên
Trang 14d) Tầng giao vận (Transport layer)
Thực hiện việc truyền dữ liệu giữa hai đầu giao tiếp, tiến hành kiểm soát lỗi và điều khiển luồng dữ liệu giữa hai đầu mút truyền dữ liệu nếu cần
Nó cũng có thể thực hiện việc ghép kênh, cắt hợp dữ liệu nếu cần Nói chung, nhiệm vụ của tầng này đảm bảo cho Datagram được chuyển giao theo thứ tự gửi đi và không bị mất mát hay trùng lặp
e) Tầng mạng (Network Layer)
Tầng mạng chịu trách nhiệm điều khiển hoạt động của mạng con, nó quyết định dữ liệu sẽ đi theo lộ trình vật lý nào, căn cứ vào điều kiện hiện tại của mạng, độ ưu tiên của dịch vụ và các điều kiện khác Thực hiện cả chức năng cắt hợp dữ liệu nếu cần
f) Tầng liên kết dữ liệu (Datalink Layer)
Tầng này có chức năng cung cấp các phương tiện để truyền thông tin qua liên kết vật lý đảm bảo tin cậy thông qua các cơ chế đồng bộ hoá, kiểm soát lỗi và điều khiển luồng dữ liệu, báo nhận và phục hồi lỗi xảy ra ở tầng vật
Mức này đảm bảo các công việc sau:
- Biến đổi số liệu từ dạng song song (Byte/Word) sang dạng nối tiếp (Bit)
và ngược lại
- Biến đổi và truyền số liệu dưới dạng bit trên kênh truyền vật lý cụ thể
- Thích ứng về tính chất điện, tính chất cơ học giữa thiết bị cuối với môi trường truyền dẫn (ví dụ: mức tín hiệu điện, ổ nối dây dẫn )
Trang 151.2.2 Kiến trúc phân tầng TCP/IP
Các mạng máy tính hiện nay và đặc biệt là mạng Internet chủ yếu sử dụng chồng giao thức TCP/IP như là giao thức chuẩn chung Do đó việc tìm hiểu một cách sâu sắc các giao thức trong chồng giao thức TCP/IP cũng như
sự hoạt động của nó giúp cho chúng ta thấy được mạng máy tính hoạt động như thế nào, có những đặc trưng, những điểm yếu gì Những kẻ tấn công đã lợi dụng những yếu điểm đó như thế nào để thực hiện các cuộc tấn công của mình và chúng ta cần phải làm gì để đảm bảo cho mạng máy tính của mình
được an toàn trước những cuộc tấn công đó
TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp phương tiện truyền thông liên mạng TCP/IP được phân thành 4 lớp và được
so sánh với các lớp tương đương trong mô hình tham chiếu hệ thống mở OSI giống như hình sau:
Hình1.2 Các lớp trong chồng giao thức TCP/IP
Trong đó:
FPT-File Transfer Protocol
SMTP-Simple Mail Transfer Protocol
ICMP-Internet Control Message Protocol
Trang 16ARP-Address Resolution Protocol
TCP: (Transmistion Control Protocol)
Thủ tục liên lạc ở tầng giao vận của TCP/IP TCP có nhiệm vụ đảm bảo liên lạc thông suốt và tính đúng đắn của dữ liệu giữa 2 đầu của kết nối, dựa trên các gói tin IP
UDP: (User Datagram Protocol)
Thủ tục liên kết ở tầng giâo vận của TCP/IP Khác với TCP, UDP không
đảm bảo khả năng thông suốt của dữ liệu, cũng không đảm bảo khả năng thông suốt của dữ liệu, cũng không có chế độ sửa lỗi Bù lại, UDP cho tốc độ truyền dữ liệu cao hơn TCP
IP: (Internet Protocol)
Là giao thức ở tầng thứ 3 của TCP/IP, nó có trách nhiệm vận chuyển các Datagrams qua mạng Internet
ICMP: (Internet Control Message Protocol)
Thủ tục truyền các thông tin điều khiển trên mạng TCP/IP Xử lý các tin báo trạng thái cho IP như lỗi và các thay đổi trong phần cứng của mạng ảnh hưởng đến sự định tuyến thông tin truyền trong mạng
ARP: (Address Resolution Protocol)
Là những giao thức ở tầng liên kết dữ liệu Chức năng của nó là tìm địa chỉ vật lý ứng với một địa chỉ IP nào đó Muốn vậy nó thực hiện Broadcashing trên mạng, và máy trạm nào có địa chỉ IP trùng với địa chỉ IP đang được hỏi sẽ trả lời thông tin về địa chỉ vật lý của nó
FPT: (File Transfer Protocol)
Giao thức truyền tệp để truyền tệp từ một máy này đến một máy tính khác Dịch vụ này là một trong những dịch vụ cơ bản của Internet
Telnet: (Terminal Emulation Protocol)
Trang 17Đăng ký sử dụng máy chủ từ xa với Telnet người sử dụng có thể từ một máy tính của mình ở xa máy chủ, đăng ký truy nhập vào máy chủ để sử dụng các tài nguyên của máy chủ như là mình đang ngồi tại máy chủ
SNMP: (Simple Network Management Protocol)
Giao thức quản trị mạng đơn giản: Là dịch vụ quản trị mạng để gửi các thông báo trạng thái về mạng và các thiết bị kết nối mạng
Hình 1.3 Giao tiếp vật lý và logic giữa các lớp
Dữ liệu được đưa xuống từ lớp ứng dụng, sau đó tới lớp transport, tiếp theo tới lớp Internet và cuối cùng là tới lớp network, mỗi giao thức thực hiện chức năng xử lý luồng dữ liệu này bằng cách bao bọc các giao thức ở trên nó
và đặt thêm một header điều khiển của mình vào phía trước luồng dữ liệu
Hệ thống nhận dòng dữ liệu này theo thứ tự ngược lại, các header được loại
bỏ và dòng dữ liệu lại được gửi lên các lớp trên Sự mở rộng này cung cấp sự linh hoạt bởi vì các lớp trên không cần quan tâm đến các công nghệ được sử dụng ở các lớp dưới
Trang 18Internet Protocol (IP) là giao thức đầu tiên của mô hình OSI, nó cũng
là một phần của TCP/IP Mặc dù trong giao thức IP có từ Internet, nhưng nó không chỉ được sử dụng trên mạng Internet mà nó còn được sử dụng ở các mạng chuyên dụng khác mà không liên quan gì đến Internet IP định nghĩa một giao thức kiểu không kết nối (Connectionless) có nghĩa là không cần có giai đoạn thiết lập trước khi truyền dữ liệu Đơn vị dữ liệu được dùng trong
IP gọi là Datagram IP là sự lựa chọn tốt nhất cho bất cứ mạng nào kết nối thông tin theo kiểu từ máy tới máy Mặc dù nó phải cạnh tranh với các giao thức khác như IPX của mạng Novell NetWare trên các mạng cục bộ vừa và nhỏ sử dụng NetWare như là hệ điều hành trên máy PC
Nhiệm vụ chính của IP là đánh địa chỉ các gói dữ liệu của thông tin giữa các máy tính và quản lý các quá trình xử lý các gói dữ liệu này Giao thức IP có một định nghĩa hình thức về cách bố trí các gói dữ liệu và khuôn dạng của phần Header chứa các thông tin về các gói dữ liệu đó IP đảm nhiệm việc định tuyến đường truyền để xác định gói dữ liệu phải đi đến đâu
và có khả năng điều chỉnh đường truyền trong trường hợp gặp trục trặc
Một mục đích quan trọng nữa của IP là làm việc với việc phân phối không tin cậy gói dữ liệu Sự không tin cậy trong trường hợp này có nghĩa là việc phân phối gói dữ liệu không được đảm bảo, có thể do trễ trên đường truyền, mất đường truyền, bị sai hỏng trong quá trình phân chia hoặc lắp ráp lại các bảng thông báo Nếu IP không có chức năng điều khiển dữ liệu đáng tin cậy thì không thể nào đảm bảo được các gói dữ liệu đến nơi nhận một cách chính xác
IP không sử dụng mã kiểm tra cho toàn bộ gói dữ liệu mà nó chỉ sử dụng cho thông tin ở phần Header của gói tin Giao thức IP cho phép một gói dữ liệu có kích thước tối đa là 65.535 byte, kích thước này là quá lớn để các mạng có thể xử lý được, do đó phải có quá trình phân mảnh các gói dữ liệu
để truyền và lắp ráp lại thông tin tại trạm đích nếu cần thiết
Trang 19Khi gói dữ liệu đầu tiên được phân mảnh và gửi đến trạm đích, một bộ
đếm thời gian được khởi động ở lớp IP máy thu Nếu bộ đếm thời gian này
đã đạt đến một giá trị định trước mà vẫn chưa nhận hết các gói dữ liệu cần thiết thì tất cả các gói dữ liệu đã nhận sẽ bị huỷ bỏ toàn bộ Nhờ những thông tin trong phần Header của gói IP mà máy nhận có thể nhận biết được thứ tự của các gói dữ liệu được gửi đi như thế nào Một hậu quả của quá trình phân mảnh thông tin là các gói dữ liệu được phân mảnh đến chậm hơn một gói tin không bị phân mảnh, vì vậy phần lớn các ứng dụng thường tránh kỹ thuật phân mảnh nếu có thể
1.2.3.1 Cấu trúc Header của IP Datagram
IP được so sánh là phần cứng của mạng như là Ethernet, bởi về cơ bản
nó cùng dựa trên sự đóng gói thông tin Khi Ethernet nhận được gói IP, nó
đặt phần Header của lớp Ethernet ở phía trước để tạo khung, quá trình như vậy được gọi là encapsulation Một trong những vấn đề khác nhau cơ bản
giữa các phần Header của IP và Ethernet là phần Header của Ethernet bao gồm cả địa chỉ vật lý của máy đích, trong khi đó phần Header của IP chỉ mang địa chỉ IP Sự chuyển đổi giữa hai địa chỉ này được thực hiện bởi một giao thức gọi là ARP (Address Resolution Protocol)
IP sử dụng Datagram làm đơn vị di chuyển Tất cả các giao thức và dịch vụ trong họ giao thức TCP/IP đều phải đảm bảo yêu cầu kỹ thuật, tức là độ dài của phần Header là 32 bits
Trang 20Hình 1.4 Cấu trúc IP Header
ý nghĩa các tham số:
- VER (Version Number): 4bit, chỉ version hiện hành của IP đang được
sử dụng Hiện nay hầu hết các hệ thống đều đang sử dụng IPv4, mặc
dù có một vài hệ thống thử nghiệm IP Version 6 Đối với mạng Internet và hầu hết các mạng LAN IPv6 vẫn chưa được sử dụng
- IHL (Header Length): 4 bit, chỉ độ dài của phần đầu Header của gói
dữ liệu, tính bằng đơn vị WORD (1 WORD=32bit) Độ dài tối thiểu của phần Header là 5 từ (20 bytes), độ dài tối đa của phần Header là 6
o Precedence : 3 bit, chỉ thị quyền ưu tiên gửi Datagram:
111 - Network Control (Cao nhất) 011 - Flash
110 - Internetwork Control 010 - Immediate
101 - CRICTIC/ECP 001 - Priority
Trang 21100 - Flash Overide 000 - Routine (thấp nhất)
o D (Delay): 1 bit, chỉ độ trễ yêu cầu:
Nếu D=0 độ trễ bình thường
D=1 độ trễ thấp
o T (Throughtput): 1 bit, chỉ thông lượng yêu cầu:
Nếu T=0 thông lượng bình thường
T=1 thông lượng cao
o R (Reliability): 1 bit, chỉ độ tin cậy yêu cầu:
Nếu R=0 độ tin cậy bình thường
R=1 độ tin cậy cao
- Total Length (Datagram length): 16 bits, chỉ độ dài toàn bộ Datagram
(tính theo đơn vị byte)
- Identification: 16 bit, cùng với các tham số khác như Source Address,
Destication Address dùng để định danh duy nhất cho một Datagram trong khoảng thời gian nó vẫn còn ở trên mạng
Chú ý: Nếu một Datagram bị phân đoạn, thì mỗi đoạn có cùng một số
Trang 22o Bit 2: MF=0 đây là segment cuối cùng của gói tin bị phân mảnh
MF=1 Đây chưa phải là segment cuối
- Fragment Offset: 13 bit, chỉ vị trí của đoạn (segment) ở trong
Datagram, tính theo đơn vị 64 bit, có nghĩa là mỗi đoạn (trừ đoạn cuối) phải chứa một vùng dữ liệu có độ dài là bội số của 64 bit
- Time To Live: 8 bits, qui định thời gian tồn tại (tình bằng giây) của
Datagram trong liên mạng để tránh tình trạng một Datagram bị quẩn trên mạng Thời gian này được cho bởi trạm gửi và được giảm đi một
đơn vị khi Datagram đi qua mỗi Router trên mạng
- Protocol (Transport Protocol): 8 bit, chỉ ra giao thức tầng trên kết tiếp
nó là gì, TCP, UDP, ICMP, hoặc ARP mà được cài đặt trên IP
- Header Checksum: 16 bit, mã kiểm soát lỗi 16 bit theo phương pháp
CRC (Cyclic Redundancy Code) dùng để kiểm tra lỗi cho vùng Header của Datagram
- Source Address: 32 bit, là địa chỉ trạm nguồn
- Destination Address: 32 bit, địa chỉ trạm đích
- Options: độ dài thay đổi, dùng để khai báo các options do người gửi
yêu cầu
- Padding: độ dài thay đổi, là vùng đệm được dùng để đảm bảo độ dài
của vùng Header luôn là bội số của 32 bit
- Data: độ dài thay đổi, là vùng dùng để chứa dữ liệu, có độ dài là bội
số của 8 bit và tối đa là 65535 byte
1.2.3.2 Quá trình phân mảnh gói dữ liệu
Các gói số liệu IP phải được nhúng trong các khung số liệu của mức liên kết số liệu tương ứng, trước khi chuyển tiếp trong mạng Quá trình nhận một gói số liệu IP diễn ra ngược lại.Ví dụ: Mạng Ethernet ở mức liên kết số liệu, khi gửi một gói IP cho mức Ethernet, IP chuyển cho mức liên kết số liệu các
Trang 23thông số địa chỉ Ethernet đích, kiểu khung Ethernet (0x0800) và cuối cùng
là gói IP Mức liên kết số liệu đặt địa chỉ Ethernet nguồn là địa chỉ kết nối mạng của mình và tính toán giá trị tổng kiểm tra (checksum) Trường type chỉ ra kiểu khung là 0x0800 đối với số liệu IP Mức liên kết số liệu sẽ chuyển khung số liệu theo thuật toán truy nhập Ethernet
Một gói IP có độ dài tối đa 65535 byte, trong khi đó hầu hết các mức liên kết số liệu chỉ hổ trợ các khung số liệu nhỏ hơn độ lớn tối đa của gói số liệu
IP nhiều lần (ví dụ độ lớn tối đa của một khung số liệu Ethernet là 1500byte) Vì vậy, cần thiết phải có cơ chế phân mảnh khi phát và hợp nhất mảnh khi thu đối với gói số liệu IP
Người ta định nghĩa độ dài tối đa của một gói số liệu liên kết là MTU (Maximum Transmit Unit) Khi cần chuyển một gói số liệu IP có độ dài lớn hơn MTU của một mạng cụ thể, người ta phải chia gói số liệu IP đó thành những gói IP nhỏ hơn, gọi chung là mảnh (fragment) Trong phần tiêu đề của gói số liệu IP có thông tin về phân mảnh và xác định các mảnh có quan hệ phụ thuộc để hợp thành sau này Ví dụ: Ethernet chỉ hỗ trợ các khung có độ dài tối
đa 1500 byte Nếu muốn gửi một gói số liệu IP gồm 2000 byte qua Ethernet, phải chia gói IP thành 2 gó nhỏ hơn, mỗi gói vừa với giới hạn MTU của Ethernet
Gói tin ban đầu:
04 05 00 2000
1 1 1 1 0 0 0 0
05 06
128.83.24.13 192.10.2.5
Data
1980 Byte
Original IP Packet
Trang 24Hình 1.7: Gói IP gốc
Các gói tin sau khi được phân mảnh:
Hình 1.8: Các gói IP sau khi phân mảnh
IP dùng cờ MF (3 bít thấp của trường Flags trong phần đầu gói IP) và trường Fragment Offset của gói IP (đã bị phân đoạn) để định danh gói IP đó là một phân đoạn và vị trí của phân đoạn này trong gói IP gốc Các gói dùng trong chuỗi phân mảnh đều có trường này giống nhau Cờ MF bằng không nếu
là gói đầu của chuỗi phân mảnh và 1 nếu là gói cuối phân mảnh
Quá trình hợp nhất diễn ra ngược lại với quá trình phân mảnh Khi IP nhận được một gói phân mảnh, nó giữ phân mảnh đó trong vùng đệm, cho đến khi nhận được hết các gói IP trong chuỗi phân mảnh có cùng trường định danh Khi phân mảnh đầu tiên được nhận, IP khởi động một bộ đếm thời gian (giá trị ngầm định là 15s) IP phải nhận hết các phân mảnh kế tiếp trước khi
đồng hồ tắt Nếu không, IP phải huỷ tất cả các phân mảnh trong hàng đợi hiện thời có cùng trường định danh
Khi nhận được hết các phân mảnh, IP thực hiện hợp nhất các gói phân mảnh thành gói IP gốc và sau đó xử lý gói số liệu này như một gói số liệu IP bình thường IP thường chỉ thực hiện hợp nhất các gói tại hệ thống đích nơi gói số liệu được chuyển đến
04 05 00 1500
1 1 1 1 0 0 0 0
05 06 Checksume 128.83.24.13 192.10.2.5 Data
1480 Byte
Fragment One
1 1 1 1 1 0 0 0
Trang 25Trong quá trình truyền dữ liệu, một gói dữ liệu (Datagram) có thể
được truyền qua nhiều mạng khác nhau Một gói dữ liệu nhận được từ một mạng nào đó có thể quá lớn để truyền đi trong một gói đơn ở một mạng khác, bởi vậy mỗi loại cấu trúc mạng cho phép một đơn vị truyền cực đại MTU (Maximum Tranmission Unit) khác nhau
Hậu quả của việc phân mảnh dữ liệu là các gói tin bị phân mảnh sẽ
đến đích chậm hơn so với một gói không bị phân mảnh Vì vậy phần lớn các ứng dụng đều tránh không sử dụng kỹ thuật này nếu có thể Vì sự phân mảnh tạo ra các gói dữ liệu với các header riêng biệt nên quá trình xử lý sẽ làm giảm tính năng của mạng Hơn nữa vì IP là một giao thức không tin cậy nên bất kỳ một gói tin phân mảnh nào bị mất thì tất cả các mảnh khác sẽ phải truyền lại Chính vì lý do này nên phải gửi các gói dữ liệu lớn nhất cho phép
để không bị phân mảnh, giá trị này là Path MTU
1.2.3.3 Phương pháp đánh địa chỉ trong TCP/IP
Để có thể thực hiện truyền tin giữa các node trên mạng, mỗi node trên mạng TCP/IP cần phải có một địa chỉ xác định gọi là địa chỉ IP Hiện nay mỗi địa chỉ IP được tạo bởi một số 32 bits (IPv4) và được tách thành 4 vùng, mỗi vùng có một byte có thể biểu thị dưới dạng nhị phân, thập phân, thập lục phân hoặc bát phân Cách viết phổ biến nhất là dùng cách viết dùng ký tự thập phân Một địa chỉ IP khi đó sẽ được biễu diễn bởi 4 số thập phân có giá trị từ 0 đến 255 và được phân cách nhau bởi dấu chấm (.) Mỗi giá trị thập phân biểu diễn 8 bits trong địa chỉ IP Mục đích của địa chỉ IP là định danh duy nhất cho một host ở trên mạng
IPv4 sử dụng 3 loại địa chỉ trong trường nguồn và đích đó là:
• Unicast:Để thể hiện một địa chỉ đơn hướng Địa chỉ đơn hướng
là địa chỉ dùng để nhận dạng từng nút một trên mạng Cụ thể, nếu một gói dữ liệu được gửi tới một địa chỉ đơn hướng sẽ được chuyển tới nút mang địa chỉ đơn hướng đó
Trang 26• Multicast: Địa chỉ đa hướng Là địa chỉ dùng để nhận dạng một
tập hợp các nút nhưng không phải là tất cả Gói dữ liệu IP được gửi tới địa chỉ Multicast sẽ được gửi tới tất cả các nút tham dự trong nhóm Multicast này Kỹ thuật multicasting dựa trên một nhóm địa chỉ lớp D từ 224.0.0.0 cho đến 239.255.255.255
Một số địa chỉ trong khoảng này được dành riêng cho những mục đích đặc biệt cụ thể:
Địa chỉ multicast Sử dụng 224.0.0.0 Địa chỉ cơ sở (để dành) 224.0.0.1 Tất cả các máy trên subnet 224.0.0.2 Tất cả các bộ định tuyến trên subnet 224.0.1.1 Giao thức thời gian mạng (Network time) 224.0.0.9 Nhóm địa chỉ RIP version 2
224.0.1.24 Nhóm địa chỉ WINS server
Bảng 1.1 : Các địa chỉ multicast dành riêng
• Broadcast: Thể hiện tất cả các trạm trên mạng Khi một gói IP
được gửi đến địa chỉ này thì tất cả các host trên mạng đều nhận
được gói tin này
Các địa chỉ IP được chia làm hai phần, một phần để xác định mạng (netid) và một phần dùng để xác định host (hostid) Các lớp mạng được xác
định bởi số bits dành cho mỗi phần mạng và host Có năm lớp mạng là A,B,C,D và E, trong đó ba lớp đầu là được dùng cho mục đích thông thường
và là ba lớp chính, còn hai lớp D và E được dùng cho những mục đích đặc biệt và những mục đích khác trong tương lai
Cấu trúc một địa chỉ IP có dạng như sau:
Class ID Network IP Host ID
Hình 1.9 Cấu trúc chung của một địa chỉ IP
Trang 27Mỗi lớp địa chỉ được đặc trưng bởi một số bits đầu tiên của byte đầu tiên, cấu trúc chi tiếp của địa chỉ IP các lớp là như sau:
- Từ 192 đến 223 là địa chỉ lớp C Ba Bytes đầu xác định địa chỉ mạng, Byte cuối xác định địa chỉ các máy trạm Lớp C là lớp có nhiều mạng nhưng mỗi mạng chỉ có thể có đến 254 host Do đó lớp mạng này chỉ thích hợp với các tổ chức có số lượng máy tính nhỏ
Trang 28Network class Số mạng Số host trong mạng
Để tiện cho việc quản trị cũng như thực hiện các phương pháp tìm đường trên mạng, ở các mạng lớn (lớp A) hay các mạng vừa (lớp B) người ta có thể chia chúng thành các mạng con (Subnets) Ví dụ cho rằng một mạng con có
địa chỉ lớp B là 191.12.0.50 khi đó coi 191.12.0.0 là địa chỉ toàn mạng và lập
địa chỉ 191.12.1.0 cho Subnet 1và 191.12.2.0 cho Subnet 2
Có thể dành trọn một nhóm 8 bits để đánh địa chỉ Subnet và một nhóm để
đánh địa chỉ các máy trong từng Subnet Như thế tất nhiên là số máy trong một Subnet sẽ ít đi tương tự như trong mạng nhỏ Sự phân chia này làm giảm kích thước của bảng định tuyến trong Router/Gateway, nghĩa là tiết kiệm dung lượng nhớ và thời gian xử lý
Sự phân chia một mạng thành nhiều mạng con phát sinh vấn đề là số lượng bit dành để đánh địa chỉ mạng con có thể khác nhau và tuỳ thuộc vào nhà quản trị Do đó người ta đưa vào khái niệm Subnet Mask Subnet Mask
cũng giống như địa chỉ IP bao gồm 32 bits Múc đích của Subnet Mask là để chia nhỏ một địa chỉ IP thành các mạng nhỏ hơn và theo dõi vùng nào trên
địa chỉ IP được dùng để làm địa chỉ cho mạng con (còn được gọi là các Subnet) đó vùng nào dùng làm địa chỉ cho các máy trạm
Nội dung của một Subnet Mask được qui định như sau:
- Các bit 1: dùng để chỉ định địa chỉ mạng trên địa chỉ IP
- Các bit 0: dùng để chỉ định địa chỉ máy trạm trên địa chỉ IP
Trang 29Ví dụ đối với mạng A có địa chỉ 172.16.0.0, nếu dành thêm 4 bits cho Subnet thì mặt nạ có giá trị là 255.255.240.0, nếu dành 8 bits cho Subnet thì mặt nạ sẽ có giá trị là 255.255.255.0
Từ địa chỉ IP ta thực hiện phép toán logic AND với địa chỉ Subnet Mask, kết quả sẽ tạo ra được địa chỉ mạng nơi đến Kết quả này được sử dụng để tìm bước tiếp theo trong thuật toán tìm đường trên mạng Nếu kết quả này trùng với địa chỉ mạng tại trạm đang làm việc thì sẽ xét tiếp địa chỉ máy trạm
để truyền đi Theo cấu trúc của Subnet Mask thì ta thấy tất cả các trạm làm việc trong cùng một mạng con có cùng giá trị Subnet Mask
Với phương pháp này số bits dùng để đánh địa chỉ host có thể nhỏ hơn 8 bits (đối với lớp C) tức là một địa chỉ lớp C có thể phân nhỏ hơn nữa và khi
đó các mạng con này thường được xác định bởi các địa chỉ có thêm phần chú thích số bits dành cho địa chỉ mạng, ví dụ 203.16.0.0/25 mô tả Subnet 203.16.0.0 (lớp C) nhưng có 25bits dùng cho địa chỉ mạng và 7 bits dùng cho địa chỉ host tức là Subnet này có tối đa 128 hosts chứ không phải 256 host như một lớp C bình thường
Trong tất cả các lớp địa chỉ mạng cũng như các Subnets, các địa chỉ đầu
và cuối của mạng được dùng cho các mục đích riêng
Trên mạng Internet, việc quản lý và phân phối địa chỉ IP là được thực hiện bởi NIC (Network Information Center) Với sự bùng nổ của số lượng máy tính kết nối vào mạng Internet, địa chỉ IP đã trở thành một tài nguyên cạn kiệt Hiện này người ta đã xây dựng và đưa vào thử nghiệm giao thức IPv6, một giao thức có thể đáp ứng được vấn đề này
1.2.3.4 Định tuyến IP
Định tuyến IP dựa trên nguyên tắc đánh địa chỉ IP như sau:
- Các trạm làm việc kết nối trong một mạng “vật lý” phải có cùng phần
địa chỉ mạng IP Việc định tuyến IP đồng nghĩa với việc xác định
đường tới mạng IP
Trang 30- Mỗi kết nối mạng phải có một địa chỉ mức liên kết xác định, ứng với một địa chỉ mức liên kết có một địa chỉ IP và ngược lại
Việc định tuyến IP dựa trên bảng định tuyến, được lưu trử tại mỗi trạm làm việc và thiết bị định tuyến Bảng định tuyến cho biết các số liệu sau:
- Địa chỉ mạng đích
- Địa chỉ IP của thiết bị chuyển tiếp (Gateway)
- Cờ cho biết, đối với mỗi địa chỉ mạng đích có thể đạt tới trực tiếp qua kết nối mạng vật lý hay phải qua thiết bị chuyển tiếp khác (Flag)
Căn cứ vào những nguyên tắc nêu trên, thuật toán định tuyến IP được môt tả như sau:
- Giảm trường TTL của gói IP
- Nếu TTL=0 thì:
o Huỷ gói
o Gửi thông điệp ICMP báo lỗi cho thiết bị gửi
- Nếu địa chỉ đích là một trong các địa chỉ IP của các kết nối mạng trên
hệ thống, nghĩa là gói số liệu IP được gửi cho chính hệ thống này, thì xử lý gói số liệu IP tại chỗ
- Xác định địa chỉ mạng đích bằng cách nhân logic (AND) mặt nạ mạng (network mask) với địa chỉ IP đích
- Nếu địa chỉ mạng đích không tìm thấy trong bảng định tuyến thì huỷ
bỏ gói số liệu này và gửi thông điệp ICMP báo lỗi “mạng đích không
đến được” cho thiết bị gửi
- Nếu địa chỉ mạng đích bằng địa chỉ mạng của hệ thống, nghĩa là thiết
bị đích được kết nối trong cùng mạng với hệ thống thì tìm địa chỉ mức liên kết tương ứng trong bảng thích ứng địa chỉ IP-MAC, nhúng gói tin trong gói số liệu mức liên kết và chuyển tiếp gói số liệu đến đích
- Trong trường hợp địa chỉ mạng đích không bằng địa chỉ mạng của hệ thống thì chuyển tiếp đến thiết bị định tuyến cùng mạng
Trang 31TCP là một giao thức kiểu “có liên kết” (connection oriented), nghĩa
là cần phải thiết lập liên kết logic giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu với nhau Đơn vị dữ liệu sử dụng trong TCP được gọi là segment (đoạn dữ liệu) có khuôn dạng như hình sau:
Hình 1.11 Cấu trúc TCP Header
Trong đó:
- Source Port: 16 bits, là số hiệu cổng của trạm nguồn, dùng để định
danh cho người sử dụng TCP cục bộ (thường ứng dụng chương trình ở lớp trên)
- Destinarion Port: 16 bits, là số hiệu cổng của trạm đích, dùng để định
danh cho người sử dụng TCP của máy từ xa Số hiệu này là địa chỉ thâm nhập dịch vụ lớp giao vận (CCISAP Address) cho biết dịch vụ
mà TCP cung cấp là dịch vụ gì TCP có số lượng cổng trong khoảng 0- (216-1), tuy nhiên các cổng nằm trong khoảng 0-1023 là được biết
Trang 32nhiều nhất vì nó được sử dụng cho việc truy cập các dịch vụ tiêu chuẩn, ví dụ 23 là dịch vụ Telnet, 25 là dịch vụ Mail
- Sequence Number: 32 bits, là số hiệu chỉ dẫn cho vị trí của khối trong
toàn bộ quá trình truyền nhận Số hiệu này cũng được sử dụng giữa hai TCP bổ xung để cung cấp số thứ tự đầu tiên của thông báo để gửi đi theo thứ tự Đây là số hiệu của Byte đầu tiên của Segment trừ khi bit SYN được thiết lập Nếu bit SYN được thiết lập thì Sequence Number
là số hiệu tuần tự khởi đầu (ISN) và Byte dữ liệu dầu tiên là ISN+1
- Acknowledgement Number: 32 bits, là số hiệu chỉ dẫn của segment
tiếp theo mà trạm nguồn đang chờ để nhận Ngầm ý báo đã nhận tốt các Segment mà trạm đích đã gửi cho trạm nguồn
- Data offset: 4 bits, là số lượng của từ 32 bits trong TCP header Tham
số này được sử dụng để chỉ ra vị trí bắt đầu của vùng dữ liệu
- Reserved: 6 bits, dành để dùng trong tương lai Các bit này phải được
- Window: 16 bit, được dùng để kiểm soát luồng dữ liệu
Trang 33- Checksum: 16 bit, mã kiểm soát lỗi theo phương pháp CRC cho toàn
bộ segment (bao gồm cả phần header và phần dữ liệu)
b) Điều khiển luồng dữ liệu
Trong việc điều khiển luồng dữ liệu phương pháp hay sử dụng là dùng
phương pháp cửa sổ trượt Phương pháp này giúp cho việc nhận luồng dữ liệu
hiệu quả hơn
Phương pháp cửa sổ trượt cho phép nơi gửi (Sender) có thể gửi đi nhiều gói tin rồi sau đó mới đợi tín hiệu báo nhận ACK (Acknowledgement) của nơi nhận (Receiver) Với phương pháp cửa sổ trượt khi cần truyền các gói tin, giao thức sẽ đặt một cửa sổ có kích thước cố định lên các gói tin Những gói nào nằm trong vùng cửa sổ ở một thời điểm nhất định sẽ được truyền đi Hình 1.12 minh hoạ quá trình này, ở đây kích thước cửa sổ là 4 Tức là mỗi lúc cửa sổ chỉ gửi được 4 gói tin Đầu tiên cửa sổ sẽ gửi 4 gói tin từ 1 đến 4 và 4 gói tin này sẽ được gửi cho bên nhận Cửa sổ tiếp tục trượt để gói tin thứ 5 được gửi
đi ngay sau khi nhận được tín hiệu ACK của gói tin thứ nhất từ trạm đích, quá trình như vậy cứ tiếp tục cho đến khi gói tin cuối cùng được chuyển đi
1
2
1
2
Trang 34Hình 1.12 : Hoạt động của cửa sổ trượt
Trong quá trình gửi và nhận dữ liệu, có thể có một số gói tin mặc dù đã
được gửi đi nhưng không có phúc đáp (không nhận được báo nhận) có nghĩa là bên nhận không nhận được thì những gói đó sẽ được truyền lại
Tại bên nhận cũng duy trì một cửa sổ trượt tương tự dùng để nhận và báo nhận các gói tin đã nhận được
TCP cung cấp một kiểu dịch vụ gọi là dịch vụ chuyển luồng đáng tin cậy TCP xem luồng dữ liệu như là một thứ tự các byte dữ liệu được tách thành các Segments Thường thì mỗi Segment truyền trong liên mạng sẽ được lồng
và một Datagram
Với kỹ thuật cửa sổ trượt, sễ giải quyết được hai vấn đề quan trọng đó là
truyền có hiệu quả và điều khiển luồng dữ liệu TCP sử dụng kỹ thuật cửa sổ
trượt dựa trên kỹ thuật cửa sổ trượt đã trình bày ở trên Nó cho phép gửi được nhiều Segment trước khi báo nhận đến từ nơi nhận và do đó làm tăng thông lượng truyền trên mạng Bên cạnh đó kỹ thuật cửa sổ trượt còn cho phép bên nhận tránh được tình trạng dữ liệu bị mất bằng cách làm giảm lưu lượng dữ liệu gửi đến nếu bộ đệm của nó không chứa thêm nhiều dữ liệu
Kỹ thuật cửa sổ trượt của TCP được tiến hành ở mức Byte chứ không phải ở mức Segment hay Packet như đã trình bày ở trên Các Bytes của luồng dữ liệu được đánh số một cách tuần tự và một cửa sổ được định nghĩa bởi ba con trỏ như hình 1.13
: Các con trỏ
Trang 35Hình 1.13 : Cấu hình cửa sổ trượt
Tại mỗi thời điểm, con trỏ đầu tiên trỏ vào mép bên trái cửa sổ, con trỏ thứ hai trỏ vào mép bên phải cửa sổ và con trỏ thứ ba xác định vị trí các bytes
được gửi đi Con trỏ bên phải và bên trái cửa sổ xác định kích thước của cửa
sổ Các phần mềm giao thức gửi các gói bên trong cửa sổ không có trễ do đó danh giới bên trong cửa sổ luôn luôn di chuyển từ bên phải qua bên trái
Như trong hình 2.11 chỉ ra byte thứ hai đã được gửi và nhận được báo nhận, Bytes thứ 3,4 đã được gửi nhưng chưa có báo nhận, Bytes thứ 5,6 chưa
được gửi nhưng sẽ được gửi mà không có trễ Các Bytes lớn hơn 7 chưa được gửi cho đến khi cửa sổ di chuyển
Có một sự khác biệt giữa cửa sổ trượt TCP và cửa sổ trượt được trình bày ở trên là cửa sổ trượt TCP có thể thay đổi kích thước theo thời gian Trong
đó mỗi báo nhận đều có thông tin về trạng thái bộ đệm tại bên nhận, cho biết bên nhận có thể nhận được bao nhiêu Bytes dữ liệu nữa Nếu nhận được thông báo kích thước bộ đệm còn ít thì bên gửi sẽ giảm kích cỡ của cửa sổ và nó không gửi số Bytes dữ liệu quá kích thước của bộ đệm Còn nếu thông báo rằng kích thước của bộ đệm tăng thì bên gửi sẽ tăng tương ứng kích thước của cửa sổ
Vì liên kết TCP là loại liên kết đầy đủ, dữ liệu có thể được truyền theo cả hai hướng, tức là tại mỗi thời điểm dữ liệu có thể được truyền từ hai đầu cuối của liên kết một cách độc lập với nhau nên tại mỗi đầu của liên kết sẽ có thể duy trì hai cửa sổ một để gửi dữ liệu và một để nhận dữ liệu
c) Thiết lập và kết thúc kết nối TCP
Như ta đã biết, TCP là một giao thức kiểu có liên kết, tức là cần phải
có giai đoạn thiết lập một liên kết giữa một cặp thực thể TCP trước khi truyền dữ liệu và huỷ bỏ liên kết khi không còn nhu cầu trao đổi dữ liệu nữa
Để thiết lập một kết nối TCP, hai thực thể tham gia giao tiếp sẽ thực hiện một quá trình bắt tay với nhau gọi là three-way hanshake Mỗi gói tin trao
Trang 36đổi trong quá trình bắt tay này chứa một số thứ tự, các số thứ tự này là duy nhất đối với một kết nối giữa hai thực thể giao tiếp
Hình 1.14 : Thiết lập một kết nối TCP/IP
Các bước cho việc thiết lập một kết nối TCP giữa máy tính A (client) và máy tính B (Server) diễn ra như sau:
- Bước 1: A gửi một gói yêu cầu kết nối tới B, với bit SYN trong gói này
được đặt là 1 A nói với B rằng trường Sequence Number là hợp lệ và
nên được kiểm tra Bên A thiết lập giá trị trường Sequence Number là
số thứ tự khởi đầu của nó
- Bước 2: B đáp ứng lại bằng cách gửi một gói có bit SYN và ACK được bật lên Số thứ tự khởi đầu chính là số thứ tự khởi đầu của A cộng thêm 1
- Bước 3: Bên A xác nhận số thứ tự khởi đầu của bên B bằng việc gửi một gói có bit ACK được bật lên và số thứ tự của nó là số thứ tự khởi
đầu của B cộng thêm 1
Sau khi bên B nhận được gói tin xác nhận ở bên A, một kết nối TCP được thiết lập và hai bên bắt đầu có thể trao đổi dữ liệu cho nhau
Khi một thực thể tham gia kết nối (ví dụ A) muốn huỷ bỏ một kết nối, nó
sẽ gửi cho phía bên kia một gói tin có cờ FIN được bật lên để thông báo nó không còn dữ liệu để trao đổi nữa Bên B lúc này vẫn có thể tiếp tục truyền dữ liệu nếu còn, và khi không còn dữ liệu để trao đổi nữa thì B sẽ gửi một gói tin có cờ FIN được bật lên và ACK bằng số thứ tự của A cộng thêm 1 để
Trang 37báo cho bên A biết là nó đã nhận được gói tin yêu cầu kết thúc kết nối của bên A Bên A nhận được gói tin này sẽ đáp trả lại bằng một gói tin báo nhận
có ACK bằng số thứ tự của B cộng thêm 1 và kết nối TCP giữa hai thực thể
sẽ chính thức bị huỷ bỏ
d) Truyền và nhận dữ liệu
Hình 1.15 : Quá trình truyền dữ liệu
Sau khi liên kết được thiết lập giữa một cặp thực thể TCP thì có thể tiến hành việc truyền dữ liệu Với liên kết TCP dữ liệu có thể được truyền theo cả hai hướng
Khi nhận được một khối dữ liệu cần chuyển đi từ người sử dụng, TCP sẽ lưu giữ nó tại bộ đệm gửi Nếu cờ PUSH được dựng thì toàn bộ dữ liệu trong
bộ đệm sẽ gửi đi hết dưới dạng các TCP Segment Còn nếu cờ PUSH không
được dựng thì toàn bộ dữ liệu vẫn được lưu trữ trong bộ đệm để chờ gửi đi khi
có cơ hội thích hợp
Tại bên nhận, dữ liệu gửi đến sẽ được lưu giữ trong bộ đệm nhận Nếu dữ liệu nhận được đánh dấu bởi cờ PUSH thì toàn bộ dữ liệu trong bộ đệm nhận sẽ được gửi lên cho người sử dụng Còn nếu dữ liệu không được đánh dấu với cờ PUSH thì chúng vẫn được lưu trong bộ đệm Nếu dữ liệu khẩn cần
Trang 38phải chuyển gấp thì cờ URGENT được dùng và đánh dấu dữ liệu bằng bit URG để báo rằng dữ liệu khẩn cần được chuyển gấp
Dịch vụ truyền dữ liệu TCP thực sự bao gồm 6 dịch vụ con:
Full duplex: Dịch vụ truyền song công, cho phép cả hai đầu cuối của một kết nối có thể truyền bất cứ lúc nào, thậm chí đồng thời
Timeliness: Việc sử dụng các bộ định thời gian để đảm bảo rằng dữ
liệu được truyền thời gian hợp lý
Ordered: Dữ liệu gửi từ một ứng dụng được nhận đúng thứ tự tại đầu
cuối kia Mặc dù các Datagram có thể nhận được không theo thứ tự thông qua IP, TCP sẽ tập hợp các message vào đúng tứ tự trước khi truyền lên tầng cao hơn
Labeled: Tất cả các kết nối đều có một sự thoả thuận về giá trị ưu tiên
và giá trị an toàn
Controlled flow: TCP có thể điều chỉnh thông tin điều khiển luồng
thông qua việc sử dụng các bộ đệm và các giới hạn cửa sổ
Error correction: Tổng kiểm tra bảo đảm rằng dữ liệu không bị lỗi
1.2.4.2 Giao thức UDP
Giống như TCP, User Datagram Protocol (UDP) là một giao thức lớp transport Tuy nhiên UDP cung cấp dịch vụ kết nối không hướng liên kết (connectionless) và không tin cậy
Source UDP port Destination UDP port
Trang 39Data
Hình 1.16 Cấu trúc của UDP Header
Bởi vì không có điều khiển luồng và không có quá trình bắt tay thiết lâp kết nối nên việc giao tiếp sử dụng giao thức UDP diễn ra rất nhanh Tuy nhiên, cũng vì vậy mà các gói UDP dễ dàng bị giả mạo và các ứng dụng rất
- Điều khiển lưu lượng (Flow Control): khi các gói số liệu đến quá nhanh, thiết bị đích hoặc thiết bị định tuyến ở giữa sẽ gửi một thông
điệp ICMP trở lại thiết bị gửi, yêu cầu thiết bị gửi tạm thời ngừng việc gửi số liệu
- Thông báo lỗi: trong trường hợp địa chỉ đích không tới được thì hệ thống sẽ gửi một thông báo lỗi “Destination Unreachable”
- Định hướng lại các tuyến đường: một thiết bị định tuyến sẽ gửi một thông điệp ICMP định tuyến lại “Redirect Router” để thông báo với một trạm là nên dùng thiết bị định tuyến khác để tới đích Thông điệp này chỉ có thể dùng khi trạm nguồn ở trên cùng một mạng với cả hai thiết bị định tuyến
- Kiểm tra các trạm ở xa: một trạm có thể gửi một thông điệp ICMP
“Echo” để kiểm tra xem một trạm ở xa có hoạt động hay không
Trang 40Hình 1.17 : Dịch vụ định tuyến lại (ICMP Redirect) 1.2.5.2 Giao thức phân giải địa chỉ ARP
ARP (Address Resolution Protocol) là giao thức được sử dụng để xác
định thích ứng địa chỉ mạng IP và địa chỉ mức liên kết số liệu (địa chỉ MAC)
Thông thường, mỗi hệ thống lưu giữ và cập nhật bảng thích ứng địa chỉ MAC tại chỗ (còn gọi là ARP cache) Bảng thích ứng địa chỉ được cập nhật bởi người quản trị hệ thống hoặc tự động bởi giao thức ARP sau mỗi lần xác
IP-định được một thích ứng địa chỉ mới Cấu trúc gói số liệu ARP được mô tả trong hình sau đây
Trong đó:
- Datalink type: cho biết loại công nghệ mạng ở mức liên kết (Ví dụ:
đối với mạng Ethernet, trường này thường có giá trị 01)
Datalink type Network type hlen plen Opcode Sender datalink (6 bytes) Sender Network (4 bytes) Target datalink (6 bytes)
Source Host
R1
Host R1
(1)IP Diagram
(2)IP Diagram
(3)ICMP Redirect