Tải bản đầy đủ (.doc) (16 trang)

Bài giảng:GIAO THỨC VÀ NGUYÊN TẮC MẠNG CĂN BẢN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (234.95 KB, 16 trang )

TRƯỜNG CAO ĐẲNG NGHỀ ĐỒNG THÁP
KHOA CÔNG NGHỆ THÔNG TIN
--------Bài giảng:
GIAO THỨC VÀ NGUYÊN TẮC MẠNG CĂN BẢN
I. Khái niệm giao thức truyền thơng
Giao thức giao tiếp hay cịn gọi là Giao thức truyền thông, Giao thức
liên mạng, Giao thức tương tác, Giao thức trao đổi thông tin (tiếng Anh là
communication protocol) - trong công nghệ thông tin gọi tắt là giao thức
(protocol).
Giao thức là một tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữ liệu,
phát tín hiệu, chứng thực và phát hiện lỗi dữ liệu - những việc cần thiết để gửi
thông tin qua các kênh truyền thơng, nhờ đó mà các máy tính (và các thiết bị) có
thể kết nối và trao đổi thơng tin với nhau. Các giao thức truyền thông dành cho
truyền thông tín hiệu số trong mạng máy tính có nhiều tính năng để đảm bảo việc
trao đổi dữ liệu một cách đáng tin cậy qua một kênh truyền thơng khơng hồn hảo.
Như vậy các máy trên mạng muốn giao tiếp với nhau thì phải có chung một
giao thức.
Có nhiều giao thức được sử dụng để giao tiếp hoặc truyền đạt thông tin trên
Internet, dưới đây là một số các giao thức tiêu biểu:











TCP (Transmission Control Protocol): thiết lập kết nối giữa các máy tính để


truyền dữ liệu. Nó chia nhỏ dữ liệu ra thành những gói (packet) và đảm bảo
việc truyền dữ liệu thành công.
IP (Internet Protocol): định tuyến (route) các gói dữ liệu khi chúng được
truyền qua Internet, đảm bảo dữ liệu sẽ đến đúng nơi cần nhận.
UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của
giao thức TCP/IP.
SPX (Sequenced Packet Exchange) là một giao thức mạng thuộc lớp vận
chuyển (transport layer network protocol) trong mơ hình mạng OSI gồm 7
lớp.
HTTP (HyperText Transfer Protocol): cho phép trao đổi thông tin (chủ yếu
ở dạng siêu văn bản) qua Internet.
FTP (File Transfer Protocol): cho phép trao đổi tập tin qua Internet.
SMTP (Simple Mail Transfer Protocol): cho phép gởi các thông điệp thư
điện tử (e-mail) qua Internet.
POP3 (Post Office Protocol, phiên bản 3): cho phép nhận các thông điệp thư
điện tử qua Internet.







MIME (Multipurpose Internet Mail Extension): một mở rộng của giao thức
SMTP, cho phép gởi kèm các tập tin nhị phân, phim, nhạc, ... theo thư điện
tử.
WAP (Wireless Application Protocol): cho phép trao đổi thông tin giữa các
thiết bị không dây, như điện thoại di động.
.v.v.


1. Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển
truyền vận")
Là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP,
các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau,
mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo
chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn
phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư
điện tử) đồng thời chạy trên cùng một máy chủ.
TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng
dụng kết quả, trong đó có WWW, thư điện tử và Secure Shell.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên
dưới và một ứng dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy
kiểu đường ống để liên lạc với nhau, trong khi đó, giao thức IP khơng cung cấp
những dịng kiểu đó, mà chỉ cung cấp dịch vụ chuyển gói tin khơng đáng tin cậy.
TCP làm nhiệm vụ của tầng giao vận trong mơ hình OSI đơn giản của các mạng
máy tính.

Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển qua
mạng. TCP phân chia dòng byte này thành các đoạn (segment) có kích thước thích
hợp (thường được quyết định dựa theo kích thước của đơn vị truyền dẫn tối đa
(MTU) của tầng liên kết dữ liệu của mạng mà máy tính đang nằm trong đó).
Sau đó, TCP chuyển các gói tin thu được tới giao thức IP để gửi nó qua một
liên mạng tới mơ đun TCP tại máy tính đích. TCP kiểm tra để đảm bảo khơng có


gói tin nào bị thất lạc bằng cách gán cho mỗi gói tin một "số thứ tự" (sequence
number).
Số thứ tự này còn được sử dụng để đảm bảo dữ liệu được trao cho ứng dụng
đích theo đúng thứ tự. Mơ đun TCP tại đầu kia gửi lại "tin báo nhận"
(acknowledgement) cho các gói tin đã nhận được thành cơng; một "đồng hồ"

(timer) tại nơi gửi sẽ báo time-out nếu không nhận được tin báo nhận trong khoảng
thời gian bằng một round-trip time (RTT), và dữ liệu (được coi là bị thất lạc) sẽ
được gửi lại.
TCP sử dụng checksum (giá trị kiểm tra) để xem có byte nào bị hỏng trong
quá trình truyền hay khơng; giá trị này được tính tốn cho mỗi khối dữ liệu tại nơi
gửi trước khi nó được gửi, và được kiểm tra tại nơi nhận.
Sơ đồ bên dưới đây cho chúng ta thấy TCP header nằm ở vị trí nào trong
frame do một máy tính đã tạo ra và gởi vào mạng. Nếu chúng ta xoay sơ đồ 90 độ
qua trái, chúng ta cũng lại có được điều tương tự trong sơ đồ trước. Điều này dĩ
nhiên vì mỗi tầng chức năng gắn thêm thơng tin của mình, hay cịn gọi là header

Frame được tạo thành bởi 6 khối 3 chiều để chúng ta có thể thấy khối nào
được thêm vào trong mỗi tầng OSI. Chúng ta có thể thấy rằng TCP header chứa
đựng mọi tuỳ chọn mà giao thức hổ trợ, được đặt ngay đằng sau IP header (tầng
3), và trước phần dữ liệu chứa đựng các thông tin của các tầng cao hơn (các tầng
5,6,7)
Ghi chú: khối FCS ở cuối cùng là một tổng kiểm tra đặc biệt do tầng
datalink tạo ra để cho phép máy nhận phát hiện xem frame hiện thời có bị hư
hỏng do q trình vận chuyển hay khơng.
2. Giao thức IP (tiếng Anh: Internet Protocol - Giao thức Liên mạng)
Là một giao thức hướng dữ liệu được sử dụng bởi các máy chủ nguồn và
đích để truyền dữ liệu trong một liên mạng chuyển mạch gói.
Dữ liệu trong một liên mạng IP được gửi theo các khối được gọi là các gói
(packet hoặc datagram). Cụ thể, IP khơng cần thiết lập các đường truyền trước khi
một máy chủ gửi các gói tin cho một máy khác mà trước đó nó chưa từng liên lạc
với.


Giao thức IP cung cấp một dịch vụ gửi dữ liệu khơng đảm bảo (cịn gọi là
cố gắng cao nhất), nghĩa là nó hầu như khơng đảm bảo gì về gói dữ liệu. Gói dữ

liệu có thể đến nơi mà khơng cịn ngun vẹn, nó có thể đến khơng theo thứ tự (so
với các gói khác được gửi giữa hai máy nguồn và đích đó), nó có thể bị trùng lặp
hoặc bị mất hoàn toàn. Nếu một phần mềm ứng dụng cần được bảo đảm, nó có thể
được cung cấp từ nơi khác, thường từ các giao thức giao vận nằm phía trên IP.
Các thiết bị định tuyến liên mạng chuyển tiếp các gói tin IP qua các mạng
tầng liên kết dữ liệu được kết nối với nhau. Việc không có đảm bảo về gửi dữ liệu
có nghĩa rằng các chuyển mạch gói có thiết kế đơn giản hơn. (Lưu ý rằng nếu
mạng bỏ gói tin, làm đổi thứ tự hoặc làm hỏng nhiều gói tin, người dùng sẽ thấy
hoạt động mạng trở nên kém đi. Hầu hết các thành phần của mạng đều cố gắng
tránh để xảy ra tình trạng đó. Đó là lý do giao thức này cịn được gọi là cố gắng
cao nhất. Tuy nhiên, khi lỗi xảy ra khơng thường xun sẽ khơng có hiệu quả đủ
xấu đến mức người dùng nhận thấy được.)
Giao thức IP rất thông dụng trong mạng Internet công cộng ngày nay. Giao
thức tầng mạng thông dụng nhất ngày nay là IPv4; đây là giao thức IP phiên bản 4.
IPv6 được đề nghị sẽ kế tiếp IPv4: Internet đang hết dần địa chỉ IPv4, do IPv4 sử
dụng 32 bit để đánh địa chỉ (tạo được khoảng 4 tỷ địa chỉ); IPv6 dùng địa chỉ 128
bit, cung cấp tối đa khoảng 3.4×10 38 địa chỉ (xem bài về IPv6 để biết thêm chi
tiết).
Các phiên bản từ 0 đến 3 hoặc bị hạn chế, hoặc không được sử dụng. Phiên
bản 5 được dùng làm giao thức dịng (stream) thử nghiệm. Cịn có các phiên bản
khác, nhưng chúng thường dành là các giao thức thử nghiệm và không được sử
dụng rộng rãi.

Địa chỉ IP được chia thành 4 số giới hạn từ 0 - 255. Mỗi số được lưu bởi 1
byte - > IP có kích thước là 4byte, được chia thành các lớp địa chỉ. Có 3 lớp là A,
B, và C. Nếu ở lớp A, ta sẽ có thể có 16 triệu địa chỉ, ở lớp B có 65536 địa chỉ. Ví
dụ: Ở lớp B với 132.25,chúng ta có tất cả các địa chỉ từ 132.25.0.0 đến
132.25.255.255. Phần lớn các địa chỉ ở lớp A llà sở hữu của các công ty hay của tổ
chức. Một ISP thường sở hữu một vài địa chỉ lớp B hoặc C. Ví dụ: Nếu địa chỉ IP



của bạn là 132.25.23.24 thì bạn có thể xác định ISP của bạn là ai. (có IP là
132.25.x.)
Trên Internet thì địa chỉ IP của mỗi người là duy nhất và nó sẽ đại diện cho
chính người đó, địa chỉ IP được sử dụng bởi các máy tính khác nhau để nhận biết
các máy tính kết nối giữa chúng. Đây là lí do tại sao bạn lại bị IRC cấm, và là cách
người ta tìm ra IP của bạn. Địa chỉ IP có thể dễ dàng phát hiện ra, người ta có thể
lấy được qua các cách sau:






Bạn lướt qua một trang web, IP của bạn bị ghi lại
Trên IRC, bất kì ai cũng có thể có IP của bạn
Trên ICQ, mọi người có thể biết IP của bạn, thậm chí bạn chọn ``do not
show IP`` người ta vẫn lấy được nó
Nếu bạn kết nối với một ai đó, họ có thế gõ ``netstat –n ``, và biết được ai
đang kết nối đến họ
Nếu ai đó gửi cho bạn một email với một đoạn mã java tóm IP, họ cũng có
thể tóm được IP của bạn

3. Giao thức TCP/IP
Bộ giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol
suite hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ
các giao thức truyền thông cài đặt chồng giao thức mà Internet và hầu hết các
mạng máy tính thương mại đang chạy trên đó. Bộ giao thức này được đặt tên theo
hai giao thức chính của nó là TCP (Giao thức Điều khiển Giao vận) và IP (Giao
thức Liên mạng). Chúng cũng là hai giao thức đầu tiên được định nghĩa.

Như nhiều bộ giao thức khác, bộ giao thức TCP/IP có thể được coi là một
tập hợp các tầng, mỗi tầng giải quyết một tập các vấn đề có liên quan đến việc
truyền dữ liệu, và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định
nghĩa rõ ràng dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn. Về mặt
lôgic, các tầng trên gần với người dùng hơn và làm việc với dữ liệu trừu tượng
hơn, chúng dựa vào các giao thức tầng cấp dưới để biến đổi dữ liệu thành các dạng
mà cuối cùng có thể được truyền đi một cách vật lý.
Hiện nay, một số hệ điều hành thương mại có bao gồm và cài đặt sẵn chồng
TCP/IP. Đối với đa số người dùng, chúng ta không cần phải lùng tìm bản lập trình
thực thi của nó. TCP/IP được bao gồm trong tất cả các phiên bản Unix thương mại
và các phân phối của Linux, cũng như với Mac OS X, Microsoft Windows, và
Windows Server.
4. UDP (User Datagram Protocol)
Là một trong những giao thức cốt lõi của giao thức TCP/IP. Dùng UDP,
chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là
datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà


TCP làm; các gói dữ liệu có thể đến khơng đúng thứ tự hoặc bị mất mà khơng có
thơng báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích
thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái của nó
nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu
cầu.
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name System),
ứng dụng streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP),
và game trực tuyến.
5. SPX (Sequenced Packet Exchange)
Là một giao thức mạng thuộc lớp vận chuyển (transport layer network
protocol) trong mơ hình mạng OSI gồm 7 lớp. Cũng như IPX, SPX là giao thức
"ruột" (native protocol) của các hệ điều mạng Netware của hãng Novell.

Tương tự như giao thức TCP trong bộ TCP/IP, SPX là giao thức đảm bảo
tồn bộ thơng điệp truyền đi từ một máy tính trong mạng đến một máy tính khác
một cách chính xác. SPX sử dụng giao thức IPX của Netware như là cơ chế vận
chuyển (TCP sử dụng IP). Các chương trình ứng dụng sử dụng SPX để cung cấp
các tương tác Khách/Chủ và điểm-tới-điểm (client/server and peer-to-peer
interaction) giữa các nút mạng (network node: là một "tram làm việc" trong
mạng). Tương tự như TCP và IP hợp thành bộ giao thức TCP/IP là giao thức
chuẩn trong các mạng HĐH mạng của Microsoft (Windows 95, 97, 98... Windows
NT 4.0, 2000, XP...) SPX và IPX hợp thành bộ giao thức IPX/SPX là giao thức
chuẩn trong các mạng sử dụng HĐH mạng của Novell (Novell Netware 3.11, 3.12,
4.11, 4.12...).

6. Giao thức HTTP (Tiếng Anh: HyperText Transfer Protocol - Giao thức
truyền tải siêu văn bản)
Là một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ
thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web
client) là giao thức Client/Server dùng cho World Wide Web-WWW, HTTP là một
giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).
7. Giao thức FTP (viết tắt của tiếng Anh File Transfer Protocol, "Giao thức
truyền tập tin")
FTP thường được dùng để trao đổi tập tin qua mạng lưới truyền thông dùng
giao thức TCP/IP (chẳng hạn như Internet - mạng ngoại bộ - hoặc intranet - mạng
nội bộ). Hoạt động của FTP cần có hai máy tính, một máy chủ và một máy khách).
Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trình chủ, lắng
nghe yêu cầu về dịch vụ của các máy tính khác trên mạng lưới. Máy khách chạy
phần mềm FTP dành cho người sử dụng dịch vụ, gọi là trình khách, thì khởi đầu


một liên kết với máy chủ. Một khi hai máy đã liên kết với nhau, máy khách có thể
xử lý một số thao tác về tập tin, như tải tập tin lên máy chủ, tải tập tin từ máy chủ

xuống máy của mình, đổi tên của tập tin, hoặc xóa tập tin ở máy chủ v.v. Vì giao
thức FTP là một giao thức chuẩn công khai, cho nên bất cứ một cơng ty phần mềm
nào, hay một lập trình viên nào cũng có thể viết trình chủ FTP hoặc trình khách
FTP.
Hầu như bất cứ một nền tảng hệ điều hành máy tính nào cũng hỗ trợ giao
thức FTP. Điều này cho phép tất cả các máy tính kết nối với một mạng lưới có nền
TCP/IP, xử lý tập tin trên một máy tính khác trên cùng một mạng lưới với mình,
bất kể máy tính ấy dùng hệ điều hành nào (nếu các máy tính ấy đều cho phép sự
truy cập của các máy tính khác, dùng giao thức FTP). Hiện nay trên thị trường có
rất nhiều các trình khách và trình chủ FTP, và phần đơng các trình ứng dụng này
cho phép người dùng được lấy tự do, không mất tiền.
8. Giao thức SMTP (tiếng Anh: Simple Mail Transfer Protocol - giao thức
truyền tải thư tín đơn giản)
Là một chuẩn truyền tải thư điện tử qua mạng Internet. Giao thức hiện dùng
được là ESMTP (extended SMTP - SMTP mở rộng)
9. Giao thức WAP (viết tắt của Wireless Application Protocol - Giao thức Ứng
dụng Không dây)
Là một tiêu chuẩn công nghệ cho các hệ thống truy nhập Internet từ các
thiết bị di động như điện thoại di động, PDA, v.v... Mặc dù tiêu chuẩn này chưa
được chuẩn hóa trên tồn cầu, nhưng những ứng dụng của giao thức này đã tác
động rất lớn đến ngành công nghiệp di động và các lĩnh vực dịch vụ liên quan.
WAP là giao thức truyền thông mang lại rất nhiều ứng dụng cho người sử dụng
thiết bị đầu cuối di động như E-mail, web, mua bán trực tuyến, ngân hàng trực
tuyến, thơng tin chứng khốn, v.v...
Với các xu hướng triển khai các ứng dụng vô tuyến băng thông rộng trong
mạng NGN, rất nhiều các công nghệ đã được đề xuất để tích hợp và hội tụ các
dịch vụ mạng. WAP là một giải pháp công nghệ đem lại nhiều lợi ích cho người sử
dụng thiết bị đầu cuối vô tuyến cũng như các gia tăng giá trị của các nhà cung cấp
dịch vụ mạng. Tuy nhiên, triển khai WAP là một vấn đề phức tạp và liên quan tới
nhiều hướng phát triển công nghệ khác như phần cứng, bảo mật, v.v...

10. Post Office Protocol phiên bản 3 (POP3)
Là một giao thức tầng ứng dụng, dùng để lấy thư điện tử từ server mail,
thông qua kết nối TCP/IP. POP3 và IMAP4 (Internet Message Access Protocol) là
2 chuẩn giao thức Internet thông dụng nhất dùng để lấy nhận email. Hầu như các
máy tính hiện nay đều hỗ trợ cả 2 giao thức


11. MIME, viết tắt của Multipurpose Internet Mail Extensions
Là một chuẩn Internet về định dạng cho thư điện tử. Hầu như mọi thư điện
tử Internet được truyền qua giao thức SMTP theo định dạng MIME. Vì gắn liền
với chuẩn SMTP và MIME nên đơi khi thư điện tử Internet cịn được gọi là thư
điện tử SMTP/MIME.
II. Các loại giao thức truyền thơng
Có 2 loại:
- Giao thức hướng kết nối và phi kết nối
- Giao thức có khả năng định tuyến và khơng có khả năng định tuyến
1. Giao thức phi kết nối (Connectionless protocol)
Đặc điểm của giao thức không kết nối:
- Khơng kiểm sốt đường truyền
- Dữ liệu khơng bảo đảm đến được nơi nhận
- Dữ liệu thường dưới dạng datagrams
Ví dụ: giao thức UDP của TCP/IP
2. Giao thức hướng kết nối (Connection-oriented protocol)
Đặc điểm của giao thức hướng kết nối
- Ngược lại với giao thức không kết nối, kiểm soát được đường truyền
- Dữ liệu truyền đi tuần tự, nếu nhận thành cơng thì nơi nhận phải gởi tín
hiệu ACK (ACKnowledge)
Ví dụ: các giao thức TCP, SPX
3. Giao thức có khả năng định tuyến (Routable protocols)
Là các giao thức cho phép đi qua các thiết bị liên mạng như Router để

xây dựng các mạng lớn có qui mơ lớn hơn
Ví dụ, các giao thức có khả năng định tuyến là: TCP/IP, SPX/IPX
4. Giao thức khơng có khả năng định tuyến (Non - Routable protocols)
Ngược với giao thức có khả năng định tuyến, các giao thức này không cho
phép đi qua các thiết bị liên mạng như Router để xây dựng các mạng lớn.
Ví dụ về giao thức khơng có khả năng định tuyến là : NETBEUI


5. Các loại thức thường sử dụng: Hiện nay có 3 loại giao thức thường hay sử
dụng:
- TCP/IP
- SPX/IPX (Novell Netware)
- Microsoft Network
III. Windows Socket
Socket là một phương pháp để thiết lập kết nối truyền thơng giữa một
chương trình u cầu dịch vụ (client) và một chương trình cung cấp dịch vụ
(server) trên mạng LAN, WAN hay Internet và đôi lúc là giữa những q trình
ngay bên trong máy tính. Mỗi socket có thể được xem như một điểm cuối trong
một kết nối. Một socket trên máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn
để "gọi" một socket trên máy cung cấp dịch vụ. Một khi socket đã được thiết lập
phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu.
Được khai sinh tại trường đại học Berkeley vào những năm 1980, socket
xuất hiện lần đầu trong thế giới Unix là Berkeley Sockets Interface, một chương
trình thiết bị được thiết kế để giúp máy tính nối mạng ở khắp mọi nơi có thể trao
đổi thông tin với nhau.
Giữa những năm 1990, Microsoft đã tạo riêng socket của họ là Windows
Sockets (được biết rộng rãi với tên WinSock), nhờ vậy các ứng dụng Windows có
thể "nói chuyện" với nhau qua các kết nối mạng.



Người ta dùng các nhãn "client" và "server" để phân biệt giữa máy tính
đang thực hiện cuộc gọi và phía đang nhận cuộc gọi. Những máy tính có socket
server bảo đảm tình trạng mở của port truyền thơng, sẵn sàng để nhận bất kỳ cuộc
gọi đến nào dù không định trước. Những máy yêu cầu dịch vụ thường xác định số
hiệu cổng của server mong muốn bằng cách tìm nó trong cơ sở dữ liệu về
Domain Name System.
Với sự phát triển của Web, socket vẫn tiếp tục đóng vai trị quan trọng
trong việc duy trì các luồng truyền thơng trên Internet. Các ứng dụng có liên quan
đến Internet đều viết ở lớp bên trên socket, ví dụ socket tích hợp một số phần của
địa chỉ Web site, trình duyệt web và công nghệ bảo mật Secure Socket Layer.
Điều khiển Winsock có hai giao thức khác nhau ln sẵn sàng để sử dụng là
giao thức TCP và UDP.
- TCP (Transmission Control Protocol) là một giao thức dựa vào việc kết
nối (hướng kết nối), điều đó nghĩa là, để chúng ta có thể gửi và nhận dữ liệu ra và
vào Winsock thì một kết nối phải được duy trì. TCP rất an toàn, rất nhiều chỉ tiêu
và phương pháp kỹ thuật để đảm bảo tính an tồn được cài đặt khi triển khai TCP.
Dữ liệu sẽ được kiểm tra đi, kiểm tra lại cho tới khi nó được chắc chắn là đã gửi
đến nơi.
- UDP (User Datagram Protocol). Nó là giao thức phi kết nối (không kết
nôi), điều này nghĩa là, chúng ta sẽ khơng cần phải tạo ra (hoặc là có) một kết nối
trước khi gửi dữ liệu. Nhưng chúng ta vẫn cần các tham số về cổng và địa chỉ để
định nơi đến cho chương trình của mình.
UDP cũng hữu ích trong một số trường hợp. Vì nó gửi dữ liệu rất nhanh,
không phải tải những phần header nặng nề như của TCP. Nó thường dược dùng
nhiều khi lập trình Games trực tuyến, nơi mà người chơi đòi hỏi tốc độ càng nhanh
càng tốt. UDP nhanh, nhưng không đảm bảo cho bạn là dữ liệu của bạn gửi đi đã
"đi đến nơi, về đến chốn"
IV. Winsock API và mơ hình OSI
1. WinSock API:
WinSock API (Windows Sockets Application Programming Interface) là thư

viện các hàm giao diện lập trình mạng cho Microsoft Windows. WinSock tương
thích với họ nghi thức mạng TCP/IP.
2. Socket :
Socket là đầu (endpoint) trao đổi dữ liệu giữa các q trình, qua đó các ứng
dụng WinSock gởi / nhận dữ liệu qua mạng.
Có Hai loại Socket: Stream Socket và Datagram Socket
a. Stream Socket :


Dựa trên nghi thức TCP ( Tranmission Control Protocol ), việc truyền dữ
liệu chỉ thực hiện giữa hai quá trình đã thiết lập kết nối. Dữ liệu được truyền tin
cậy, đúng trình tự và khơng lập lại.
Dữ liệu được truyền như dịng liên tục các byte khơng phân biệt ranh giới
các record
Trình tự thiết lập quá trình trao đổi dữ liệu dùng Stream Socket

b. Datagram Socket :
Dựa trên nghi thức UDP ( User Datagram Protocol ), việc truyền dữ liệu
không yêu cầu có sự thiết lập kết nối giữa hai q trình. Dữ liệu truyền khơng tin
cậy, có thể khơng đúng trình tự hoặc lập lại.
Dữ liệu được truyền như dịng các record.
Trình tự thiết lập q trình trao đổi dữ liệu dùng Datagram Socket


3. Port :
Port xác định duy nhất một quá trình trên một máy trong mạng.
Một TCP/IP Socket gồm một địa chỉ IP kết hợp với một port? Xác định duy
nhất một quá trình trên mạng.
Một số port dành riêng :
UDP Ports

0 Reversed
7 Echo
37 Time
42 Name Server
53 Domain Name Server
69 Trivial File Transfer Program (TFTP
)
514 System Log
...

TCP Ports
0 Reversed
1 TCP Multiplexor
20 FTP_ Data Connection
21 FTP_ Command Connection
23 TELNET
25 SMTP
42 Name Server
53 Domain Name Server
79 Finger_ find a active user
...

4. Lập trình winsock
Các file cần thiết :
WINSOCK.DLL hay WSOCK32.DLL ( tuỳ version 16 hay 32 bit của
Windows ).
WINSOCK.LIB hay WSOCK32.LIB.


WINSOCK.H.

Giới thiệu một số hàm của WinSock:
Dưới đây chỉ giới thiệu chức năng của một số hàm WinSock, khơng trình
bày prototype của các hàm
a. Các hàm khởi động WinSock : Dùng để khởi đầu và kết thúc quá trình
sử dụng WinSock.
WSAStartup() : Khởi động WinSock.
WSACleanup() : Kết htúc WinSock.
WSAGetLastError() : Lấy mã sai vừa xảy ra.
b. Các hàm Socket : Dùng để thiết lập quá trình trao đổi dữ liệu trên mạng.
socket() : tạo socket truyền dữ liệu.
bind() : định danh cho socket vừa tạo (gán port cho socket).
listen() : lắng nghe kết nối.
accept() : chấp nhận kết nối từ client.
connect() : kết nối với server.
send(), recv() : gởi, nhận dữ liệu với stream socket.
sendto(), recvfrom() : gởi, nhận dữ liệu với datagram socket.
........
c. Các hàm khác :
inet_addr() : chuyển từ địa chỉ IP dạng số thập phân có chấm sang địa chỉ
internet.
inet_ntoa() : ngược lại.
gethostname() : cho tên máy hiện hành.
gethostbyname(),WSAAsyncGetHostByName() : cho địa chỉ IP ứng với tên
máy.
gethostbyaddr(),WSAAsyncGetHostByAddr() : cho tên máy ứng với địa chỉ
IP.


........
d. WinSock error:

Lỗi khi send data
WSANOTINITIALISED A successful AfxSocketInit must occur before
using this API.
WSAENETDOWN The Windows Sockets implementation detected that
the network subsystem failed.
WSAEACCES The requested address is a broadcast address, but the
appropriate flag was not set.
WSAEINPROGRESS A blocking Windows Sockets operation is in
progress.
WSAEFAULT The lpBuf or lpSockAddr parameters are not part of the user
address space, or the lpSockAddr argument is too small (less than the size of a
SOCKADDR structure).
WSAENETRESET The connection must be reset because the Windows
Sockets implementation dropped it.
WSAENOBUFS The Windows Sockets implementation reports a buffer
deadlock.
WSAENOTCONN The socket is not connected (SOCK_STREAM only).
WSAENOTSOCK The descriptor is not a socket.
WSAEOPNOTSUPP MSG_OOB was specified, but the socket is not of
type SOCK_STREAM.
WSAESHUTDOWN The socket has been shut down; it is not possible to
call SendTo on a socket after ShutDown has been invoked with nHow set to 1 or
2.
WSAEWOULDBLOCK The socket is marked as nonblocking and the
requested operation would block.
WSAEMSGSIZE The socket is of type SOCK_DGRAM, and the
datagram is larger than the maximum supported by the Windows Sockets
implementation.
WSAECONNABORTED The virtual circuit was aborted due to timeout or
other failure.



WSAECONNRESET The virtual circuit was reset by the remote side.
WSAEADDRNOTAVAIL The specified address is not available from the
local machine.
WSAEAFNOSUPPORT Addresses in the specified family cannot be used
with this socket.
WSAEDESTADDRREQ A destination address is required.
WSAENETUNREACH The network cannot be reached from this host at
this time.
Lỗi khi receive data
WSANOTINITIALISED A successful AfxSocketInit must occur before
using this API.
WSAENETDOWN The Windows Sockets implementation detected that
the network subsystem failed.
WSAENOTCONN The socket is not connected.
WSAEINPROGRESS A blocking Windows Sockets operation is in
progress.
WSAENOTSOCK The descriptor is not a socket.
WSAEOPNOTSUPP MSG_OOB was specified, but the socket is not of
type SOCK_STREAM.
WSAESHUTDOWN The socket has been shut down; it is not possible to
call Receive on a socket after ShutDown has been invoked with nHow set to 0 or
2.
WSAEWOULDBLOCK The socket is marked as nonblocking and the
Receive operation would block.
WSAEMSGSIZE The datagram was too large to fit into the specified
buffer and was truncated.
WSAEINVAL The socket has not been bound with Bind.
WSAECONNABORTED The virtual circuit was aborted due to timeout or

other failure.
WSAECONNRsESET The virtual circuit was reset by the remote side.


5. Ứng dụng CLIENT – SERVER
* Ứng dụng Client - Server là gì?
Trước tới giờ, người ta lập trình với mục đích là tạo ra được một ứng dụng.
Nhưng ứng dụng đó chỉ hoạt động độc lập 1 mình riêng lẽ.
Mục tiêu lập trình mạng sẽ đưa ra những ứng dụng dạng Client – Server.
Tức là sẽ có 2 loại ứng dụng chính đó là Client và Server.
Quy trình hoạt động của ứng dụng Server – Client như sau:
- Server có nhiệm vụ của là lắng nghe, chờ đợi kết nối từ Client trên địa
chỉ IP của mình với PORT được quy định sẵn. Khi client gởi dữ liệu
tới Server thì nó phải giải quyết một cơng việc là nhận dữ liệu đó -> xử
lý -> trả kết quả lại cho Client.
- Client là ứng dụng được phục vụ, nó chỉ gởi truy vấn và chờ đợi kết quả
từ Server.
Trong mơ hình TCP/IP có 2 giao thức là TCP và UDP và 2 giao thức này sẽ
quyết định cách thức hoạt động của Client - Server như thế nào?

- Hoạt động của Client
(SOCK_STREAM)
- Hoạt động của Client
(SOCK_DGRAM)



Server

trong


giao

thức

TCP



Server

trong

giao

thức

UDP



×