PHÂN TÍCH, LỰA CHỌN VÀ THIẾT KẾ GIẢI THUẬT
Trang 2Ngày nay, mạng máy tính đã trở nên quen thuộc với mọi người trong xã hội Cùng với sự phát triển của công nghệ thông tin và nhu cầu của con người, mạng máy tính cũng càng ngày càng mở rộng và trở thành một phần không thể thiếu của đời sống
Tuy nhiên, cùng với sự phát triển của mạng máy tính, rất nhiều vấn đề liên quan cũng được đặt ra đối với người sử dụng như lỗi đường truyền, virus, sự tấn công của hacker Để góp phần giải quyết những vấn đề này thì việc kiểm soát lượng thông tin vào ra mang một ý nghĩa khá quan trọng Chính vì
vậy em lựa chọn thực hiện đồ án tốt nghiệp là “Xây dựng chương trình kiểm soát lưu lượng thông tin trao đổi qua hệ thống mạng” nhằm mục đích cung
cấp một công cụ hữu ích cho việc kiểm soát và học tập về mạng máy tính Trong thời gian thực tập em xin chân thành cảm ơn các thầy cô giáo trong khoa Công nghệ thông tin trường Đại học Hàng Hải Việt Nam cùng các bạn trong tập thể lớp CNT46-ĐH và đặc biệt thầy Ngô Quốc Vinh đã giúp đỡ em trong quá trình thực hiện đồ án này.
Hải Phòng tháng 12 năm 2009
Sinh viên: Trần Ngọc Việt
Trang 3CHƯƠNG I CƠ SỞ LÝ THUYẾT MẠNG MÁY TÍNH
Để xây dựng một chương trình quản lý, thống kê, kiểm soát lưu lượng thông tin,
ta cần thực hiện chặn bắt các gói tin vào ra hệ thống mạng cũng như phân tích các góitin thu được (Packet Capture và Packet Analysis) Chương trình như vậy thườngđược gọi là Sniffer (Packet Analyzer) Để xây dựng được sniffer, ta cần có được hiểubiết cơ bản về mạng máy tính và các giao thức liên quan Trong phạm vi của đề tài sẽđược thực hiện trên hệ điều hành Window và sử dụng bộ giao thức TCP/IP Ethernetnên trong phần này sẽ trình bày những vấn đề cơ bản nhất của mạng Ethernet
1 Tổng Quan Hệ Thống Mạng TCP/IP Ethernet
1.1 Khái niệm mạng máy tính
Từ những năm 1960 đã xuất hiện các mạng nối các máy tính và các Terminal để sửdụng chung nguồn tài nguyên, giảm chi phí khi muốn thông tin trao đổi số liệu và sửdụng trong công tác văn phòng một cách tiện lợi
Với việc tăng nhanh các máy tính mini và các máy tính cá nhân làm tăng yêu cầutruyền số liệu giưã các máy tính, giữa các terminal, và giữa các terminal với máy tính
là một trong những động lực thúc đẩy sự ra đời và phát triển ngày càng mạnh mẽ cácmạng máy tính.Quá trình hình thành mạng máy tính có thể tóm tắt qua các giai đoạnsau:
Giai đoạn các terminal nối trực tiếp với máy tính:
Đây là giai đoạn đầu tiên của mạng máy tính, để tận dụng công suất của máy tínhngười ta ghép nối các terminal vào một máy tính được gọi là các máy tính trung tâm
Giai đoạn các bộ tiền xử lý (Prontal)
Ở giai đoạn 1 máy tính trung tâm quản lý truyền tin tới các terminal, ở giai đoạn 2máy tính trung tâm quản lý truyền tin tới các bộ tập trung qua các bộ ghép nối điềukhiển đường truyền Ta có thể thay thế bộ ghép nối đường truyền bằng các máy tínhnini gọi là prontal, đó chính là bộ tiền xử lý
Giai đoạn mạng máy tính:
Trang 4Vào những năm 1970 người ta bắt đầu xây dựng mạng truyền thông trong đó cácthành phần chính của nó là các nút mạng gọi là bộ chuyển mạch dùng để hướngthông tin tới đích.
Các mạng được nối với nhau bằng đường truyền còn các máy tính xử lý thông tin củangười dùng hoặc các trạm cuối được nối trực tiếp vào các nút mạng để khi cần thìtrao đổi thông tin qua mạng Các nút mạng thương là máy tính nên đồng thời đóngvai trò của người sử dụng
Chức năng của nút mạng:
• Quản lý truyền tin, quản lý mạng
Như vậy các máy tính ghép nối với nhau hình thành mạng máy tính, ở đây ta thấymạng truyền thông cũng ghép nối các máy tính với nhau nên khái niệm mạng maýtính và mạng truyền thông có thể không phân biệt
Việc hình thành mạng máy tính nhằm đạt các mục đích sau:
• Tận dụng và làm tăng giá trị của tài nguyên
• Chinh phục khoảng cách
• Tăng chất lượng và hiệu quả khai thác và xử lý thông tin
• Tăng độ tin cậy của hệ thống nhờ khả năng thay thế khi xảy ra sự cố đối vớimột máy tính nào đó
Như vậy: Mạng máy tính là tập hợp các máy tính được ghép với nhau bởi các đườngtruyền vật lý theo một kiến trúc nào đó
1.2 Kiến trúc phân tầng
Để giảm độ phức tạp trong thiết kế và cài đặt mạng, các mạng máy tính được tổ chứcthiết kế theo kiểu phân tầng (layering) Trong hệ thống thành phần của mạng được tổchức thành một cấu trúc đa tầng, mỗi tầng được xây dựng trên tầng trước đó; mỗitầng sẽ cung cấp một số dịch vụ cho tầng cao hơn Số lượng các tầng cũng như chứcnăng của mỗi tầng là tuỳ thuộc vào nhà thiết kế Ví dụ cấu trúc phân tầng của mạngSNA của IBM, mạng DECnet của Digital, mạng ARPANET là có sự khác nhau.Nguyên tắc cấu trúc của mạng phân tầng là: mỗi hệ thống trong một mạng đều có cấu
Trang 5trúc phân tầng (Số lượng tầng, chức năng của mỗi tầng là như nhau) Mục đích củamỗi tầng là để cung cấp một số dịch vụ nhất định cho tầng cao hơn.
Tầng i của hệ thống A sẽ hội thoại với tầng i của hệ thống B, các quy tắc và quy ướcdùng trong hội thoại gọi là giao thức mức I
Giữa hai tầng kề nhau tồn tại một giao diện (interface) xác định các thao tác nguyênthuỷ của tầng dưới cung cấp lên tầng trên
Trong thực tế dữ liệu không truyền trực tiếp từ tầng i của hệ thống này sang tầng icủa hệ thống khác ( trừ tầng thấp nhất trực tiếp sử dụng đường truyền vật lý đểtruyền các xâu bít (0.1) từ hệ thống này sang hệ thống khác ).Dữ liệu được truyền từ
hệ thống gửi (sender) sang hệ thống nhận (receiver) bằng đường truyền vật lý và cứnhư vậy dữ liệu lại đi ngược lên các tầng trên Như vậy khi hai hệ thống liên kết vớinhau, chỉ tầng thấp nhất mới có liên kết vật lý còn ở tầng cao hơn chỉ có liên kết logic(liên kết ảo ) được đưa vào để hình thức hoá các hoạt động của mạng thuận tiện choviệc thiết kế và cài đặt các phần mềm truyền thông Như vậy để viết chương trình chotầng N, phải biết tầng N+1 cần gì và tầng N -1 có thể làm được gì
Minh họa kiến trúc phân tầng tổng quát
Trang 6Nguyên tắc để xây dựng kiến trúc phân tầng như sau:
• Để đơn giản 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 tương tác và mô tả các dịch vụ là tối thiểu
• Chia các tầng sao cho các chức năng khác nhau được tách biệt với nhau, vàcác tầng sử dụng các loại công nghệ khác nhau cũng được tách biệt
• Các chức năng giống nhau được đặt vào cùng một tầng
• Chọn ranh giới các tầng theo kinh nghiệm đã được chứng tỏ là thành công
• Các chức năng được định vị sao cho có thể thiết kế lại tầng mà ảnh hưởng ítnhất đến các tầng kế nó
• Tạo ranh giới giữa các tầng sao cho có thể chuẩn hóa giao diện tương ứng
• Tạo một tầng khi dữ liệu được xử lý một cách khác biệt
• Cho phép thay đổi chức năng hoặc giao thức trong một tầng không làm ảnhhưởng đến các tầng khác
• Mỗi tầng chỉ có các ranh giới (giao diện) với các tầng kề trên và kề dưới nó
• Có thể chia một tầng thành các tầng con khi cần thiết
• Tạo tầng con để cho phép giao diện với các tầng kế cận
• Cho phép hủy bỏ các tầng con nếu thấy không cần thiết
1.3 Mô hình OSI
1.3.1 Khái niệm
Do các nhà thiết kế tự do lựa chọn kiến trúc mạng riêng của mình Từ đó dẫn đến tìnhtrạng không tương thích giữa các mạng về: Phương pháp truy nhập đường truyềnkhác nhau, họ giao thức khác nhau sự không tương thích đó làm trở ngại cho quátrình tương tác giữa người dùng ở các mạng khác nhau Nhu cầu trao đổi thông tincàng lớn thì trở ngại đó càng không thể chấp nhận được với người sử dụng Với lý do
Trang 7đó tổ chức chuẩn hoá quốc tế ISO đã thành lập một tiểu ban nhằm xây dựng mộtkhung chuẩn về kiến trúc mạng để làm căn cứ cho các nhà thiết kế và chế tạo các sảnphẩm mạng Kết quả là năm 1984 ISO đã đưa ra mô hình tham chiếu cho việc kết nốicác hệ thống mở ( Reference Model for Open System Inter - connection) hay gọn hơn
là OSI Reference model Mô hình này được dùng làm cơ sở để kết nối các hệ thốngmở
Mô hình OSI
1.3.2 Mục đích
Mô hình OSI phân chia chức năng của một giao thức ra thành một chuỗi các tầngcấp Mỗi một tầng cấp có một đặc tính là nó chỉ sử dụng chức năng của tầng dưới nó,đồng thời chỉ cho phép tầng trên sử dụng các chức năng của mình Một hệ thống càiđặt các giao thức bao gồm một chuỗi các tầng nói trên được gọi là "chồng giao thức"(protocol stack) Chồng giao thức có thể được cài đặt trên phần cứng, hoặc phầnmềm, hoặc là tổ hợp của cả hai Thông thường thì chỉ có những tầng thấp hơn làđược cài đặt trong phần cứng, còn những tầng khác được cài đặt trong phần mềm
Mô hình OSI này chỉ được ngành công nghiệp mạng và công nghệ thông tin tôn trọngmột cách tương đối Tính năng chính của nó là quy định về giao diện giữa các tầngcấp, tức qui định đặc tả về phương pháp các tầng liên lạc với nhau Điều này có nghĩa
Trang 8là cho dù các tầng cấp được soạn thảo và thiết kế bởi các nhà sản xuất, hoặc công ty,khác nhau nhưng khi được lắp ráp lại, chúng sẽ làm việc một cách dung hòa (với giảthiết là các đặc tả được thấu đáo một cách đúng đắn
Thường thì những phần thực thi của giao thức sẽ được sắp xếp theo tầng cấp, tương
tự như đặc tả của giao thức đề ra, song bên cạnh đó, có những trường hợp ngoại lệ,còn được gọi là "đường cắt ngắn" (fast path) Trong kiến tạo "đường cắt ngắn", cácgiao dịch thông dụng nhất, mà hệ thống cho phép, được cài đặt như một thành phầnđơn, trong đó tính năng của nhiều tầng được gộp lại làm một
Việc phân chia hợp lý các chức năng của giao thức khiến việc suy xét về chức năng
và hoạt động của các chồng giao thức dễ dàng hơn, từ đó tạo điều kiện cho việc thiết
kế các chồng giao thức tỉ mỉ, chi tiết, song có độ tin cậy cao Mỗi tầng cấp thi hành
và cung cấp các dịch vụ cho tầng ngay trên nó, đồng thời đòi hỏi dịch vụ của tầngngay dưới nó Như đã nói ở trên, một thực thi bao gồm nhiều tầng cấp trong mô hìnhOSI, thường được gọi là một "chồng giao thức"
1.4 Phương thức hoạt động
Ở mỗi tầng mô hình trong tầng ISO, có hai phương thức hoạt động chính được ápdụng đó là: phương thức hoạt động có liên kết (connection-oriented) và không có liênkết (connectionless)
Với phương thức có liên kết, trước khi truyền dữ liệu cần thiết phải thiết lập một liênkết logic giữa các thực thể cùng tầng Còn với phương thức không liên kết thì khôngcần lập liên kết logic và mỗi đơn vị dữ liệu được truyền là độc lập với các đơn vị dữliệu trước hoặc sau nó
1.4.1 Có kết nối (Connection Oriented)
Với phương thức có kết nối, quá trình truyền dữ liệu phải trải qua ba giai đoạn theothứ tự thời gian
• Thiết lập kết nối: hai thực thể đồng mức ở hai hệ thống thương lượng vớinhau về tập các tham số sẽ được sử dụng trong giai đoạn sau
• Truyền dữ liệu: dữ liệu được truyền với các cơ chế kiểm soát và quản lý
• Huỷ bỏ kết nối (logic): giải phóng các tài nguyên hệ thống đã cấp phát choliên kết để dùng cho các liên kết khác
Trang 9Tương ứng với ba giai đoạn trao đổi, ba thủ tục cơ bản được sử dụng, chẳng hạn đốivới tầng N có: N-CONNECT ( thiết lập liên kết ), N-DATA(Truyền dữ liệu ), và N-DISCONNECT (Huỷ bỏ kết nối) Ngoài ra còn một số thủ tục phụ được sử dụng tuỳtheo đặc điểm, chức năng của mỗi tầng Ví dụ:
• Thủ tục N-RESTART được sử dụng để khởi động lại hệ thống ở tầng 3
• Thủ tục T-EXPEDITED DATA cho việc truyền dữ liệu nhanh ở tầng 4
• Thủ tục S-TOKEN GIVE để chuyển điều khiển ở tầng 5
Mỗi thủ tục trên sẽ dùng các hàm nguyên thuỷ (Request, Indication, Response, firm) để cấu thành các hàm cơ bản của giao thức ISO
Con-1.4.2 Không kết nối (Connectionless)
Đối với phương thức không kết nối thì chỉ có duy nhất một giai đoạn đó là: truyền dữliệu
So sánh hai phương thức hoạt động trên chúng ta thấy rằng phương thức hoạt động
có kết nối cho phép truyền dữ liệu tin cậy, do đó có cơ chế kiểm soát và quản lý chặtchẽ từng kết nối logic Nhưng mặt khác nó phức tạp và khó cài đặt Ngược lại,phương thức không kết nối cho phép các PDU (Protocol Data Unit) được truyền theonhiều đường khác nhau để đi đến đích, thích nghi với sự thay đổi trạng thái củamạng, song lại trả giá bởi sự khó khăn gặp phải khi tập hợp các PDU để di chuyển tớingười sử dụng
Hai tầng kề nhau có thể không nhất thiết phải sử dụng cùng một phương thức hoạtđộng mà có thể dùng hai phương thức khác nhau
1.5 Bộ giao thức TCP/IP
Mô hình OSI là mô hình tham chiếu được tổ chức ISO xây dựng nhằm tạo một chuẩnphục vụ việc nối kết các hệ thống mở Tuy nhiên, do nhiều lý do khác nhau mà OSIkhông được sử dụng trong thực tế mà thay vào đó được sử dụng rộng rãi nhất là môhình kiến trúc mạng (bộ giao thức) TCP/IP Hầu như tất cả các hệ điều hành hiện tạiđều có cài đặt bộ giao thức TCP/IP Trong phần này sẽ giới thiệu sơ lược về mô hìnhTCP/IP
Trang 101.5.1 Khái niệm
Bộ giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol suite hoặc IPsuite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ các giao thứctruyền thông cài đặt chồng giao thức mà Internet và hầu hết các mạng máy tínhthương mại đang chạy trên đó Bộ giao thức này được đặt tên theo hai giao thứcchính của nó là TCP (Giao thức Điều khiển Giao vận) và IP (Giao thức Liên mạng).Chúng cũng là hai giao thức đầu tiên được định nghĩa
Như nhiều bộ giao thức khác, bộ giao thức TCP/IP có thể được coi là một tập hợpcác tầng, mỗi tầng giải quyết một tập các vấn đề có liên quan đến việc truyền dữ liệu,
và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định nghĩa rõ ràng dựatrên việc sử dụng các dịch vụ của các tầng thấp hơn Về mặt lôgic, các tầng trên gầnvới người dùng hơn và làm việc với dữ liệu trừu tượng hơn, chúng dựa vào các giaothức tầng cấp dưới để biến đổi dữ liệu thành các dạng mà cuối cùng có thể đượctruyền đi một cách vật lý
1.5.2 Mục đích và nguồn gốc
Giao tiếp thông tin đã trở thành nhu cầu không thể thiếu trong tất cả mọi lĩnh vựchoạt động Mạng máy tính tính ra đời phần nào đã đáp ứng được nhu cầu đó Phạm vilúc đầu của các mạng bị hạn chế trong một nhóm làm việc, một cơ quan, công ty trong một khu vực Tuy nhiên thực tế của của những nhu cầu cần trao đổi thông tintrong nhiều lĩnh vực khác nhau, về nhiều chủ đề khác nhau, giữa các tổ chức, các cơquan là không có giới hạn Vì vậy nhu cầu cần kết nối các mạng khác nhau của các
tổ chức khác nhau để trao đổi thông tin là thực sự cần thiết Nhưng thật không may làhầu hết các mạng của các công ty, các cơ quan đều là các thực thể độc lập, đượcthiết lập để phục vụ nhu cầu trao đổi thông tin của bản thân các tổ chức đó Cácmạng này có thể được xây dựng từ những kĩ thuật phần cứng khác nhau để phù hợpvới những vấn đề giao tiếp thông tin của riêng họ Điều này chính là một cản trở choviệc xây dựng một mạng chung, bởi vì sẽ không có một kĩ thuật phần cứng riêng nào
đủ đáp ứng cho việc xây dựng một mạng chung thoả mãn nhu cầu người sử dụng.Người sử dụng cần một mạng tốc độ cao để nối các máy, nhưng những mạng nhưvậy không thể được mở rộng trên những khoảng cách lớn Nhu cầu về một kỹ thuậtmới mà có thể kết nối được nhiều mạng vật lý có cấu trúc khác hẳn nhau là thật sự
Trang 11cần thiết Nhận thức được điều đó, trong quá trình phát triển mạng ARPANET củamình, tổ chức ARPA ( Advanced Research Projects Agency) đã tập trung nghiên cứunhằm đưa ra một kỹ thuật thoả mãn những yêu cầu trên Kỹ thuật ARPA bao gồmmột thiết lập của các chuẩn mạng xác định rõ những chi tiết của việc làm thế nào đểcác máy tính có thể truyền thông với nhau cũng như một sự thiết lập các quy ước chokết nối mạng, lưu thông và chọn đường Kỹ thuật đó được phát triển đầy đủ và đượcđưa ra với tên gọi chính xác là TCP/IP Iternet Protocol Suit và thường được gọi tắt làTCP/IP Dùng TCT/IP người ta có thể kết nối được tất cả các mạng bên trong công tycủa họ hoặc có thể kết nối giữa các mạng của các công ty, các tổ chức khác nhau vớinhau.
Bộ giao thức TCP/IP gồm nhiều giao thức được phần làm 4 tầng như sau:
Các tầng trong bộ giao thức TCP/IP
1.5.3 Đặc điểm
• Là bộ giao thức chuẩn mở và sẵn có, vì: nó không thuộc sở hữu của bất cứmột tổ chức nào; các đặc tả thì sẵn có và rộng rãi Vì vậy bất kì ai cũng có thểxây dựng phần mềm truyền thông qua mạng máy tính dựa trên nó
• TCP/IP độc lập với phần cứng mạng vật lý, điều này cho phép TCP/IP có thểđược dùng để kết nối nhiều loại mạng có kiến trúc vật lý khác nhau như: Eth-ernet, Tokenring, FDDI, X25, ATM (Trong phạm vi đề tài ta chỉ xét tới Eth-ernet)
Trang 12• TCP/IP dùng địa chỉ IP để định danh các host trên mạng tạo ra một mạng ảothống nhất khi kết nối mạng.
• Các giao thức lớp cao được chuẩn hoá thích hợp và sẵn có với người dùng
1.6 So sánh TCP/IP và OSI
Do nhiều nguyên nhân như lịch sử, chi phí… nên bộ giao thức TCP/IP đã được sửdụng rất lâu trước khi mô hình OSI ra đời Cũng do vậy nên mô hình OSI khôngđược sử dung rộng rãi trong thực tế mà là mô hình học thuật dùng để so sánh với môhình thực tế là TCP/IP Hai cái có liên quan ít nhiều, song không phải là hoàn toàngiống nhau Điểm khác biệt đầu tiên dễ thấy nhất là số lượng của các tầng cấp Trongkhi bộ giao thức TCP/IP có 4 (hoặc 5 tầng) thì mô hình OSI có tới 7 tầng với sự khácbiệt là 2 tầng mới: tầng phiên và tầng trình diễn Nhiều so sánh đã gộp 2 tầng này vàotầng ứng dụng trong bộ giao thức TCP/IP Hình vẽ sau đây so sánh các tầng tươngứng lẫn nhau giữa OSI và TCP/IP:
Tương ứng các tầng giữa TCP/IP và OSI
• Trong khi mô hình OSI nhấn mạnh độ tin cậy được cung cấp trong dịch vụchuyển dữ liệu thì đối với TCP/IP coi độ tin cậy nằm trong vấn đề end to end
Trang 13• Trong mô hình OSI tất cả mọi tầng đều có phát hiện và kiểm tra lỗi, tầng giaovận chỉ làm nhiệm vụ kiểm tra độ tin cậy của source – to – destination Cònđối với bộ giao thức TCP/IP tầng giao vận làm mọi nhiệm vụ kiểm tra pháthiện và sửa lỗi
• Mô hình OSI được xây dựng trước khi các giao thức của nó được xây dựng,
do vậy nó có tính tổng quát cao và có thể được dùng đẻ mô tả các mô hìnhkhác Ngược lại, bộ giao thức TCP/IP chỉ là một mô hình để nhóm và miêu tảnhững giao thức sẵn có trong thực tế Vì vậy bộ giao thức TCP/IP được sửdụng rộng rãi trong thực tế trong khi mô hình OSI lại phù hợp với mục đíchhọc tập và giảng dạy
2 Bộ giao thức TCP/IP – Các giao thức và khuôn dạng dữ liệu chính 2.1 Cấu trúc phân tầng của TCP/IP
Như ta đã nói ở phần trên, TCP/IP là mô hình mở để kết nối mạng, Do vậy, nó cũngđược thiết kế theo kiến trúc phân tầng tương tự như mô hình OSI Bộ giao thứcTCP/IP được thiết kế gồm 4 tầng được mô tả theo hình dưới:
Bộ giao thức TCP/IP
Trang 142.2 Đóng gói dữ liệu trong TCP/IP
Bộ giao thức TCP/IP dùng sự đóng gói dữ liệu nhằm trừu tượng hóa các giao thức vàdịch vụ, nói cách khác là các giao thức ở tầng cao hơn sử dụng các giao thức ở tầngthấp hơn nhằm đạt được mục đích của mình bằng cách đóng gói dữ liệu giống như ở
ví dụ trong hình sau:
Những tầng trên đỉnh gần với người sử dụng hơn, những tầng thấp nhất gần với thiết
bị truyền thông hơn Trong mỗi tầng là một nhóm nhiều giao thức, trong đó có mộtgiao thức để phục vụ tầng trên của nó và một giao thức sử dụng dịch vụ của tầngdưới của nó (ngoại trừ tầng đỉnh và tầng đáy) Bảng sau liệt kê một số giao thức củacác tầng:
Application
DNS, TFTP, TLS/SSL, FTP, Gopher, HTTP, IMAP, IRC, NNTP,POP3, SIP, SMTP,SMPP, SNMP, SSH, Telnet, Echo, RTP, PNRP, rlogin, ENRP
Transport TCP, UDP, DCCP, SCTP, IL, RUDP, RSVP
Internet IP (IPv4, IPv6), ICMP, IGMP, ICMPv6
Link ARP, RARP, OSPF (IPv4/IPv6), IS-IS, NDP
Một số giao thức trên các tầng của TCP/IP
2.3 Sơ lược chức năng các tầng
2.3.1 Tầng ứng dụng (Application Layer)
Đây là tầng cao nhất trong cấu trúc phân lớp của TCP/IP Tầng này bao gồm tất cảcác chuơng trình ứng dụng sử dụng các dịch vụ sẵn có thông qua một chồng giaothức TCP/IP Các chương trình ứng dụng tương tác với một trong các giao thức củatầng giao vận để truyền hoặc nhận dữ liệu Mỗi chương trình ứng dụng lựa chọn một
Trang 15kiểu giao thức thích hợp cho công việc của nó Chương trình ứng dụng chuyển dữliệu theo mẫu mà tầng giao vận yêu cầu.
2.3.2 Tầng giao vận (Transport Layer)
Nhiệm vụ trước tiên của tầng giao vận là cung cấp sự giao tiếp thông tin giữa cácchương trình ứng dụng Mỗi sự giao tiếp được gọi là end-to-end Tầng giao vận cũng
có thể điều chỉnh lưu lượng luồng thông tin Nó cũng cung cấp một sự vận chuyển tincậy, đảm bảo rằng dữ liệu đến mà không bị lỗi Để làm như vậy, phần mềm giao thức
hỗ trợ để bên nhận có thể gửi lại các thông báo xác nhận về việc thu dữ liệu và bêngửi có thể truyền lại các gói tin bị mất hoặc bị lỗi Phần mềm giao thức chia dòng dữliệu ra thành những đơn vị dữ liệu nhỏ hơn (thường được gọi là các Packets) vàchuyển mỗi packet cùng với địa chỉ đích tới tầng tiếp theo để tiếp tục quá trình truyềndẫn
2.3.3 Tầng Internet (Internet Layer)
Tầng mạng xử lý giao tiếp thông tin từ một máy này tới một máy khác Nó chấpnhận một yêu cầu để gửi một gói từ từ tầng giao vận cùng với một định danh củamáy đích mà gói tin sẽ được gửi tới Ví dụ với giao thức TCP hay UDP của tầng giaovận, nó sẽ bọc gói tin trong một IP Datagram, điền đầy vào trong phần header, sửdụng giải thuật chọn đường để quyết định là giao phát gói tin trực tiếp hay là gửi nótới một Router, và chuyển datagram tới giao diện phối ghép mạng thích hợp cho việctruyền dẫn.tầng mạng cũng xử lý các Datagram đến, kiểm tra tính hợp lệ của chúng,
và sử dụng giải thuật chọn đường đẻ quyết định là datagram sẽ được xử lý cục bộhay là sẽ được chuyển đi tiếp Đối với các datagrams có địa chỉ đích cục bộ, thì phầnmềm tầng mạng sẽ xoá phần header của các datagram đó, và chọn trong số các giaothức tầng giao vận một giao thức thích hợp để xử lý packet
2.3.4 Tầng liên kết (Link Layer)
Là tầng thấp nhất của bộ giao thức TCP/IP, chịu trách nhiệm về việc chấp nhận cácdatagram của tầng trên (ví dụ IP datagram) và việc truyền phát chúng trên một mạngxác định Theo quan điểm hiện nay mô hình TCP/IP không còn bao gồm các đặc tảvật lý, nói cách khác tầng liên kết cũng không còn bao gồm vấn đề về phần cứng hayviệc truyền tín hiệu vật lý nữa
Trang 162.4 Các giao thức chính và khuôn dạng dữ liệu tương ứng
Trong phần này ta sẽ xem xét các giao thức cũng như khuôn dạng dữ liệu chính của
bộ giao thức TCP/IP Để dễ phân biệt ta sẽ xem xét đối với từng tầng của TCP/IPtheo thứ tự từ dưới lên trên
2.4.1 Ethernet
Là giao thức nằm trong tầng liên kết hay là một chuẩn công nghệ dành cho mạng cục
bộ (LAN) được quy định trong IEEE 802.3 Nó là một giao thức nằm trong tầng liênkết của bộ giao thức TCP/IP hay tương ứng là tầng liên kết dữ liệu trong mô hìnhOSI Hiện nay nó đang được sử dụng rất rộng rãi so với các giao thức khác nhưFDDI, Token Ring…Ethernet được dùng để gửi những khối dữ liệu giữa điểm nguồn
và điểm đích được xác định dựa vào địa chỉ MAC (Media Access Control)
Đặc điểm của giao thức Ethernet
Cấu trúc của một đơn vị dữ liệu trong giao thức Ethernet (gọi là Ethernet frame) cócấu trúc như sau: (đơn vị tính theo byte)
PRE SOF DA SA Length/Type Data Payload FCS
Ethernet frameHeader
o Preamble (PRE): Phần mở đầu gồm 7 byte và không được tínhvào kích thước của Ethernet Tất cả các byte trong phần mở đầunày đều có giá trị 10101010 và nó được dùng để đồng bộ đồng
hồ giữa nơi nhận và gửi frame
o SOF (Start frame delimiter) gồm 1 byte và không được tính vàokích thước của Ethernet Byte này có giá trị 101010111 và được
sử dụng để đánh dấu bắt đầu của một frame Đối với những hệthống Ethernet hiện nay hoạt động ở tốc độ 100 Mbps hoặc1000Mbps không còn cần tới PRE và SOF
o DA (Destination Address) có độ dài 6 byte là địa chỉ nơi MACcủa Ethernet card nơi đến Ở chế độ hoạt động bình thường Eth-
Trang 17ernet chỉ tiếp nhấn những frame có địa chỉ nơi đến trùng với địachỉ (duy nhất) của nó hoặc địa chỉ nơi đến thể hiện một thôngđiệp quảng bá Tuy nhiên hầu hết các Ethernet card hiện nay đều
có thể được đặt ở chế độ đa hỗn tạp (promiscuous mode) và khi
đó nó sẽ nhận tất cả các frame xuất hiện trong mạng LAN
o SA (Source Addresss) có độ dài 6 byte là địa chỉ MAC của cardnguồn
o Length/Type (Độ dài/Loại) 2 byte chỉ ra độ dài (đối với IEEE802.3 MAC frame) và loại của Ethernet frame chỉ giao thức củatầng cao hơn (đối với DIX Ethernet.(DEC- Intel – Xerox) –phổ biến hơn) Ví dụ như với DIX Ethernet frame có giao thứctầng trên là IP thì 2 byte này sẽ có giá trị là 0800h và ARP là0806h
• Data Payload: Phần thông tin dữ liệu có độ dài từ 46 tới 1500 byte
• Trailer (FCS - Frame Check Sequence): 32 bit sửa lỗi CRC
Ethernet sử dụng phương thức truy nhập đường truyền CSMA/CD, do vậy nhữngframe lỗi do xảy ra xung đột (collision) trên đường truyền là không thể tránh khỏi.Tuy nhiên, nếu như tỉ lệ những frame lỗi vượt quá một mức nào đó (ví dụ như 1%tổng số frame) có nghĩa là hệ thống mạng đã có vấn đề Những Ethernet frame lỗibao gồm:
• Frame có độ lớn nhỏ hơn 64 byte (normal collision – xảy ra khá phổ biến)
• Frame có độ lớn lớn hơn 1518 byte
• Frame có độ lớn phù hợp nhưng có phần CRC bị sai lệch (late collision – nếu
có nhiều frame dạng này tức là hệ thống mạng đang gặp vấn đề nghiêmtrọng)
Trang 182.4.2 ARP (address resolution protocol)
Giao thức phân giải địa chỉ ARP là phương pháp tìm địa chỉ tầng liên kết (hay địa chỉvật lý) khi biết địa chỉ tầng Internet (IP) hoặc một vài kiểu địa chỉ tầng mạng khác.ARP được sử dung không chỉ để chuyển đổi địa chỉ đối với IP và Ethernet mà nóđược cài đặt để làm việc với nhiều loại địa chỉ của các tầng các loại mạng khác nhau.Tuy nhiên, do sự phổ biến của IPv4 và Ethernet nên ARP chủ yếu được dùng đểchuyển đổi từ địa chỉ IP thành địa chỉ MAC Nó cũng được sử dụng đối với IP dựatrên các công nghệ LAN khác Ethernet như FDDI, Token Ring, IEEE 802.11 hayATM
Trong thực tế, khi truyền thông với máy chủ thay vì truy vấn địa chỉ vật lý của máychủ, giao thức ARP sẽ sử dụng bộ đệm ARP (ARP cache) Bộ đệm lưu trữ các địachỉ IP gần nhất đã được phân giải Nếu địa chỉ MAC của địa chỉ IP đích được tìmthấy trong bộ đệm thì địa chỉ này sẽ được sử dụng để truyền thông
Cấu trúc của một đơn vị dữ liệu giao thức ARP như sau:
Bit
0 Hardware type (HTYPE) Protocol type (PTYPE)
32 Hardware length (HLEN) Protocol length(PLEN) Operation (OPER)
96 Sender hardware address (SHA) Sender protocol address (SPA)
128 Sender protocol address (SPA) Target hardware address (THA)
Cấu trúc một đơn vị dữ liệu ARP
• Hardware type (HTYPE) Mỗi giao thức tầng liên kết (link layer) sẽ được gánmột số để phân biệt (ví dụ như Ethernet là 1)
• Protocol type (PTYPE) Dùng để phân biệt giao thức tầng Internet, ví dụ nhưvới IP là 0x0800
• Hardware length (HLEN) Độ dài tính theo byte của địa chỉ vật lý Đối vớiEthernet giá trị này là 6
Trang 19• Protocol length (PLEN) Độ dài tính theo byte của địa chỉ logic Đối với IP giátrị này là 4
• Operation Xác định hành động mà bên gửi gói tin đang thực hiện: 1 cho quest, 2 cho reply, 3 cho RARP request và 4 cho RARP reply
re-• Sender hardware address (SHA) Địa chỉ vật lý của trạm gửi
• Sender protocol address (SPA) Địa chỉ logic của trạm gửi (ví dụ như địa chỉIP)
• Target hardware address (THA) Địa chỉ vật lý của trạm đích Trường nàyđược để trống đối với gói tin request
• Target protocol address (TPA) Địa chỉ logic của trạm đích
2.4.3 RARP (reserve address resolution protocol)
Là giao thức ngược lại so với ARP, tìm địa chỉ logic khi biết địa chỉ vật lý Cấu trúccủa một đơn vị dữ liệu của giao thức RARP hoàn toàn tương tự như ARP, ngoại trừtrường Operation Đối với gói dữ liệu ARP thì Operation có giá trị 1 nếu là request, 2nếu reply Đối với gói dữ liệu RARP thì Operation có giá trị 3 nếu là request và 4 nếu
là reply
2.4.4 IP (internet protocol)
Giao thức liên mạng IP hạt nhân của bộ giao thức TCP/IP Trong phạm vi đề tàichúng ta chỉ xét tới IP phiên bản 4 (IPv4) IP là một giao thức hướng dữ liệu được sửdụng trong mạng chuyển mạch gói (ví dụ như Ethernet) IP là một giao thức hoạtđộng theo phương thức không liên kết (connectionless) và không đảm bảo truyền(không có sự trao đổi thông tin điều khiển) Vai trò của IP tương tự như vài trò củagiao thức tầng mạng (network layer) trong mô hình OSI với các chức năng như sau:
• Xác định lược đồ địa chỉ Internet
• Di chuyển dữ liệu giữa tầng giao vận và tầng liên kết
• Dẫn đường cho các đơn vị dữ liệu tới các trạm ở xa
• Thực hiện việc cắt và hợp các đơn vị dữ liệu
Trang 20Giao thức IP sẽ bổ sung phần header vào trước segment được gửi từ tầng giao vậnxuống và đơn vị dữ liệu này trong bộ giao thức TCP/IP được gọi là IP packet nhưhình sau:
Đơn vị dữ liệu của giao thức IP có cấu trúc như sau:
0 Version Header
length
Differentiated
Cấu trúc đơn vị dữ liệu IP
Trong đó phần header bao gồm các thành phần:
• Version: chỉ ra phiên bản hiện hành của IP được cài đặt (có giá trị là 4 đốivới IPv4)
• Internet Header Length (IHL) Chỉ độ dài phần đầu của IP packet, tínhtheo đơn vị từ (word = 32 bit) Độ dài tối thiểu là 5 từ (20 byte)
Differentiated Services (DS): Trước đây còn gọi là Type of Services đặc tả các tham
số dịch vụ, có dạng cụ thể như sau:
bit 0 – 2 3 5 5 6 7 Precedenc
e
D T R C Reserve
d
Trang 21Với ý nghĩa các bit cụ thể:
• Precedebce (3 bit): quyền ưu tiên cụ thể là 111 - Network Control, 110 - network Control, 101 - CRITIC/ECP, 100 - Flash Override, 011 - Flash, 010 -Immediate, 001 - Priority, 000 – Routine
Inter-• D (Delay) (1 bit): chỉ độ trễ yêu cầu D = 0 nếu độ trễ bình thường, 1 nếu độtrễ thấp
• T (Throughput) (1 bit): chỉ thông lượng yêu cầu T = 0 thông lượng bìnhthường, 1 nếu thông lượng cao
• R (Reliability) (1bit) chỉ độ tin cậy yêu cầu R = 0 độ tin cậy bình thường, 1nếu độ tin cậy cao
• C (Cost) (1bit) chỉ hao phí C = 0 normal cost, 1 nếu minimize cost
• Reserved (1bit) để dành
• Total Length trường 16 bit chỉ độ dài toàn bộ datagram bao gồm cả phầnheader và phần data tính theo byte và có giá trị lớn nhất là 65535 và giá trị nhỏnhất là 20 byte
• Identification (16 bit) định danh duy nhất cho 1 datagram khi nó vẫn còn trênliên mạng
• Flags (3 bit) điều khiển sự phân mảnh Theo thứ tự từ bit cao xuống bit thấpnhư sau:
o Reserved: có giá trị 0
o DF: 0 (May Fragment); 1 (Don’t Fragment)
o MF: 0 (Last Fragment); 1 (More Fragment)
• Fragment Offset chỉ vị trí của đoạn (fragment) trong datagram tính theo đơn vị
64 bit, có nghĩa mỗi đoạn (trừ đoạn cuối cùng) phải chứa một vùng dữ liệu có
độ dài là bội số của 64 bit
Trang 22• Time To Live (TTL) (8 bit): quy định thời gian tồn tại (tính bằng giây) củadatagram trong liên mạng để tránh tình trạng một datagram bị lặp vô hạn trênliên mạng Thời gian này được cho bởi trạm gửi và được giảm đi (thường quyước là 1 đơn vị) khi datagram đi qua mỗi router của liên mạng.
• Protocol (8 bit): chỉ ra giao thức tầng trên kế tiếp sẽ nhận vùng dữ liệu ở trạmđích (hiện tại thường là TCP hoặc UDP đượ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 CRS,chỉ dành cho phần header
• Source address (32 bit): địa chỉ trạm nguồn
• Destination address (16 bit): địa chỉ trạm đích
• Options (độ dài thay đổi): khai báo các lựa chọn do người dùng yêu cầu (tùytheo từng chương trình)
• Padding (độ dài thay đổi): vùng đệm được dùng để đảm bảo cho phần headerluôn kết thúc ở một mốc 32 bits
• Data (độ dài thay đổi): vùng dữ liệu có độ dài là bội số của 8 bit và tối đa là
65535 byte
2.4.5 ICMP (internet control message protocol)
Giao thức ICMP cung cấp cơ chế thông báo lỗi và các tình huống không mong muốncũng như điều khiển các thông báo trong bộ giao thức TCP/IP Giao thức này đượctạo ra để thông báo các lỗi dẫn đường cho trạm nguồn ICMP phụ thuộc vào IP để cóthể hoạt động và là một phần không thể thiếu của bộ giao thức TCP/IP, tuy nhiên nókhông phải giao thức dùng để truyền tải dữ liệu nên thường được coi nằm trong tầngInternet (Internet layer) mà không phải là tầng giao vận (transport layer)
Chức năng của ICMP như sau:
• Cung cấp thông báo phản hồi và trả lời để kiểm tra độ tin cậy của kết nối giữhai trạm Điều này được thiết lập bởi câu lệnh PING (Packet internet gropher)
Trang 23• Địch hướng lại lưu lượng để cung cấp việc dẫn đường hiệu quả hơn khi một
bộ dẫn đường quá tải dõ lưu lượng qua nó quá lớn
• Gửi thông báo về thời gian quá khi datagram của trạm nguồn đã vượt quá TTL
và bị loại bỏ
• Gửi quảng cáo dẫn đường để xác định địa chỉ của các bộ dẫn đường trên đoạnmạng
• Cung cấp các thông báo quá hạn thời gian
Xác định subnet mask nào được sử dụng trên đoạn mạng
Dữ liệu của gói ICMP sẽ được đóng gói bởi giao thức IP và Ethernet như trong hình
vẽ sau:
Đơn vị dữ liệu của ICMP bao gồm 2 phần: Header và Data Phần Data trong Window
có độ lớn là 32 và theo ngay sau phần Header Header được bắt đầu sau bit thứ 160của gói tin IP (trừ khi phần IP Option được sử dụng) có cấu trúc như sau:
Trong đó:
Type (8 bit): Loại gói tin ICMP
Code (8 bit): Chi tiết về các đặc điểm của gói tin ICMP
• Checksum( 16 bit) Mã sửa lỗi CRC
bit 160 – 167 168 – 175 176 – 183 184 – 191
Trang 24• ID & Sequence (32 bit): Có giá trị trong trường hợp ICMP Echo Request vàEcho Reply.
2.4.6 TCP (Transmission Control Protocol)
Giao thức điều khiển truyền TCP là một giao thức hoạt động theo phương thức cóliên kết (connection – oriented) Trong bộ giao thức TCP/IP, nó là giao thức trunggian giữa IP và một ứng dụng phía trên, đảm bảo dữ liệu được trao đổi một cách tincậy và đúng thứ tự Các ứng dụng sẽ gửi các dòng gồm các byte 8 bit tới TCP để gửiqua mạng TCP sẽ phân chia các dòng này thành các đoạn (segment) có kích thướcthích hợp (thường dựa theo kích thước của đơn vị truyền dẫn tối đa MTU của tầngliên kết của mạng mà máy tính đang nằm trong đó Sau đó TCP chuyển các gói tinthu được tới IP để thực hiện chuyển nó qua liên mạng tới modul TCP tại máy tínhđích Trong quá trình này, nó sẽ có cơ chế bắt tay, điều khiển truyền, đánh số thứ tự
và sửa lỗi để việc truyền dẫn diễn ra đúng đắn và chính xác
Đơn vị dữ liệu của TCP được gọi là segment (đoạn dữ liệu) bao gồm 2 phần: Header
và Data, được miêu tả dưới hình sau:
Cấu trúc đơn vị dữ liệu TCPTrong đó:
• Source port (16 bit): Số hiệu của cổng của trạm nguồn
• Destination port (16 bit): Số hiệu của cổng của trạm đích
• Sequence number (32 bit): Trường này có 2 nhiệm vụ Nếu cờ SYN bật thì nó
là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN + 1 Nếukhông có cờ SYN thì đây là số hiệu byte đầu tiên của segment
Trang 25• Acknowledgement number (32 bit): Số hiệu của segment tiếp theo mà trạmnguồ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 bit): Qui định độ dài của phần header (tính theo đơn vị từ 32bit) Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15 từ (480bit)
• Reserved (6 bit): Dành cho tương lai và có giá trị là 0
• Flags (hay Control bits): Bao gồm 6 cờ từ trái sang phải như sau:
o URG: Cờ cho trường Urgent pointer
o ACK: Cờ cho trường Acknowledgement
o PSH: Hàm Push
RST: Thiết lập lại đường truyền
SYN: Đồng bộ lại số hiệu tuần tự (sequene number)
o FIN: Không còn dữ liệu từ trạm nguồn
• Window (16 bit): Số byte trạm nguồn có thể nhận bắt đầu từ giá trị của trườngbáo nhận (ACK)
• Checksum: 16 bit kiểm tra cho cả phần header và dữ liệu
• Urgent pointer (16 bit): Trỏ tới số hiệu tuần tự của byte đi theo sau dữ liệukhẩn, cho phép bên nhận biết được độ dài của vùng dữ liệu khẩn Vùng nàychỉ có hiệu lực khi cờ URG được thiết lập
• Options (độ dài thay đổi): Đây là trường tùy chọn
• Padding (độ dài thay đổi): Phần chèn thêm vào header để bảo đảm phầnheader luôn kết thúc ở một mốc 32 bit Phần thêm này gồm toàn số 0
Trang 26• TCP data (độ dài thay đổi): Chưa dữ liệu của tầng trên, có độ dài ngầm định là
536 byte Giá trị này có thể điều chỉnh bằng cách khai báo trong vùng options.2.4.7 UDP (User Datagram Protocol)
Đây là một giao thức “không liên kết” được sử dụng thay thế trên IP theo yêu cầu củacác ứng dụng Khác với TCP, UDP không có các chức năng thiết lập và giải phóngliên kết Nó cũng không cung cấp các cơ chế báo nhận, không sắp xếp tuần tự cácđơn vị dữ liệu đến và có thể dẫn tới tình trạng dữ liệu mất hoặc trùng mà không hề cóthông báo lỗi cho người gửi Tóm lại nó cung cấp các dịch vụ giao vận không tin cậynhư trong TCP Do ít chức năng phức tạp nên UDP có xu thế hoạt động nhanh hơn sovới TCP Nó thường được dùng cho các ứng dụng không đòi hỏi độ tin cậy cao tronggiao vận
Cấu trúc của một đơn vị dữ liệu UDP như sau:
• Destination port (16 bit): Trường xác định cổng của trạm nhận thông tin, vàtrường này là cần thiết
• Length (16 bit): Xác định chiều dài của toàn bộ datagram: phần header và dữliệu Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ có header
• Checksum (16 bit): Trường checksum 16 bit dùng cho việc kiểm tra lỗi củaphần header và dữ liệu