TCP/IP

pdf
Số trang TCP/IP 33 Cỡ tệp TCP/IP 432 KB Lượt tải TCP/IP 1 Lượt đọc TCP/IP 64
Đánh giá TCP/IP
4.6 ( 8 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 33 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

CHƯƠNG I HỌ GIAO THỨC TCP/IP I.1.1. Họ giao thức TCP/IP Sự ra đời của họ giao thức TCP/IP gắn liền với sự ra đời của Internet mà tiền thân là mạng ARPAnet (Advanced Research Projects Agency) do Bộ Quốc phòng Mỹ tạo ra. Đây là bộ giao thức được dùng rộng rãi nhất vì tính mở của nó. Điều đó có nghĩa là bất cứ máy nào dùng bộ giao thức TCP/IP đều có thể nối được vào Internet. Hai giao thức được dùng chủ yếu ở đây là TCP (Transmission Control Protocol) và IP (Internet Protocol). Chúng đã nhanh chóng được đón nhận và phát triển bởi nhiều nhà nghiên cứu và các hãng công nghiệp máy tính với mục đích xây dựng và phát triển một mạng truyền thông mở rộng khắp thế giới mà ngày nay chúng ta gọi là Internet. Phạm vi phục vụ của Internet không còn dành cho quân sự như ARPAnet nữa mà nó đã mở rộng lĩnh vực cho mọi loại đối tượng sử dụng, trong đó tỷ lệ quan trọng nhất vẫn thuộc về giới nghiên cứu khoa học và giáo dục. Khái niệm giao thức (protocol) là một khái niệm cơ bản của mạng thông tin máy tính. Có thể hiểu một cách khái quát rằng đó chính là tập hợp tất cả các qui tắc cần thiết (các thủ tục, các khuôn dạng dữ liệu, các cơ chế phụ trợ...) cho phép các thao tác trao đổi thông tin trên mạng được thực hiện một cách chính xác và an toàn. Có rất nhiều họ giao thức đang được thực hiện trên mạng thông tin máy tính hiện nay như IEEE 802.X dùng trong mạng cục bộ, CCITT X25 dùng cho mạng diện rộng và đặc biệt là họ giao thức chuẩn của ISO (tổ chức tiêu chuẩn hóa quốc tế) dựa trên mô hình tham chiếu bảy tầng cho việc nối kết các hệ thống mở. Gần đây, do sự xâm nhập của Internet vào Việt nam, chúng ta được làm quen với họ giao thức mới là TCP/IP mặc dù chúng đã xuất hiện từ hơn 20 năm trước đây. TCP/IP (Transmission Control Protocol/ Internet Protocol) TCP/IP 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 được hình thành từ những năm 70. Đến năm 1981, TCP/IP phiên bản 4 mới hoàn tất và được phổ biến rộng rãi cho toàn bộ những máy tính sử dụng hệ điều hành UNIX. Sau này Microsoft cũng đã đưa TCP/IP trở thành một trong những giao thức căn bản của hệ điều hành Windows 9x mà hiện nay đang sử dụng. Đến năm 1994, một bản thảo của phiên bản IPv6 được hình thành với sự cộng tác của nhiều nhà khoa học thuộc các tổ chức Internet trên thế giới để cải tiến những hạn chế của IPv4. Khác với mô hình ISO/OSI tầng liên mạng sử dụng giao thức kết nối mạng "không liên kết" (connectionless) IP, tạo thành hạt nhân hoạt động của Internet. Cùng với các thuật toán định tuyến RIP, OSPF, BGP, tầng liên mạng IP cho phép kết nối một cách mềm dẻo và linh hoạt các loại mạng "vật lý" khác nhau như: Ethernet, Token Ring , X.25... Giao thức trao đổi dữ liệu "có liên kết" (connection - oriented) TCP được sử dụng ở tầng vận chuyển để đảm bảo tính chính xác và tin cậy việc trao đổi dữ liệu dựa trên kiến trúc kết nối "không liên kết" ở tầng liên mạng IP. Các giao thức hỗ trợ ứng dụng phổ biến như truy nhập từ xa (telnet), chuyển tệp (FTP), dịch vụ World Wide Web (HTTP), thư điện tử (SMTP), dịch vụ tên miền (DNS) ngày càng được cài đặt phổ biến như những bộ phận cấu thành của các hệ điều hành thông dụng như UNIX (và các hệ điều hành chuyên dụng cùng họ của các nhà cung cấp thiết bị tính toán như AIX của IBM, SINIX của Siemens, Digital UNIX của DEC), Windows9x/NT, Novell Netware,... OSI TCP/IP Application Presentation Application SMTP TELNET FTP DNS Session Transprort TCP UDP Network Hình 2.1 Mô hình OSI và mô hình kiến trúc của TCP/IP ICMP IGMP IP Data link ARP RARP Protocols defined by the underlying networks Physical Hình 13. Mô hình thanm chiếu TCP/IP với chuẩn OSI 7 lớp Như vậy, TCP tương ứng với lớp 4 cộng thêm một số chức năng của lớp 5 trong họ giao thức chuẩn ISO/OSI. Còn IP tương ứng với lớp 3 của mô hình OSI. Trong cấu trúc bốn lớp của TCP/IP, khi dữ liệu truyền từ lớp ứng dụng cho đến lớp vật lý, mỗi lớp đều cộng thêm vào phần điều khiển của mình để đảm bảo cho việc truyền dữ liệu được chính xác. Mỗi thông tin điều khiển này được gọi là một header và được đặt ở trước phần dữ liệu được truyền. Mỗi lớp xem tất cả các thông tin mà nó nhận được từ lớp trên là dữ liệu, và đặt phần thông tin điều khiển header của nó vào trước phần thông tin này. Việc cộng thêm vào các header ở mỗi lớp trong quá trình truyền tin được gọi là encapsulation. Quá trình nhận dữ liệu diễn ra theo chiều ngược lại: mỗi lớp sẽ tách ra phần header trước khi truyền dữ liệu lên lớp trên. Mỗi lớp có một cấu trúc dữ liệu riêng, độc lập với cấu trúc dữ liệu được dùng ở lớp trên hay lớp dưới của nó. Sau đây là giải thích một số khái niệm thường gặp. Stream là dòng số liệu được truyền trên cơ sở đơn vị số liệu là Byte. Số liệu được trao đổi giữa các ứng dụng dùng TCP được gọi là stream, trong khi dùng UDP, chúng được gọi là message. Mỗi gói số liệu TCP được gọi là segment còn UDP định nghĩa cấu trúc dữ liệu của nó là packet. Lớp Internet xem tất cả các dữ liệu như là các khối và gọi là datagram. Bộ giao thức TCP/IP có thể dùng nhiều kiểu khác nhau của lớp mạng dưới cùng, mỗi loại có thể có một thuật ngữ khác nhau để truyền dữ liệu. Phần lớn các mạng kết cấu phần dữ liệu truyền đi dưới dạng các packets hay là các frames. Application Stream Transport Segment/datagram Internet Datagram Network Access Frame Cấu trúc dữ liệu tại các lớp của TCP/IP Lớp truy nhập mạng Network Access Layer là lớp thấp nhất trong cấu trúc phân bậc của TCP/IP. Những giao thức ở lớp này cung cấp cho hệ thống phương thức để truyền dữ liệu trên các tầng vật lý khác nhau của mạng. Nó định nghĩa cách thức truyền các khối dữ liệu (datagram) IP. Các giao thức ở lớp này phải biết chi tiết các phần cấu trúc vật lý mạng ở dưới nó (bao gồm cấu trúc gói số liệu, cấu trúc địa chỉ...) để định dạng được chính xác các gói dữ liệu sẽ được truyền trong từng loại mạng cụ thể. So sánh với cấu trúc OSI/OSI, lớp này của TCP/IP tương đương với hai lớp Datalink, và Physical. Chức năng định dạng dữ liệu sẽ được truyền ở lớp này bao gồm việc nhúng các gói dữ liệu IP vào các frame sẽ được truyền trên mạng và việc ánh xạ các địa chỉ IP vào địa chỉ vật lý được dùng cho mạng. Lớp liên mạng Internet Layer là lớp ở ngay trên lớp Network Access trong cấu trúc phân lớp của TCP/IP. Internet Protocol là giao thức trung tâm của TCP/IP và là phần quan trọng nhất của lớp Internet. IP cung cấp các gói lưu chuyển cơ bản mà thông qua đó các mạng dùng TCP/IP được xây dựng. I.1.2. Chức năng chính của - Giao thức liên mạng IP(v4) Trong phần này trình bày về giao thức IPv4 (để cho thuận tiện ta viết IP có nghĩa là đề cập đến IPv4). Mục đích chính của IP là cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu. IP cung cấp các chức năng chính sau: ƒ Định nghĩa cấu trúc các gói dữ liệu là đơn vị cơ sở cho việc truyền dữ liệu trên Internet. ƒ Định nghĩa phương thức đánh địa chỉ IP. ƒ Truyền dữ liệu giữa tầng vận chuyển và tầng mạng . ƒ Định tuyến để chuyển các gói dữ liệu trong mạng. ƒ Thực hiện việc phân mảnh và hợp nhất (fragmentation -reassembly) các gói dữ liệu và nhúng / tách chúng trong các gói dữ liệu ở tầng liên kết. I.2. Địa chỉ IP Sơ đồ địa chỉ hoá để định danh các trạm (host) trong liên mạng được gọi là địa chỉ IP. Mỗi địa chỉ IP có độ dài 32 bits (đối với IP4) được tách thành 4 vùng (mỗi vùng 1 byte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc nhị phân. Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm để tách giữa các vùng. Mục đích của địa chỉ IP là để định danh duy nhất cho một host bất kỳ trên liên mạng. Có hai cách cấp phát địa chỉ IP, nó phụ thuộc vào cách ta kết nối mạng. Nếu mạng của ta kết nối vào mạng Internet, địa mạng chỉ được xác nhận bởi NIC (Network Information Center). Nếu mạng của ta không kết nối Internet, người quản trị mạng sẽ cấp phát địa chỉ IP cho mạng này. Còn các host ID được cấp phát bởi người quản trị mạng. Khuôn dạng địa chỉ IP: mỗi host trên mạng TCP/IP được định danh duy nhất bởi một địa chỉ có khuôn dạng - Phần định danh địa chỉ mạng Network Number - Phần định danh địa chỉ các trạm làm việc trên mạng đó Host Number Ví dụ 128.4.70.9 là một địa chỉ IP Do tổ chức và độ lớn của các mạng con của liên mạng có thể khác nhau, người ta chia các địa chỉ IP thành 5 lớp ký hiệu A,B,C, D, E với cấu trúc được xác định trên hình 2.2. Các bit đầu tiên của byte đầu tiên được dùng để định danh lớp địa chỉ (0-lớp A; 10 lớp B; 110 lớp C; 1110 lớp D; 11110 lớp E). ƒ Lớp A cho phép định danh tới 126 mạng (sử dụng byte đầu tiên), với tối đa 16 triệu host (3 byte còn lại, 24 bits) cho mỗi mạng. Lớp này được dùng cho các mạng có số trạm cực lớn. Tại sao lại có 126 mạng trong khi dùng 8 bits? Lí do đầu tiên, 127.x (01111111) dùng cho địa chỉ loopback, thứ 2 là bit đầu tiên của byte đầu tiên bao giờ cũng là 0, 1111111(127). Dạng địa chỉ lớp A (network number. host.host.host). Nếu dùng ký pháp thập phân cho phép 1 đến 126 cho vùng đầu, 1 đến 255 cho các vùng còn lại. Hình 14. Cách đánh địa chỉ TCP/IP ƒ Lớp B cho phép định danh tới 16384 mạng (10111111.11111111.host.host), với tối đa 65535 host trên mỗi mạng. Dạng của lớp B (network number. Network number.host.host). Nếu dùng ký pháp thập phân cho phép 128 đến 191 cho vùng đầu, 1 đến 255 cho các vùng còn lại ƒ Lớp C cho phép định danh tới 2.097.150 mạng và tối đa 254 host cho mỗi mạng. Lớp này được dùng cho các mạng có ít trạm. Lớp C sử dụng 3 bytes đầu định danh địa chỉ mạng (110xxxxx). Dạng của lớp C (network number. Network number.Network number.host). Nếu dùng dạng ký pháp thập phân cho phép 129 đến 233 cho vùng đầu và từ 1 đến 255 cho các vùng còn lại. ƒ Lớp D dùng để gửi IP datagram tới một nhóm các host trên một mạng. Tất cả các số lớn hơn 233 trong trường đầu là thuộc lớp D ƒ Lớp E dự phòng để dùng trong tương lai Như vậy địa chỉ mạng cho lớp: A: từ 1 đến 126 cho vùng đầu tiên, 127 dùng cho địa chỉ loopback, B từ 128.1.0.0 đến 191.255.0.0, C từ 192.1.0.0 đến 233.255.255.0 I. VÍ DỤ 192.1.1.1 địa chỉ lớp C có địa chỉ mạng 192.1.1.0, địa chỉ host là 1 200.6.5.4 địa chỉ lớp C có địa chỉ mạng 200.6.5, địa chỉ mạng là 4 150.150.5.6 địa chỉ lớp B có địa chỉ mạng 150.150.0.0, địa chỉ host là 5.6 9.6.7.8 địa chỉ lớp A có địa chỉ mạng 9.0.0.0, địa chỉ host là 6.7.8 128.1.0.1 địa chỉ lớp B có địa chỉ mạng 128.1.0.0, địa chỉ host là 0.1 Subneting Trong nhiều trường hợp, một mạng có thể được chia thành nhiều mạng con (subnet), lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con. Vùng subnetid được lấy từ vùng hostid, cụ thể đối với 3 lớp A, B, C như sau: Netid 0 Subnetid 78 Netid 0 15 16 23 24 Subnetid Hình 2.5 Bổ sung vùng subnetid 78 Lớp A hostid 15 16 23 24 31 hostid 26 27 Lớp B 31 Ví dụ: Lớp C Netid Subnetid hostid 17.1.1.1 địa chỉ lớp A có địa chỉ mạng 17, địa chỉ subnet 1, địa chỉ host 1.1 129.1.1.1 địa chỉ lớp B có địa chỉ mạng 129.1, địa chỉ subnet 1, địa chỉ host 1. I.3. Cấu trúc gói dữ liệu IP IP là giao thức cung cấp dịch vụ truyền thông theo kiểu “không liên kết” (connectionless). Phương thức không liên kết cho phép cặp trạm truyền nhận không cần phải thiết lập liên kết trước khi truyền dữ liệu và do đó không cần phải giải phóng liên kết khi không còn nhu cầu truyền dữ liệu nữa. Phương thức kết nối "không liên kết" cho phép thiết kế và thực hiện giao thức trao đổi dữ liệu đơn giản (không có cơ chế phát hiện và khắc phục lỗi truyền). Cũng chính vì vậy độ tin cậy trao đổi dữ liệu của loại giao thức này không cao. Các gói dữ liệu IP được định nghĩa là các datagram. Mỗi datagram có phần tiêu đề (header) chứa các thông tin cần thiết để chuyển dữ liệu (ví dụ địa chỉ IP của trạm đích). Nếu địa chỉ IP đích là địa chỉ của một trạm nằm trên cùng một mạng IP với trạm nguồn thì các gói dữ liệu sẽ được chuyển thẳng tới đích; nếu địa chỉ IP đích không nằm trên cùng một mạng IP với máy nguồn thì các gói dữ liệu sẽ được gửi đến một máy trung chuyển, IP gateway để chuyển tiếp. IP gateway là một thiết bị mạng IP đảm nhận việc lưu chuyển các gói dữ liệu IP giữa hai mạng IP khác nhau. Hình 2.3 mô tả cấu trúc gói số liệu IP. ƒ VER (4 bits) : chỉ Version hiện hành của IP được cài đặt. ƒ IHL (4 bits) : chỉ độ dài phần tiêu đề (Internet Header Length) của datagram, tính theo đơn vị word (32 bits). Nếu không có trường này thì độ dài mặc định của phần tiêu đề là 5 từ. ƒ Type of service (8 bits): cho biết các thông tin về loại dịch vụ và mức ưu tiên của gói IP, có dạng cụ thể như sau: Precedence D T R Unused Trong đó: Precedence (3 bits): chỉ thị về quyền ưu tiên gửi datagram, cụ thể là: 111 Network Control (cao nhất) 011- flash 110 Internetwork Control 010 Immediate 101 CRITIC/ECP 001 Priority 100 Flas Override 000 Routine (thấp nhất) D (delay) (1 bit) : chỉ độ trễ yêu cầu D=0 độ trễ bình thường, D=1 độ trễ thấp T (Throughput) (1 bit) : chỉ số thông lượng yêu cầu T=1 thông lượng bình thường T=1 thông lượng cao R (Reliability) (1 bit): chỉ độ tin cậy yêu cầu R=0 độ tin cậy bình thường R=1 độ tin cậy cao ƒ Total Length (16 bits): chỉ độ dài toàn bộ datagram, kể cả phần header (tính theo đơn vị bytes), vùng dữ liệu của datagram có thể dài tới 65535 bytes. ƒ Identification (16 bits) : cùng với các tham số khác như (Source Address và Destination Address) tham số này dùng để định danh duy nhất cho một datagram trong khoảng thời gian nó vẫn còn trên liên mạng Bit 0 VERS Bit 31 HLEN Service type Identification Time to live Toltal length Flags Protocol Fragment offset Header checksum Source IP address Header Destination IP address IP options (maybe none) Padding IP datagram data (up to 65535 bytes) Hình 15. Cấu trúc gói dữ liệu TCPIP ƒ Flags (3 bits) : liên quan đến sự phân đoạn (fragment) các datagram. Cụ thể là: O DF MF Bit 0 : reserved chưa sử dụng luôn lấy giá trị 0 Bit 1 : (DF)= 0 (may fragment) 1 (Don’t Fragment) Bit 2 : (MF)= 0 (Last Fragment) 1 (More Fragment) ƒ Fragment Offset (13 bits) : chỉ vị trí của đoạn (fragment) ở trong datagram, tính theo đơn vị 64 bits, có nghĩa là 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 của 64 bits. ƒ Time To Live (TTL-8 bits) : quy định thời gian tồn tại của một gói dữ liệu trên liên mạng để tránh tình trạng một datagram bị quẩn trên mạng. Giá trị này được đặt lúc bắt đầu gửi đi và sẽ giảm dần mỗi khi gói dữ liệu được xử lý tại những điểm trên đường đi của gói dữ liệu (thực chất là tại các router). Nếu giá trị này bằng 0 trước khi đến được đích, gói dữ liệu sẽ bị huỷ bỏ. ƒ Protocol (8 bits): chỉ giao thức tầng 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 bits): mã kiểm soát lỗi sử dụng phương pháp CRC (Cyclic Redundancy Check) dùng để đảm bảo thông tin về gói dữ liệu được truyền đi một cách chính xác (mặc dù dữ liệu có thể bị lỗi). Nếu như việc kiểm tra này thất bại, gói dữ liệu sẽ bị huỷ bỏ tại nơi xác định được lỗi. Cần chú ý là IP không cung cấp một phương tiện truyền tin cậy bởi nó không cung cấp cho ta một cơ chế để xác nhận dữ liệu truyền tại điểm nhận hoặc tại những điểm trung gian. Giao thức IP không có cơ chế Error Control cho dữ liệu truyền đi, không có cơ chế kiểm soát luồng dữ liệu (flow control). ƒ Source Address (32 bits): địa chỉ của trạm nguồn. ƒ Destination Address (32 bits): địa chỉ của trạm đích. ƒ Option (có độ dài thay đổi) sử dụng trong một số trường hợp, nhưng thực tế chúng rất ít dùng. Option bao gồm bảo mật, chức năng định tuyến đặc biệt ƒ 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 của 8 bits, tối đa là 65535 bytes. I.4. Phân mảnh và hợp nhất các gói IP Các gói dữ liệu IP phải được nhúng trong khung dữ liệu ở tầng liên kết dữ liệu tương ứng, trước khi chuyển tiếp trong mạng. Quá trình nhận một gói dữ liệu IP diễn ra ngược lại. Ví dụ, với mạng Ethernet ở tầng liên kết dữ liệu quá trình chuyển một gói dữ liệu diễn ra như sau. Khi gửi một gói dữ liệu IP cho mức Ethernet, IP chuyển cho mức liên kết dữ liệu các thông số địa chỉ Ethernet đích, kiểu khung Ethernet (chỉ dữ liệu mà Ethernet đang mang là của IP) và cuối cùng là gói IP. Tầng 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ị checksum. Trường type chỉ ra kiểu khung là 0x0800 đối với dữ liệu IP. Mức liên kết dữ liệu sẽ chuyển khung dữ liệu theo thuật toán truy nhập Ethernet. Một gói dữ liệu IP có độ dài tối đa 65536 byte, trong khi hầu hết các tầng liên kết dữ liệu chỉ hỗ trợ các khung dữ liệu nhỏ hơn độ lớn tối đa của gói dữ liệu IP nhiều lần (ví dụ độ dài lớn nhất của một khung dữ liệu Ethernet là 1500 byte). Vì vậy cần thiết phải có cơ chế phân mảnh khi phát và hợp nhất khi thu đối với các gói dữ liệu IP. Độ dài tối đa của một gói dữ liệu liên kết là MTU (Maximum Transmit Unit). Khi cần chuyển một gói dữ liệu IP có độ dài lớn hơn MTU của một mạng cụ thể, cần phải chia gói số liệu IP đó thành những gói IP nhỏ hơn để độ dài của nó nhỏ hơn hoặc bằng MTU gọi chung là mảnh (fragment). Trong phần tiêu đề của gói dữ 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 là 1500 byte. Nếu muốn gửi một gói dữ liệu IP gồm 2000 byte qua Ethernet, phải chia thành hai gói nhỏ hơn, mỗi gói không quá giới hạn MTU của Ethernet. Original IP packet 1. fragment 2.fragment 04 05 00 1 1 1 05 06 2000 1 04 05 00 0 0 0 0 1 1 1 checksum 05 06 128.82.24.12 192.12.2.5 Data 1980 byte 1500 1 04 05 00 520 1 0 0 0 1 1 1 checksum 05 06 checksum 128.82.24.12 1 0 0 0 0 128.82.24.12 192.12.2.5 Data 1480 byte 192.12.2.5 Data 500 byte Hình 16. Nguyên tắc phân mảnh gói dữ liệu IP dùng cờ MF (3 bit thấp của trường Flags trong phần đầu của gói IP) và trường Flagment 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 cùng trong chuỗi phân mảnh đều có trường này giống nhau. Cờ MF bằng 1 nếu là gói đầu của chuỗi phân mảnh và 0 nếu là gói cuối của gói đã được phân mảnh.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.