5.3 Giao thức liên mạng IPĐặc trưng công nghệ: Connectionless = Datagram Không phải thiết lập; giải phóng kết nối Packets có thể đi theo các con đường khác nhau Không có cơ chế phát h
Trang 1Truyền số liệu và Mạng máy tính
Mạng Internet
GVC Nguyễn Đình Việt Khoa Công nghệ, ĐHQGHN
Hà nội - 2004
Trang 35.1 Giới thiệu chung
Internet là mạng của các mạng được kết nối lại với nhau trên phạm vi
toàn cầu, sử dụng bộ giao thức TCP/IP.
Trang 45.1 Giới thiệu chung
Một số cột mốc
9/1969, ARPANET - mạng máy tính chuyển mạch gói đầu tiên trên
thế giới ra đời.
1977: thử nghiệm thành công việc kết nối 3 mạng thông tin máy tính
của 3 trường ĐH lớn của Mỹ bằng giao thức TCP/IP.
1986: Đưa vào sử dụng mạng NSFNET mạng xương sống, 34 – 45
Mbps, phục vụ cho nghiên cứu, giảng dạy kích thích sự phát triển
mạnh mẽ của Internet.
1990-1991: Internet được thương mại hoá, ra đời “Internet Society”
Internet bắt đầu phát triển bùng nổ.
Trang 55.1 Giới thiệu chung
Sự phát triển của Internet
Trang 65.1 Giới thiệu chung
Sự phát triển của Internet
Trang 75.1 Giới thiệu chung
Các yếu tố thúc đẩy sự phát triển của Internet
Sử dụng TCP/IP trong Unix, HĐH được sử dụng phổ biến từ 1983.
PC ra đời năm 1980, sức mạnh tính toán ngày càng cao, trong khi giá ngày càng rẻ.
NSFNET - mạng xương sống của Mỹ, tốc độ cao, ra đời năm 1986.
Hệ thống tên miền ra đời làm cho việc truy nhập Internet trở nên đơn
giản và thuận tiện.
Kiến trúc đơn giản của bộ giao thức và tính linh hoạt của Internet.
Trang 95.2.2 Bộ giao thức TCP/IP
Tầng liên mạng – Internet
– Sử dụng giao thức connectionless – IP, là hạt nhân hoạt động của
hệ thống truyền dẫn Internet.
– Các thuật toán định tuyến RIP, OSFD, BGP
– 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, 25 v.v dựa trên địa chỉ IP.
Tầng Transport
TCP – connection-oriented
UDP - connectionless
Trang 105.3 Giao thức liên mạng IP
Đặc trưng công nghệ:
Connectionless = Datagram
Không phải thiết lập; giải phóng kết nối
Packets có thể đi theo các con đường khác nhau
Không có cơ chế phát hiện/khắc phục lỗi truyền
Giao thức đơn giản, độ tin cậy không cao
Các chức năng chính:
– Định nghĩa khuôn dạng gói dữ liệu (IP packet)
– Định nghĩa phương thức đánh địa chỉ IP
– Routing
– Fragmentation/ Reassembly
Trang 115.3 Giao thức liên mạng IP
5.3.2 Cấu trúc gói số liệu IP
Version (4 bit): IPv4 hoặc IPv6
IHL (IP packet Header Length) (4 bit): đơn vị word 32 bit.
– Min = 5 (không có thêm trường tuỳ chọn)
– Max = 15 (trường tuỳ chọn là 40 byte)
– Đối với một số tuỳ chọn, thí dụ để ghi con đường mà packet đã đi qua, 40 byte là quá nhỏ, không
thể dùng được.
Trang 125.3.2 Cấu trúc gói số liệu IP
Trường Type of service (8 bits): Dịch vụ và mức ưu tiên.
– Ý nghĩa của nó được người ta thay đổi chút ít trong các năm qua
– Có thể có nhiều cách kết hợp khác nhau giữa độ tin cậy và tốc độ Đối với tiếng nói được số hoá, việc phân phát nhanh quan trọng hơn phân phát chính xác Đối với FTP, việc truyền không có lỗi quan trọng hơn việc truyền nhanh
– Bản thân chính trường này lại bao gồm một số trường, tính từ trái qua phải như sau:
Precedence (3 bit đầu tiên): quyền ưu tiên; 0 = normal, , 7 = network control packet.
Cờ D, T và R (3 bit tiếp theo): cho phép host chỉ ra là nó quan tâm (cần) đến gì nhất trong
tập hợp {Delay, Throughput và Reliability} Trong thực tế, các router hiện nay lờ toàn bộ trường Type of service.
2 bit còn lại hiện nay chưa dùng đến
Trang 135.3.2 Cấu trúc gói số liệu IP
Trường Total Length (16 bits): Tổng chiều dài packet, kể cả header lẫn
data, đơn vị = byte.
– Max = 65535 byte
– Hiện nay giới hạn trên là có thể chấp nhận được
– Với các mạng Gigabit trong tương lai sẽ cần đến các datagram lớn hơn
Trường Identification (16 bit): từ định danh của datagram (IP packet)
– Dùng cho host đích xác định được mảnh (fragment) thuộc về datagram nào
– Tất cả các mảnh của một datagram có cùng một giá trị của trường Identification
Trang 145.3.2 Cấu trúc gói số liệu IP
Trường Flags (2 bits): dùng cho quá trình Fragmentation/ Reassembly
– Sau trường Identification là một bit không dùng đến Flags gồm 2 trường 1 bit là DF
và MF
– DF (Don't Fragment): lệnh cho các router đừng có phân mảnh datagram.
Datagram phải tránh mạng có kích thước packet nhỏ.
Tất cả các máy được yêu cầu chấp nhận việc phân mảnh đến 576 byte hoặc nhỏ hơn.
– MF (More Fragments): Tất cả các mảnh của datagram, trừ mảnh cuối cùng phải có
bit MF=1 để biết được khi nào tất cả các mảnh của một datagram đã đến đích
Trang 155.3.2 Cấu trúc gói số liệu IP
Trường Fragment offset (13 bits): cho biết khoảng cách
tương đối của gói tin IP trong gói tin bị phân mảnh.
– Tất cả các mảnh của một datagram, trừ mảnh cuối cùng phải có chiều dài là bội số của 8 bytes - đơn vị cơ sở của mảnh.
– 13 bit nên số mảnh lớn nhất của một datagram là 8192
Trang 165.3.2 Cấu trúc gói số liệu IP
Trường Time to live – TTL (8 bits): con đếm thời gian
– Giả thiết đơn vị là giây max = 255s; thường được đặt = 30s
– Phải được giảm đi một tại mỗi chặng (hop) và được giảm nhiều lần khi đứng xếp hàng một thời gian dài trong mỗi router.
– Thực tế, nó chỉ đếm các chặng.
Trang 175.3.2 Cấu trúc gói số liệu IP
Trường Protocol (8 bits): Chỉ loại số liệu giao thức
mức trên nằm trong trường Data.
– Cho biết cần trao datagram cho quá trình nào của tầng
transport.
Một khả năng là TCP
Nhưng cũng có thể là UDP và các quá trình khác.
– Việc đánh số các giao thức là trên phạm vi toàn cầu, trên
toàn bộ Internet, được định nghĩa trong chuẩn RFC 1700
Trang 185.3.2 Cấu trúc gói số liệu IP
Trường Header checksum (16 bits):
– Tính riêng cho header, giúp phát hiện các lỗi phát sinh trong
Trang 195.3.2 Cấu trúc gói số liệu IP
Trường Source address, Destination address (32 bit):
– Địa chỉ IP của bên gửi và nhận
– Mỗi địa chỉ bao gồm: địa chỉ mạng và địa chỉ host trong mạng
Trường Options: Tạo ra lối thoát cho các version sau:
– Bổ sung thêm các thông tin không có trong version đầu tiên
– Thí nghiệm thử các ý tưởng mới và để tránh việc phải dành (allocate) các bit của
header cho các thông tin hiếm khi cần đến
– Chiều dài có thể thay đổi: 0 (15 – 5) x 32 bits
– Mỗi Option bắt đầu bằng một mã 1 byte chỉ ra tuỳ chọn
– cont
Trang 205.3.2 Cấu trúc gói số liệu IP
Trường Options:
– Hiện thời có 5 tuỳ chọn (option) đã được định nghĩa
Security (an ning) Chỉ ra mức độ bí mật của datagram
Strict source routing Chỉ ra con đường đầy đủ để đi theo
Loose source routing Chỉ ra danh sách các router không được bỏ qua
Record route Buộc mỗi router gắn địa chỉ IP của nó vào
Timestamp Buộc mỗi router gắn địa chỉ IP và timestamp của nó
vào
– Tuy nhiên không phải mọi router đều hỗ trợ tất cả các tuỳ chọn này
– Padding: Được chèn thêm sao cho chiều dài Header = bội của 32 bits
Trường Data (32 bits): Số liệu của giao thức tầng trên.
Trang 215.3.1 Địa chỉ IP
32 bit, gồm Class + Netid + Hostid, duy nhất trên Internet
Những máy nối với nhiều mạng có các địa chỉ IP khác nhau trên từng mạng
Được chia thành 4 lớp: A, B, C, D và E (dự trữ)
Cách viết địa chỉ Internet: Dotted Decimal Notation
Để tránh đụng độ, các địa chỉ mạng được NIC (Network Information Center) gán
Trang 225.3.1 Địa chỉ IP
Một số địa chỉ IP đặc biệt
0.0.0.0 Dùng cho các host khi mới khởi động
Netid = 0 Current network, dùng cho các host khi không biết địa chỉ mạng của nó
Hostid = 1 Người quản trị mạng thường không cho phép sử dụng đặc điểm này
127.xx.yy.zz packet gửi tới điạ chỉ này không được đưa lên đường truyền, mà được
xử lý cục bộ giống như packet đến Cho phép gửi packet đến mạng cục bộ mà người
gửi không cần biết địa chỉ của nó
Trang 235.3.1 Địa chỉ IP
Subnets & Subnet Mask
Mọi host trong một mạng phải có cùng Netid mỗi khi có một mạng mới được cài đặt, phải
tiếp xúc với ICANN (Internet Corporation for Assigned Names and Numbers) để nhận 1 Netid
mới; con số này phải được loan báo trên toàn thế giới.
Giải pháp: Cho phép chia một mạng thành một số phần (Subnets) để sử dụng nội bộ, nhưng vẫn thể hiện như là một mạng duy nhất đối với bên ngoài Subnet ở đây "subnet" để chỉ tập hợp subnet"subnet" để chỉ tập hợp để chỉ tập hợp
các router và các đường truyền trong một mạng Cần phân biệt chúng theo ngữ cảnh.
Trang 245.3.1 Địa chỉ IP
Subnets & Subnet Mask
Thí dụ, ban đầu cơ quan của chúng ta bắt đầu sử dụng địa chỉ lớp B (Hostid = 16 bit)
– Ban đầu khi mới có 1 mạng LAN, chúng ta gán cho các host giá trị hostid = 1 254
– Khi có thêm 1 LAN mới, chúng ta có thể quyết định chia Hostid 16 bit thành số chỉ subnet 6 bit và số chỉ host 10 bit Như vậy có thể có tối đa 63 mạng LAN, trong mỗi mạng đó có
1022 host.
Để xác định được mạng con (Subnet), Main Router cần sử dụng một mặt nạ bit (Bit
mask), gọi là Subnet mask để có thể tách địa chỉ IP làm 2 phần:
– Network + Subnet number
– Host number
Subnet mask = 1111.1111.1111.0000.0000 = 255.255.252.0 (cách viết khác /22)
Trang 255.3.1 Địa chỉ IP
Subnets & Subnet Mask
Đối với bên ngoài, việc chia subnet như trên là trong suốt không cần liên hệ với ICANN để “xin” địa chỉ
Thí dụ, chúng ta có thể gán cho 4 subnet 4 miền địa chỉ IP sau:
– Subnet 1: 1000.0010 0011.0010 0000.01|00 0000.0001 (130.50.4.1)– Subnet 2: 1000.0010 0011.0010 0000.10|00 0000.0001 (130.50.8.1)– Subnet 3: 1000.0010 0011.0010 0000.11|00 0000.0001 (130.50.12.1)
Trang 265.3.3 Phân mảnh và hợp nhất các mảnh của gói tin IP
IP packet dài tối đa 65536 byte (Total length Field = 16 bit)
Được chứa trong trường data của các Frame của tầng Data link; Type field = 0x0800.
Max Frame Size = MTU (Maximum Transmission Unit)
Nói chung MTU << 65535 Cần phải phân mảnh và hợp nhất các mảnh của IP packet
Sử dụng trường MF (More Fragment) và Fragment Offset.
Trang 275.3.4 Định tuyến IP
Dựa trên nguyên tắc đánh địa chỉ IP:
– Mỗi host và router trên Internet có một địa chỉ IP, không trùng nhau.
– Cùng mạng Vật lý cùng địa chỉ mạng (Netid)
Routing = tìm đường đi tới mạng; dựa trên Routing table, lưu giữ tại các trạm làm việc
và các Router:
– Destination Network: địa chỉ (mạng) đích.
– Gateway: cổng để đi tới đích đã được chỉ định
– Flags: mô tả các đặc trưng của tuyến đường U=Up; H=Host; G=Gateway
– Refcnt: số lần tuyến đường này được dùng đến để thực hiện kết nối.
– Use: số gói dữ liệu đã được chuyển qua con đường này
– Interface: tên của kết nối mạng được dùng của tuyến đường này.
Trang 285.3.4 Định tuyến IP
Thuật toán định tuyến IP
Giảm TTL; nếu TTL=0 thì huỷ gói + gửi ICMP msg báo cho thiết bị gửi.
Nếu Dest Add cùng hệ thống xử lý tại chỗ.
And (Network Mask, Dest add) địa chỉ mạng đích
– Nếu đ/c mạng đích không có trong Routing Table huỷ gói + gửi ICMP msg.:
"subnet" để chỉ tập hợp mạng đích không đến được"subnet" để chỉ tập hợp
– Nếu đ/c mạng đích = địa chỉ mạng của hệ thống (này) tìm địa chỉ MAC trong
bảng thích ứng địa chỉ IP-MAC; + chuyển gói IP xuống cho tầng Data link
– Nếu đ/c mạng đích <> địa chỉ mạng của hệ thống gửi gói IP đến router cùng
mạng
Trang 295.3.4 Định tuyến IP
Kết nối các mạng LAN ở mức mạng IP, sử dụng IP Router
IP subnet: Host add (8 | 16 | 24) = subnet add + Host' add
Các phân mạng phải sử dụng địa chỉ IP đầy đủ - 32 bit
Trường hợp sai: 2 subnet có cùng Netid (class B) = 132.12
Trang 305.3.5 Một số giao thức điều khiển
Giao thức IP được sử dụng để truyền dữ liệu
Ngoài IP, tầng mạng của Internet còn có một số giao thức điều khiển
khác:
– ICMP (the Internet Control Message Protocol):
Giao thức tạo thông điệp điều khiển của Internet
– ARP (Address Resolution Protocol)
Giao thức phân giải địa chỉ
– RARP (Reverse Address Resolution Protocol)
Giao thức phân tích địa chỉ đảo
– BOOTP (Bootstrap Protocol):
– DHCP (Dynamic Host Configuration Protocol)
Trang 315.3.5.1 Giao thức ICMP (Internet Control Message Protocol)
ICMP được sử dụng để trao đổi các thông tin điều khiển lưu lượng, thông báo lỗi và các trạng thái khác của bộ giao thức TCP/IP:
Destination unreachable Packet could not be delivered
Parameter problem Invalid header field
Trang 325.3.5.1 Giao thức ICMP
Ngoài các bản tin trên, người ta còn định nghĩa một số bản tin điều
khiển khác nữa (hiện nay có khoảng 30).
Online list: www.iana.org/assigments/icmp-parameters
Trang 335.3.5.1 Giao thức ICMP
Thí dụ:
1 Giả sử A gửi 1 IP Datagram cho B, nhưng nó gửi sai địa chỉ tới Router R1 (R1 là Default
router của A).
2 R1 tìm thấy đường đi tới B qua R2; nhưng nó phát hiện ra nó (R1) và R2 có cùng một giao
diện mạng (Netid).
3 R1 vẫn gửi IP datagram đi và gửi ICMP Redirect packet cho A, báo cho nó nên gửi các gói
tiếp theo đến R2, đừng gửi cho R1 nữa.
Trang 345.3.5.2 Giao thức phân giải địa chỉ ARP
Thực tế các địa chỉ IP không được sử dụng để gửi các packet
Host gắn với các LAN bằng NIC, NIC chỉ hiểu địa chỉ MAC chứ không biết gì về địa chỉ IP
Cần phải ánh xạ các địa chỉ IP lên các địa chỉ MAC
Thông thường mỗi hệ thống lưu giữ và cập nhật bảng tương ứng địa chỉ IP-MAC ngay tại chỗ (ARP Cache) Bảng này được cập nhật hoặc bởi người quản trị, hoặc tự động
bởi giao thức ARP mỗi khi xác định được 1 tương ứng địa chỉ mới
Mỗi khi cần tìm tương ứng địa chỉ IP-MAC:
– Trước hết tìm trong ARP cache
– Nếu không thấy, dùng gói tin ARP request để hỏi ARP Server
– Nếu ARP server không thấy trong Cache
Gửi ARP request dưới dạng broadcast tới tất cả các trạm trong mạng.
Hoặc tới local router (có biết) Giải pháp này có tên gọi là Proxy ARP.
Trang 355.3.5.3 Giao thức RARP (Reverse Address Resolution Protocol)
Là giao thức tương ứng địa chỉ MAC-IP, chức năng ngược với ARP.
Trạm làm việc không ổ đĩa khi khởi động dùng nó để hỏi địa chỉ IP:
– Broadcast: "Địa chỉ Ethernet 48 bit của tôi là 14.04.05.18.01.25 Có ai ở ngoài đó
biết địa chỉ IP của tôi không ?"
– RARP Server nhận được yêu cầu này, nó tra cứu và gửi trả lại địa chỉ IP tương
ứng
– Nhờ có RARP, các trạm làm việc có thể dùng chung 1 “Boot Image file”, vì địa
chỉ IP của các trạm không được nhúng trong file này
Nhược điểm của RARP: mỗi mạng cần có một RARP server
Nguyên nhân: sử dụng gói tin có địa chỉ broadcast để gửi yêu cầu tới
RARP server; tuy nhiên những gói tin này sẽ không được các router gửi
Trang 365.3.5.4 Giao thức BOOTP (Bootstrap Protocol)
Để tránh nhược điểm của RARP, người ta đã phát minh ra một giao thức khởi động
mạng khác có tên là BOOTP
Khác với RARP, BOOTP nó sử dụng các gói tin UDP, các router sẽ forward chúng
BOOTP cũng cung cấp cho các trạm làm việc không ổ đĩa những thông tin bổ sung:
– Địa chỉ IP của file server đang giữ file hình ảnh bộ nhớ
– Địa chỉ IP của default router và subnet mask để sử dụng.
BOOTP được mô tả trong RFC 951, 1048 và 1084
Nhược điểm lớn của BOOTP:
– Phải đặt cấu hình bằng tay bảng ánh xạ địa chỉ IP-MAC
Khi có một host mới được bổ sung vào mạng LAN, nó không thể sử dụng BOOTP cho đến khi người quản trị gán cho nó 1 địa chỉ IP và nhập nó (địa chỉ IP và địa chỉ MAC) vào bảng cấu hình BOOTP bằng tay
Trang 375.3.5.4 Giao thức DHCP (Dynamic Host Configuration Protocol)
Để tránh nhược điểm của BOOTP, nó đã được mở rộng và được đặt tên mới là DHCP
DHCP cho phép gán địa chỉ IP cả bằng tay lẫn tự động (RFCs 2131 và 2132)
Trong hầu hết các hệ thống, nó đã thay thế phần lớn các giao thức RARP và BOOTP
Giống như RARP và BOOTP, DHCP dựa trên ý tưởng về một server đặc biệt, làm
nhiệm vụ gán địa chỉ IP cho các host khi chúng yêu cầu
Mỗi mạng LAN cần 1 DHCP relay agent: Bởi vì không thể gửi yêu cầu kiểu broadcast tới DHCP server, như được thể hiện dưới đây (Hình 5-63, )