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

Lập trình mạng (Network Programming)

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 (346.45 KB, 12 trang )

I.

Định nghĩa TCP/IP và OSI:

1. TCP/IP:
TCP/IP là gì: Đó là viết tắt của các chữ Transfer Control Protocol/Internet
Protocol. TCP/IP là chương trình giao tiếp của mà các chương trình của Windows sử
dụng để giao tiếp qua TCP/IP.
TCP/IP gồm 4 lớp giao thức, tương ứng với 7 lớp giao thức của chuẩn ISO OSI.
Bốn lớp đó gồm (kể theo thứ tự từ trên xuống dưới): Application layer, Host-to-host
layer, Internet layer, cuối cùng là Physical layer. TCP nằm ở lớp thứ 3 (Host-to-host
layer), IP nằm ở lớp thứ 2 (Internet layer).
Tên
Application layer
Host-to-host layer
Internet layer
Physical layer

Số thứ tự
4
3
2
1

TCP
IP

Đi từ trên xuống dưới, lớp ứng dụng sẽ xử lý thông tin và ra lệnh gửi/nhận đến lớp
TCP để truyền và nhận dữ liệu.
TCP là viết tắt của Transmission Control Protocol tạm dịch là Cách thức điều
khiển truyền. TCP phụ trách việc truyền và nhận dữ liệu. TCP giúp cho lớp ứng dụng


(Application layer) sử dụng lớp IP (lớp IP là vì lớp Internet chỉ có IP) (Internet Protocol,
tạm dịch Giao thức liên mạng) một cách trong suốt. Điều này có nghĩa là lớp ứng dụng
không cần biết đến phần cứng sẽ làm việc gì, ra sao, mà chỉ cần quan tâm đến việc xử lý
dữ liệu của riêng mình. TCP cũng đảm trách việc nhận đúng dữ liệu và gửi dữ liệu đó đến
đúng chương trình cần nhận. TCP còn có chức năng kiểm tra và sửa lỗi thông qua việc
đồng bộ hoá (synchronize) thông tin 2 đầu truyền dữ liệu và lời nhận biết
(acknowledgement) từ phía nhận dữ liệu.
- Lớp IP đảm trách việc tìm đường tối ưu để gửi dữ liệu qua mạng và đưa dữ liệu
xuống cho lớp vật lý (Physical layer).
- Lớp vật lý chính thức chuyển dữ liệu thành các bit và truyền dữ liệu vào cáp
(cable).


Khi dữ liệu đến thì lớp vật lý nhận dữ liệu, gộp lại thành các bit, byte và chuyển
lại cho lớp IP. Đến lượt lớp IP sau khi đã kiểm tra dữ liệu là thuộc về giao thức TCP sẽ
trả dữ liệu đó cho lớp Host-to-host layer (chính là TCP hay Transport)
2. OSI:
Trước khi mô hình OSI ra đời thì mô hình TCP/IP đã có mặt và phát triển cùng
với Internet . Mô hình TCP/IP mang những đặc điểm giống với OSI . Mô hình OSI ra đời
với mục đích đưa ra một mô hình tổng quát để phát triển và phân tích hệ thống mạng
nhưng việc triển khai lại được thực hiện bằng mô hình TCP/IP . Mô hình OSI sau này
được dùng như là một mô hình tham chiếu ,dùng để giải thích rõ ràng hơn về mô hình
TCP/IP

Việc phân chia quá trình truyền thông thành 7 lớp có những lợi điểm sau :
- Chia nhỏ quá trình truyền thông ra thành các phần nhỏ hơn để dễ quản lí
- Các thành phần mạng được chuẩn hóa để đảm bảo tính tương thích giữa các hãng khác
nhau
- Việc thay đổi của 1 lớp sẽ không ảnh hưởng đến lớp khác .
- Quá trình truyền thông được chia nhỏ và mô tả chi tiết hơn làm cho người học dễ dàng

tiếp thu hơn
1 . Physical layer :Mục đích của physcial layer là tạo ra các tín hiệu điện , các tín hiệu
ánh sáng , sóng radio ,….để biểu diễn các bit nhị phân . Tại lớp physical , người ta định
nghĩa ra chuẩn của các phương tiện truyền dẫn , các đầu connector , các chân cắm , các
cổng giao tiếp trên thiết bị , …..
2 . Datalink layer :Tín hiệu điện được truyền từ máy gửi đến máy nhận . Máy nhận cần
nắm rõ xem tín hiệu điện này có phải là dành cho mình hay không hay là dành cho một
máy khác. Lúc này người ta nghĩ ra rằng phải nhóm các bit nhị phân thành từng nhóm
gọi là frame. Trong mỗi frame sẽ chứa địa chỉ của máy gửi và địa chỉ của máy nhận.


Thông qua địa chỉ trong từng frame, các máy tính sẽ nhận biết được frame này có phải là
của mình hay không và nếu là của mình thì ai đã gửi framenày cho mình . Người ta
thường gọi các địa chỉ dạng này là PHYSICAL ADDRESS .Ví dụ : địa chỉ MAC là 1
dạng physcial address
3 . Network layer :Các máy tính nằm chung trong một khu vực địa lí ( ví dụ : nối chung
vô 1 switch ) sẽ phân biệt vớinhau bằng địa chỉ physical address ( ví dụ : địa chỉ MAC ) .
Ta có thể hình dung địa chỉ physical address như là số nhà vậy , trên cùng 1 con đường
thì 2 ngôi nhà khác nhau sẽ phân biệt với nhau bằng số nhà . SaigonCTT và Viện Mắt
đều nằm trên đường Điện Biên Phủ , địa chỉ của SaigonCTT là ở số 287B , trong khi Việt
Mắt ở số 280 .Ta nhận thấy rằng nếu chỉ dùng số nhà để phân biệt địa chỉ của nhà này với
nhà kia thì sẽ khôngthực hiện được . Ví dụ ở Hà Nội cũng có một ngôi nhà có địa chỉ
là 280 Điện Biên Phủ thì sẽ không phân biệt được với Viện Mắt ở TPHCM . Nếu muốn
phân biệt rõ thì phải có 1 lớp địa chỉ nữa là địa chỉ của Thành phố . 2 địa chỉ : 280 Điện
Biên Phủ TPHCM với 280 Điện Biên Phủ HN là khác nhau .Tương tự như vậy , 2 máy
tính ở 2 khu vực địa lí khác nhau sẽ không sử dụng địa chỉ physicaladdress mà phải có 1
lớp địa chỉ nữa là logical address ( ví dụ : địa chỉ IP ) .Network layer định nghĩa ra địa chỉ
logical address cho các thiết bị mạng . Mỗi vùng mạng khácnhau sẽ có một vùng địa chỉ
logical address khác nhau .Thiết bị hoạt động đặc trưng tại lớp network là router . Khi có
nhu cầu kết nối các vùng mạng lạivới nhau , người ta sẽ dùng router . Các frame từ lớp

datalink đưa lên sẽ được đóng gói thành các packet . Router sẽ làm nhiệm vụ vận chuyển
các packet này từ nguồn tới đích
Ta tưởng tượng packet giống như lá thư và router là người đưa thư . Lá thư có địa chỉ
người gửi và địa chỉ người nhận thì packet cũng có địa chỉ của máy gửi và địa chỉ của
máy nhận . Router sẽ đọc địa chỉ của máy nhận, xác định xem máy nhận đang nằm
ở vùng mạng nào và gửi packet đi đến đúng đích .Ví dụ một số chuẩn packet tại lớp
network : AppleTalk, DECnet, IPX, IP, Vines, and XNS ; trong đó ip là packet phổ biến
và đang sử dụng trong môi trường internet ngày nay .
4. Transport layer :Transport layer cung cấp 2 dịch vụ vận chuyển dữ liệu của người
dùng : reliable và unreliable Reliable : truyền tin cậy , nghĩa là luôn đảm bảo dữ liệu đi
đến đúng đích và không bị hư hỏng .Giả sử trong quá trình truyền data bị mất thì cơ chế
truyền theo kiểu reliable sẽ thực hiện gửi lại data ( giống với dịch vụ gửi thư bảo đảm của
bưu điện )Unreliable : truyền không tin cậy , nghĩa là cố gắng gửi dữ liệu đi đến đích


nhưng quá trình nàykhông được đảm bảo . Dữ liệu có đến được máy nhận hay không thì
không biết
Trước khi chuyển dữ liệu đi , khối dữ liệu lớn sẽ được cắt ra thành các thành phần nhỏ
hơn tạitransport layer , các thành phần này gọi là segment
5 . Session layer :Máy tinh của chúng ta khi truy cập internet sử dụng rất nhiều loại
dịch vụ khác nhau , chúng ta vừa sử dụng yahoo messenger , vừa duyệt web , vừa check
email , ….Lớp session có nhiệm vụphân biệt ra đâu là dữ liệu dành cho ứng dụng yahoo
messenger , đâu là dành cho IE , đâu là dành cho outlook . ….
6 . Presentation layer :Phụ trách định dạng dữ liệu người dụng ở những format khác
nhau . Ví dụ các hình ảnh sẽ đượclớp presentation trình bày dưới dạng JPEG , GIF , .. các
dữ liệu dạng video sẽ được biểu diễndưới dạng AVI , MPEG , WMV , ….
7 . Application layer :Lớp application cung cấp các giao thức để ứng dụng người dùng
truy cập vào hệ thống mạng .Ví dụ trình duyệt web IE sẽ sử dung giao thức HTTP ,
Outlook express sẽ sử dụng giao thứcSMTP để gửi mail , giao thức POP3 để nhận mail
3. So sánh hai mô hình:

Giống nhau:
-

Đều là mô hình phân lớp

-

Lớp Transport và network của mô hình OSI giống với lớp Transport và Internet
của TCP/IP

-

Cả hai đều có lớp application

Khác nhau:
-

Mô hình TCP/IP gộp các lớp application, presentation và senssion trong mô hình
OSI thành lớp application của nó.

-

Mô hình TCP/IP gộp lớp physcial và datalink thành lớp Network Access


II.

Quá trình gửi một Message từ Host A đến Host X

Đầu tiên chương trình ứng dụng trên máy A sẽ tạo ra message để gửi cho máy X với

nội dung như trong hình (được thực hiện ở tầng thứ 1)

Nội dung của message này được chuyển đổi thành dạng bit nhị phân để chuyển lên
các phương tiện truyền dẫn (được thực hiện ở tầng thứ 2)


Card mạng trong máy tính A sẽ thực hiện tạo ra các tín hiệu điện tương ứng với các
bit nhị phân nói trên để truyền lên các thiết bị truyền dẫn (được thực hiện tại tầng 3 )

Các tín hiệu điện này sẽ đi qua nhiều thiết bị mạng khác nhau trước khi đến đích
(được thực hiện tại tầng 4)


Giả sử máy X nằm ở đâu đó ngoài internet , các tín hiệu điện gửi từ máy A tới máy X
sẽ đi qua hàng chục và thậm chí là hàng trăm các thiết bị truyền dẫn khác nhau (được
thực hiện tại tầng 5,6)

Tại nơi nhận : máy X . Ứng dụng trên máy X sẽ làm nhiệm vụ dịch ngược các bit nhị
phân ra message như định dạng ban đầu (được thực hiện tại tầng 7)


Ngoài ra máy A muốn liên lạc với máy X, phải biết IP address của nó (hoặc
hostname/domainname). Máy A dò trong ARP cache (giao thức này nằm ở tầng thứ 3) để
tìm địa chỉ MAC đích có chưa, nếu chưa sẽ dùng ARP gửi thông điệp (broadcast) đến
toàn mạng.
1. Giới thiệu ARP và MAC:
Mỗi thiết bị trong hệ thống mạng của chúng ta có ít nhất hai địa chỉ. Một địa chỉ là
Media Access Control ( MAC ) và một địa chỉ Internet Protocol ( IP ).
- Địa chỉ MAC : là địa chỉ của card mạng gắn vào bên trong thiết bị, nó là duy
nhất và không hề thay đổi. Địa chỉ IP có thể thay đổi theo người sử dụng tùy vào môi

trường mạng.
- ARP(Address Resolution Protocol) : là một trong những giao thức của IP, chức
năng của nó dùng để định vị một host trong một segment mạng bằng cách phân giải địa
chỉ IP ra địa chỉ MAC. ARP thực hiện điều đó thông qua một tiến trình broadcast gói tin
đến tất cả các host trong mạng, gói tin đó chứa địa chỉ IP của host cần giao tiếp. Các host
trong mạng đều nhận được gói tin đó và chỉ duy nhất host nào có địa chỉ IP trùng với địa
chỉ IP trong gói tin mới trả lời lại, còn lại sẽ tự động drop gói tin.
ARP (giao thức này nằm ở tầng thứ 3) : là một giao thức hết sức đơn giản, nó đơn thuần
có 4 loại message cơ bản sau:
* An ARP Request: máy tính A sẽ hỏi toàn mạng : " ai có địa chỉ IP này? "
* An ARP Reply: máy tính B trả lời máy tính A : "tôi có IP đó, địa chỉ MAC của tôi là..."
* An Reverse ARP Request: máy tính A sẽ hỏi toàn mạng : " ai có địa chỉ MAC này? "


* An Reverse ARP Reply: máy tính B trả lời máy tính A: " tôi có MAC đó, địa chỉ IP của
tôi là..."
2. Các trường hợp xảy ra:
1/ Host X cùng segment với nó :
Host A gửi thông điệp với địa chỉ IP đích (đã biết) và MAC đích là FF-FF-FF-FFFF-FF để hỏi xem MAC của địa chỉ này là gì.Các host trên segment đều nhận và xử lý
gói này, host nào có địa chỉ IP trùng với yêu cầu sẽ gửi lại thông tin cho host A là "IP này
có MAC là : ......".Host A nhập thông tin vào ARP cache (RAM).Khi muốn liên lạc với X
thì lại tra trong ARP cache để biết địa chỉ MAC cần đến.
ARP là gì?
Trong protocol TCP/IP có ARP protocol. ARP tự động cập nhật các MAC tương
ứng với các IP và xây dựng một bảng ARP table trong máy tính trong cùng mạng subnet.
Khi này, nếu A và X ở trong cùng LAN, thì khi A muốn gửi packet cho X, nó sẽ match
IP của X với MAC tương ứng trong bang ARP của nó. Nếu A biết IP của X , nhưng
không match được MAC tương ứng trong bảng ARP của nó , thì khi này nó sẽ gứi một
packet , gọi là ARP request, với địa chỉ MAC broadcast FFFFFFFFFF . Khi này tất cả
máy tính trên cùng một mạng sẽ nhận được gói này và chuyển lên lớp Network; nhưng

chỉ có máy có IP match với IP destination address trong ARP request mới gửi trả lại gói
tin có chứa địa chỉ MAC tương ứng mà máy A muốn tìm . Gói tin này là ARP reply. Nếu
Host X available trên Segment thì nó sẽ biết là gói tin này gửi cho nó nhờ vào địa chỉ IP
mà Host A ghi trong gói tin ARP request và nó sẽ trả lời bằng 1 gói tin ARP reply. Gói
tin ARP reply sẽ có MAC nguồn là MAC của Host X, MAC đích là MAC của Host A,
khi Host A nhận được gói tin này tự nhiên sẽ biết được MAC của X. Sau khi A nhận
được ARP reply , nó sẽ mở gói và update bảng ARP table của nó: IP và MAC của máy
X.
2/ Host X không cùng segment với host A :
Lúc đó phải nhờ đến router để forward yêu cầu này đến các segment khác. Trong
trường hợp này, router sẽ gửi địa chỉ MAC của interface mà nhận gói ARP request trên
Router cho máy gửi (máy A ).


Nói một cách khác để liên lạc với một máy tính khác không cùng nằm trên 1
segment ta phải sử dụng đến "default gateway". Default Gateway là một phần của một
host (máy tính). Nó là một địa chỉ IP của một interface trên router, và được cấu hình cho
host. Địa chỉ IP của host và của Default Gateway phải cùng segment mạng. Khi này, máy
gửi (A) sẽ kiểm tra xem nó và máy nhận (X) có cùng nằm trên một subnet hay không.
Nếu không, nó sẽ đóng gói packet gửi với IP destination address là của máy nhận và
MAC address destinaiton là của Router nối với subnet của nó. Nếu Proxy ARP hay
default gateway không được cấu hình, thì không có "traffic" nào có thê rời khỏi một
subnet (một mạng cục bộ). Phải có một trong hai cái được cấu hình ( hay cho phép) để có
thể giao tiếp với các segment mạng khác được. "IP source và dest không bao giờ thay
đổi, chỉ có MAC source và dest là thay đổi thôi".
Proxy ARP: Theo cách thức hoạt động của proxy ARP, ta có thể thấy rằng client
khi muốn biết MAC của một host nào đó, nó chỉ đơn giản là broadcast ARP-Request lên
mạng. Router sẽ có trách nhiệm đáp trả lại bằng ARP-Reply nếu nó nhận thấy IPdestination là thuộc mạng khác. Như vậy, cấu hình IP cho client cực kỳ đơn giản, nhưng
gánh nặng lại đè lên router. Thử tưởng tượng cứ sau 1 phút, ARP-entry bị hủy bỏ, thế là
các client thi nhau broadcast lên mạng thì router "tiêu" như chơi. Ngoài ra, proxy ARP

còn gặp một bất lợi nếu trong segment có tới hơn 1 router. Chọn router nào, nếu như các
router đều có route đến mạng đích?
Default-Gateway: Nếu client biết rằng IP-dest không thuộc mạng của nó, nó dùng
MAC của default-gateway để gửi gói tin, router default-gateway nhận lấy gói tin sẽ biết
phải xử lý tiếp theo như thế nào (dựa trên IP source/destination). Cách này giảm tải cho
router, giải quyết được trường hợp có nhiều router nối vào cùng segment, và đỡ gây
nhầm lẫn. Nếu Host A có cấu hình sử dụng Defaul gateway trong TCP/IP protocol thì gói
tin ARP request sẽ không phải dạng Broadcast mà được gửi thẳng đến cho Router
( TCP/IP stack quy định như vậy). Tất nhiên để gửi được gói tin này đến cho Router thì
nó cũng phải request MAC của defaul gateway trên Router trước, sau đó khi có MAC của
default gateway thì Host A sẽ tạo 1 gói tin ARP request MAC của Host X với IP đích là
IP Host X, MAC đích là MAC của default gateway. Khi Router gateway nhận được gói
tin này thì nó sẽ Forward qua interface trên segment thích hợp, tại đây phần Datalink
header sẽ được lấy ra (Pull out) và phần Datalink header mới sẽ được gắn vào với mục
đích để truyền trên Segment của Host B. Khi Host B nhận được gói tin ARP request thì


cũng sẽ trả lời lại bằng gói tin ARP reply được gửi đến DefautGateway trên Segment của
nó. Khi Router nhận được gói tin này cũng làm việc tương tự như khi gửi đi từ Host A
(pull out Datalink header, gắn datalink header mới v.v....) Nếu Host A không có cấu hình
default gateway (tất nhiên sẽ broadcast gói tin ARP request) nhưng nếu Router trên
Segment của host A có chức năng ARP Proxy thì căn cứ trên IP mà gói tin ARP request
yêu cầu ROUTER sẽ so sánh với Routing Table của nó và nhận gói tin này nếu Match
trong Routing table, sau đó sẽ forward qua Segment thích hợp. Quá trình tiếp theo tương
tự như trường hợp A. Như vậy : nếu 1 trong 2 default gateway của 2 segment cấu hình sai
thì sẽ dẫn đến việc Host A không thể liên lạc được với Host X và ngược lại. Ngoài ra nếu
thời gian tồn tại của ARP cache trong memory quá lâu công với việc có thay đổi MAC
của DF gateway sẽ dẫn đến việc tạm thời không thể thực hiện ARP request.
Ví dụ minh họa cho các lý thuyết nêu trên (xin lưu ý các IP cùa source và destination là
không thay đổi chỉ có mac là thay đổi thôi). Ta xem một ví dụ sau để đễ hiểu hơn

Máy A-------Router1--------Router2--------Router3------Máy X
Đầu tiên máy A đóng gói gói tin như sau
IP nguồn là IP của máy A. IP đích là IP của máy X xuống đến tầng datalink máy
A sẽ xem máy X có trong cùng subnet với mình không, trong truờng hợp này là không.
Lúc này máy A sẽ dùng :
MAC nguồn là của máy A. MAC đích là MAC của interface trên router1 nối với
subnet A.
Router1 sẽ xem IP đích có nằm trong subnet của mình hay không trong truờng hợp
này là không, lúc này router sẽ đóng gói địa chỉ MAC nguồn là MAC cùa interface mà
router này nối với router2, MAC đích sẻ là MAC trên interface của router2, router2 cũng
xử lý giống router 1 và chuyển đến router3. Router3 sẽ xem IP này có nằm trong subnet
của mình không, nếu có thì nó sẽ xem xét địa chỉ MAC tương ứng với IP này (router3
biết được vì nó tra trong bảng ARP của nó có chứa máy X vì X cùng subnet) ứng với IP
này router3 xác định đưọc MAC là máy X, tuy vậy nó vẫn gửi Brodcast đến tất cả các
máy trong subnet có máy X nhưng chỉ máy X nhận gói tin vì nó có MAC trùng với MAC
đích trong gói tin.
Máy A sẽ gửi 1 gói tin gọi là ARP request (ARP = Address Resolution Protocol)
bằng cơ chế broadcast để tất cả các máy đều có thể nhận được gói tin này




×