Internet Protocol – IP, là một trong hai giao thức chính trong chồng giao thức TCP-IP, nó đóng vai trò quan trọng trong việc truyền dữ liệu giữa hai thiết bị đầu cuối. Chính vì sự quan trọng của nó, tôi tiến hành xem xét một ví dụ để hiểu được giao thức này. Bài toán đặt ra, máy client muốn phân giải một tên miền, như đã phân tích về giao thức DNS. Đầu tiên máy client sẽ gửi một gói tin với nội dung bên trong giống như phần giao thức DNS, nhưng ở đây tôi nhắc lại luôn, với Payload bao gồm địa chỉ MAC nguồn, MAC đích, IP nguồn, IP đích cùng với nội dùng trường QUESTION SECTION(“ địa chỉ IP của tên miền… là nhiu vậy DNS server ”). Chú ý ở đây trường MAC đích là địa chỉ MAC của ai ? Làm sao nó biết được địa chỉ MAC đích này ? Đầu tiên máy client so sánh địa chỉ IP đích và địa chỉ IP của máy mình có nằm trên cùng một mạng không, thực tế là không vì IP đích là máy DNS server và IP nguồn là máy client. Do đó client sẽ gửi một gói tin với địa chỉ IP đích là máy DNS server và địa chỉ MAC đích ở đây là Router B được nối cùng mạng với client. Câu hỏi tiếp theo thế làm sao client biết được địa chỉ MAC của router B ? Để máy client biết được địa chỉ MAC của router, nó phải thông qua địa chỉ default gateway được cấu hình trong máy client, dựa vào địa chỉ này client sẽ gửi một gói ARP request với địa chỉ đích là địa chỉ default gateway của router để hỏi địa chỉ Mac của router, khi đó các máy trong mạng điều nhận được gói tin này, nhưng chỉ có router trả lời vì trùng với địa chỉ IP đích trong gói tin được gửi từ client. Ở đây lại nhắc đến thêm một giao thức mới, giao thức ARP, thế giao thức này nhiệm vụ của nó là gì? Đặc điểm ra sao? Sẽ được phân tích trong các phần sau. Như đã biết khi một gói tin đi qua các miền mạng để đến đích sau cùng của nó hay nói một cách cụ thể vấn đề giao thông gói tin trên mạng sẽ do lớp Internet phụ trách, cụ thể hơn nữa sẽ do IP đảm nhiệm công việc này, thế giao thức IP là gì ? IP là giao thức được định tuyến, không có kết nối, thiếu tin cậy và chuyển phát tổng lực(best-effort). Không có độ tin cậy vì việc phát chuyển các gói dữ liệu là không được đảm bảo. Gói dữ liệu có thể bị thất lạc, bị trùng lặp, bị chuyển chậm, hoặc chuyển đi không theo đúng thứ tự, nhưng nó không nhân ra được những sự việc này, và nó cũng không thông báo cho nơi gửi hoặc nơi nhận. Thuật ngữ connectionless có nghĩa là không có kết nối nào xác định được thiết lập trước khi truyền dữ liệu, mỗi gói dữ liệu được xử lý độc lập với các gói khác. Một chuỗi các gói dữ liệu gửi từ một máy đến một máy khác có thể di chuyển theo những con đường khác nhau. IP xác định tuyến đường hiệu quả nhất cho số liệu dựa vào các giao thức định tuyến. Cuối cùng beft-effort không ngụ ý rằng hệ thống không tin cậy và không làm việc tốt, vì IP thực hiện một cố gắn lớn nhất để phát chuyển các gói. Trên là tổng quan về IP , tôi tiếp tục với ví dụ trên. Sau khi biết được tổng quan vể IP , tôi tiến hành phân tích tiếp, khi gói tin được gửi từ client đến router B. Sau đó gói tin này được kiểm tra để xác định xem nó có thực sự dành cho router B hay không hay là được “định tuyến” tới một thiết bị khác. Nếu địa chỉ IP đích là trùng với một trong các các địa chỉ IP các port trên router B , thì phần đầu header lớp 3 được loại bỏ và chuyển gói tin lên lớp 4. Thực tế địa chỉ IP đích của gói tin do client gửi là DNS server không nằm trong một miền mạng dó đó không trùng với IP các port của router B. Do đó gói tin được định tuyến đến một thiết bị khác. Đến ngay đây, trong đầu tôi có một số suy nghĩ về giao thức này: ·Router B sẽ định tuyến gói tin đi đến đâu? Làm sao router B biết được con đường nào mà định tuyến gói tin? ·Trong trường hợp lý tưởng toàn bộ IP datagram nằm vừa vặn vào các khung( Frame ) của tầng Network access, làm cho việc truyền dữ liệu được hiểu quả. Để đạt được hiệu quả này, thì việc chọn kích thước cho một IP datagram sẽ như thế nào ? Mặt khác một datagram có thể di chuyển trên nhiều miền mạng khác nhau với các công nghệ mạng khác nhau thì việc chọn một kích thước cho một IP datagram sẽ như thế nào ? ·Như đã biết khi gói tin được forward vào mạng với nhiều miền mạng khác nhau, thử nghĩ nếu phần địa chỉ IP đích không trùng với bất kỳ miền mạng nào, thì gói tin đó sẽ ra sao ? Như vậy gói tin đó cứ forward mãi trên mạng ? Trước khi trả lời các câu hỏi này, tôi tiến hành phân tích định dạng gói dữ liệu IP. Internet đơn vị truyền dữ liệu của nó là IP datagram, hoặc đơn giản hơn là datagram. Cũng giống như bất kỳ giao thức nào, một datagram gồm hai phần là phần đầu và phần dữ liệu. Đơn vị dữ liệu của giao thức IP có cấu trúc như sau: 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 đối với IPv4). +Internet Header Length (IHL) Chỉ độ dài phần đầu của IP packet, tính theo đơn vị từ (word = 32 bit). Độ dài tối thiểu là 5 từ (20 byte). [FONT="]+Differentiated Services (DS): Trước đây còn gọi là Type of Services đặc tả các tham số dịch vụ[/FONT] Với ý nghĩa các bit cụ thể: + Precedebce (3 bit): quyền ưu tiên cụ thể là 111 - Network Control, 110 - Internetwork Control, 101 - CRITIC/ECP, 100 - Flash Override, 011 - Flash, 010 - Immediate, 001 - Priority, 000 – Routine. · 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ình thườ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, 1 nế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ần header 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ên liê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ấp như sau: [FONT="]o [/FONT]Reserved: có giá trị 0. [FONT="]o [/FONT]DF: 0 (May Fragment); 1 (Don’t Fragment). [FONT="]o [/FONT]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. + Time To Live (TTL) (8 bit): quy đị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ị lặp vô hạn trên liê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ùy theo từng chương trình). +Padding (độ dài thay đổi): vùng đệm được dùng để đảm bảo cho phần header luô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. [Tài liệu tham khảo] [1] Nguyễn Quốc Cường, Internet Working Với TCP-IP- Tập I-II [2] Gary R. Wright, W. Richard Stevens,TCP/IP Illustrated, Volume 1-2, January 12, 1995 [3] Internet Hết phần I.
-->Bài viết sẽ có giá trị hơn, nếu tôi nhận được các câu hỏi từ các bạn! Phần II Sau khi phân tích header IP datagram, trở lại với những câu hỏi lúc nãy. Để trả lời các câu hỏi này, chúng ta sẽ cùng nhau phân tích khái niệm “định tuyến‹. Định tuyến là một chức năng của lớp 3 trong mô hình OSI và lớp 2 trong mô hình TCP/IP. Định tuyến là quá trình tìm kiếm con đường hiệu quả nhất từ một thiết bị này đến một thiết bị kia. Thiết bị sơ cấp thực hiện qua trình định tuyến là router. Sau đây là hai chức năng chính của router : · Các router duy trì bảng định tuyến và đảm bảo các router khác biết được sự thay đổi trong topo mạng. Chức năng được thực hiện thông qua một giao thức định tuyến để truyền thông tin mạng đến các router . · Khi các gói tin tiếp cận một router, các router phải dùng bảng định tuyến để xác định chuyển chúng đi đâu. Router chuyển các gói tin đến giao tiếp thích hợp, bổ sung các thông tin định dạng frame cần thiết cho giao tiếp này và sau đó truyền frame này đi. Sau khi đọc xong 2 chức năng của router, tôi đã biết router B sẽ định tuyến gói tin đến đâu và vì sao lại chọn con đường đó. Câu trả lời của tôi là router A. Gói tin đi từ Router B đến Router A có thể sử dụng nhiều công nghệ mạng WAN khác nhau, ví dụ như Point-to-Point, Frame Relay, X25,… Nhưng cần chú ý một điều dù sử dụng bất kỳ công nghệ nào khi gói tin được định tuyến từ một thiết bị mạng này đến một thiết bị mạng khác thì các Frame ớ lớp 2 sẽ bị loại bỏ và được thay thế một frame lớp 2 khác khi gói tin được định tuyến đến thiết bị tiếp theo. Để hiểu rõ vấn đề này tôi lấy một ví dụ đơn giản: Có 3 router I, J, K. Router I kết nối với router J bằng công nghệ PPP. Router J kết nối với Router K sử dụng công nghệ Frame-Relay. Khi gói tin định tuyến đến router I thì frame lớp 2 bị loại bỏ thay vào đó là frame lớp 2 theo công nghệ PPP và gửi sang router J. Nhưng tại router J frame lớp 2 bị loại bỏ, thay vào đó là frame lớp 2 theo công nghệ Frame – Relay. Tại đây nếu để ý chắc chắn sẽ có một câu hỏi , ở trên hình là trường hợp 2 router , thế trường hợp nhiều router thì router sẽ chọn con đường nào? Vì sao? Để trả lời câu hỏi này tôi tiến hành phân tích các bảng định tuyến trong router. Như đã phân tích header IP, để có thể định tuyến các gói tin trên mạng đòi hỏi các router phải có bảng định tuyến. Bảng định tuyến được tạo ra từ các giao thức định tuyến. Bảng định tuyến lưu trữ các thông tin kết nối trực tiếp đến nút và các mạng từ xa. Một route(tuyến) trong bảng định tuyến có ba thành phần chính: · Mạng đích cho biết route trỏ đến mạng nào · Next – hop · Metric cho biết các chi tiết để đến đích. Ở đây tôi chú ý đến thành phần Metric. Trường hợp nhiều router với nhiều con đường đến đích khác nhau thì router sẽ dựa vào thành phần Metric của một route trong bảng định tuyến để xác định nên forward gói tin đến router nào tiếp theo. Thế thành phần Metric là gì? Để hiểu nó là gì tôi lấy một ví dụ thực tế : Việc định tuyến các gói tin trên mạng cũng giống như một người lái xe đi từ thành phố này đến thành phố khác, tương ứng từ router này đến router khác. Để người lái xe có thể đi từ thành phố này đến thành phố khác đòi hỏi ông ta phải biết đường hay có bản đồ, tương ứng ở đây là bảng định tuyến, trong bản đổ đi từ thành phố này đến thành phố khác có rất nhiều đường. Nhiều khi người lái xe chọn những con đường vòng dài, ít xe qua lại có thể đến đích nhanh hơn là chọn con đường cao tốc, ngắn nhưng xe cộ chằng chịt, tắc đường. . . , tương ứng các yếu tố này chính là thành phần Metric của Route trong bảng định tuyến. Từ ví dụ trên, nói một cách cụ thể khi gói tin đến Router, với nhiều con đường(route) đến đích khác nhau, router sẽ căn cứ vào các yếu tố của thành phần Metric trong các Route để chọn con đường đi tốt nhất(best route) đến đích. Các yêu tố có thể là: Next hop(số lượng router mà gói tin đi qua), băng thông, độ trễ, Tick, chi phí,…Và mỗi giao thức định tuyến sẽ có thành phần Metric khác nhau. Để hiểu rõ hơn tôi sẽ lấy một ví dụ như sau: Nhìn hình, dòng đầu tiên(bắt đầu R). R cho tôi biết giao thức định tuyến là RIP, mạng đích mà router sẽ forward gói tin là 10.1.1.0, next hop là 192.168.2.2, vì sử dụng giao thức định tuyến RIP nên có thành phần Metric là yếu tố next hop, nghĩa là căn cứ vào số lượng router mà gói tin đi qua để định tuyến gói tin, ở ví dụ này là 1. Đến đây xem như tôi đã giải đáp được vấn đề thứ nhất. Tôi tiếp tục giải đáp vấn đề thứ 2, trên mỗi công nghệ mạng điều có một giới hạn truyền là khác nhau ví dụ: Ethernet giới hạn là 1500byte, FDDI là 4470 byte, các giới hạn này được gọi là đơn vị tryền tối đa(maximum transfer Unit – MTU). Thay vì thiết kế các IP datagram tuân theo các công nghệ mạng, thì TCP/IP chọn một kích thước khởi đầu và bố trí một cách để chia các IP datagram lớn thành các các phần nhỏ hơn khi datagram cần đi qua một mạng có MTU nhỏ hơn. Các phần datagram nhỏ này được gọi là fragments, và tiến trình chia một IP datagram gọi là phân đoạn. Lúc này trường Flags sẽ có giá trị là MF- phân đoạn hay More fragment. Để hiểu rõ hơn về vấn đề này tôi xét thêm một ví dụ thực tế sau: giả sử tôi có một gói hàng lớn cần vận chuyển từ A vào D, từ A vào D phải qua B và C. Vì gói hàng lớn nên phượng tiện vận chuyển là một chiếc xe tải có trọng lượng lớn. Từ A ra B xe vận chuyển chạy được, nhưng từ B đến C vì có nhiều đoạn đường còn đang thi công, do đó các phương tiện vận chuyển lớn không thể đi từ B đến C. Do đó chỉ có thể phân gói hàng lớn thành các gói hàng nhỏ rồi dùng phương tiện vận chuyển có trọng tải nhỏ vận chuyển các gói hàng đến C. Vấn đề ở đây, các fragment này sẽ kết hợp lại sau khi qua mỗi mạng hay đến đích cuối cúng nó mới kết hợp lại. Câu trả lời là đến đích cuối cùng. Đến đây tôi đã giải đáp xong vấn đề thứ 2. Tôi tiếp tục giải đáp vấn đề thứ 3, [FONT="], nếu để ý, khi tôi ping một host[/FONT] Hãy nhìn vào hình, trường TTL, hay Time To Live là một trường nằm trong gói IP datagram. Thế trường này có ý nghĩa gì ? Tại sao lại được nhắc ở đây ? Time to live(thời gian sống), bất cứ khi nào máy tính đưa một datagram vào Internet, nó thiết lập một thời gian tối đa mà IP datagram đó tồn tại . Mỗi gói datagram này đi qua một bộ định tuyến hay một máy tính thì giá trị TTL(trên hình) sẽ giảm xuống 1 khi thời gian trôi qua và sẽ bị huỷ bỏ nếu TTL=0 hay nói cách khác là hết hạn, lúc đó sẽ gửi thông báo lỗi trở về nơi xuất phát. Ở đây, “ gửi thông báo lỗi”, thế nó gửi thông báo lỗi như thế nào, phải chăng có một giao thức khác sẽ đảm nhận nhiệm vụ này, các phần sau tôi sẽ phân tích tiếp. Trên đây tôi đã trình bày về tổng quan về IP cũng như một số vấn đề xung quanh nó, thực tế có rất nhiều vấn đề khác nữa, nhưng trong phạm vi bài viết này tôi chỉ phân tích một số vấn đề cơ bản. [Tài liệu tham khảo] [1] Nguyễn Quốc Cường, Internet Working Với TCP-IP- Tập I-II [2] Gary R. Wright, W. Richard Stevens,TCP/IP Illustrated, Volume 1-2, January 12, 1995 [3] Internet Thân!
bài này là bài tự viết hả bạn, hay copy từ nguồn khác . Bởi mình nhớ đã đọc bài tương tự như này ở 1 vài trang khác rồi , giống nhau quá
--->tài liệu tham khảo của bài viết này tôi có ghi phía dưới đó bạn, nếu thực sự có bài nào tương tự bài này 100% bồ hãy xem ngày viết bài xem thử bài nào trước bài nào sau là biết liền, nếu thực sự bài này tôi copy ở đâu đó, phiền bạn cho tui xin cái link bài viết.
cái này các bạn sẽ được tìm hiểu trong môn TCP/IP, đây là kiến thức lý thuyết quan trọng mà người học mạng cần phải nắm p/s: mọi người nhớ đặt câu hỏi đề tăng giá trị của bài viết nhé