MẠNG MÁY TÍNH

1 Mạng máy tính là gì ?
tập các thiết bị kết nối máy tính lại với nhau qua đường truyền để có thể trao đổi thông tin 
2  (topology) Các thiết bị đk kết nối với nhau như thế nào?
+ Mesh : tất cả đều nối vs nhau

+ Star  : tất cả dk nối vào 1 cục(Hub)

+ Bus : tất cả dk nối vào 1 dây Cab thẳng

+ Ring: ...........................1 ..............vòng kín
+ Thực tế thường kết hợp các cấu trúc : ví dụ:

3 Giao thức
Là tập các quy tắc đk dùng để điều khiển quá trình truyền tin trên mạng
4 Phân Loại
tùy mục đích:
theo quy mô: Lan và Wan
theo kết nối: không dây và có dây



        Mô Hinh OSI
7 tầng: 
+ Vật Lý: chuyển dữ liệu thành tín hiệu rồi chuyền đi
-> tác vụ: Data Conversion(chuyển dl thành tín hiệu)

+ Liên kết dữ liệu: chuyền các khung dữ liệu từ node này đến node khác
->tác vụ: đánh đc vật lý, đóng khung, điều khiển lỗi, luồng,Mult Access Control( kiểm soát đa truy cập:  thiêt bị nào đk truyền tin)

+ Mạng: chuyền các gói dữ liệu từ thiết bị này đến thiết bị khác
->tác vụ: đánh đc logic , chọn đường

+ Vận Chuyển: truyền các thông điệp từ tiến trình này đến tiến trình khác
=>tác vụ: đánh đc dịch vụ, điều khiển lỗi,luồng, chia - hợp gói tin, điều khiển tắc nghẽn.

+ Phiên: điều khiển hội thoại và đồng bộ hóa
=>tác vụ: đồng bộ hóa

+ Trình Diễn: nén , giải mã dữ liệu
->tác vụ: mật mã- giải mật mã,nén dữ liệu, chuyển đổi dữ liệu

+ Ứng Dụng: Cung cấp dịch vụ người dùng.
xác định giao diện giữa người sử dụng và môi trường

=> quá trình truyền tin:
=> thêm header:

         
           MÔ HÌNH TCP/IP

+ gôp 3 tầng : Phiên, Trinh diễn, Ứng dụng lại thành 1 tầng: Ứng Dụng


          Địa chỉ IP

+ số 32 bít , duy nhất trên toàn cầu,để nhận diện và liên lạc trên mạng
+ 5 lớp A,B,C,D,E . phân biệt byte đầu: 0- >(2^7-1)............
+ Địa chỉ không hợp lệ:
địa chỉ thuộc lớp D,E ,
địa chỉ đầu, cuối của khối
địa chỉ loopBack 127.0.0.1,,,, 
địa chỉ đk bắt đầu bằng không vd: 0,....,....,....

vd1: tìm lớp cho các địa chỉ:
a, 00000011  01011010  10100010 10001101
b, 10001001  ..................................................
c, 193.5.6.3
d, 225.4.8.9
e, 253.6.8.23
giải:
byte đầu:    a= 3    b=128+8+1      c= 193        d=225           e=253 
lớp              A         B                      C                   D                 E

            Giao Thức IPV4

+ là giao thức hướng dữ liệu tức chỉ đảm bảo dữ liệu dk gửi tất cả đi,ko tin cậy không kết nối

+ trong giao thức này khối địa chỉ được định nghĩa : x.y.z.t/n
      trong đó:  x.y.z.t   định nghĩa địa chỉ                 /n định nghĩa mặt nạ
=> nghĩa là dùng n bít đầu ( từ trái=>phải) :  số khối
     dùng (32-n) bít tiếp theo  : số địa chỉ ở trong khối đó
+ tim địa chỉ đầu của khối =  chuyển 32-n bít tính từ phải=> trái cho =0
+ ................. cuối....................................................................................1
+ số địa chỉ của khối= 2^(32-n)


ví dụ:
địa chỉ IPV4:  205.16.34.30/28                (x.y.z.t/n)
+tìm địa chỉ đầu của khối,cuối của khối, số địa chỉ trong khối?
Cách 1 : chuyển địa chỉ sang dạng nhị phân rồi làm theo định nghĩa
Cách 2: tự phịa
n= 28=> 32-n= 4
t=30= 0001 1110     
+ địa chỉ đầu: chuyển 4 bít cuối= 0....=> t=16
=> địa chỉ đầu: 205.16.34.16/28
+ địa chỉ cuối ..............................1  ..........t= 31
.........................205.16.34.31/28
+ số địa chỉ= 2^4= 16


Ví Dụ 2:
khối địa chỉ bắt đâu:   190.100.0.0/16     hãy cấp pháp địa chỉ cho 3 nhom :
a, 64 khách , mỗi khách cần 256 địa chỉ
b, 128 khách, mỗi khách cần 128 địa chỉ
c, 128 khách, mối khách cần 64 địa chỉ
Còn bao nhiêu định chỉ có sẵn sau khi đã cấp phát hêt?

a,
256= 2^8  => 32-n= 8    => n= 24
khách 1: 190.100.0.0/24 =>  190.100.0.255/24
...........2: 190.100.1.0/24=> ................1.255/24
..................................................................
khách 64: 190.100.63.0/24=> 190.100.0.255/24

b,
128= 2^7 => 32-n= 7  => n=25
khách1: 190.100.64.0/25 => 190.100.64.127/25
.........2: 190.100.64.128/25 => 190.100.64.255/25
.........................................................................
khách 128: 190.100.127.128/25=> 190.100.127.255/25

c,
64= 2^6 => 32-n=6  => n=26
khách1: 190.100.128.0/26=> 190.100.128.63/26
.........................................................................
khách 128: 190.100.159.192/26=> 190.100.159.255/26

tổng số địa chỉ đầu tiên (khi chưa cấp)= 2^(32-16)
số địa chỉ đã cấp= 64x256+ 128x128+ 128x64=40960
=> số địa chỉ còn lại( có sãn)= 2^(32-16) - 40960= 24576



Thông tin quan trọng:
VER : phiên bản gói tin mặc định 4
Service: dịch vụ mong muốn khi truyền qua router
Chiều dài header= HLEN x 4;   phải nằm trong 20-60byte nếu không bị lỗi
nếu >20byte -> chứa option
Total Lenght= Chiều dài header+ dung lượng Data (đv byte)
Identification: định danh (nếu các gói tin bị phân mảnh còn có cái để gom lại)
time to live: thời gian gói tin tồn tại(tính bằng hop(bước nhảy))
protocol: giao thức ở tầng trên (vd: 2 là ICMP)

Ví DỤ:
1, gói IPV4 đk gửi với 8 bit đầu: 0100 0010  => bên nhận có nhận dk gói tin không ? vì sao
ta có: HLEN= 0010= 2 => HeaderLengh= 2*4= 8<20=>  gói tin bị lỗi

2, trong IPV4   số bit HLEN= 1000  .  có bn byte trong phần option đk mang theo
ta có: HLEN= 2^3= 8   => HeaderLengh= 8*4=32> 20 => có option
=> số byte option= 32-20=12 bytes

3, trong IPV4  giá trị HLEN= 5,,,,, totalLengh= 0x0028....có bn byte dữ liệu trong gói tin
ta có  :
totalLengh = 0x0028      0x là biểu hiện đây là số hệ 16
=> totalLengh= 2*16+8= 40 bytes
HeaderLengh= Hlen*4= 20 bytes
=> Data= 40-20=20 bytes

4, gói IPV4:    0x 4500 0028 0001 0000 0102............
Cần bao nhiêu bước (hops) di chuyển trước khi gói tin bị mất,,,  giao thức tầng trên là gi
ta có:
giá trị time to live= 01( 8 bit) = 1 .... vậy cần 1 hop trước khi gói tin bị mất
gia trị protocol= 02= 2    => soi bảng => giao thức ICMP


Flag :  bit D=1-> không phân mảnh..  bit M=1-> có thêm fragments

Flagmentation offset: vi trí phân mảnh


Offset= byte đầu của fragment / 8;

Ví Dụ: 
1, gói tin chuyển đến vói bit M=0, hỏi đây là đoạn thứ đầu, giữa hay cuối.... hỏi gói tin có bị phân mảnh không?

M=0 tức không có them fragment vậy đây là mảnh duy nhất
vì không biét D= bao nhiêu nên không biết gói có bị phân mảnh không

2, như ví dụ 1 thay M=1
M=1 có  nhiều hơn 1 fragment,, ( tất nhiên nó bị phân mảnh) có thể là first Fragment hoặc middle Fragment
cần  thêm thông tin từ fragmentation offset

3, giá trị của bit M=1   và fragmentation offset=0
=> bị phân mảnh và là first fragment

4, gói tin đk chuyển đến với gia trị offset= 100
tìm byte đầu của fragment? ta có biết byte cuối không

ta có:
offset= byte đầu/8
=> byte đầu= offset*8= 800
không có dữ liệu để biết byte cuối

5,  gói tin:   giá trị offset= 100, HLEN= 5, totalLengh= 100
tìm byte đầu và byte cuối

ta có HeaderLengh= 5*4=20 bytes
=> Data= 100-20= 80 bytes

byte đầu= 100*8= 800 => byte cuối = 879 ( tổng có 80 bytes)

XONG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


                       UDP
+ giao thức hướng không kết nối , không đảm bảo an toàn, không chắc chắn
ưu điểm : truyền đi nhanh chóng
ưng dụng:  video call,....
+

Checksum: nguyên lý hoạt động /// ( không quan trọng lắm)=> mới thêm vào


+ đặt checksum=0
+ LƯU Ý PHần lấy từ tâng mạng ////////
+ cộng hết tất cả các dữ liệu lại ( dạng nhị phân số 16 bít)
+ đảo bít tổng đó và ghi vào checksum
+ khi đến đích => tính tổng dữ liệu:   tất cả các bít bằng 1-> không bị lỗi

Ví dụ  UDP header( hệ 16) : 0532 0017 5002 07FF
a, tìm số hiệu cổng nguồn, đích
b, kích thước UDP datagram( cả gói UDP), phần dữ liệu
c, xác định hướng truyền ( client => server hay ngược lại)
d, xác định process
Giải
a, 16 bit nguồn: 0532 => hệ 10: = 1330
đích: 0017=> hệ 10:= 23

LƯU Ý:  phân loại cổng

b, datagram = gia trị totalLengh= 5002(hệ 16) =20482 bytes
=> data = totalLengh- UDP header= 20482- 8= 20474 bytes

c, mặc định cổng nào có số hiệu <=1023   => đó là cổng Server và
cổng còn lại phải >1023 nếu không không làm dk

ta có cổng đích = 23 -=> server ở đích=> hướng từ client tới server
d, cổng đích = 23=> process= telnet ( tra bang )


                                      TCP

+ giao thức hướng kết nối,  tức đảm bảo kết nối trước khi truyền, đảm bảo an toàn, tin cậy, ..
nhược điểm: thời gian chậm
ứng dụng : cần độ tin cậy cao: messenger,..
+
Source port address: địa chỉ cổng (để tới ứng dụng) mà gói tin trui ra
Destination port address: địa chỉ công........................                cần tới
Sequence number: số hiệu byte đầu secment gửi đi
Acknowledgment.......: sô..................      cần nhận
Chiều dài header= HLEN x4
Reserved: để trống không dùng.............. 6 cờ chỉ loại gói tin chuyển đi
dãy bit nhị phân ứng với 1 là loại đó( tý có ví dụ) ... ý nghĩa :
URG: bật trường Urgent pointer
ACK: ...............AcKnowledgment
PSH: Hàm push( để đẩy dữ liệu đi)
RST: thiết lập lại đường truyền
SYN: đồng bộ lại số thứ tự( sequence number)
FIN: hủy kết nối

Window size: kích thước cửa sổ truyền tin( số bytes có thể nhận bắt đầu từ ACK)
Checksum: kiểm tra lỗi, cách thức hoạt động giống phia trên (UDP)
Urgent pointer: nếu URG bật: = số thứ tự gói tin(sequence number) dịch trái 16 bít ( để làm gì không biết)

Ví dụ :
gói tin TCP:   E293 0017 0000 0001 0000 0000 5002 07FF
a, Xác định số hiệu cổng nguồn, đích
b, xd số hiệu gói tin(sequence number)
c, xd ACK number
d, xđ độ dài header
e, xd loại segment( dựa vào cờ)
f, kích thước cửa sổ( window size)

Giải
a,16 bit đâu: cổng nguồn: E292=> hệ 10: = 58003
.....................................  0017=> hệ 10: = 23
b, 32 bit tiếp : sequence number= 0000 0001=> hệ 10:= 1
c, 32 bit tiếp : ack..............= 0000 0000 .............0
d, 4 bit tiếp HLEN=5 => HeaderLengh= 5*4=20 bytes
e, 12 bit tiếp: 002=> nhị phân: 0000 0000 0010
6 bít tiếp : phần bỏ trống không xet
6 bít tiếp dành cho cờ:  vậy cờ 1 đang bật ở SYN => loại segment là SYN
f, 16 bít tiếp  WindowSize = 07FF hệ 16


Quá Trình Bắt Tay 3 Bước mở kết nối


Bước 1: Client gửi SYN chỉ ra giá trị khởi tạo Seq của Client, không có dữ liệu
Bước 2 : Server nhận SYN trả lời SYN+ ACK
Server khởi tạo vùng đệm(để nhận dữ liệu) , chỉ ra giá trị khởi tạo
Bước 3: Client nhận SYN+ ACK , trả lời ACK và có thể kèm theo dữ liệu

Gửi DỮ LIỆU

Đóng kết nối



Bước 1: Client gửi FIN(chuẩn bị đóng)
Bước 2: SerVer nhận  FIN trả lời FIN+ ACK ,, đóng liên kết(chuẩn bị đóng)
Bước 3: Client nhận FIN+ACK  trả lời ACK,, bước vào timeout, hết timeout đóng liên kết hoàn tất.
Bước 4: Server nhận FIN đóng liên kết hoàn thành;


ĐIỀU KHIỂN LUỒNG
               
window size= min(RWND,CWND) 
RWND : cửa sổ nhận 
CWND : cửa sổ kiểm soát tắc nghẽn
ví dụ: như giao thông tới trường: RWND là kích thước cổng trường( đv: người),,, CWND kích thước của đường( đơn vị người)



Mô phỏng quá trình truyền


=> quá trình gửi  là quá trình liên tục
+ Khi client gửi Sep là nó bắt đầu tình thời gian: TIme out 
+ Nếu trong khoảng thời gian này mà Chưa nhận dk ACK tiếp theo thì nó gửi lại
BÊN nhận
+ có cơ chế tự động sắp xếp các gói tin tới 1 cách liên tục, vì vậy khi hỏng sep 701-800, nó vẫn nhận các gói phía sau nhưng ACK 701


=> cụ thể hơn ở hình dưới:


Ví DỤ

1, tìm RWND cho máy chủ A, biết tại máy chủ B(bên nhận) có kích thước bộ đệm= 5000 bytes,      1000 bytes đã nhận và chưa đk xử lý

máy B chỉ có thể xử lý đk 5000 bytes, trong bộ đệm mà nó vẫn còn 1000 bytes   => chỉ có thể xử lý đk tối đa 4000 bytes nữa => RWND= 4000 bytes

2, tìm Windowsize biết rwnd=3000, cwnd= 3500
3, quá trình gửi qua cửa sổ window size

window size chứa những bit đã gửi nhưng chưa đk xác nhận( 200,201,202)
và những bit xếp vào loại chuẩn bị gửi ngay(203-> 208) 
những bit về sau không đk gửi cho tới khi cửa sổ mở dư ra


ROUTER, HUB, SWITCH

Router thiêt bị hỗ trợ chọn đường trong quá trình truyền tin trên mạng
Hub: sử dụng trong  topology star  liên kêt các máy tính lại với nhau
Switch : tương tự như Hub nhưng có 1 số điểm khác:
    

Nhận xét

Bài đăng phổ biến từ blog này

Phân tích thiết kế giải thuật