Giáo trình Mạng căn bản - Chương 4: Mạng Internet
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Mạng căn bản - Chương 4: Mạng Internet", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_mang_can_ban_chuong_4_mang_internet.pdf
Nội dung text: Giáo trình Mạng căn bản - Chương 4: Mạng Internet
- Chương 4 Mạng Internet • Giới thiệu chung • Kiến trúc mạng Internet • Giao thức liên mạng IP • Giao thức TCP 1/70
- 5.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. 2/70
- 5.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ổ. 3/70
- 5.1 Giới thiệu chung Sự phát triển của Internet 4/70
- 5.1 Giới thiệu chung Sự phát triển của Internet 5/70
- 5.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. 6/70
- 5.2 Kiến trúc mạng Internet 5.2.2 Bộ giao thức TCP/IP Bao gồm 2 phần chính: – Các giao thức tạo thành hệ thống truyền dẫn – Các giao thức hỗ trợ ứng dụng 7/70
- 5.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 8/70
- 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 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 9/70
- 5.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. 10/70
- 5.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. 11/70
- 5.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. 12/70
- 5.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. 13/70
- 5.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 14/70
- 5.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 sống của một packet – Khi = 0, packet bị loại bỏ và một packet cảnh báo được gửi cho bên nguồn – Ngăn chặn các datagram đi lang thang mãi (nếu bảng chọn đường có lúc bị hỏng) – 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. 15/70
- 5.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. 16/70
- 5.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 bộ nhớ của router. – Được tính lại tại mỗi chặng (hop), bởi vì sau mỗi chặng có ít nhất là một trường bị thay đổi (trường TTL). – Cách tính: cộng tất cả các 16-bit halfwords sử dụng số dạng bù 1; sau đó lấy bù 1 của kết quả (phép toán XOR tốc độ cao). 17/70
- 5.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. 18/70
- 5.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. 19/70
- 5.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. 20/70
- 5.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ó. 21/70
- 5.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 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. 22/70
- 5.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.1111.1111.1100.0000.0000 = 255.255.252.0 (cách viết khác /22) 23/70
- 5.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) 24/70
- 5.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. 25/70
- 5.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. Destination Gateway Flags Refcnt Use Interface 127.0.0.1 127.0.0.1 UH 0 12 1e0 203.160.0.0 203.160.0.10 U 3 140 1e0 26/70
- 5.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.: "mạng đích không đến được" – 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. 27/70
- 5.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 28/70
- 5.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) 29/70
- 5.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: Message type Description Destination unreachable Packet could not be delivered Time exceeded Time to live field hit 0 Parameter problem Invalid header field Source quench Choke packet Redirect Teach a router about geography Echo request Ask a machine if it is alive Echo reply Yes, I am alive Timestamp request Same as Echo request, but with timestamp Timestamp reply Same as Echo reply, but with timestamp 30/70
- 5.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 31/70
- 5.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. 32/70
- 5.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. 33/70
- 5.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 đi tiếp. 34/70
- 5.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. 35/70
- 5.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, ) 36/70
- 5.3.5.4 Giao thức DHCP Việc tìm địa chỉ IP của máy tính vừa mới khởi động: – Quảng bá một DHCP DISCOVER packet – DHCP relay agent trong LAN này sẽ forward packet đó như một unicast packet đến DHCP server, có thể nằm trên một mạng ở xa. Nếu như host ra khỏi mạng và không trả lại địa chỉ IP cho DHCP server, thì địa chỉ IP đó sẽ bị vĩnh viễn mất đi. Địa chỉ IP được gán trong một khoảng thời gian cố định, bằng kỹ thuật “cho thuê” – leasing: – Trước khi hết hạn, host phải đề nghị DHCP cho gia hạn – Nếu host không thể thực hiện việc yêu cầu, hoặc yêu cầu bị từ chối, thì nó sẽ không sử dụng địa chỉ IP mà trước đây nó được gán nữa. 37/70
- 5.4 Giao thức TCP Đặc trưng công nghệ: Connection, reliable: Vận chuyển end-to-end, tin cậy, đúng thứ tự – ACK – Seq – CRC Điều khiển lưu lượng (flow control + congestion control) bằng cửa sổ trượt có kích thước thay đổi. Phức tạp 38/70
- 5.4 Giao thức TCP 5.4.1 Cấu trúc gói số liệu TCP Gồm 2 phần: Tiêu đề giả (Pseudo Header TCP), cần thiết để xây dựng IP packet. Bao gồm: – IP Source (32 bit) – IP Destination (32 bit) – Protocol = 0x06 = thuộc giao thức TCP – Length: độ dài của TCP segment. Gói số liệu TCP thực (TCP Segment) 39/70
- 5.4.1 Cấu trúc gói số liệu TCP Cấu trúc TCP segment: Source/Destination port number: 2 điểm cuối của kết nối TCP. Port number + IP add socket (48 bit) Seq. # = stt byte đầu tiên của data so với byte đầu của dòng dữ liệu của thực thể gửi. Giá trị ban đầu = ISN+1 (Initial Sequence Number) ACK: Byte tiếp theo có thể nhận (stt – URG =1: có sử dụng trường Urgent pointer. byte cuối cùng đã nhận đúng + 1) – ACK =1: trường Ack đúng. TCP header length: đơn vị 32 bit; đó – PSH =1: thực thể nhận được y/c chuyển ngay segment này cũng chính là data offset. – RST =1: Reset kết nối; từ chối kết nối v.v. Resered = 0 : để dùng trong tương lai. – SYN =1: đồng bộ trường Seq. , dùng để thiết lập kết nối TCP – FIN =1: thông báo thực thể gửi đã kết thúc việc gửi số liệu. Flags (6): 40/70
- 5.4.1 Cấu trúc gói số liệu TCP Cấu trúc TCP segment: Window size: Độ lớn cửa sổ nhận, cho bên sender biết có thể gửi tiếp bao nhiêu byte, tính từ byte được biên nhận (ack). Checksum: checksum của cả TCP segment + Pseudo header. Trước khi tính, trường này = 0. (Tổng các word 16 bit kiểu bù 1, kết quả thu được lại tính bù 1 - XOR). Urgent pointer: byte trong trường data của TCP segment cần được xử lý đầu tiên. Options: Các tuỳ chọn. Hiện nay tuỳ chọn duy nhất được dùng là MSS (Maximum Segment Size). Giá trị default = 536 byte payload + 20 byte header = 556 byte. Pad: chèn thêm để chiều dài trường Options là bội của 32 bit. Data: số liệu của ứng dụng TCP 41/70
- 5.4.2 Thiết lập và kết thúc kết nối TCP 5.4.2.1 Thiết lập kết nối Bắt tay 3 bước (Three-way Handshake): A yêu cầu kết nối, gửi CONNECTION REQUEST TPDU: – SYN=1, Seq = x (ISN) – Source port number, Destination port number B nhận được, gửi lại ACK TPDU – ACK (x+1), SYN=1, Seq = y (ISN) A biên nhận ACK TPDU của B – ACK (y+1), Seq = x Lưu ý về ISN: Mỗi thực thể kết nối TCP sử dụng 1 ISN (32 bit) riêng ISN tăng theo thời gian, nhằm tránh các kết nối dùng nhầm các segment bị “ôi” 42/70
- 5.4.2 Thiết lập và kết thúc kết nối TCP 5.4.2.2 Kết thúc kết nối Đơn giản hơn việc thiết lập kết nối Có hai kiểu kết thúc kết nối: – Asymmetric release: giống trong hệ thống điện thoại. – Symmetric release: xử lý kết nối như là 2 kết nối 1 hướng riêng biệt, mỗi kết nối này có thể được giải phóng riêng biệt. 43/70
- Máy hữu hạn trạng thái quản lý kết nối TCP Nhãn ghi: event/action Event: – user-initiated system call (CONNECT, LISTEN, SEND, CLOSE) – or a segment arrival (SYN, FIN, ACK, RST) – Event “-”: nothing Action: is the sending of a control segment (SYN, FIN, or RST) 44/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Các khái niệm Hiện tượng tắc nghẽn (congestion): lưu lượng đến mạng tăng lên, thông lượng vận chuyển của mạng lại giảm đi. Deadlock: tình trạng tắc nghẽn trầm trọng đến mức mạng bị nghẹt hoàn toàn, thông lượng vận chuyển của mạng tụt xuống bằng không. 45/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Nguyên nhân dẫn đến tắc nghẽn: Lưu lượng đi đến trên nhiều lối vào đều cần cùng một đường đi ra. Tốc độ xử lý tại các router chậm Các đường truyền có bandwidth thấp = cổ chai. Biểu hiện của tắc nghẽn: RTT tăng cao bất thường Tắc nghẽn có khuynh hướng tự nó làm gia tăng 46/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Cơ chế điều khiển lưu lượng (Flow control): các quy tắc chi phối việc nhận các lưu lượng từ bên ngoài đi vào mạng. Việc thực hiện các cơ chế này được gọi là điều khiển lưu lượng. Flow control: – Đảm bảo rằng bên gửi có tốc độ nhanh không thể tiếp tục truyền dữ liệu nhanh hơn mức mà bên nhận có thể tiếp thu được. – Liên quan đến việc vận chuyển giữa một người gửi đã biết nào đó và một người nhận. – Cần có một sự phản hồi trực tiếp từ phía người nhận đến người gửi để báo cho bên gửi về khả năng nhận số liệu thực của bên nhận. 47/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Điều khiển tắc nghẽn (Congestion control) – Đảm bảo cho mạng có khả năng vận chuyển lưu lượng đưa vào – Đó là một vấn đề toàn cục, liên quan đến hành vi của mọi nút mạng, quá trình chứa và chuyển tiếp trong mỗi nút mạng và các yếu tố khác có khuynh hướng làm giảm thông lượng của mạng. 48/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Điều khiển lưu lượng và điều khiển tắc nghẽn là hai khái niệm khác nhau, nhưng liên quan chặt chẽ với nhau: – Điều khiển lưu lượng là để tránh tắc nghẽn – Điều khiển tắc nghẽn là để giải quyết vấn đề tắc nghẽn khi nó xuất hiện hoặc có dấu hiệu sắp xảy ra Trong thực tế, nhiều khi cả hai thuật toán này cùng được cài đặt trong một giao thức, thể hiện ra như là một thuật toán duy nhất, thí dụ trong TCP Tên gọi chung: Điều khiển lưu lượng (Flow control) 49/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Để tránh tắc nghẽn, cần tuân theo “nguyên lý bảo toàn” số lượng gói số liệu (của một kết nối) có mặt trong mạng [Jacobson]. Sự điều khiển tắc nghẽn liên quan đến việc tìm ra những nơi vi phạm nguyên lý bảo toàn và sửa chữa chúng 50/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Các nguyên nhân vi phạm “Nguyên lý bảo toàn”: 1/ Kết nối không đạt tới sự cân bằng 2/ Người gửi đã đưa một gói số liệu mới vào mạng trước khi có một gói số liệu cũ ra khỏi mạng. Hai sai lầm: – Người gửi không thể đánh giá được đúng độ biến thiên của thời gian khứ hồi R – Chọn thời gian rút lui sau khi phát lại: nếu một gói số liệu phải được phát lại trên một lần, thì các lần phát lại này phải có cự li thời gian như thế nào. 3/ Không đạt được sự cân bằng do có sự hạn chế các tài nguyên mạng dọc theo đường truyền 51/70
- 5.4.3 Điều khiển lưu lượng và điều khiển tắc nghẽn Các biện pháp khắc phục: 1. Khởi động chậm (SS) 2. Tính thời gian khứ hồi một cách “thông minh” 3. Tránh tắc nghẽn (CA) – Mạng phải có khả năng gửi tín hiệu đến cho các thực thể ở đầu cuối của các kết nối (endpoint), báo cho chúng biết là tắc nghẽn đang xảy ra hoặc sắp xảy ra – Các endpoint phải có chính sách giảm lưu lượng đưa vào mạng nếu nhận được các tín hiệu báo và tăng thêm lưu lượng đưa vào mạng nếu không nhận được tín hiệu báo này. 52/70
- 5.4.3.1 Cơ chế cửa sổ trượt (Sliding Window) Cho phép gửi đi liên tiếp một số gói tin bằng kích thước cửa sổ rồi mới dừng lại chờ biên nhận cho các gói tin đó. Một trong các cơ chế điều khiển lưu lượng được sử dụng rộng rãi nhất. Kích thước cửa sổ quyết định hiệu suất vận chuyển: – Cửa sổ quá nhỏ: hệ số sử dụng đường truyền thấp – Cửa sổ lớn: hệ số sử dụng đường truyền cao hơn – Cửa sổ quá lớn, nếu có gói tin bị lỗi phải phát lại: Số gói phải phát lại cũng lớn Hoặc bên nhận phải có bộ đệm đủ lớn 53/70
- 5.4.3.1 Cơ chế cửa sổ trượt (Sliding Window) TCP áp dụng cơ chế cửa sổ trượt kích thước thay đổi được: – Phụ thuộc vào độ lớn bộ nhớ đệm của thực thể TCP nhận – Thích ứng với trạng thái của mạng - sự chia sẻ dung lượng đường truyền Để thực hiện được cơ chế, yêu cầu: – Biên nhận kiểu tích luỹ (Accumulative Acknowledgement) – Thông báo kích thước cửa sổ nhận = tổng số byte có thể nhận được = kích thước bộ nhớ đệm thu – Bên gửi thực hiện đánh giá về dung lượng đường truyền mà nó có thể sử dụng 54/70
- 5.4.3.1 Cơ chế cửa sổ trượt • Thí dụ đơn giản: bên A chỉ gửi và B chỉ nhận và biên nhận • Gói 1: A yêu cầu thiết lập kết nối, với: • SYN = 1 • Seq = TCP_A_ISN = 1305814529 • (gửi từ byte 1305814529 đến byte 1305814529) • Window Size = 4096 byte • MSS = 1024 byte • Gói 2: B đồng ý (cho phép) kết nối, với: • SYN = 1 • Seq = TCP_B_ISN = 1367249409 • Ack = TCP_A_ISN + 1 • Window Size = 4096 byte • MSS = 1024 byte • Gói 3: A biên nhận, sẵn sàng nhận gói số 1 (với Seq = 1367249409), Window Size = 4096 • v.v. 55/70
- 5.4.3.2 Cơ chế phát lại thích nghi Kết nối TCP có thể đi qua nhiều mạng khác nhau, trạng thái các mạng cũng có thể thay đổi không ngừng Gói tin có thể bị mất do một số nguyên nhân: Cơ chế phát lại của TCP phải mềm dẻo, thích hợp với trạng thái của mạng; nghĩa là phải “thông minh”. Để phát lại “thông minh”, chủ yếu dựa trên việc tính RTT 56/70
- 5.4.3.2 Cơ chế phát lại thích nghi Retransmit Timer: Do các thực thể phát TCP phải quản lý. Sau khi phát gói tin, đồng hồ được đặt giá trị bằng Tout: – Tout = * RTT, = 2, RTT = Round Trip Time = thời gian khứ hồi. – RTT = * Old_RTT + (1- ) * New_RTT, 0 < 1 Chú ý: ngày nay người ta đã có nhiều cải tiến đối với việc phát lại 57/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Các chiến lược (thuật toán) điều khiển lưu lượng trong TCP: Slow Start (SS): bắt đầu chậm Tính thời gian khứ hồi một cách thông minh + Rút lui theo hàm mũ Congestion Avoidance (CA): Trách tắc nghẽn Fast Retransmit (FRTX): Phát lại nhanh Fast Recovery (FRCV): Khôi phục nhanh Các thuật toán trên là độc lập, nhưng thường được kết hợp 58/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Thuật toán Slow Start (SS): Thực thể phát sử dụng thêm biến: cwnd (congestion window) - kích thước cửa sổ phát ssthresh (ss threshhold) - giới hạn trên của cwnd, nếu vượt qua tắc nghẽn. Bắt đầu phát, cwnd := 1, đó là tốc độ “an toàn nhất” Nhận được mỗi ack, tăng cwnd lên 1 để thăm dò (Additive Increase) Không tăng cwnd quá Window Size mà bên nhận thông báo. Thực chất, cwnd tăng lên theo hàm mũ (theo thời gian). Khi cwnd ssthresh, chuyển sang CA 59/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Thuật toán Congestion Avoidance (CA): Dấu hiệu tắc nghẽn: 1. RTT tăng quá Timeout, là một giá trị mà thực thể gửi sử dụng để phán đoán là gói tin đã bị mất. 2. Nhận được nhiều (3) Dup Ack (biên nhận lặp), điều đó cho biết đã có nhiều gói tin không đúng thứ tự đến đích, nghĩa là đã có gói tin bị mất. 60/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Thuật toán CA: cwnd := cwnd + 1/cwnd với mỗi ack. Khi phát hiện dấu hiệu tắc nghẽn: ssthresh := cwnd/2, cwnd := 1 RTO = RTO * 2 (Exponential backoff) SS Nhận xét: 1. Trong giai đoạn CA, cwnd tăng tuyến tính: Đảm bảo tận dụng băng thông có thể sử dụng được Vẫn thăm dò tiếp khả năng sử dụng băng thông nhiều hơn 2. cwnd bị giảm theo cấp số nhân (Multiplicative Decreased) 61/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Minh hoạ thuật toán SS và CA: 62/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Thuật toán Fast Retransmit (FRTX): Sau khi nhận được Dupack (>=3), TCP thực hiện phát lại nhanh, không chờ bị Timeout, sau đó chuyển ngay về SS. Đây là một cách “dự đoán thông minh” rằng, gói tin đã bị mất. 63/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Thuật toán Fast Recovery (FRCV): Cải tiến FRTX: thực hiện FRTX xong về CA chứ không về SS: ssthresh := cwnd/2, nhưng không nhỏ hơn 2 (gói tin) cwnd:=cwnd+3/cwnd. Bên gửi “đoán”: 3 dupack ứng với 3 gói tin đã được nhận đúng. Với mỗi dupack nhận được thêm, tăng cwnd := cwnd + 1/cwnd 64/70
- 5.4.3.3 Cơ chế điều khiển tắc nghẽn số liệu Chú ý: Trong các thuật toán trên, không bao giờ tăng cửa sổ phát quá giá trị mà bên nhận loan báo – rcnd (Receiver Adverticed Window). Nói cách khác, cửa sổ phát = min{cwnd, rcnd} Nhiều tài liệu ký hiệu adwnd (receiver Adverticed Window) 65/70
- 5.4.4 Giao thức UDP (User Datagram protocol) Không hướng nối (connectionless) Không bảo đảm (unreliable): không có cơ chế kiểm tra STT phát, thu và kiểm soát lỗi. Ưu điểm: đơn giản. Dành cho các ứng dụng: Trong đó việc phân phát tin nhanh chóng là quan trọng hơn việc phân phối tin chính xác: Email, v.v. Muốn tự cung cấp các chức năng flow control và error control Thống kê thực tế cho thấy: 99% các gói tin UDP được vận chuyển đến đích không bị lỗi. 66/70
- 5.4.4 Giao thức UDP Cấu trúc gói số liệu UDP Tương tự cấu trúc TCP segment “Header giả” giúp thưc thể IP xây dựng IP packet. Lenght trong Pseudo header: độ dài toàn bộ gói số liệu UDP, kể cả “Pseudo header” Lenght trong UDP segment: độ dài UDP segment, min = 8. Checksum: tính cho toàn bộ gói số liệu UDP. 67/70
- Hết chương 4 68/70