báo cáo đồ án lập trình mạng

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 (5.87 MB, 39 trang )

Đang xem: Báo cáo đồ án lập trình mạng

TRƯỜNG CĐ CNTT HỮU NGHỊ VIỆT HÀN
KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN MÔN HỌC
LẬP TRÌNH MẠNG NÂNG CAO

Đề tài : Sử dụng kỹ thuật lập trình Socket xây dựng
chương trình chat qua mạng lan
Giáo viên: Nguyễn Vũ
Lớp : MM03A – Nhóm 5
Sinh viên thực hiện :
– Lê Long Bảo
– Trần Ngọc Khải
– Phạm Thị Thảo
Đà Nẵng, tháng 2 năm 2012
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
LỜI MỞ ĐẦU
Trong thời đại công nghệ ngày nay, việc ứng dụng công nghệ thông tin sẽ giúp
công việc giải quyết một cách suôn sẻ và trôi chảy hơn. Việc trao đổi thông tin giữa các
người dùng với nhau, hoặc người dùng muốn chia sẽ, trò chuyện với nhau là một nhu cầu
cấp thiết. Với nhu cầu đó, nhóm chúng em đã chọn đề tài “Sử dụng kỹ thuật lập trình
Socket để xây dựng chương trình Chat qua mạng Lan”, bằng việc ứng dụng những gì đã
học trong môn Lập trình mạng nâng cao là một trong những môn giúp người lập trình
phát triển các ứng dụng cho doanh nghiệp, cũng như giúp các máy tính có thể trao đổi,
truyền tin nhắn hoặc thông điệp với nhau.
Đồ án gồm ba chương:
Chương 1: Tổng quan về lập trình mạng.
Chương 2: Tổng quan về lập trình Socket.
Chương 3: Xây dựng và thiết kế chương trình.
Kết luận và tài liệu tham khảo.
Mặc dù có tìm hiểu kỹ, và kiểm tra chương trình chạy thành công, nhưng chắc

chắn vẫn không tránh khỏi sai sót nhất định. Rất mong nhận được sự góp ý và phê bình từ
thầy cô cũng như các bạn.
Để hoàn thành đồ án này, nhóm chúng em xin cảm ơn thầy Nguyễn Vũ đã tận tình
hướng dẫn nhóm chúng em trong thời gian qua.
Xin chân thành cảm ơn.
Đà nẵng, tháng 3 năm 2012
Nhóm 5 – MM03A
Nhóm 1 – MM03A 2
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
MỤC LỤC
DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT
Ký hiệu Ý nghĩa
PAN Personal Area Network
LAN Local Area Network
MAN Metropolitan Area Network
WAN Wire Area Network
Nhóm 1 – MM03A 3
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
DANH MỤC HÌNH VẼ
Nhóm 1 – MM03A 4
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
CHƯƠNG 1: TỔNG QUAN VỀ LẬP TRÌNH MẠNG
1.1. TỔNG QUAN VỀ MẠNG MÁY TÍNH
1.1.1. Khái niệm về mạng máy tính
Mạng máy tính là tập hợp các máy tính độc lập kết nối với nhau theo một chuẩn kỹ
thuật nhất định. Hai máy tính gọi là nối mạng với nhau nếu chúng có khả năng trao đổi
thông tin. Phương tiện kết nối có thể là cáp đồng, cáp quang, sóng viba, hồng ngoại hoặc
vệ tinh.
Mạng máy tính có nhiều kích cỡ, cấu trúc và hình thức tổ chức khác nhau tùy thuộc
vào từng ứng dụng cụ thể của mạng máy tính. Tuy nhiên, chúng có thể phân thành hai

loại chính là: mạng có cấu trúc ngang hàng và mạng có cấu trúc Client – Server (máy
trạm – máy chủ)
Hình 1.1.
Mạng ngang hàng
Nhóm 1 – MM03A 5
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Hình 1.2. Mạng Client – Server
Trên thực tế, không có một phương pháp phân loại thống nhất cho tất cả các loại mạng
máy tính, tuy nhiên khi xét đến một mạng máy tính người ta quan tâm đến hai đặc điểm
quan trọng: phương thức truyền dẫn và quy mô mạng.
Có hai phương thức truyền dẫn được sử dụng phổ biến đó là: truyền quảng bá và
truyền điểm-nối-điểm. Truyền quảng bá là phương thức sử dụng kênh thông tin đơn
chung cho tất cả các máy trạm trên mạng. Gói dữ liệu được gửi từ một máy trạm mong
muốn thì gói dữ liệu đó sẽ được xử lý, nếu không sẽ được bỏ qua. Một hệ thống mạng
truyền quảng bá hỗ trợ việc truyền dữ liệu đến một tập hợp các máy trạm, thì được gọi là
truyền đa điểm
Đối với phương thức truyền điểm-nối-điểm, mạng máy tính sử dụng phương thức này
bao gồm tập hợp nhiều kết nối giữa các máy trạm. Gói dữ liệu từ đầu phát dữ liệu đến đầu
thu dữ liệu có thể sẽ đi qua một hoặc nhiều máy trạm trung gian theo nhiều tuyến truyền
dẫn khác nhau với độ dài khác nhau.
Trường hợp mạng máy tính sử dụng phương thức truyền điểm-nối-điểm với một đầu
phát và một đầu thu được gọi là phương thức truyền unicasting
Phương thức phân loại thứ hai dựa vào quy mô mạng hay kích thước vật lý của mạng.
Theo quy mô từ nhỏ đến lớn ta có các loại mạng sau:
– Mạng cá nhân (Personal Are Network-PAN)
– Mạng LAN (Local Area Network)-mạng cục bộ: kết nối các nút trên một phạm vi
giới hạn. Phạm vi này có thể là một công ty, hay một tòa nhà.
Nhóm 1 – MM03A 6
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
– Mạng WAN (Wide Area Network): nhiều mạng LAN kết nối với nhau tạo thành

mạng WAN.
– MAN (Metropolitan Area Network), tương tự như WAN, nó cũng kết nối nhiều
mạng LAN. Tuy nhiên, một mạng MAN có phạm vi là một thành phố hay một đô thị
nhỏ. MAN sử dụng các mạng tốc độ cao để kết nối các mạng LAN của trường học, chính
phủ, công ty, , bằng cách sử dụng các liên kết nhanh tới từng điểm như cáp quang.
1.2. MÔ HÌNH PHÂN TẦNG
1.2.1. Mô hình OSI
Hình 1.3. Mô hình OSI
Mô hình OSI có 7 lớp và được thiết kế theo các nguyên tắc sau:
– Một lớp được tạo ra tương ứng với một khái niệm trừu tượng
– Một lớp thực hiện một chức năng hoàn chỉnh nào đó.
– Chức năng của mỗi lớp phải được chọn theo xu hướng phù hợp với các giao
thứcđã được chuẩn hóa
– Biên của các lớp phải được thiết kế sao cho tối thiểu hóa được lượng thông tin
truyền qua các giao diện
Nhóm 1 – MM03A 7
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
– Số lượng các lớp không quá ít để đảm bảo thực hiện đủ các chức năng cần thiết và
không được quá nhiều để kiến trúc của nó không trở nên cồng kềnh
1.2.1.1. Lớp vật lý
Lớp vật lý bao gồm việc truyền tải các tín hiệu trong môi trường từ máy tính này đến
máy tính khác. Lớp này gồm có các chi tiết kỹ thuật về các đặc tính điện và cơ như: mức
điện áp, định thời tín hiệu, tốc độ dữ liệu, độ dài truyền tải lớn nhất và các kết nối vật lý
của thiết bị mạng. Để một thiết bị hoạt động chỉ trong lớp vật lý, nó sẽ không có bất kỳ
kiến thức nào về dữ liệu mà nó truyền tải. Một thiết bị lớp vật lý chỉ truyền tải hoặc nhận
dữ liệu một cách đơn giản.
1.2.1.2. Lớp liên kết dữ liệu
Cung cấp khả năng chuyển dữ liệu tin cậy xuyên qua một liên kết vật lý. Lớp này liên
quan đến:
– Địa chỉ vật lý

– Mô hình mạng
– Cơ chế truy cập đường truyền
– Thông báo lỗi
– Thứ tự phân phối frame
– Điều khiển dòng.
Tại lớp data link, các bít đến từ lớp vật lý được chuyển thành các frame dữ liệu bằng
cách dùng một số nghi thức tại lớp này. Lớp data link được chia thành hai lớp con:
– Lớp con LLC (logical link control).
– Lớp con MAC (media access control)
Lớp con LLC là phần trên so với các giao thức truy cập đường truyền khác, nó cung
cấp sự mềm dẻo về giao tiếp. Bởi vì lớp con LLC hoạt động độc lập với các giao thức
truy cập đường truyền, cho nên các giao thức lớp trên hơn (ví dụ như IP ở lớp mạng) có
thể hoạt động mà không phụ thuộc vào loại phương tiện LAN. Lớp con LLC có thể lệ
thuộc vào các lớp thấp hơn trong việc cung cấp truy cập đường truyền. Lớp con MAC
cung cấp tính thứ tự truy cập vào môi trường LAN. Khi nhiều trạm cùng truy cập chia sẻ
môi trường truyền, để định danh mỗi trạm, lớp cho MAC định nghĩa một trường địa chỉ
phần cứng, gọi là địa chỉ MAC address.
Nhóm 1 – MM03A 8
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Địa chỉ MAC là một con số đơn nhất đối với mỗi giao tiếp LAN (card mạng). Lớp vật
lý (Physical Layer): định nghĩa các qui cách về điện, cơ, thủ tục và các đặc tả chức năng
để kích hoạt, duy trì và dừng một liên kết vật lý giữa các hệ thống đầu cuối.
Một số các đặc điểm trong lớp vật lý này bao gồm:
– Mức điện thế.
– Khoảng thời gian thay đổi điện thế.
– Tốc độ dữ liệu vật lý.
– Khoảng đường truyền tối đa.
– Các đầu nối vật lý.
1.2.1.3. Lớp mạng
Lớp mạng chịu trách nhiệm lập địa chỉ các thông điệp, diễn dịch địa chỉ và tên logic

thành địa chỉ vật lý đồng thời nó cũng chịu trách nhiệm gởi packet từ mạng nguồn đến
mạng đích. Lớp này quyết định đường đi từ máy tính nguồn đến máy tính đích. Nó quyết
định dữ liệu sẽ truyền trên đường nào dựa vào tình trạng, ưu tiên dịch vụ và các yếu tố
khác. Nó cũng quản lý lưu lượng trên mạng chẳng hạn như chuyển đổi gói, định tuyến, và
kiểm soát sự tắc nghẽn dữ liệu.Dữ liệu ở lớp này gọi packet hoặc datagram.
1.2.1.4. Lớp vận chuyển
Lớp vận chuyển phân đoạn dữ liệu từ hệ thống máy truyền và tái thiết lập dữ liệu vào
một luồng dữ liệu tại hệ thống máy nhận đảm bảo rằng việc bàn giao các thông điệp giữa
các thiết bị đáng tin cậy. Dữ liệu tại lớp này gọi là segment.
Lớp này thiết lập, duy trì và kết thúc các mạch ảo đảm bảo cung cấp các dịch vụ sau:
– Xếp thứ tự các phân đoạn: khi một thông điệp lớn được tách thành nhiều phân
đoạn nhỏ để bàn giao, lớp vận chuyển sẽ sắp xếp thứ tự các phân đoạn trước khi ráp nối
các phân đoạn thành thông điệp ban đầu.
– Kiểm soát lỗi: khi có phân đoạn bị thất bại, sai hoặc trùng lắp, lớp vận chuyển sẽ
yêu cầu truyền lại.
– Kiểm soát luồng: lớp vận chuyển dùng các tín hiệu báo nhận để xác nhận. Bên gửi
sẽ không truyền đi phân đoạn dữ liệu kế tiếp nếu bên nhận chưa gởi tín hiệu xác nhận
rằng đã nhận được phân đoạn dữ liệu trước đó đầy đủ.
Nhóm 1 – MM03A 9
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
1.2.1.5. Lớp phiên
Lớp này có chức năng thiết lập, quản lý, và kết thúc các phiên thông tin giữa hai thiết
bị truyền nhận. Lớp phiên cung cấp các dịch vụ cho lớp trình bày. Lớp Session cung cấp
sự đồng bộ hóa giữa các tác vụ người dùng bằng cách đặt những điểm kiểm tra vào luồng
dữ liệu. Bằng cách này, nếu mạng không hoạt động thì chỉ có dữ liệu truyền sau điểm
kiểm tra cuối cùng mới phải truyền lại. Lớp này cũng thi hành kiểm soát hội thoại giữa
các quá trình giao tiếp, điều chỉnh bên nào truyền, khi nào, trong bao lâu. Ví dụ như:
RPC, NFS, Lớp này kết nối theo ba cách: Haft duplex,Simplex, Full-duplex.
1.2.1.6. Lớp trình diễn
Lớp này chịu trách nhiệm thương lượng và xác lập dạng thức dữ liệu được trao đổi.

Nó đảm bảo thông tin mà lớp ứng dụng của một hệ thống đầu cuối gởi đi, lớp ứng dụng
của hệ thống khác có thể đọc được. Lớp trình bày thông dịch giữa nhiều dạng dữ liệu
khác nhau thông qua một dạng chung, đồng thời nó cũng nén và giải nén dữ liệu.
1.2.1.7. Lớp ứng dụng
Lớp ứng dụng tương tác trực tiếp với người sử dụng và nó cung cấp các dịch vụ mạng
cho các ứng dụng của ngời sử dụng nhưng không cung cấp dịch vụ cho các lớp khác. Lớp
này thiết lập khả năng liên lạc giữa những ngời sử dụng, đồng bộ và thiết lập các quy
trình xử lý lỗi và đảm bảo tính toàn vẹn của dữ liệu.
1.2.2. Mô hình TCP/IP
Hình 1.4. Mô hình TCP/IP
Sự ra đời của họ giao thức TCP/IP gắn liền với sự ra đời của Internet mà tiền thân là
mạng ARPAnet (Advanced Research Projects Agency) do Bộ Quốc phòng Mỹ tạo ra.
Nhóm 1 – MM03A 10
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Đây là bộ giao thức được dùng rộng rãi nhất vì tính mở của nó. Hai giao thức được dùng
chủ yếu ở đây là TCP (Transmission Control Protocol) và IP (Internet Protocol). Chúng
đã nhanh chóng được đón nhận và phát triển bởi nhiều nhà nghiên cứu và các hãng công
nghiệp máy tính với mục đích xây dựng và phát triển một mạng truyền thông mở rộng
khắp thế giới mà ngày nay chúng ta gọi là Internet.
TCP/IP có cấu trúc tương tự như mô hình OSI, tuy nhiên để đảm bảo tính tương thích
giữa các mạng và sự tin cậy của việc truyền thông tin trên mạng, bộ giao thức TCP/IP
được chia thành 2 phần riêng biệt: giao thức IP sử dụng cho việc kết nối mạng và giao
thức TCP để đảm bảo việc truyền dữ liệu một cách tin cậy.
1.2.2.1. Lớp ứng dụng
Tại mức cao nhất này, người sử dụng thực hiện các chương trình ứng dụng truy xuất
đến các dịch vụ hiện hữu trên TCP/IP Internet. Một ứng dụng tương tác với một trong
những protocol ở mức giao vận (transport) để gửi hoặc nhận dữ liệu. Mỗi chương trình
ứng dụng chọn một kiểu giao vận mà nó cần, có thể là một dãy tuần tự từng thông điệp
hoặc một chuỗi các byte liên tục. Chương trình ứng dụng sẽ gửi dữ liệu đi dưới dạng nào
đó mà nó yêu cầu đến lớp giao vận.

1.2.2.2. Lớp giao vận
Nhiệm vụ cơ bản của lớp giao vận là cung cấp phưng tiện liên lạc từ một chương trình
ứng dụng này đến một chưng trình ứng dụng khác. Việc thông tin liên lạc đó thường được
gọi là end-to-end. Mức chuyên trở có thể điều khiển luông thông tin. Nó cũng có thể cung
cấp sự giao vận có độ tin cậy, bảo đảm dữ liệu đến nơi mà không có lỗi và theo đúng thứ
tự. Để làm được điều đó, phần mềm protocol lớp giao vận cung cấp giao thức TCP, trong
quá trình trao đổi thông tin nơi nhận sẽ gửi ngược trở lại một xác nhận (ACK) và nơi gửi
sẽ truyền lại những gói dữ liệu bị mất. Tuy nhiên trong những môi trường truyền dẫn tốt
như cáp quang chẳng hạn thì việc xy ra lỗi là rất nhỏ. Lớp giao vận có cung cấp một giao
thức khác đó là UDP.
1.2.2.3. Lớp internet
Nhiệm vụ cơ bản của lớp này là xử lý việc liên lạc của các thiết bị trên mạng. Nó nhận
được một yêu cầu để gửi gói dữ liệu từ lớp cùng với một định danh của máy mà gói dữ
Nhóm 1 – MM03A 11
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
liệu phi được gửi đến. Nó đóng segment vào trong một packet, điền vào phần đầu của
packet, sau đó sử dụng các giao thức định tuyến để chuyển gói tin đến được đích của nó
hoặc trạm kế tiếp. Khi đó tại nơi nhận sẽ kiểm tra tính hợp lệ của chúng, và sử dụng tiếp
các giao thức định tuyến để xử lý gói tin. Đối với những packet được xác định thuộc cùng
mạng cục bộ, phần mềm Internet sẽ cắt bỏ phần đầu của packet, và chọn một trong các
giao thức lớp chuyên trở thích hợp để xử lý chúng. Cuối cùng, lớp Internet gửi và nhận
các thông điệp kiểm soát và sử lý lỗi ICMP.
1.2.2.4. Lớp giao tiếp mạng
Lớp thấp nhất của mô hình TCP/IP chính là lớp giao tiếp mạng, có trách nhiệm nhận
các IP datagram và truyền chúng trên một mạng nhất định. Người ta lại chia lớp giao tiếp
mạng thành 2 lớp con là:
– Lớp vật lý: Lớp vật lý làm việc với các thiết bị vật lý, truyền tới dòng bit 0, 1 từ ni
gửi đến nơi nhận.
– Lớp liên kết dữ liệu: Tại đây dữ liệu được tổ chức thành các khung (frame). Phần
đầu khung chứa địa chỉ và thông tin điều khiển, phần cuối khung dành cho viêc phát hiện

lỗi.
1.3. Mô hình truyền thông trong cấu trúc mạng
1.3.1. Nguyên tắc truyền thông
Để một mạng máy tính trở một môi trường truyền dữ liệu thì nó cần phải có những
yếu tố sau:
– Các hệ thống được liên kết với nhau theo một cấu trúc kết nối (topology) nào đó
– Việc chuyển dữ liệu từ máy tính này đến máy tính khác do mạng thực hiện thông
qua những quy định thống nhất gọi là giao thức của mạng.
– Phân chia hoạt động truyền thông của hệ thống thành nhiều lớp theo các nguyên
tắc nhất định
– Việc xét các module một cách độc lập với nhau cho phép giảm độ phức tạp cho
việc thiết kế và cài đặt. Phương pháp này được sử dụng rộng rãi trong việc xây dựng
mạng và các chương trình truyền thông và được gọi là phương pháp phân tầng (layer).
1.3.2. Nguyên tắc của phương pháp phân tầng
Nhóm 1 – MM03A 12
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Mỗi hệ thống thành phần trong mạng được xây dựng như một cấu trúc nhiều tầng và
đều có cấu trúc giống nhau như: số lượng tầng và chức năng của mỗi tầng.
Các tầng nằm chồng lên nhau, dữ liệu được chỉ trao đổi trực tiếp giữa hai tầng kề nhau
từ tầng trên xuống tầng dưới và ngược lại.
Cùng với việc xác định chức năng của mỗi tầng chúng ta phải xác định mối quan hệ
giữa hai tầng kề nhau. Dữ liệu được truyền đi từ tầng cao nhất của hệ thống truyền lần
lượt đến tầng thấp nhất sau đó truyền qua đường nối vật lý dưới dạng các bit tới tầng thấp
nhất của hệ thống nhận, sau đó dữ liệu được truyền ngược lên lần lượt đến tầng cao nhất
của hệ thống nhận.
Chỉ có hai tầng thấp nhất có liên kết vật lý với nhau còn các tầng trên cùng thứ tư chỉ
có các liên kết logic với nhau. Liên kết logic của một tầng được thực hiện thông qua các
tầng dưới và phải tuân theo những quy định chặt chẽ, các quy định đó được gọi giao thức
của tầng.
Hình 1.5. Mô hình truyền thông đơn giản 3 tầng

Trong kiến trúc phân tầng, một số mô hình được phát triển
– Mô hình tham chiếu kết nối các hệ thống mở OSI
– Mô hình Internet : TCP/IP
Xét trên phương diện lập trình với máy tính, ta xét mô hình phân tầng thu gọn: Nói
chung trong truyền thông có sự tham gia của các thành phần: các chương trình ứng dụng,
các chương trình truyền thông, các máy tính và các mạng. Các chương trình ứng dụng là
các chương trình của người sử dụng được thực hiện trên máy tính và có thể tham gia vào
Nhóm 1 – MM03A 13
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
quá trình trao đổi thông tin giữa hai máy tính. Trên một máy tính với hệ điều hành đa
nhiệm (như Windows, UNIX) thường được thực hiện đồng thời nhiều ứng dụng trong đó
có những ứng dụng liên quan đến mạng và các ứng dụng khác. Các máy tính được nối với
mạng và các dữ liệu được trao đổi thông qua mạng từ máy tính này đến máy tính khác.
Việc gửi dữ liệu được thực hiện giữa một ứng dụng với một ứng dụng khác trên hai
máy tính khác nhau thông qua mạng được thực hiện như sau: Ứng dụng gửi chuyển dữ
liệu cho chương trình truyền thông trên máy tính của nó, chương trình truyền thông sẽ gửi
chúng tới máy tính nhận. Chương trình truyền thông trên máy nhận sẽ tiếp nhận dữ liệu,
kiểm tra nó trước khi chuyển giao cho ứng dụng đang chờ dữ liệu.
Với mô hình truyền thông đơn giản người ta chia chương trình truyền thông thành ba
tầng không phụ thuộc vào nhau là: tầng ứng dụng, tầng giao vận và tầng tiếp cận mạng.
Tầng tiếp cận mạng liên quan tới việc trao đổi dữ liệu giữa máy tính và mạng mà nó
được nối vào. Để dữ liệu đến được đích máy tính gửi cần phải chuyển địa chỉ của máy
tính nhận cho mạng và qua đó mạng sẽ chuyển các thông tin tới đích. Ngoài ra máy gửi
có thể sử dụng một số phục vụ khác nhau mà mạng cung cấp như gửi ưu tiên, tốc độ cao.
Trong tầng này có thể có nhiều phần mềm
Tầng giao vận: thực hiện quá trình truyền thông end-to-end giữa 2 ứng dụng không
liên quan tới mạng và nằm ở trên tầng tiếp cận mạng. Tầng truyền dữ liệu không quan
tâm tới bản chất các ứng dụng đang trao đổi dữ liệu mà quan tâm tới làm sao cho các dữ
liệu được trao đổi một cách an toàn. Tầng truyền dữ liệu đảm bảo các dữ liệu đến được
đích và đến theo đúng thứ tự mà chúng được xử lý. Trong tầng truyền dữ liệu người ta

phải có những cơ chế nhằm đảm bảo sự chính xác đó và rõ ràng các cơ chế này không
phụ thuộc vào bản chất của từng ứng dụng và chúng sẽ phục vụ cho tất cả các ứng dụng.
Tầng ứng dụng sẽ chứa các module phục vụ cho tất cả những ứng dụng của người sử
dụng. Với các loại ứng dụng khác nhau (như là truyền file, truyền thư mục) cần các
module khác
nhau.
Nhóm 1 – MM03A 14
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Hình 1.6. Trao đổi giữa các tầng
1.3.3. Địa chỉ IP
Mỗi địa chỉ IP có độ dài 32 bits (đối với IP4) được tách thành 4 vùng (mỗi vùng 1
byte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc nhị phân.
Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm để tách giữa các vùng.
Địa chỉ IP là để định danh duy nhất cho một host bất kỳ trên liên mạng. Khuôn dạng địa
chỉ IP: mỗi host trên mạng TCP/IP được định danh duy nhất bởi một địa chỉ có khuôn
dạng <Network Number, Host number>.
Do tổ chức và độ lớn của các mạng con của liên mạng có thể khác nhau, người ta chia
các địa chỉ IP thành 5 lớp ký hiệu A,B,C, D, E. Các bit đầu tiên của byte đầu tiên được
dùng để định danh lớp địa chỉ (0-lớp A; 10 lớp B; 110 lớp C; 1110 lớp D; 11110 lớp
E).Subneting.
Trong nhiều trường hợp, một mạng có thể được chia thành nhiều mạng con(subnet),
lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con. Vùng subnetid
được lấy từ vùng hostid, cụ thể đối với 3 lớp A, B, C .
Nhóm 1 – MM03A 15
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
CHƯƠNG 2: TỔNG QUAN VỀ LẬP TRÌNH SOCKET
2.1. LẬP TRÌNH MẠNG VỚI TCP SOCKET
2.1.1. Mô hình giao thức
TCP là một giao thức "có liên kết" (connection – oriented), nghĩa là cần phải thiết
lập liên kết giữa hai thực thể TCP trước khi chúng trao đổi dữ liệu với nhau. Một tiến

trình ứng dụng trong một máy tính truy nhập vào các dịch vụ của giao thức TCP thông
qua một cổng (port) của TCP. Số hiệu cổng TCP được thể hiện bởi 2 bytes.
Hình 2.1. Kết nối TCP
Một cổng TCP kết hợp với địa chỉ IP tạo thành một đầu nối TCP/IP (socket) duy
nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết logic giữa một cặp
đầu nối TCP/IP. Một đầu nối TCP/IP có thể tham gia nhiều liên kết với các đầu nối
TCP/IP ở xa khác nhau. Trước khi truyền dữ liệu giữa 2 trạm cần phải thiết lập một
liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên kết đó sẽ
được giải phóng.
Nhóm 1 – MM03A 16
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Các thực thể của tầng trên sử dụng giao thức TCP thông qua các hàm gọi (function
calls) trong đó có các hàm yêu cầu để yêu cầu, để trả lời. Trong mỗi hàm còn có các
tham số dành cho việc trao đổi dữ liệu.
2.1.2. Thiết lập kết nối
Các bước thực hiện để thiết lập một liên kết TCP/IP: Thiết lập một liên kết mới có
thể được mở theo một trong 2 phương thức: chủ động (active) hoặc bị động
(passive).
o Phương thức bị động, người sử dụng yêu cầu TCP chờ đợi một yêu cầu liên kết
gửi đến từ xa thông qua một đầu nối TCP/IP (tại chỗ). Người sử dụng dùng
hàm passive Open có khai báo cổng TCP và các thông số khác (mức ưu tiên,
mức an toàn)
o Với phương thức chủ động, người sử dụng yêu cầu TCP mở một liên kết với
một một đầu nối TCP/IP ở xa. Liên kết sẽ được xác lập nếu có một hàm Passive
Open tương ứng đã được thực hiện tại đầu nối TCP/IP ở xa đó.
Bảng liệt k

ê

một và

i cổ

ng TCP p

hổ biến.
Số hiệu cổng
Mô tả
0
Reserved
5
Remote job entry
7
Echo
9
Discard
11
Systat
13
Daytime
Nhóm 1 – MM03A 17
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
15
Nestat
17
quote (quote odd day
20
ftp-data
21
ftp (control)

23
Telnet
25
SMTP
37
Time
53
Name Server
102
ISO – TSAP
104
X.400 Sending
111
Sun RPC
139
Net BIOS Session source
160 – 223
Reserved
– Khi người sử dụng gửi đi một yêu cầu mở liên kết sẽ được nhận hai thông số trả lời
từ TCP.
o Thông số Open ID được TCP trả lời ngay lập tức để gán cho một liên kết cục
bộ (local connection name) cho liên kết được yêu cầu. Thông số này về sau
được dùng để tham chiếu tới liên kết đó. (Trong trường hợp nếu TCP không thể
Nhóm 1 – MM03A 18
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
thiết lập được liên kết yêu cầu thì nó phải gửi tham số Open Failure để thông
báo.)
o Khi TCP thiết lập được liên kết yêu cầu nó gửi tham số Open Success được
dùng để thông báo liên kết đã được thiết lập thành công. Thông báo này dược
chuyển đến trong cả hai trường hợp bị động và chủ động. Sau khi một liên kết

được mở, việc truyền dữ liệu trên liên kết có thể được thực hiện.
2.1.3. Truyền và nhận dữ liệu
Các bước thực hiện khi truyền và nhận dữ liệu: Sau khi xác lập được liên kết người
sử dụng gửi và nhận dữ liệu. Việc gửi và nhận dữ liệu thông qua các hàm Send và
receive.
o Hàm Send: Dữ liệu được gửi xuống TCP theo các khối (block). Khi nhận được
một khối dữ liệu, TCP sẽ lưu trữ trong bộ đệm (buffer). Nếu cờ PUSH được
dựng thì toàn bộ dữ liệu trong bộ đệm được gửi, kể cả khối dữ liệu mới đến sẽ
được gửi đi. Ngược lại cờ PUSH không được dựng thì dữ liệu được giữ lại
trong bộ đệm và sẽ gửi đi khi có cơ hội thích hợp (chẳng hạn chờ thêm dữ liệu
nữa để gửi đi với hiệu quả hơn).
o Hàm receive: Ở trạm đích dữ liệu sẽ được TCP lưu trong bộ đệm gắn với mỗi
liên kết. Nếu dữ liệu được đánh dấu với một cờ PUSH thì toàn bộ dữ liệu trong
bộ đệm (kể cả các dữ liệu được lưu từ trước) sẽ được chuyển lên cho người sử
dụng. Còn nếu dữ liệu đến không được đánh dấu với cờ PUSH thì TCP chờ tới
khi thích hợp mới chuyển dữ liệu với mục tiêu tăng hiệu quả hệ thống.
Nói chung việc nhận và giao dữ liệu cho người sử dụng đích của TCP phụ thuộc
vào việc cài đặt cụ thể. Trường hợp cần chuyển gấp dữ liệu cho người sử dụng thì có
thể dùng cờ URGENT và đánh dấu dữ liệu bằng bit URG để báo cho người sử dụng
cần phải sử lý khẩn cấp dữ liệu đó.
2.1.4. Đóng liên kết
Các bước thực hiện khi đóng một liên kết: Việc đóng một liên kết khi không cần
thiết được thực hiên theo một trong hai cách: dùng hàm Close hoặc dùng hàm Abort.
Nhóm 1 – MM03A 19
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
o Hàm Close: yêu cầu đóng liên kết một cách bình thường. Có nghĩa là việc
truyền dữ liệu trên liên kết đó đã hoàn tất. Khi nhận được một hàm Close TCP
sẽ truyền đi tất cả dữ liệu còn trong bộ đệm thông báo rằng nó đóng liên kết.
Lưu ý rằng khi một người sử dụng đã gửi đi một hàm Close thì nó vẫn phải tiếp
tục nhận dữ liệu đến trên liên kết đó cho đến khi TCP đã báo cho phía bên kia

biết về việc đóng liên kết và chuyển giao hết tất cả dữ liệu cho người sử dụng
của mình.
o Hàm Abort: Người sử dụng có thể đóng một liên kết bất và sẽ không chấp nhận
dữ liệu qua liên kết đó nữa. Do vậy dữ liệu có thể bị mất đi khi đang được
truyền đi. TCP báo cho TCP ở xa biết rằng liên kết đã được hủy bỏ và TCP ở
xa sẽ thông báo cho người sử dụng của mình.
Một số hà

m khác c

ủa T

CP:
o Hàm Status: cho phép người sử dụng yêu cầu cho biết trạng thái của một liên
kết cụ thể, khi đó TCP cung cấp thông tin cho người sử dụng.
o Hàm Error: thông báo cho người sử dụng TCP về các yêu cầu dịch vụ bất hợp
lệ liên quan đến một liên kết có tên cho trước hoặc về các lỗi liên quan đến môi
trường.
2.2. LẬP TRÌNH MẠNG VỚI UDP SOCKET
2.2.1. Giao thức UDP
UDP (User Datagram Protocol) là giao thức theo phương thức không liên kết được
sử dụng thay thế cho TCP ở trên IP theo yêu cầu của từng ứng dụng. Khác với TCP, UDP
không có các chức năng thiết lập và kết thúc liên kết. Tương tự như IP, nó cũng không
cung cấp cơ chế báo nhận (acknowledgment), không sắp xếp tuần tự các gói tin
(datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà không có cơ chế
thông báo lỗi cho người gửi. Qua đó ta thấy UDP cung cấp các dịch vụ vận chuyển không
tin cậy như trong TCP.
Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn nhiều
so với TCP segment.
Nhóm 1 – MM03A 20

Xem thêm: Môn Học: Đồ Án Socket C – Cần Giúp Đỡ Đồ Án Socket C++ Về Trò Chơi Bingo

Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Hình 2.2. Khuôn dạng bảng tin UDP
UDP cũng cung cấp cơ chế gán và quản lý các số hiệu cổng (port number) để định
danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do ít chức năng phức tạp
nên UDP thường có xu thế hoạt động nhanh hơn so với TCP. Nó thường được dùng cho
các ứng không đòi hỏi độ tin cậy cao trong giao vận.
2.2.2. Một số thuật ngữ
Trước khi kiểm tra xem giao thức UDP hoạt động như thế nào, chúng ta cần làm
quen với một số thuật ngữ. Trong phần dưới đây, chúng ta sẽ định nghĩa một số thuật ngữ
cơ bản có liên quan đến giao thức UDP.
o Packet: Trong truyền số liệu, một packet là một dãy các số nhị phân, biểu diễn
dữ liệu và các tín hiệu điều khiển, các gói tin này được chuyển đi và chuyển tới
tới host. Trong gói tin,thông tin được sắp xếp theo một khuôn dạng cụ thể.
o Datagram: Một datagram là một gói tin độc lập, tự chứa, mang đầy đủ dữ liệu
để định tuyến từ nguồn tới đích mà không cần thông tin thêm.
o MTU: là viết tắt của Maximum Transmission Unit. MTU là một đặc trưng của
tầng liên kết mô tả số byte dữ liệu tối đa có thể truyền trong một gói tin. Mặt
khác, MTU là gói dữ liệu lớn nhất mà môi trường mạng cho trước có thể
truyền. Ví dụ, Ethernet có MTU cố định là 1500 byte. Trong UDP, nếu kích
thước của một datagram lớn hơn MTU, IP sẽ thực hiện phân đoạn, chia
datagram thành các phần nhỏ hơn (các đoạn), vì vậy mỗi đoạn nhỏ có kích
thước nhỏ hơn MTU.
o Port: UDP sử dụng các cổng để ánh xạ dữ liệu đến vào một tiến trình cụ thể
đang chạy trên một máy tính. UDP định đường đi cho packet tại vị trí xác định
bằng cách sử dụng số hiệu cổng được xác định trong header của datagram. Các
cổng được biểu diễn bởi các số 16-bit, vì thế các cổng nằm trong dải từ 0 đến
Nhóm 1 – MM03A 21
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
65535. Các cổng cũng được xem như là các điểm cuối của các liên kết logic, và
được chia thành ba loại sau:

 Các cổng phổ biến: Từ 0 đến 1023
 Các cổng đã đăng ký: 1024 đến 49151
 Các cổng động/dành riêng 49152 đến 65535
Chú ý rằng các cổng UDP có thể nhận nhiều hơn một thông điệp ở một thời điểm.
Trong một số trường hợp, các dịch vụ TCP và UDP có thể sử dụng cùng một số hiệu
cổng, như 7 (Echo) hoặc trên cổng 23 (Telnet).
UDP có các cổng thông dụng sau:
o TTL (Time To Live) Giá trị TTL cho phép chúng ta thiết lập một giới hạn trên
của các router mà một datagram có thể đi qua. Giá trị TTL ngăn ngừa các gói
tin khỏi bị kẹt trong các vòng lặp định tuyến vô hạn. TTL được khởi tạo bởi
phía gửi và giá trị được giảm đi bởi mỗi router quản lý datagram. Khi TTL
bằng 0, datagram bị loại bỏ.
o Multicasting: là phương pháp dựa trên chuẩn có tính chất mở để phân phối các
thông tin giống nhau đến nhiều người dùng. Multicasting là một đặc trưng
chính của giao thức UDP. Multicasting cho phép chúng ta truyền tin theo kiểu
Nhóm 1 – MM03A 22
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
một nhiều, ví dụ gửi tin hoặc thư điện tử tới nhiều người nhận, đài phát thanh
trên Internet, hoặc các chương trình demo trực tuyến.
2.2.3. Hoạt động của giao thức UDP
Khi một ứng dụng dựa trên giao thức UDP gửi dữ liệu tới một host khác trên
mạng, UDP thêm vào một header có độ dài 8 byte chứa các số hiệu cổng nguồn và đích,
cùng với tổng chiều dài dữ liệu và thông tin checksum. IP thêm vào header của riêng nó
vào đâu mỗi datagram UDP để tạo lên một datagram IP
2.2.4. Ưu và nhược điểm của giao thức UDP
So với giao thức TCP, UDP có những nhược điểm sau:
o Thiếu các tín hiệu bắt tay. Trước khi gửi một đoạn, UDP không gửi các tín hiệu
bắt tay giữa bên gửi và bên nhận. Vì thế phía gửi không có cách nào để biết
datagram đã đến đích hay chưa. Do vậy, UDP không đảm bảo việc dữ liệu đã
đến đích hay chưa.

o Sử dụng các phiên. Để TCP là hướng liên kết, các phiên được duy trì giữa các
host.
o TCP sử dụng các chỉ số phiên (session ID) để duy trì các liên kết giữa hai host.
UDP không hỗ trợ bất kỳ phiên nào do bản chất phi liên kết của nó.
o Độ tin cậy. UDP không đảm bảo rằng chỉ có một bản sao dữ liệu tới đích. Để
gửi dữ liệu tới các hệ thống cuối, UDP phân chia dữ liệu thành các đoạn nhỏ.
UDP không đảm bảo rằng các đoạn này sẽ đến đích đúng thứ tự như chúng đã
được tạo ra ở nguồn. Ngược lại, TCP sử dụng các số thứ tự cùng với số hiệu
cổng và các gói tin xác thực thường xuyên, điều này đảm bảo rằng các gói tin
đến đích đúng thứ tự mà nó đã được tạo ra.
o Bảo mật. TCP có tính bảo mật cao hơn UDP. Trong nhiều tổ chức, firewall và
router cấm các gói tin UDP, điều này là vì các hướng dẫner thường sử dụng các cổng
UDP.
o Kiểm soát luồng. UDP không có kiểm soát luồng; kết quả là, một ứng dụng
UDP được thiết kế tồi có thể làm giảm băng thông của mạng.
Nhóm 1 – MM03A 23
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
Không cần thiết lập liên kết. UDP là giao thức phi liên kết, vì thế không cần phải
thiết lập liên kết. Vì UDP không sử dụng các tín hiệu handshaking, nên có thể tránh
được thời gian trễ. Đó chính là lý do tại sao DNS thường sử dụng giao thức UDP hơn
là TCP-DNS sẽ chậm hơn rất nhiều khi dùng TCP.
o Tốc độ. UDP nhanh hơn so với TCP. Bởi vì điều này, nhiều ứng dụng thường
được cài đặt trên giao thức UDP hơn so với giao thức TCP.
o Hỗ trợ hình trạng (Topology). UDP hỗ trợ các liên kết 1-1, 1-n, ngược lại TCP
chỉ hỗ trợ liên kết 1-1.
o Kích thước header. UDP chỉ có 8 byte header cho mỗi đoạn, ngược lại TCP cần
các header 20 byte, vì vậy sử dụng băng thông ít hơn.
Bảng dưới đây tổng kết những sự kác nhau giữa hai giao thức TCP và UDP:
2.3. MÔ HÌNH CLIENT SERVER
2.3.1. Tổng quan

Trong nhiều năm gần đây, thuật ngữ client/server đã trở nên phổ biến trong lĩnh
vực công nghệ thông tin. Các công ty xem client/server như là một mô hình công nghệ
mang tính cách mạng để trợ giúp cho việc quản lý và điều hành các hoạt động của công
ty.
Nhiều năm trước, khi các máy tính lớn mainframe của IBM còn thống trị trong các
lĩnh vực điện
toán,

một
cách tiếp cận mới công nghệ mạng máy tính với tên gọi
“client/server” đã xuất hiện vào đầu thập niên 80 và nhanh chóng phổ biến. Đến cuối
Nhóm 1 – MM03A 24
Sử dụng kỹ thuật lập trình Socket xây dựng chương trình chat qua mạng Lan
thập niên 80, các mô hình client/server thật sự được chấp nhận và đã xuất hiện các
ứng dụng đầu tiên. Ngày nay, “client/server” đã trở nên thông dụng và phổ biến đến
mức hầu hết các ứng dụng mạng đều dựa trên nguyên tắc client/server. Mô hình
này đã được chứng minh là phương pháp hiệu quả về chi phí khi xây dựng nhiều loại
mạng và dịch vụ mạng, đặc biệt đối với mạng LAN ( PCs ) chạy các ứng dụng end-user
database.
Khái Niệm
– Một mô hình kiến trúc tính toán (computational architecture) gồm các tiến
trình khách (client ) yêu cầu dịch vụ từ các tiến trình phục vụ ( server )
Mô hình kiến trúc ứng dụng
– Client/server là dạng phổ biến của mô hình ứng dụng phân tán trong đó
phần mềm được chia thành các tiến trình client và các tiến trình server. Một client sẽ gửi
yêu cầu cho một server theo một giao thức định sẵn (để server có thể hiểu được yêu cầu
của client), để lấy thông tin hoặc chỉ thị server thực hiện một tác vụ nào đó. Sau khi thực
hiện xong yêu cầu của client, server sẽ trả lời.
– Ví dụ : Mối quan hệ tương tác qua lại tương tự như người khách hàng gửi
một đơn đặt hàng theo một mẫu đến một nhà cung cấp, sau đó sẽ cung cấp hàng và hóa

đơn. Mấu đơn hàng và hóa đơn là một phần của giao thức.Client/server thường được dịch
qua tiếng Việt là khách/chủ. Tuy nhiên ý nghĩa của nó không hoàn toàn giống như vậy mà
gần với quan hệ: khách hàng/người cung cấp dịch vụ. Tuy nhiên, đó không phải là
mô tả chung cho hoạt động của client/server. Bản thân thuật ngữ client/server, cũng
giống như các thuật ngữ tin học khác, không thể suy trực tiếp từ nghĩa của client và server
mà đã trở thành một khái niệm độc lập.
– Nhìn chung, trong client/server duy trì một sự phân biệt rõ rệt giữa các tiến
trình và các thiết bị mạng. Thường thì máy tính client và máy server là hai thiết bị mạng
riêng rẽ và có kiến trúc, cấu hình theo mục đích đã được thiết kế. Ví dụ, một máy chủ
Web thường có cấu hình mạnh với năng lực xử lí cao (CPU) và bộ nhớ dung lượng lớn
trong khi các Web client thường gồm các tính năng hỗ trợ giao diện đồ họa của trình
duyệt như chất lượng hiển thị của card đồ họa, độ phân giải, kích thước màn hình Tuy
Nhóm 1 – MM03A 25

Tài liệu liên quan

*

Đồ án lập trình mạng_ScanIP 18 1 65

*

Đồ án “Lập trình thiết bị di động trên J2ME” 106 664 3

*

Tài liệu BÁO CÁO ĐỒ ÁN LẬP TRÌNH WEBSITE 1(version 1.1) doc 14 1 0

*

Đồ án lập trình web doc 12 608 6

*

Đồ án lập trình ứng dụng mạng Phần mềm iChat doc 5 1 10

*

MÔN HỌC: ĐỒ ÁN LẬP TRÌNH MẠNG pdf 14 1 37

*

Đồ án Lập trình hệ thống- Mô phỏng lệnh Type 7 752 3

*

Đồ án lập trình mạng-Xây dựng chương trình chơi game caro trên android 23 2 12

*

Đồ án lập trình mạng : xây dựng chương trình remore desktop- ứng dụng socket 33 2 10

Xem thêm: đồ án kết cấu thép 2 nhịp 24m

*

Đồ án lập trình mạng : Viết chương trình chơi game gỡ mìn-minesweeper ứng dụng socket 18 2 22