Giới thiệu về socket

Gii thiu vsocket  
Socket là mt giao din lp trình ng dng (API-Application Programming Interface). Nó  
được gii thiu ln đầu tiên trong n bn UNIX - BSD 4.2. dưới dng các hàm hthng  
theo cú pháp ngôn ngC (socket(), bind(), connect(), send(), receive(), read(), write(),  
close() ,..). Ngày nay, Socket được htrtrong hu hết các hệ điu hành như MS  
Windows, Linux và được sdng trong nhiu ngôn nglp trình khác nhau: như C, C++,  
Java, Visual Basic, Visual C++, . . .  
Socket cho phép thiết lp các kênh giao tiếp mà hai đầu kênh được đánh du bi hai cng  
(port). Thông qua các cng này mt quá trình có thnhn và gi dliu vi các quá trình  
khác.  
Có hai kiu socket:  
1. Socket kiu AF_UNIX chcho phép giao tiếp gia các quá trình trong cùng mt  
máy tính  
2. Socket kiu AF_INET cho phép giao tiếp gia các quá trình trên nhng máy tính  
khác nhau trên mng.  
Shiu cng (Port Number) ca socket  
Để có ththc hin các cuc giao tiếp, mt trong hai quá trình phi công bshiu cng  
ca socket mà mình sdng. Mi cng giao tiếp thhin mt địa chxác định trong hệ  
thng. Khi quá trình được gán mt shiu cng, nó có thnhn dliu gi đến cng này  
tcác quá trình khác. Quá trình còn li cũng yêu cu to ra mt socket.  
Ngoài shiu cng, hai bên giao tiếp còn phi biết địa chIP ca nhau. Đa chIP giúp  
phân bit máy tính này vi máy tính kia trên mng TCP/IP. Trong khi shiu cng dùng  
để phân bit các quá trình khác nhau trên cùng mt máy tính.  
Trong hình trên, địa chca quá trình B1 được xác định bng 2 thông tin: (Host B, Port  
B1):  
Đa chmáy tính có thđịa chIP dng 203.162.36.149 hay là địa chtheodng tên  
Shiu cng gán cho Socket phi duy nht trên phm vi máy tính đó, có giá trtrong  
khang t0 đến 65535 (16 bits). Trong đó, các cng t1 đến 1023 được gi là cng hệ  
thng được dành riêng cho các quá trình ca hthng.  
Shiu  
Quá trình hthng  
cng  
7
21  
23  
25  
81  
110  
Dch Echo  
Dch vFTP  
Dch vtelnet  
Dch vmái (SMTP)  
Dch vWeb  
Dch vmail (POP)  
Các chế độ giao tiếp  
Xét kiến trúc ca hthng mng TCP/IP  
Tng vn chuyn giúp chuyn tiếp các thông đip gia các chương trình ng dng vi  
nhau. Nó có thhot đng theo hai chế độ:  
·
·
Giao tiếp có ni kết, nếu sdng giao thc TCP  
Hoc giao tiếp không ni kết, nếu sdng giao thc UDP  
Socket là giao din gia chương trình ng dng vi tng vn chuyn. Nó cho phép ta  
chn giao thc sdng tng vn chuyn là TCP hay UDP cho chương trình ng dng  
ca minh.  
Bng sau so sánh skhác bit gia hai chế độ giao tiếp có ni kết và không ni kêt  
Chế độ có ni kết  
Chế độ không ni kết  
·
Tn ti kênh giao tiếp o gia hai  
·
Không tn ti kênh giao tiếp o gia  
bên giao tiếp  
hai bên giao tiếp  
·
Dliu được gi đi theo chế độ bo  
đảm: có kim tra li. truyn li gói  
tin li hay mt, bo đảm thtự đến  
ca các gói tin . . .  
Dliu chính xác, Tc độ truyn  
chm.  
·
Dliu được gi đi theo chế độ  
không bo đảm: Không kim tra li,  
không phát hin không truyn li gói  
tin bli hay mt, không bo đảm  
thtự đến ca các gói tin . . .  
Dliu không chính xác, tc độ  
truyn nhanh.  
Thích hp cho các ng dng cn tc  
đ, không cn chính xác cao: truyn  
âm thanh, hình nh . . .  
·
·
·
Xây dng ng dng Client-Server vi Socket  
Socket là phương tin hiu quả để xây dng các ng dng theo kiến trúc Client-Server.  
Các ng dng trên mng Internet như Web, mail, FTP là các ví dụ đin hình.  
Phn này trình bày các bước cơ bn trong vic xây dng các ng dng Client-Server sử  
dng Socket làm phương tin giao tiếp theo chai chế độ: Có ni kết và không ni kết.  
Mô hình Client-Server sdng Socket chế độ có ni kết (TCP)  
Giai đọan 1: Server to Socket, gán shiu cng và lng nghe yêu cu ni kết  
·
socket(): Server yêu cu to mt socket để có thsdng các dch vca tng  
vn chuyn.  
·
·
bind(): Server yêu cu gán shiu port cho socket.  
listen(): Server lng nghe các yêu cu ni kết tcác client trên cng đã được gán.  
Server sn sàng phc vClient.  
Giai đọan 2: Client to Socket, yêu cu thiết lp mt ni kết vi Server  
·
socket(): Client yêu cu to mt socket để có thsdng các dch vca tng  
vn chuyn, thông thường hthng tự động gán mt shiu cng còn rãnh cho  
socket ca Client.  
·
·
connect(): Client gi yêu cu ni kết đến server có địa chIP và Port xác định.  
accept(): Server chp nhn ni kết ca client, khi đó mt kênh giao tiếp o được  
hình thành,Client và server có thtrao đi thông tin vi nhau.  
Giai đọan 3: Trao đi thông tin gia Client và Server  
·
·
·
Sau khi chp nhn yêu cu ni kết, thông thường server thc hin lnh read() để  
nghn cho đến khi có thông đip yêu cu (Request Message) tclient gi đến.  
Server phân tích và thc thi yêu cu. Kết qusẽ đưc gi vclient bng lnh  
write().  
Sau khi gi yêu cu bng lnh write(), client chnhn thông đip kết quả  
(ReplyMessage) tserver bng lnh read().  
Trong giai đon này, vic trao đi thông tin gia Client và Server phi tuân thgiao thc  
ca ng dng (Dng thc và ý nghĩa ca các thông đip, qui tc bt tay, đng bhóa, ... ).  
Thông thường Client slà người gi yêu cu đến Server trước.  
Nếu chúng ta phát trin ng dng theo các Protocol đã định nghĩa sn, chúng ta phi  
tham kho và tuân thủ đúng nhng qui định ca giao thc. Bn có thtìm đọc mô tchi  
tiết ca các Protocol đã được chun hóa trong các tài liu RFC (Request For Comments).  
Ngược li, nếu chúng ta phát trin mt ng dng Client-Server riêng ca mình, thì công  
vic đầu tiên chúng ta phi thc hin là đi xây dng Protocol cho ng dng.  
Giai đon 4: Kết thúc phiên làm vic  
·
·
Các câu lnh read(), write() có thể được thưc hin nhiu ln (ký hiu bng hình  
elipse).  
Kênh o sbxóa khi Server hoc Client đóng socket bng lnh close().  
Như vy toàn btiến trình din ra như sau:  
Mô hình Client-Server sdng Socket chế độ không ni kết (UDP)  
Giai đon 1: Server to Socket - gán shiu cng  
·
·
socket(): Server yêu cu to mt socket để có thsdng các dch vca tng  
vn chuyn.  
bind(): Server yêu cu gán shiu cng cho socket..  
Giai đon 2: Client to Socket  
Giai đon 3: Trao đi thông tin gia Client và Server  
Sau khi to Socket xong, Client và Server có thtrao đi thông tin qua li vi nhau thông  
qua hai hàm sendto() và recvfrom(). Đơn vdliu trao đi gia Client và Server là các  
Datagram Package (Gói tin thư tín). Protocol ca ng dng phi định nghĩa khuôn  
dng và ý nghĩa ca các Datagrame Package. Mi Datagrame Package có cha thông tin  
về địa chngười gi và người nhn (IP, Port).  
pdf 7 trang myanh 10120
Bạn đang xem tài liệu "Giới thiệu về socket", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgioi_thieu_ve_socket.pdf