Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KỸ THUẬT
KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN HỆ THỐNG
LUẬN VĂN TỐT NGHỆP
Dé lai
XAY DUNG DICH VU
TINH TOAN PHAN BO
Trang 2Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Kinh yu loi cim on chan thanh nhl dén “
Shoat Nam, lat ca cée /% 6, ban be va gia dinh dé
tin tinh “uy din , ying day va giip de dé luin O Z 4 "4 a van nay de hoan thainh !”
1/1999 — Nguyen Vin Not
Trang 3
Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
MỤC LỤC
1 GIỚI THIỆU
1.1 SỰ HÌNH THÀNH BÀI TOÁN “= — —
1.2 BÀI TOÁN = aon: ~=== ~=~-
1.3 CÁC GIẢ THUYẾT CỦA BÀI TOÁN: - aa aa 1.4 MO HINH — 1.5 SƠ LƯỢC VỀ HOẠT ĐỘNG HỆ THỐNG — — 10 œ œ ¬ mn 2 CƠ SỞ LÝ THUYẾT 12 2.1 TCP/IP ano 2.1.1 Téng quan vé TCP/IP 2.1.2 Cac lép trong TCP/IP - 2.1.3 Internet Protocol (IP)
2.1.4 Transmission Control Protocol (TCP)
2.1.5 User Datagram Protocol (UDP)
2.2 BERKELEY SOCKETS
2.2.1 Sự trừu tượng héa socket
2.2.2 Các hàm hệ thống liên quan đến dịch vụ của cấp transpor: 2.3 MO HINH CLIENT — SERVER =
2.3.1 Xây dựng chương trình Client 2.3.2 Các loại Server 2.3.3 Xây dựng chương trình Server 2.4MULTICAST - 2.4.1 Giới thiệu- 2.4.2 Broadcasting 2.4.3 Multicasting
2.4.4 IGMP : Internet Group Management Protocol 2.4.5 Qua trinh Multicast
2.4.6 Lam sao viét mét ing dung ding Multicast trong Unix 2.4.7 Vấn đề tim duéng trong multicast:
2.5 MO HINH GROUP COMMUNICATONS
2.6 XDR (EXTERNAL DATA REPRESENTATION)
2.6.1 Tại sao lại phải sử dụng XDR 2.6.2 Các kiểu dữ liệu chuẩn của XDR - 2.6.3 Các thủ tục chuyển đổi 3 PHẦN TÍCH ,THIẾT KẾ VÀ HIỆN THỤỰC -=-========================= 6 3.1 TỔNG KẾT PHẦN CƠ SỞ LÝ THUYẾT - anne = 62 3.2 PHÂN TÍCH 3.2.1 Bài tốn -
3.2.2 Các giả thuyết của bài toán:
3.2.3 Phân tích bài toán và các giả thuạ 3.3 CÁC MƠ HÌNH VÀ LỰA CHỌN MƠ HÌNH
3.3.1 Chỉ dàng mô hình Client —Server
Trang 4Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM 3.6 PHAN TÍCH CHỨC NĂNG — 73 3.6.1 Admin 3.6.2 Agent - 3.6.3 Server 3.6.4 Service 3.7 CÁC GIẢI THUẬT 3.7.1 Admin 3.7.2 Agent - 3.7.3 Server 3.7.4 Giải thuật bầu chọn 3.7.5 Client- 3.8 HIỆN THỰC- 3.8.1 Tổ chức dữ liệu 3.8.2 Quản lý timer -
3.8.3 Socket giao tiếp
3.8.4 Tìm tất cả các host và user trên mạng -
Trang 5Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
1 Giới thiệu
Vii dé lai“ Diy dang dich vu tinh tain phin be“ do hay Shoat Nam huing din, Lugn vin nay yi Mhiéu mot ting dung hay ding hon la mot méi tuiing cho prhip ngidi sie dung có Uhé tiuy xuấf các đầi
nguyen tinh loin tie xa bac yim phan cting cling nh phan mém phin
66 hén mang He hing nay nhim dipping nhu cd dé si dung va you cau cin cé mol ce ché leuy xual va quin ⁄ 1u qua cic lid nguyen linh loin te xa Tinh dé sb dung cé dupe la vi he thing khéng doi hei mot
né tac lin vé lap tinh le nuvi st dang Chitn luce cin ting hid cn/ duve xem vÓ/ ùn cúc đệ hing có “hể 0s audl cic lac nguyen tinh loin
có dếu mol cich higu guá.WỆ thing duce thiét ké dé chay tiên bit ky
mang thong ding nhil nao va due hién thie theo mé hinh Client
Trang 6Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
1.1 Sự hình thành bài toán
Một vấn đề đang được nghiên cứu trong tính toán khoa học hiện nay là làm sao giải quyết các bài toán lớn một cách hiệu quả Nhiều cơ chế đã được phát triển
để tính toán qua các máy tính có cấu trúc khác nhau Cơ chế phổ biến nhất là liên quan đến các thư viện phần mềm Nhưng việc sử dụng các thư viện phần mềm này vẫn gặp phải nhiều khó khăn Một vài thư viện đã mang lại hiệu quả tối ưu cho một số loại cấu trúc máy tính nào đó nhưng lại không cung cấp một giao tiếp thuận
tiện cho hệ thống máy tính khác Có những loại thư viện khác đòi hỏi người sử dụng có một nổ lực đáng kể trong việc lập trình nhưng chính những người này lại
không có thời gian học những kỹ thuật lập trình cần thiết Trong khi có một số ít
những công cụ đã được phát triễn để làm giảm bớt những khó khăn này nhưng chính những công cụ này lại thường có sẵn trên một số ít các máy tính Chính vì những lý
do trên đã thúc đẩy sự ra đời của để tài : " Xây dựng dịch vụ tính toán phân bố -
Distributed Computing Enviroment -DCE " DCE là một ứng dụng dựa trên một
hình Client-Server và mô hình Group communications được thiết kế để giải quyết các bài toán tính toán khoa học qua mạng Phần mềm tính toán cần nhấn mạnh ở đây là các ứng dụng về tính toán khoa học DCE cũng quan tâm đến chiến luợc cân bằng tải để cải thiện các tài nguyên tính toán có sẵn Đề tài này giới thiệu về cấu trúc và ý niệm đồng thời mô tả cách thức mà DCE được dùng để giải quyết các
bài toán tính toán khoa học thông qua mạng mà tập trung là các bài toán đại số tuyến tính nhưng DCE cũng dễ dàng mở rộng để giải quyết nhiều loại bài toán khác ví dụ như bài toán biến đổi Fourier (FFT) là một điển hình
Thật ra , cũng đã có nhiều để án đã và đang nghiên cứu về tính toán phân
bố:
e_ Luận văn tốt nghiệp của hai kỹ sư 2 cũng với để tài " Xây dựng dịch vụ tính toán phân bố " nghiên cứu về tính toán phân bố nhưng để tài này chỉ hiện thực
được cơ chế multicast trong môi trường Windows
e Dự án NetSolve của trường Đại học Đài Loan nghiên cứu về tính toán phân bố để giải quyết các bài toán khoa học thông qua mạng bằng mô hình Client-
Server
e Dự án DCE của nhóm Open Group nghiên cứu về tính toán phân bố dùng RPC
Mô hình của hệ thống DCE không chỉ ứng dụng trong tính toán phân bố mà
còn có thể mở rộng cho các ứng dụng khác trên hệ phân bố như : Cơ sở dữ liệu
phân bố, Video conference , Multichat
Trang 7
Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM 1.2 Bài toán Bài toán đặt ra cho luận văn này như sau : ey ml | _—M s lllll Gis) mI II ti (services) im SS IIÌÌÌÌ =— IIIIll 000000 L—T
Một hệ thống máy tính gồm các máy tính chuyên dụng có khả năng tính toán
lớn (các Server) được kết nối trên mạng LAN Những Server này có thể đảm nhận
các dịch vụ tính toán khoa học đặc biệt gọi là các service.Người sử dụng từ một
máy tính bình thường (Client) bằng môi trừơng lặp trình có thể sử dụng - truy xuất
các dịch vụ tính toán trên các Server Người quản trị hệ thống (Admin) quản lý
hoạt động các server Ngừời phát triển dịch vụ xây dựng thêm các dịch vụ trên các Server
Vấn để đặt ra cho luận văn cũng là yêu cầu của bài toán là cần phải giải quyết các vấn để chính :
e_ Làm sao để Client dễ dàng sử dụng được các service trên các server mà không
cần quan tâm đến phân tổ chức của hệ thống dịch vụ
e Lam sao để Admin có thể quản lý ,kiểm soát và thống kê hoạt động của các
server và việc truy xuất các dịch vụ từ các client để cho hệ thống các server
hoạt động đạt hiệu quả cao nhất
e Làm sao để có cơ chế thuận lợi cho người phát triển thêm các dịch vụ tính toán trên các server
Trang 8Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
1.3 Các giả thuyết của bài toán:
Các Server có khả năng tính toán lớn hơn các máy tính bình thường và chỉ đảm nhận các dịch vụ tính tốn mà khơng làm thêm chức năng nào khác, nghĩa là
không có một user nào (trừ Admin) được login trực tiếp vào các Server để chạy các
ứng dụng khác
Các Server được kết nối trên cùng một mạng LAN (một subnet của mạng
LAN không thông qua router) để bảo đảm các message gởi bằng Multicast có thể đến được các Server
Thời gian mà các Server chạy các service để phục vụ cho Client là lớn hơn
rất nhiễu so với thời gian truyển dữ liệu từ Client đến Server
Các message điều khiển hoạt hệ thống sẽ ưu tiên xử lý trước so với các
packet dif liéu
Nếu hai Server A và Server B trong hệ thống còn đường kết nối thì các
message do Server A gởi cho Server B phải đến được Server B và đúng thứ tự có nghĩa là bổ qua sự mất mát hay suy giảm tín hiệu trên đường truyền
1.4 Mô hình
Hệ thống DCE hiện tại gồm tập hợp các máy tính được kết nối trên cùng
một LAN và không đồng nhất nghiã là các máy tính này không tương thích về kiểu
dữ liệu Cách hiện thực hiện tại là xem hệ thống là một đồ thị kết nối đầy đủ và
không phân cấp Tuy nhiên để quản lý hiệu quả một nhóm các máy tính phân tán trên mạng thì cách hiện thực trong tương lai là phải cung cấp cấu trúc lớn hơn ví dụ
như cấu trúc cây
Mô hình giao tiếp trong hệ thống DCE là mô hình Client-Server kết hợp với
mô hình Group communications Các Server được tập hợp lại thành một group với địa chỉ group là một địa chỉ Multicast nào đó Sự kết hợp của hai mô hình sẽ phát
huy những ưu điểm của hai mô hình đồng thời khắc phục được nhược điểm của mô
hình Client -Server Client nhìn hệ thống DCE với quan điểm là một group các Server chứ không phải là từng Server riêng lẽ , nghĩa là khi Client gởi yêu cầu (request ) về dịch vụ nào đó thì request đó được gởi cho group chứ không phải là cho từng Server.Thông tin trong group dùng cơ chế multicast Nhưng khi đã xác định hai điểm của một cầu nối (một Server -một Client ) thì mô hình giao tiếp lúc này là
m6 hinh Client —Server ding TCP dé đảm bảo cho việc truyền nhận đữ liệu một
cách tin cậy.Trong group các Server ,sẽ có một phần tử điều khiển hoạt động của group chứ không để các Server hoạt động một cách tự phát Như vậy , Mô hình Group communications 6 day 1a m6 hinh Group communications phan cấp (hierarchical groups) Phần tử trung tâm điều khiển hoạt động của group gọi là
Trang 9
Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Agent Chính phần tử Agent này sẽ làm phát sinh nhiễu sự cố cần giải quyết trong van dé fault-tolerant cho hệ thống
Thông tin trong hệ thống DCE dựa trên lớp socket ,DCE dùng TCP/IP protocol bởi vì TCP/IP bảo đảm thông tin tin cậy giữa các quá trình
Để có thể hoạt động trên mạng không đông nhất ,hệ thống DCE dùng XDR
protocol để làm tương thích dữ liệu giữa các máy
Công cụ được chọn để Client giao tiếp với hệ thống DCE là môi trường lập
trình C trên hệ điều hành Unix Dĩ nhiên ,cũng có thể mở rộng giao tiếp ở Client bằng cách dùng nhiều công cụ khác như dùng Web
Như vậy , hệ thống DCE gồm 5 loại phần tử (chương trình) :
Agent — Chương trình trung tâm điều khiển hoạt động của toàn hệ thống do Amin kích khởi đầu tiên hoặc do một Server chạy lâu nhất trong các Server bằng giải thuật ứng sẽ kích khởi một Agent khác khi Agent trước đó không còn để bảo đảm rằng trong hệ thống DCE phải luôn có một Agent và chỉ một Agent duy nhất mà thôi.Agent có thể chạy trên một trong các máy tính Server Chương trình này
làm nhiệm vụ ánh xạ tài nguyên tính toán nào cho Client.Việc ánh xạ này phải cần
cả thông tin của hệ thống và của cả ứng dụng của người sử dụng do Client gởi đến Server - Chương trình quản lý các service tại máy tính Server và chịu sự điều khiển của Agent Trên một máy tính Server chỉ có một chương trình quản lý Server chạy mà thôi.Chương trình này làm nhiệm vụ thông tin trong hệ thống
Service — Chương trình phục vụ yêu câu của Client và chịu sự điểu khiển
của Server Chương trình này làm nhiệm vụ tính toán trong hệ thống
Client - Một module do người sử dụng gọi và link trong chương trình làm
nhiệm vụ giao tiếp với hệ thống DCE mà cụ thể là một trong các Server
Admin — Một chương trình do người quản trị hệ thống chạy để quản lý hệ
thống DCE Admin được xem như một Client đặc biệt mà đối tượng phục vụ nó là
Agent Dĩ nhiên là trong toàn bộ hệ thống , chỉ có một chương trình Admin chạy Như vậy ,trong 5 phần tử trên thì Agent đóng vai trò quyết định đối với hệ thống ,mỗi khi Agent mất thì hoạt động bị ảnh hưởng rất lớn Do đó cần làm giảm tính quan trọng của Agent nhưng không làm giảm tính quyết định của nó
Trang 10Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
1.5 Sơ lược về hoạt động hệ thống Client are vss ; 3 Agent i ' 8| ot ` k \ Server 2 2` | Server |» 9 N 2 a s4 „ z7 Service _ Server Sa
Đầu tiên , Admin sẽ kích hoạt Agent chạy trước trên một Server và sau đó các chương trình Server trên các Server Với các thao tác về Server ,service và user „ Admin sẽ cho phép một user được sử dụng - truy xuất một dịch vụ nào đó
Client muốn truy xuất một dịch vụ thì trước hết Client phải xin hệ điểu hành một địa chỉ socket giao tiếp (gồm một port và IP address chính là IP addrees của
Client ) va sau d6 Client gdi request (1 ) cho hệ thống DCE bằng multicast theo địa
chỉ định trước kèm theo địa chi socket 6 trén va các thông tin mô tả về user ,địch vụ yêu cầu , dữ liệu sẽ gởi và cả thông tin về Server (nếu có) và sau đó chờ trả lời từ
hệ thống DCE hoặc là time-out (có thể là hệ thống DCE chưa chạy) thì Client cố gắng gởi request lại một số lần nữa
Vì Client gởi request cho group nên các Server cũng biết được sự kiện này nhưng không làm gì cả mà chỉ gởi thông tin mô tả về tải của chính Server về cho Agent (2 ) Có thể , thông tin này không tới được Agent hoặc tới trể
Agent sau khi nhận được request từ Client , bằng các thông tin mà Client gởi đến cùng với những dữ liệu có , Agent sẽ kiểm tra sự hợp lệ của request Nếu không hợp lệ có thể là do không có Server ,không có user , không có dịch vụ hoặc là do user không được phép sử dụng dịch vụ trong request thì Agent sẽ báo lại cho
Trang 11
Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Client biết theo địa chỉ socket mà Client gởi theo request (10).Nếu hợp lệ ,Agent sẽ set một timer để chờ thông tin về tải của các Server Hết thời gian time-out (có thể là thông tin về tải của tất cả các Server chưa về hết ),Agent chọn ra một Server có tải nhỏ nhất trong các Server mà thông tin tải của nó đã đến được Agent ra phục vụ Client bằng gởi một message multicast cho Server đó.(3) và Agent phải trả lời cho
Client biết là Server nào sẽ phục vụ Client (10)
Server khi được Agent chọn ra để phục vụ Client , nó sẽ fork một quá trình
và thực thi chương trình service mà Client yêu cầu (4)
Chương trình service khi được fork thành công sẽ báo cho hệ thống DCE biết và nhận một số thông tin cần thiết trong đó có địa chỉ socket mà Client gởi để hoạt
động (5) Sau đó chương trình service sẽ connect vào Client để nhận dữ liệu ,tính
toán và truyền kết quả về cho Client (6)( 7) Vì thời gian chạy dịch vụ là khá lâu nên chương trình dịch vụ sau một khoảng thời gian nào đó phải báo cho hệ thống
DCE và Client là mình còn đang chạy (8) để Client đợi Sau khi phục vụ thành
công hoặc là bị lỗi trong khi chạy thì chương trình service phải báo cho hệ thống DCE biết (9)
Trong khi hệ thống DCE hoạt động có rất nhiều sự cố cần giải quyết nhất là khi Agent không còn thì một trong các Server phải ứng cử để cho hệ thống hoạt
động tiếp
Việc chọn thời gian time-out cho phù hợp ở mỗi phan tử cũng cần phải xem Vấn để các Server và Agent còn sống hay không còn tổn tại trong hệ thống là do tự Server đó hay Agent phải báo về cho các phần tử khác biết nếu nó còn trong hệ thống
Chương trình Admin điều khiển hoạt động hệ thống với các thao tác về Agent , Server ,service ,user va thống kê về hoạt động của toàn hệ thống
Chỉ tiết về hoạt động của hệ thống được trình bày rõ trong phần phân tích và
Trang 12Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
2_ Cơ sở lý thuyết
FCP) IP, Berkeley ra mé hinh Client-Server Multicast va mé hinh Group communications DLR be ce sé ⁄ “„£f cia lain vin due
heinh bay chi itl é phin nay Vi nhién la phan nay 06 thé diye bé qua 2 2 2 ¢
dé dén phin phiin lich — thiét ke’
Trang 13
Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
2.1 TCP/IP
Để có thể trao đổi thông tin giữa các quá trình ở các máy khác nhau, thì các
máy phải được kết nối với nhau và từ đó mạng máy tính được hình thành Do một thực tế là các máy tính này có thể chạy các hệ điều hành khác nhau trên các nên
phân cứng khác nhau, do đó để có thể nói chuyện được với nhau, các quá trình phải dùng chung một phương thức giao tiếp — giao thức (protocol) nào đó Các giao thức mạng máy tính thường là những qui tắc quản lý thông tin trên mạng
Tổ chức ISO (International Standards Organization) đã đưa ra mô hình tham
khảo OSI ( Open Systems Interconnection) dùng để phân lớp kiến trúc mạng Theo mô hình OSI, thông tin muốn gởi hay nhận qua mạng phải đi qua 7 lớp Mỗi lớp có một chức năng khác nhau và cung cấp các interface để các lớp phía trên có thể sử dụng các dịch vụ mà lớp này cung cấp 7 Application 6 Presentation 5 Session 4 Transport 3 Network 2 Datalink 1 Physical
Cấp thấp nhất là cấp vật lý Ở cấp này, thông tin được truyển giữa hai máy (có sự kết nối vật lý thật sự ) dưới dạng một tràng bits thô
Cấp datalink có nhiệm vụ chia nhỏ data từ cấp network đưa xuống thành các
frame data (thu@ng vai trim bytes) dé truyén di va t6 chức nhận sao cho đúng thứ tự
các frame Cấp datalink khác cấp physical ở chỗ nó phải phát hiện được lỗi và nhận
biết được ranh giới các biên của frame dữ liệu
Cấp network liên quan đến việc truyển dữ liệu giữa hai máy bất kỳ trong
mạng
Do cấp network chưa đáng tin cậy cho nên cần thiết phải có cấp transport
Trang 14Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
(retransmisssion) và kiểm soát dòng dữ kiện (flow control) dược xử lý bởi cấp
transport
Session layer: chứa các dịch vụ cho phép trao đổi thông tin giữa các quá
trình, tạo và kết thúc kết nối của các quá trình trên các máy khác nhau
Presentation layer : chứa các dịch vụ về thao tác dữ liệu như nén, giải nén
Cấp này không có các dịch vụ thông tin của riêng nó
Application layer: chứa các dịch vụ phục vụ cho người dùng như truyền nhận file hay email
Do đặc tính cấu mô hình OSI, dữ liệu của chương trình gởi phải đi qua tất cả 14 cấp để đến được chương trình nhận Ở mỗi cấp, dữ liệu sẽ bị trễ một khoảng thời
gian Điều này làm giảm hiệu suất của mạng Chính vì vậy một mô hình khác đã
được đưa ra Đó là mô hình TCP/IP Đây là mô hình hiện đang được sử dụng rộng
rãi trên thế giới
2.1.1 Tổng quan về TCP/IP
The Transmission Control Protocol (TCP) va Internet Protocol (IP) là hai
giao thức được hoàn thiện bởi Internet Protocol suite Bộ giao thức này thường được tham khảo như một phần của TCP/IP bởi vì TCP và IP là hai giao thức quan trọng
hợp lại TCP/IP gồm một phần chuẩn về thông tin của các máy tính trên mạng và đường đi của dữ liệu qua kết nối giữa các máy tính
TCP/IP cung cấp cho người lập trình hai dich vụ sơ cấp là sự phân phối các
gói dữ liệu và vận chuyển các dòng dữ liệu một cách tin cậy TCP/IP có những đặc
điểm nổi bật làm cho nó phổ biến một cách rộng rãi là :
e_ Không phụ thuộc vào sơ đồ vật lý của mạng: TCP/IP có thể được sử dụng ở khắp các loại mạng như: mạng dùng bus, mạng vòng, mạng hình sao , mạng
cục bộ và mạng diện rộng
e_ Không phụ thuộc vào phần cứng cấu tạo trên mạng: TCP/IP có thể ứng dụng trên một số phần cứng mạng thay đổi như: mạng Ethernet, mạng vòng
e_ Chuẩn giao thức mở: giao thức TCP/IP có thể ứng dụng trên bất kỳ phần cứng máy tính nào và hệ điểu hành nào
e Tổ chức địa chỉ toàn cầu: mỗi máy trên mạng TCP/IP đều có một địa chỉ xác
định Các máy tính trên mạng đều có thể thông tin với nhau trên mạng Mỗi gói dữ liệu gởi qua mạng TCP/IP có phần đầu chứa địa chỉ máy nhận và địa chỉ máy gởi
e_ Làm theo mô hình Client-Server một cách tiện lợi: TCP/IP rất tiện lợi cho các ứng dụng Client-Server trên mạng cục bộ và mạng diện rộng
Trang 15Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
e_ Chuẩn giao thức cho ứng dụng : TCP/IP không những cung cấp cho người lập trình với những phương thức truyển dữ liệu trên mạng giữa các ứng dụng mà còn
cung cấp nền tẳng của nhiều giao thức và các ứng dụng khác
Hình sau mô tả quan hệ của các protocol trong bộ protocol và ánh xạ tương ứng của chúng vào cấu trúc OSI :
ES
TCP : Transmission Control Protocol :la protocol connection oriented (cé
thiết lập cầu nối).cung cấp cho cấp user process đường truyền hai chiểu, an toàn dữ
liệu và dữ liệu truyền trên cầu nối là byte stream
UDP : User Datagram Protocol :là protocol connectionless(không thiết lập
Trang 16Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
ICMP : Internet Control Message Protocol :protocol xử lý lỗi và điều khiển thông tin giữa host và gateway
TP : Internet Protocol : là protocol truyén data dang package Protocol IP phục vụ cho TCP,UDP,ICMP Do đó ở cấp process, user không dùng trực tiếp protocol này
ARP :Address Resolution Protocol : là protocol có nhiệm vụ ánh xạ địa chỉ
Internet vào địa chỉ phần cứng
RARP: Reverse Address Resolution Protocol : là protocol có nhiệm vụ ánh
xạ địa chỉ phần cứng vào địa chỉ Internet
2.1.2 Các lớp trong TCP/IP
Các giao thức trên mạng thường phát triển theo lớp, trong mỗi lớp chức năng về thông tin khác nhau.TCP/IP là sự tổng hợp giao thức khác nhau của các lớp Trong TCP/IP thường được xem có 4 lớp : Application layer, Transport layer , Network layer, Datalink layer
2.1.2.1 Lớp ứng dụng (Application layer - Process layer)
Lớp này gồm các ứng dụng trên mạng và quản lý các chỉ tiết của từng ứng dụng riêng lẽ Có nhiều ứng dụng TCP/IP ở lớp này như:
Telnet : truy cập từ xa
FTP ( File Transfer Protocol): giao truyén file trên mạng
SMTP (Simple Mail Transfer Protocol) : tng dung gdi thu dién tr
SNMP (Simple Network Management Protocol )
Va nhiéu ting dung khic
2.1.2.2 Lép Transport
Lớp này cung cấp sự lưu thông dữ liệu giữa 2 host cho lớp ứng dụng bên trên Trong TCP/IP có 2 loại giao thức lưu thông là : TCP (Transmission Control
Protocol) và UDP (User Datagram Protocol )
TCP cung cấp sự lưu thông dữ liệu một cách tin cậy giữa 2 host Nhiệm vụ
chủ yếu của giao thức này là: chia dữ liệu nhận được từ lớp ứng dụng và gởi xuống
network bên dưới, nhận biết các gói dữ liệu đến, đặt thời gian xác định thời gian gởi các gói dữ liệu Vì giao thức này cung cấp sự lưu thông dữ liệu một cách tin cậy nên lớp ứng dụng bên trên có thể bỏ qua các chỉ tiết này
Trang 17Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Đối với UDP thì ngược lại, chỉ cung cấp việc gởi nhận dữ liệu đợn giản giữa
các host gọi là datagram UDP không bảo đảm việc dữ liệu có đến được đích hay không Các việc kiểm soát được thêm vào các ứng dụng bên trên
2.1.2.3 Lớp network
Lớp này kiểm soát việc di chuyển các gói dữ liệu trên mạng Công việc tìm đường trên mạng được thực hiện ở lớp này Lớp này cung cấp các giao thức như : IP
(Internet Protocol), ICMP ( Internet Control Message Protocol ), IGMP (Internet
Group Management Protocol )
Protocol IP là protocol connectionless (không thiết lập cầu nối) , dữ liệu truyén dang frame khong bdo đảm an toàn Mỗi frame IP chứa địa chỉ nguồn và địa
chỉ đích do đó mỗi frame được phân phối và tìm đường độc lập với nhau
Địa chỉ Internet :
Khi nói hai máy tính giao tiếp với nhau nghĩa là : có hai process đang chạy trên hai máy này giao tiếp với nhau
Để hai process này có thể giao tiếp được với nhau thì process này phải biết process kia chạy trên máy nào trong mạng (địa chỉ internet) và nơi nào trong máy
đích nó có thể giao tiếp với process mong muốn (số hiệu port )
Trang 18Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
a
Dang D (Class D)
Dang format nao được chọn tùy thuộc vào cấu trúc của hệ thống mang Vi
dụ với dạng A được dùng cho mạng có nhiều máy (host) trong một mạng đơn Trong
khi dạng format C này thì số lượng mạng lớn nhưng số máy trong từng mạng ít Thông thường địa chỉ Internet được viết dạng 4 số thập phân cách nhau bởi dấu °.' Mỗi số thập phân sẽ được mã hóa thành 1 byte trong 4 byte địa chi
Mỗi frame IP chứa 32 bits địa chỉ nguồn và 32 bits địa chỉ internet của máy
đích
Network ID trong 4 byte địa chỉ sẽ giúp các gateway tìm đường cho frame
IP đến mạng tương ứng (không cần đến địa chỉ máy trong mạng)
Mỗi địa chỉ internet là duy nhất.Tuy nhiên một máy có thể có nhiều địa chỉ internet
2.1.2.4 Lớp data link
Lớp này gồm các driver và các giao tiếp card trong hệ điểu hành Lớp data link nắm giữ tất cả chi tiết về phần cứng giao tiếp vật lý giữa các card mạng và cable mạng
Có nhiễu giao thức trong TCP/IP TCP và UDP là hai nên cơ bản trong các giao thức của transport, cả hai sử dụng IP như là lớp network
TCP cung cấp một lớp transport một cách tin cậy mặc dù dịch vụ mà nó sử
dụng thì không tin cậy Trong khi đó ,UDP gởi và nhận datagram cho các ứng
dụng Một datagram là một khối thông tin lưu thông từ nơi gởi đến nơi nhận UDP không có sự bảo đảm rằng các datagram có bao giờ đến được đích cuối cùng của
nó hay không
IP (Internet Protocol ) là giao thức chủ yếu của lớp network Nó được sử dụng bởi TCP và UDP Mỗi phần dữ liệu của TCP và UDP truyền trên mạng thông qua lớp IP Trong network còn có các giao thức ICMP và IGMP
ICMP (Internet Group Management Protocol ) giao thức được hiệu chỉnh từ IP Nó được dử dụng để chuyển đổi các thông báo lỗi và các thông báo khác của lớp IP Mặc dù ICMP được sử dụng một cách sơ cấp thông qua IP nhưng nó có khả năng cho các ứng dụng trực tiếp
IGMP (Internet Group Management Protocol ) được sử dụng để gởi UDP đatagram đi nhiều host cùng lúc (Xem phần 2.4)
Trang 19Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Tóm lại, khi ứng dụng gởi dữ liệu sử dụng TCP thì dữ liệu được gởi xuống
qua các lớp bên dưới đến khi nó gởi đi một chuỗi các bit qua mạng Qua mỗi lớp đều có thêm dữ liệu những thông tin của lớp vào đầu khối dữ liệu mà nó nhận được Khối dữ liệu mà TCP gởi cho IP được gọi là TCP Segment, IP gởi cho giao tiếp mạng gọi là IP datagram Chuỗi bit lưu thông thông qua Ethernet gọi là Frame Số
byte thêm vào ở lớp TCP là 20 byte, ở lớp IP là 20 byte và lớp Ethernet là 14 byte
đầu và 4 byte đuôi gọi là Ethernet header và Ethernet Trailer Đến khi nhận , dữ liệu được chuyển ngược lại qua các lớp và tại các lớp này các phân đầu và đuôi
được thêm vào ở mỗi lớp được loại bỏ và dữ liệu được truyễn lên lớp kế tiếp đến
khi các ứng dụng bên trên nhận được đúng dữ liệu User data
Appl Header User data TCP Header Application data TCP segment IP headr TCP Header Application data IP datagram Ethernet IP header TCP Header Application data Ethernet header Trailer 14 bytes 20 bytes 20 bytes 0-1452 bytes 4 bytes Ethernet frame 2.1.3 Internet Protocol (IP) 2.1.3.1 Giới thiệu
IP là giao thức chủ chốt của bộ giao thức TCP/IP Tất cả dữ liệu của TCP,UDP,ICMP,IGMP được truyền dưới dạng datagram
Vì là một giao thức không tin cậy, nên không thể bảo đảm rằng IP datagram
đi đến đích của nó một cách thành công IP cung cấp các dịch vụ có hiệu quả cao
Khi có một điều gì sai sót như các router bị đầy bộ đệm tạm thời thì IP bỏ qua các datagram và cố gắng gởi ICMP message đến nơi gởi dữ liệu Tất cả yêu cầu về tin
Trang 20Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Trong lớp IP không tổn tại bất kỳ một thông tin trạng thái nào về sự thành
công của datagram Mỗi datagram được nắm giữ không phụ thuộc vào bất cứ đatagram nào khác Điều này có nghĩa là các datagram có thể phân phát không
theo đúng thứ tự nào Nếu từ máy gởi gởi đi 2 datagram đến cùng đích thì khi giới
các datagram có đường đi khác nhau và có đến đích với thứ tự khác nhau Khảo sát các vùng thêm vào bởi lớp IP ( IP header): 4bit version | 4 bitheader | 8 bit type of service 16 bit total length length (TOS) 16 bit identification 3 bit 13 bit fragment flags offset 8 bit time-to-live 8 bit 16 bit header checksum Protocol 32 bit source IP address 32 bit destination IP address Option Data
Các trường trong IP datagram
Bit có trọng số cao nhất được đánh số 0 ở bên trái và bit trọng số thấp nhất của 32 được đánh số là 31 ở bên phải Bốn byte trong 32 bit giá trị được truyền theo
thứ tự là : bit 0-7 trước, sau đó đến bit 8-15, sau đó 16-23, sau cùng là 24-31 Điều
này gọi thứ tự byte lớn sau (big endian byte ordering) Thif ty byte nay ciing dude đòi hỏi cho tất cả các số nguyên nhị phân trong phần đầu của TCP/IP khi chúng đi qua mạng, hay còn goi 1a thif tu byte trén mang (network byte order) Cac may tính có lưu trử các số nguyên nhị phân với dạng khác phải đổi lại dạng này trước khi
truyền dữ liệu
Trường header length là số 32 bit bao gồm các sự lựa chọn nếu có Vì là
trường 4 bit nên giới hạn ở phần dau 60 byte
Trường loại dịch vụ TOS (Type of Service): có 3 bit truyền ưu tiên, 4 TOS bit và 1 bit không sử dụng 4 bit TOS là: thời gian trễ nhỏ nhất (minimize delay), thời gian thông qua lớn nhất (maximize throughput), độ tin cậy cao nhất(maximize relibility), và giá dịch vụ thấp nhất (minimize monetary cost ) Chỉ có trong 4 bit
này được bật lên 1 Nếu 4 bit là 0 thì dịch vụ là bình thường RFC 1340 xác định
cách đặt các bit này cho ứng chuẩn REC 1349 có những thay đổi và mô tả một cách
chi tiết hơn về đặc điểm của TOS
Trường tổng chiều dài (total length ) ghi lai t6ng chiéu dai ctia IP datagram đơn vị là byte Dùng trường này và trường chiều dài đầu, ta biết được vi trí bắt đầu
Trang 21Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
của IP datagram và chiều dài của nó Vì vậy trường này có chiều dài 16 bit nên chiều dài nhất của IP datagram là 65.535 byte Trường này cũng có thể thay đổi khi
datagram bị phân chia
Trường time time-to-live (TTL) đặt giá trị giới hạn cao nhất các số router
mà datagram có thể qua Trường này quyết định thời gian tổn tại của datagram Nó được khởi động bởi nơi gởi bằng một giá trị thường là 32 hoặc là 64 và giảm dần khi một router nhận được datagram Khi trường này có giá trị 0 thi datagram bi bd đi Điều này nhằm để tránh các gói dữ liệu lưu thông mãi mãi trên mạng
Trường header-checksum được tính chỉ trên phần đầu của IP Nó không bao gồm phần data phía sau Nếu nơi nhận kiểm tra vùng này và bị phát hiện lỗi thì datagram bỏ đi nhưng nó không sinh ra lỗi gì, vì vậy các lớp bên trên phải phát
hiện được mất dữ liệu và truyền lại
2.1.3.2 Việc tìm đường trong lớp IP
Việc tìm đường trong các lớp IP thì rất đơn giản Nếu đích đến nối trực tiếp
hoặc cùng nằm trên mạng thì IP datagram được gởi trực tiếp đến đích Ngược lại,
đữ liệu được gởi đến router mặc định và để cho các router phân phối dữ liệu đến
đích Chúng ta 6 thé xác định các giải thuật tìm đường đơn giản cho cả hai host và router Sự khác biệt giữa host và router là các host không bao giờ forward datagram còn router thì làm việc này
Trong các trường hợp thông thường thì IP có thể nhận datagram từ TCP, UDP, ICMP,IGMP để gởi đi nhưng đôi khi IP còn nhận được từ giao tiếp mạng trong trường hợp cần forward datagram Lớp IP có bảng tìm đường trong bộ nhớ Bảng này được sử dụng mỗi khi IP nhận được datagram để gởi Nhưng khi datagram
nhận được từ giao tiếp mạng, trước tiên IP kiểm tra xem địa chỉ đích đến có phải
địa chỉ của chính mình hay không Nếu đúng thì datagram được phân phát đến khối
giao thức dựa theo trường Protocol trong phần đầu datagram của IP Nếu đích đến
không phải là lớp của IP này mà lớp IP này được định dang như là router thì gói dữ
liệu được forward nếu không thì gói dữ liệu bị bỏ đi
Mỗi đường đi trong bản tìm đường chứa các thông tin sau: Địa chỉ IP đích : có thể là địa chỉ host hoặc là địa chỉ mạng
e _ Địa chỉ IP của các router kế cận hoặc địa chỉ IP nối trực tiếp vào mạng
e Cờ để xác định xem địa chi IP đích có phải là địa chỉ mạng hoặc là địa chỉ host hay không
e _ Xác định giao tiếp mạng nào datagram có thể chuyển đến để truyền đi
IP không biết đường đi hoàn toàn đến một đích bất kỳ Tất cả cái mà việc
Trang 22Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
e _ Tìm trong bảng tìm đường đến địa chỉ đích Nếu tìm thấy thì gởi gói dữ liệu đến router kế cận được xác định trong đường hoặc gởi trực tiếp đến card giao tiếp
e Tìm trong bảng tìm đường một con đường nhưng chỉ đến ID của mạng đích
Nếu tm thấy đến router kế cận hoặc trực tiếp đến card giao tiếp
e_ Tìm trong bảng tìm đường một con đường đi đến nhãn mặc định.Nếu thấy thì gởi gói đến router kế cận xác định
Nếu các bước đều không thực hiện được thì datagram không thể phát hiện được IP đích thì IP phát thông báo lỗi đến nơi phát sinh datagram Đia chỉ của host
được tìm trước network Nếu cả hai không tìm thấy thì đường mặc định sẽ được dùng
2.1.4 Transmission Control Protocol (TCP) 2.1.4.1 Giới thiệu
Mặc dù TCP và UDP cùng sử dụng lớp network IP, nhưng TCP cung cấp
nhiều dịch vụ khác nhau cho lớp ứng dụng hơn là UDP TCP cung cấp dịch vụ việc nối kết theo hướng, cung cấp dịch vụ tin cậy về mặt truyền nhận dữ liệu
Nối kết theo hướng (connection- oriented) nghĩa là hai ứng dụng khi sử dụng TCP, thường hai ứng dụng này được xem như là một chủ và một tớ, phải thiết lập một nối kết TCP với nhau trước khi chúng trao đổi dữ liệu
Có hai đầu phân biệt trong việc trao đổi thông tin trong kết nối TCP.TCP cung cấp khả năng tin cậy bằng cách thực hiện các yêu câu sau:
e - Dữ liệu của ứng dụng được phân ra thành các khối có kích thước mà TCP cho là
tốt nhất để gởi Điều này hoàn toàn khác trong UDP, khi ứng dụng truyền dữ
liệu UDP nhận và truyền đi với cùng kích thước Khối thông tin được truyền từ
TCP đến IP được gọi là Segment
e Khi TCP gởi đi một Segment nó ghỉ lại thời gian, đợi khi có sự trả lời của đầu bên kia có Segment đến Nếu không nhận được sự trả lời trong một khoản thời
gian thì segment được gởi lại
¢ Khi TCP nhận được dữ liệu từ đầu kia kết nối, nó gởi một thông báo đã nhận cho đầu bên kia Thông báo này không được gởi ngay tức thời thường thì nó
được trì hoãn một thời gian
TCP giữ kiểm tra lỗi trong phần đầu của nó và trong dữ liệu nhằm mục đích
phát hiện tất cả sự thay đổi dữ liệu trong khi truyền việc này được gọi là end-to-end checksum Nếu segment đều kiểm tra phát hiện bị sai , TCP bỏ qua nó và xem như
nó không đến đích vì thế nơi gởi không nhận được trả lời Sau một thời gian sẽ gởi
lai segment nay
Trang 23Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Vì các segment của TCP được truyền bởi các datagram của IP và vì các
datagram này được nhận không theo thứ tự nên các segment của TCP nhận được
cũng không thứ tự Dó nó không nhận được các segment thì TCP phải sắp xếp lại theo đúng thứ tự ban đầu và gởi cho các ứng dụng
TCP có thể nhận được các đữ liệu trùng lắp nhiều lần nên các dữ liệu này
được TCP bỏ đi
TCP cũng cung cấp dịch vụ kiểm tra lưu lượng Mỗi đầu cuối trong các nối kết TCP có lượng vùng đệm trống nhất định Vì thế nó chỉ cho phép đầu kia gởi dữ
liệu nhiễu nhất với lượng vùng đệm cho phép Điều này tránh được việc các host có tốc độ nhanh sẽ chiếm hết vùng đệm của các host chậm hơn
Một chuỗi byte 8 bit được trao đổi thông qua kết nối TCP giữa hai ứng dụng
Không có các thông tin đánh dấu được thêm vào bởi TCP Vì thế dịch vụ được gọi
là dịch vụ chuỗi byte (byte stream service) nếu một ứng dụng gởi 10 byte sau đó 20
byte và sau nữa là 50 byte thì ứng dụng ở đầu kia sẽ không thể biết được độ lớn của
dữ liệu từng phần là bao nhiêu
Bên nhận chỉ có thể nhận được 80 byte ở 4 lần nhận 20 byte Khi một bên đặt byte vào TCP và như vậy dòng byte này sẽ xuất hiện bên kia
Vì vậy ,TCP hòan tồn khơng phiên dịch nội dung các byte Chẳng có gì
khác nhau nếu dữ liệu được trao đổi là dữ liệu nhị phân, ký tự ASCI, ký tự
EBCDIC hay một cái gì khác, sự phiên dịch chuỗi byte này tùy thuộc vào ứng dụng
bên trên của kết nối 2.1.4.2 Phần đâu của TCP 16 bit source port number 16 bit destination port number 32 bit sequence number 32 bit acknowledgement number 4 bit header 6bitreserved |U[A |P|[R|SIF 16 bit Window size length RỊC |S|S|Y|I G|K/H| T|N|N 16 bit TCP checksum 16 bit urgent poiner Option Data Các vùng của TCP
Mỗi segment TCP chứa số thứ tự port của nơi gởi và nơi nhận để xác định
ứng dụng gởi và ứng dụng nhận Hai giá trị này cùng địa chỉ IP nơi nhận và nơi gởi
Trang 24Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Sự kết hợp giữa một địa chỉ IP và một port gọi là socket Thuật ngữ này xuất hiện như một đặc điểm của TCP nguyên thủy,nhưng sau đó nó trở nên tên của giao tiếo lập trình Berkeley-derived Nó là cặp socket bao gồm địa chỉ của IP của
client và server,số port của client và server xác định 2 dau của nối kết TCP trên
Internet
Trường số thứ tự (Sequence number) xác định số byte trong chuỗi dữ liệu từ nơi gởi đến nơi nhận, đó là byte đầu tiên đại diện cho segment Nếu chúng ta xem chuỗi byte lưu thông theo một chiều giữa hai ứng dụng,TCP đánh số mỗi byte với số
thứ tự Số thứ tự này là số 32 bit không dấu
Khi kết nối mới được thành lập cờ SYN được bật lên Trường số thứ tự chứa số thứ tự khởi động (ISN) số này được chọn bởi host
Số thứ tự byte đầu tiên của dữ liệu được gởi bởi host này là ISN cộng một bởi vì SYN sử dụng hết một số thứ tự
Vì mỗi byte khi trao đổi được đánh số nên số thừa nhận (acknowledgement
number) chứa số thứ tự kế tiếp mà nơi nhận cần nhận
Cái giá của việc gởi một ACK là không đáng kể bởi vì số ACK 32 bit luôn
có trong phần đầu Vì thế khi kết nối được thành lập , trường này luôn được đặt vào
cờ ACK luôn được bật mở
TCP cung cấp dịch vụ hai chiều (full-duplex) cho lớp ứng dụng Điều này có nghĩa là dữ liệu lưu thông trên chiều này không phụ thuộc vào chiểu kia.Vì thế mỗi
đầu của kết nối phải giữ lại số thứ tự dữ liệu lưu thông trên mỗi chiều
TCP có thể được xem như là một phương thức cửa sổ trượt không cân lựa chọn ACK hoặc có ACK âm, nghĩa là nơi gởi ACK đã nhận thành công dữ liệu từ số
ACK về trước không bao giờ byte có chứa số ACK
Vùng chiểu dài của phần đầu là một số 32 bit Điều này cần thiết bởi vì chiều đài phần tự chọn luôn thay đổi Với một trường 4 bit, phần đầu của TCP có
chiều dài tối đa là 60 bit Bỏ qua đi phần tự chọn chiều dài phần đâu thường là 20 byte Có 6 cờ trong phần đầu TCP Chúng có thể đồng thời được đặt là 1
e URG :urgent poiner
e ACK: acknowledgement number
e _PSH :nơi nhận phải gởi dữ liệu này đến ứng dụng ngay tức thời
e RST:Reset két ndi
e _SYN: đồng bộ số thứ tự để khởi động kết nối e FIN : nơi gởi chấm dứt gởi dữ liệu
Trang 25Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Việc kiểm soát lưu thông của TCP được cung cấp bằng cách cuối mỗi
segment thông báo một kích thước cửa sổ Đó là số byte bắt đầu bằng byte xác định
ACK mà nơi nhân sẵn sàn nhận tiếp Đây là số 16 bit nên giới hạn của cửa sổ lên đến 65535 byte
Trường checksum kiểm soát lỗi toàn bộ segment TCP cả phần đầu của TCP
và phần dữ liệu phía sau Đây là vùng lệnh được tính toán và lưu vào bởi nơi gởi và được kiểm bởi nơi nhận Vùng checksum của TCP giống như UDP
Trường urgent poiner có giá trị khi cờ URG đặt lên 1 Con trỏ này là vị trí độ đời phải được cộng vào vùng thứ tự của segment tạo kết cửa sổ cuối của thứ tự
trong dữ liệu khẩn cấp
Thông thường vùng lừa chọn kích thước lớn nhất của segement còn gọi là
MSS (Maximize segment size) Nó xác thước lớn nhất nơi nhận muốn gởi đi
2.1.5 User Datagram Protocol (UDP) 2.1.5.1 Giới thiệu
UDP là giao thức đơn giản của lớp Transport Mỗi lần dữ liệu truyền đi được
thực hiện bởi chính xác một quá trình và tạo ra một IP datagram được truyễn đi
UDP cung cấp dịch vụ truyền nhận dữ liệu không tin cậy ,nó gởi dữ liệu của
các ứng dụng bên trên xuống dưới lớp IP nhưng không kiểm tra xem dữ liệu có đến
được đích hay không Vì sự thiếu tin cậy nên chúng ta cố gắng tránh UDP và luôn
luôn sử dụng giao thức tin cậy TCP Nhưng cũng có những loại ứng dụng có thể sử dung UDP 2.1.5.2 Phần đầu của UDP 32 bit source IP address 32 bit destination IP address
Zero 8 bit Protocol 16 bit destination port number 16 bit source port number 16 bit source port number
16 bit UDP length 16 bit UDP checksum
Data
Cac ving trong UDP
32 bit đầu tiên xác định số port của qúa trình gởi và quá trình nhận.TCP va
UDP_ sử dụng port đích để giải điều chế dữ liệu đến lớp IP Vì IP đã giải điều chế
Trang 26Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
port của UDP Vùng chiều dài ghi lại độ dài của cả phần đầu và phần dữ liệu của
UDP tính bằng byte Vùng này có giá trị nhỏ nhất là § byte
Vùng UDP checksum gồm phần đầu và phần dữ liệu của UDP.Trong IP,
phần checksum chỉ bao gồm phần đầu nhưng trong TCP và UDP phần checksum
bao gồm cả phần đầu và phần dữ liệu phía sau Nếu só checksum có giá trị là 0 thì
nó được toàn bit 1 (65536) Nếu vùng checksum có giá trị 0 nghĩa là nơi gởi không tính checksum Trong trường hợp này nơi nhận kiểm transport lỗi checksum và tự động bỏ dữ liệu này
UDP là một giao thức đơn giản Dịch vụ này cung cấp cho các quá trình ứng
dụng bên trên và lớp IP bên dưới số port và dịch vụ kiểm soát lỗi
Tinh nang ctia cdc protocol (IP,UDP,TCP) trong TCP/IP: IP UDP TCP Connection-oriented? no no Yes
message boundaries ? yes yes no data checksum ? no opt yes
Positvie ack ? no no yes timeout and rexmit ? no no yes duplicate detection ? no no yes Sequencing ? no no yes flow control ? no no yes 2.2 Berkeley sockets
Hai Applications Programming Interface-APIs thinh hanh trén UNIX 1a Berkerley sockets va System V Transport Layer Interface (TLI) Ca hai interface này được phát triển bằng ngôn ngữ C
Trong phan này chúng ta sẽ xem xét interface giữa cấp transport và cấp ngay trên nó: đó là Berkerley sockets
Berkeley socket (gọi tắt là socket) là một tập các giao tiếp lập trình ứng dụng (APD cho phép gởi và nhận dữ liệu giữa các process ở các máy khác nhau trong mạng
Nhờ sử dụng các hàm mà socket cung cấp, người lập trình ứng dụng se
không phải bận tâm đến các protocol mà các cấp dưới sử dụng
Trang 27Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Berkerley socket interface: cung cấp những hàm tổng quát được dùng trong giao tiếp mạng và sử dụng được với nhiều loại protocol khác nhau Những người
thiết kế đã tận dụng những hàm hệ thống đã có của UNIX và chỉ đưa ra những khái niệm mới hay hàm mới khi thật sự cần thiết
2.2.1 Sự trừu tượng hóa socket
Socket descriptor va file descriptor
Trong Unix ,khi gọi hàm hệ thống open(), ta sẽ nhận được một file descriptor
được dùng để truy xuất file Hệ điều hành sẽ duy trì bảng các file descriptor cho mỗi process Khi process mở một file , hệ thống sẽ đặt con trỏ chỉ đến cấu trúc nội
của file vào bảng các file descriptor và trả về chỉ số của phần tử mới được thêm vào
trong bảng cho chương trình gọi
Cũng như file khi một socket được tạo ra được nhận dạng bằng một số
nguyên gọi là socket descriptor Unix đặt con trỏ đến cấu trúc nội của socket trong cùng bảng với các file descriptor
l
Cấu trúc data của sockets
Khi chương trình gọi hàm hệ thống soekef() thì hệ điều hành sẽ cấp phát một vùng nhớ đặc ta socket va điển con trỏ chỉ đến cấu trúc này vào bảng file
Trang 28Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Mặc dù cấu trúc data đặt tả socket có rất nhiễu trường nhưng hệ thống hầu
như để trống các trường này khi socket được tạo ra Chương trình sau khi tạo socket sẽ gọi thêm một số hàm nữa để điển các giá trị vào các vùng này.(xem hình)
Khi một socket được tạo ra nó sẵn sàng cho việc đợi kết nối hay yêu cầu kết nối Socket sử dụng bởi server là "passive socket" dùng để đợi kết nối từ client
Socket sử dụng bởi client là "active socket" dùng để khởi tạo kết nối với server
2.2.2 Các hàm hệ thống liên quan đến dịch vụ của cấp
transport
e Ham hé thong socket()
Để làm việc với I/O qua mạng ,việc đầu tiên là phải gọi hàm hệ thống
socket để tao ra một socket mới Hàm trả về một descriptor của socket vừa được tạo
ra
int socket(int family,int type,int protocol);
Đối số family cho biết họ protocol muốn dùng:
AF INET Internet protocols
AF_UNIX Unix internal protocols AF_NS Xerrox NS protocols
AF_IMPLINK IMP link layer
Đối số type :
Trang 29Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
SOCKET_STREAM stream socket
SOCK_DGRAM datagram socket SOCK_RAW raw socket
SOCK_SEQPACKET sequenced packet socket SOCK_RDM reliably delivered message socket Chỉ có những tổ hợp sau có nghĩa : AF UNIX | AF_INET AF_NS SOCKET_STREAM Yes TCP SPP SOCK_DGRAM Yes UDP IDP SOCK_RAW IP Yes SOCK_SEQPACKET SPP Đối số protocol : Đối số này thường được gán giá trị 0 cho hầu hết các ứng dụng của users e Hàm hệ thống connect()
Sau khi tạo socket Client goi connect để thiết lập kết nối với Server
int connect(int sockfd,struct sockaddr *servadd,int addrlen);
Đối số thứ nhat 1a descriptor cia socket
Đối số thứ hai là một con trỏ đến địa chỉ của server mà nó muốn kết nối
Đối số thứ ba chỉ ra kích thước của của vùng nhớ chứa địa chỉ server Khi hàm connect gọi thành công thì cầu nối được thiết lập và Client
có thể truyển và nhận data thông qua cầu nối này
Trong thực tế cầu nối sẽ được thiết lập với protocol TCP/IP, còn đối với protocol UDP/IP thì khi hàm connect được gọi nó chỉ điển các đối số truyền cho hàm vào socket chứ không thật sự thiết lập cầu nối
e Ham hé thong wite():
CA Client va Server ding write để truyền dữ liệu cho phía bên kia bằng cách
ghi dữ liệu này xuống cầu nối TCP
int write(int sockfd, char *buf,int buflen);
Đối số thứ nhất :descriptor của socket
Trang 30Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Đối số thứ ba :số byte cần ghi xuống vùng buf
Thường thì hàm write copy đữ liệu đầu ra vào vùng đệm trong kernel của hệ
điều hành và cho phép ứng dụng tiếp tục thực thi trong khi đó nó truyền data qua
mạng Nếu vùng đệm hệ thống bị đầy thì write sẽ bị block tạm thời cho đến khi
TCP gởi được một phần dữ liệu tạo khoảng trống trong buf cho write tiếp tục ghi dữ liệu xuống vùng này
e - Hàm hệ thống read()
Cả Client và Server dùng read để đọc đữ liệu từ cầu nối TCP
int read(int sockfd, char *buf,int buflen);
Các đối số giống với hàm write chỉ khác vùng buf là vùng nhận dữ liệu Nếu dữ liệu chưa đến lệnh read sẽ block cho đến khi dữ liệu đến
Nếu dữ liệu đến lớn hơn khả năng chứa của buffer thì read sẽ đọc phần dữ
liệu cân thiết để điển đầy vào vùng buffer phần còn lại để cho lần read sau
e Ham hé thong close()
Khi Client hay Server không còn dùng socket nó gọi hàm close để đóng và giải phóng socket
int close(int sockfd );
Nếu chỉ có một process sử dụng socket thì close sẽ đóng cầu nối và giải
phóng socket
Nếu có nhiều process sử dụng chung | socket thi close sẽ giảm biến đếm
(biến này có giá trị bằng số process sử dụng socket) và sẽ giải phóng socket khi biến đếm này bằng 0
e - Hàm hệ thống bind():
Lệnh gọi hàm hệ thống bind() gán một tên cho một socket chưa định danh int bind(int sockfd, struct sockaddr *servadd,int addrlen);
Các đối số giống với hàm connect(); Có ba trường hợp sử dụng bindQ) :
- Server dang ky dia chỉ của nó với hệ thống Nó báo cho hệ thống biết "đây
là địa chỉ của tôi và bất kỳ message nào gởi đến địa chỉ này là gởi đến cho tôi" Cả
hai protocol có cầu nối và không có cầu nối đều phải gọi hàm này trước khi chấp nhận yêu câu của Client
- Một Client có thể đăng ký một địa chỉ cụ thể cho nó
Trang 31
Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
- Trong trường hợp không có cầu nối, Client cần phải bảo đắm rằng hệ thống gán cho một địa chỉ duy nhất, do đó Server có được một địa chỉ cụ thể để trả kết
qủa
e Hàm hệ thống listen()
Hàm này sử dụng trong trường hợp Server có cầu nối sẵn sàng chấp nhận sự kết nối
int listen(int sockfd,int backlog );
Hàm này được gọi sau cả hai hàm socket() và bindQ
Đối số backlog cho biết có bao nhiêu yêu cầu kết nối có thể được cho vào hàng chờ của hệ thống trong khi chờ đợi thực thi hàm accept(Q Thường các ứng
dụng chọn là 5 (con số tối đa hệ thống cho phép) e Ham hé thong accept() :
Khi socket đã sẵn sàng kết nối, server goi ham accept() để trích một yêu câu
kết nối ra khỏi hàng đợi để thực hiện kết nối
int accept(int sockfd, struct sockaddr *peer ,int *aaddrlen);
Accept lay phan ti dau tiên trong hàng chờ kết nối của các Client và tạo ra một socket khác có đặc tính giống với sockfd Nếu không có yêu cầu kết nối nào lệnh gọi sẽ block cho đến khi có một yêu cầu
Đối số peer và addrlen được sử dụng để lấy địa chỉ của Client
e _ Các hàm hệ thống send,sendio,recv và recvfrom
Được sử dụng trong trường hợp mở socket không cầu nối
int send(int sockfd,char *buff, int nbytes,int flags); int sendto(int sockfd,char *buff, int nbytes,
int flags, struct sockaddr *to, int addrlen);
int recv(int sockfd,char *buff, int nbytes,int flags) ;
int recvfrom(int sockfd,char *buff, int nbytes,int flags, struct sockaddr *from,int * addrlen);
2.3 M6 hinh Client — Server
Mô hình Client-server là một mô hình rất phổ biến trong thiết kế các ứng
dụng phân bố Trong mô hình này, một ứng dụng sẽ được chia ra làm hai phần: phần ở bên máy Client thường chứa các thông tin phục vụ cho người dùng và phần
ở máy server thường có nhiệm vụ lưu trữ, lấy và thao tác các dữ liệu, tính toán dựa
Trang 32Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Quá trình Server được khởi động trên một vài máy tính nào đó Tự thân nó
khởi động chương trình của nó và chờ ( sleeping waiting) cho đến khi quá trình
Client liên lạc yêu cầu nó thực thi công việc
Những server phải chứa code để điều khiển những vấn để sau đây :
Authentication : kiểm tra sự hợp lệ của client
Authorization : xác định xem client có quyền truy xuất dịch vụ mà server cung
cấp không
Bảo mật data
e_ Bảo vệ sự riêng tư của thông tin
Không cho các ứng dụng mạng làm sai lệch thông tin
Quá trình Client được khởi động (có thể trên cùng một máy đối với Servser
hoặc trên một máy có nối mạng với máy Server ) Khi cần thiết, quá trình Client gửi yêu cầu thông qua mạng đến Server
Khi quá trình Server hồn thành cơng việc, có thể nó trả kết quả về cho quá trình Client Sau đó nó lại tiếp tục "nghỉ" để chờ một yêu câu khác từ Client
2.3.1 Xây dựng chương trình Client
2.3.1.1 Đặc tả địa chỉ Server
Một trong những công việc của chương trình Client là xác định địa chỉ Server Sau đây là một số phương pháp :
Địa chỉ Server như là một hằng số khi chương trình được biên dịch Yêu cầu
người sử dụng đưa các giá trị này vào khi chạy chương trình Lưu trữ địa chỉ Server trên đĩa và khi chương trình chạy nó sẽ đọc các giá trị này Gởi các thông điệp
(multicast hay broadcast) để tìm Server
Các phương pháp trên đều có ưu điểm và nhược điểm :
Đặc tả địa chỉ Server là hằng số khi biên dịch làm cho chương trình chạy nhanh hơn Tuy nhiên nếu Server chuyển sang máy khác thì chương trình Client phải biên dịch lại Lưu trữ địa chỉ Server trên đĩa làm chương trình uyển chuyển
hơn Tuy nhiên khi mang chương trình sang máy khác phải mang theo cả file này,
hoặc phải biên tập lại nếu Server chuyển sang máy khác Gởi các thông điệp (multicast hay broadcast) để tìm Server làm cho chương trình phức tạp và không hiệu quả trong hệ thống mạng lớn Yêu cầu người sử dụng đưa các giá trị này vào khi chạy chương trình làm cho chương trình tổng quát và uyển chuyển hơn (không cần dịch lại hay có thể mang Server sang nhiều máy khác mà không ảnh hưởng đến
chương trình Client)
Trang 33Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
2.3.1.2 Xây dựng giải thuật chương trình Client Thuật giải với protocol TCP :
1 Tìm địa chỉ của Server <địa chỉ IP, số hiệu port > 2 Tạo ra socket : dùng hàm hệ thống socket()
3 Số hiệu port của Client để cho TCP tự chọn
4 Kết nối với Server : dùng hàm hệ thống connect()
5 Giao tiếp với Server (gởi yêu cầu và nhận trả lời của Server) thông qua hàm hệ thống write() :ghi dif liéu(truyén); read() : đọc dữ liệu (nhận)
6 Đóng cầu nối dùng hàm hệ thống close() , hay shutdown() 2.3.2 Các loại Server
2.3.2.1 Interative Server
Là Server chỉ thực thi một yêu cầu tại một thời điểm Loại Server này dễ
đàng xây dựng nhưng hiệu quả thấp vì Client phải đợi để được phục vụ nếu có nhiều yêu cầu đến Server cùng lúc
2.3.2.2, Concurrent Server
Là Server có thể phục vụ cho nhiễu yêu cầu từ phía Client một cách déng
thời Trong trường hợp này, hệ điều hành phải cho phép cùng một lúc có nhiều process được phép chạy Lý do là Server có thể tạo ra một bản sao của chính nó để giải quyết công việc
2.3.2.3 Connection-Oriented Server
Là Server sử dụng protocol connection-oriented cia c&p transport (vi du
TCP) Ưu điểm của loại Server này là dễ lập trình vì nhiệm vụ chủ yếu của Server là nhận kết nối và gởi đáp ứng cho Client Các vấn để về an toàn dữ liệu , trật tự
các gói data đến đã được cấp transport xử lý Nhược điểm của loại Server này là với những ứng dụng đơn giản thì sẽ có phí tổn do việc bắt tay ba lần khi thực hiện
sự kết nối so với UDP, nếu Client bị "crash" liên tục thì tài nguyên mà Server chiếm càng ngày càng lớn
2.3.2.4 Connectionless Server
Là Server sử dụng protocol connectionless của cấp transport (ví dụ UDP) Ưu điểm của loại Server này là chiếm ít tài nguyên so với TCP, thuận lợi cho những ứng dụng dùng broadcast hay multicast Nhược điểm là lập trình phức tạp vì vấn để
Trang 34Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Trong quá trình xây dựng chương trình theo mô hình Client-Server quyết
định chọn loại Server nào phụ thuộc rất nhiều vào tính chất và yêu cầu của bài toán
cụ thể
2.3.3 Xây dựng chương trình Server
Mỗi chương trình Server khi được lập trình sẽ tuân theo thuật giải sau : Tạo socket và gán nó vào port nơi mà nó nhận yêu cầu của Client Vào một vòng lặp vô tận làm các công việc sau : Nhận yêu cầu của Client Thực thi yêu
cầu Gởi trả kết quả về cho Client
Tuy nhiên với các loại Server khác nhau chúng ta sẽ có thuật giải cụ thể của
từng loại dựa trên thuật giải vừa nêu trên
2.3.3.1 Thuật giải với Interactive, Connection-Oriented Server
Tạo socket và gán nó vào port nơi mà nó nhận yêu cầu của Client Đặt
socket vào chế độ thụ động (sẵn sàng nhận kết nối của Clien\) Lấy yêu cầu kết
nối tiếp theo trong hàng đợi, tạo ra một socket mới cho sự kết nối của Client và
Server Nhận yêu cầu của Client, thực thi yêu cầu, gởi trả kết quả về cho Client
Đóng cầu nối khi giao tiếp của Client và Server kết thúc và quay về bước ba để
nhận yêu cầu mới
2.3.3.2 Thuật giải với Interactive, Connectionless Server
Tạo socket và gán nó vào port nơi mà nó nhận yêu cầu của Client Đọc yêu cầu từ Client gởi sang , thực thi yêu câu, gởi trả kết qua vé cho Client
Trang 35Xây dung dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM Server socket0 bind0 Client socket() revfrom() bind0 block cho đến khi nhận dừ liệu cửa Client #&—————dat(yê&ucầu) ————————] sendto() Xử lý yêu cầu sendto(} ———data(trả lời) t——— recvfromÑ
Interactive, Connectionless Server 2.3.3.3 Thuật giải với Concurrent , Connectionless Server
Công việc của process điều khiển(Master process) :
Tạo socket và gán nó vào port nơi mà nó nhận yêu câu của Client Để cho
socket ở trạng thái sẵn sàng nhận yêu cầu Lặp lại việc gọi hàm recvfrom() dé
nhận yêu cầu tiếp theo của Client Khi có yêu cầu thì nó sẽ fork(Q) ra process con (Slave process) để phục vụ yêu câu của Client
Trang 36Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Nhận yêu cầu của Client từ process cha và quyền truy xuất socket Thực thi yêu câu, gởi trả kết quả về cho Client dùng hàm sendto() Kết thúc process này sau khi đã hoàn tất một yêu cầu của Client
2.3.3.4 Thuật giải với Concurrent , Connection-Oriented Server
Công việc của process điểu khiển(Master process)
Tạo socket và gán nó vào port nơi mà nó nhận yêu câu của Client Để cho socket ở trạng thái chưa kết nối Đặt socket vào chế độ thụ động (sẵn sàng nhận
kết nối của ClienU Lặp lại việc gọi hàm acceptQ để nhận yêu cầu kết nối của
Client Khi có yêu câu thì nó sẽ fork() ra process con (Slave process) để phục vụ
yêu cầu của Client
Công việc của process xử lý yêu cầu (Slave process)
Nhận yêu cầu kết nối của Client từ process cha và sử dụng socket do
process cha vừa tạo ra từ lệnh gọi acceptQ để giao tiếp với Client Nhận yêu cầu
của Client, thực thi yêu cầu, gởi trả kết quả về cho Client Sau khi đã phục vụ tất cả yêu cầu của Client này thì process Slave đóng cầu nối và kết thúc
Trang 37Xây dung dịch vụ tính toán phân bố
Concurrent , Connection-Oriented Server socket() v bind v listen) v accept()
Block cho đến khi kết
Trang 38Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
2.4 Multicast
2.4.1 Giới thiệu
Broadcasting and multicasting chỉ sử dụng với UDP Các ứng dụng dùng nó
để gởi một message đến nhiều chương trình nhận
Hãy xet một mạng (network ) gồm nhiều máy được nối chung vào một
đường cáp mạng Mỗi frame trên mạng chứa địa chỉ nguồn và địa chỉ dich (48 bit)
Bình thường mỗi frame dành cho một máy duy nhất Địa chỉ đích xác định duy nhất
một giao tiếp được gọi là unicast
Trường hợp này sự liên lạc giữa bất kỳ hai máy nào trên mạng sẽ ảnh hưởng các máy còn lại trên đoạn cáp Tuy nhiên cũng có lúc khi một máy muốn gởi một
frame cho tất cả máy khác trên network , được gọi là broadcast Chúng ta thấy điều
này với ARP và RARP Multicast kết hợp giữa unicast và broadcast : frame sẽ được gởi đến một nhóm các máy thuộc một Multicast group
Để hiểu rõ Broadcast và Multicast ,chúng ta cần biết rằng mỗi máy trên
mạng sẽ dùng bộ lọc của mình khi một frame được truyền trên mạng
Trước tiên , card mạng nhìn thấy một frame trên mạng và phải quyết định xem có nên nhận và chuyển cho device driver hay không Bình thường card mang chỉ nhận những frame có địa chỉ đích là địa chỉ của nó hoặc địa chỉ broadcast
Ngày nay, phần lớn các card mạng cũng có thể setup để nhận những frame có địa chỉ đích là địa chỉ của Multicast hoặc một số nhóm của địa chỉ Multicast
Trên một mạng , một điạ chỉ Multicast có bit thấp nhất của byte cao được set lên 1, nghiã là 01:00:00:00:00:00 Như vậy , ta có thé xem dia chi broadcast ff: ff: ff: ff: ff: ff là một trường hgp diac biét cha multicast
Trang 39Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
Bộ lọc frame tại mỗi máy: Chuyển đi Bỏ qua UDP Chuyển đi Bồ qua IP huyển đi Chuyển đi Bồ qua Divice driver Chuyển đi Bỏ qua Interface card
Nếu card mạng nhận một frame, nó chuyển cho device driver BO loc ở
device driver sẽ xét Protocol có support hay không, nó có thuộc group Multicast đó không
Device driver chuyển cho lớp kế: IP Nếu frame xác định một IP datagram
TP thực hiện lọc dựa trên địa chỉ đích và địa chỉ nguồn và chuyển cho lớp trên TCP
hoặc UDP
Khi UDP nhận một datagram từ IP ,nó thực hiện lọc dựa trên port đích và
port nguồn Nếu không có process nào hiện sử dụng port này, datagram sẽ được bỏ qua và phát ra một message ICMP port unreachable TCP cũng thực hiện lọc tương
tự
Vấn để với broadcast là quá trình lọc phải thực hiện trên mọi máy mà nó
không quan tâm đến thông tin broadcast này Ví dụ có một ứng dụng được thiết kế
Trang 40Xây dựng dịch vụ tính toán phân bố CBHD : K.S THOẠI NAM
dụng này Mỗi khi một trong số 20 máy này gởi một broadcast , 30 máy kia phải xử lý cho đến lớp UDP, trước khi UDP datagram được bỏ qua
Mục tiêu của Multicast là giảm quá trình này ở những máy không tham gia vào ứng dụng Với Multicast , một máy sẽ tham gia vào một hoặc nhiều Multicast group và chỉ nhận các Multicast frame này
2.4.2 Broadcasting
Broadcast được dùng khi một máy cần tìm một thông tin mà không máy nào
đang giử thông tin đó, hoặc khi một máy muốn cung cấp thông tin cho một lượng
lớn máy cùng lúc
Broadcast một cách nhanh và đơn giản nhất để gởi thông tin đến tất cả các
máy lân cận Ví dụ, một gateway thông báo sự hiện diện của nó cho các gateway
khác
Phần lớn sự phức tạp trong việc support broadcast nằm ở các gateway Nếu
một gateway nhận một broadcast cho một mạng mà nó không nối trực tiếp, nó đơn giản forward broadcast đó Ngược lại nó phải thực hiện thêm một số việc phụ thuộc
vào : subnet, địa chỉ đích, địa chỉ của gateway
Nguyên tắc cơ bản để tránh loop là không broadcast một datagram lên mạng mà nó vừa mới nhận datagram đó
Nếu nó nhận datagram cần gởi cho một mạng mà nó nhận được datagram đó
thì nó không forward
Ngược lại nếu nó nhận một datagram cho mạng mà nó nối trực tiếp , nó sẽ
gởi một broadcast lên mạng đó
Các trường hợp khác nó dùng thủ tục tìm đường để gởi datagram đó
Như đã trình bày ở trên , có bốn mạng khác nhau của địa chỉ broadcast Bây giờ chúng ta xem xét cụ thể
2.4.2.1 Limited broadcast
Limited broadcast c6 dia chi 255.255.255.255 Một datagram dang limited
broadcast không bao giờ được forward bởi một router Nó chỉ xuất hiện ở mạng cục
bộ
2.4.2.2 Net-directed broadcast
Net-directed broadcast có phần host ID luôn là 1 Net-directed broadcast ctia Class A 1a netid.255.25.255 v6i netid 1a network ID của class A
Một router phải forward các Net-directed broadcast Nhưng nó cũng phải có khả năng disable chức năng này