Network ACK là gì

Tầng Transport của TCP/IP: Cung cấp 2 giao thức cơ bản là TCP, UDP được sử dụng trong hầu hết trong các ứng dụng về mạng.

1. TCP (Transmission Control Protocol)

– Là giao thức hướng kết nối (connection-oriented) nghĩa là khi muốn truyền dữ liệu thì phải thiết lập kết nối trước. – Hỗ trợ cơ chế full-duplex ( truyền và nhận dữ liệu cùng một lúc) –  Cung cấp cơ chế đánh số gói tin (sequencing): để ráp các gói tin cho đúng ở điểm nhận –  Cung cấp cơ chế báo nhận (Acknowledgement) :Khi A gửi dữ liệu cho B, B nhận được thì gửi gói tin cho A xác nhận là đã nhận. Nếu không nhận được tin xác nhận thì A sẽ gửi cho đến khi B báo nhận thì thôi.

–  Phục hồi dữ liệu bị mất trên đường truyền ( A gửi B mà không thấy xác nhận sẽ gửi lại) .

TCP Header: Do là giao thức tin cậy nên header của TCP rất phức tạp

  • 32 bit sequence number: dùng để đánh số thứ tự gói tin (từ số sequence nó sẽ tính ra được số byte đã được truyền).
  • 32 bit acknowledgement number: dùng để báo nó đã nhận được gói tin nào và nó mong nhận được byte mang số thứ tự nào tiếp theo.
  • 4 bit header length: cho biết toàn bộ header dài bao nhiêu Word (1 Word = 4 byte).
  • Phần kí tự (trước 16 bit Window Size): là các bit dùng để điều khiển cờ (flag) ACK, cờ Sequence v.v.
  • 16 bit urgent pointer: được sử dụng trong trường hợp cần ưu tiên dữ liệu ( kết hợp với bit điều khiển u r g ở trên).

Các trường ở trên là cố định, TCP dành cho chúng ta trường Option để lập trình thêm các tính năng cho TCP nếu có nhu cầu.

Các ứng dụng sử dụng giao thức TCP: HTTP, DNS, SMTP, telnet, SNMP v.v.

2. UDP (User Datagram Protocol)

–  Là loại giao thức connectionless (nghĩa là có gói tin nào là đẩy ngay vào đường truyền mà không cần thiết lập các kết nối trước).
– Không đảm bảo tính tin cậy khi truyền dữ liệu và không có cơ chế phục hồi dữ liệu ( nó không quan tâm gói tin có đến đích hay không, không biết gói tin có bị mất mát trên đường đi hay không).

UDP được sử dụng khi tốc độ là mong muốn và sửa lỗi là không cần thiết. Ví dụ, UDP thường được sử dụng cho chương trình phát sóng trực tiếp và trò chơi trực tuyến.

Ví dụ, giả sử bạn đang xem hình ảnh video trực tiếp. Live Stream phát sóng thường sử dụng UDP thay vì TCP. Các máy chủ chỉ cần gửi một dòng của các gói tin UDP để máy tính xem. Nếu bạn bị mất kết nối trong vài giây, video sẽ đóng băng cho một thời điểm và sau đó chuyển đến các bit hiện tại của truyền hình, bỏ qua các bit bạn đã bị bỏ qua. Video hoặc âm thanh có thể bị bóp méo một lúc và video tiếp tục chơi mà không có dữ liệu bị mất.

UDP Header

Như đã đề cập, trước khi dữ liệu xuống tầng Internet thì nó sẽ được đóng 1 Transport Header (TCP Header hoặc UDP Header).

Ta cùng phân tích UDP Header.

UDP Header rất đơn giản (phần màu vàng)

Gồm 16 bit source port, 16 bit des port. Vậy port là gì ?

Có rất nhiều session sử dụng kết nối UDP vậy làm thế nào để định danh chúng ? thì tầng Transport  dùng 1 cặp source port và destination port để định danh 1 session đang truy nhập vào đường truyền của kết nối UDP. Ta có thể coi port là địa chỉ tầng Transport ( giao thức DNS chạy UDP port 53, TFTP port 69 v.v)

16 bit UDP Length: cho biết toàn bộ gói tin UDP dài tổng cộng bao nhiêu byte. Ta thấy 16 bit thì sẽ có tổng cộng 2^16 byte = 65536 giá trị (từ 0 -> 65535 byte).

16 bit UDP checksum: sử dụng thuật toán mã vòng CRC để kiểm lỗi. Và chỉ kiểm tra một cách hạn chế.

Các ứng dụng sử dụng UDP là: voip, video conference, DNS, TFTP v.v.

3. Tiến trình bắt tay 3 bước (Three-way handshake)

Gải thích ví dụ trên:

Bước 1:

Host A gửi cho B một gói tin có cờ SYN được bật lên, với số thứ tự được đánh là 100

Bước 2:

Host B nhận được gói tin thì B gửi lại gói tin có cờ SYN được bật lên, kèm theo đó là cờ ACK (để xác nhận).

ACK=101 nghĩa là ” này A, tôi đã nhận được gói tin có SEQ = 100, tôi mong muốn nhận thêm gói tin có SEQ= 101). Khi gửi gói tin đi thì nó đánh số thứ tự SEQ= 300

Bước 3:

Sau khi kết nối đã được thiết lập thì A gởi tin để đáp ứng nhu cầu của B.

Gói tin được đánh số SEQ = 101: để đáp ứng nhu cầu của B

ACK =301 dùng để báo là đã nhận được gói tin có SEQ = 300.

Và chỉ có cờ ACK được bật lên bởi gói tin bước 3 được dùng để báo nhận cho gói tin bước 2.

Cơ chế điều khiển luồng trong TCP (Flow Control)

Giả sử: Sender gửi quá nhiều dữ liệu cho Receiver, thì Receive sẽ chuyển vào bộ đệm để chờ xử lý, đến lúc bộ đệm đầy thì B gởi tín hiệu cho A để không truyền nữa cho đến khi B xử lý hết thì sẽ gởi lại gói tin cho A để tiếp tục nhận dữ liệu.

Fixed Windowing

Thay vì gửi từng byte rồi đợi ACK thì Sender sẽ gửi nhiều byte cùng lúc. ( Window Size bằng bao nhiêu sẽ gửi bấy nhiêu)

Receiver sau khi nhận được byte thứ 3 sẽ ACK=4 để xác nhận và yêu cầu byte thứ 4.

ở cơ chế Fixed Windowing thì Window Size cố định, nhưng có trường hợp ta không giữ cửa sổ cố định được.

TCP Sliding Windowing (Window Size có thể thay đổi)

Window Size = 3 nên Sender sẽ gửi lần lượt 3 byte nhưng Receiver chỉ nhận được 2 byte ( do nghẽn mạng, do xử lý không nổi) thì Receiver sẽ ACK=3 để yêu cầu Sender gửi lại byte thứ 3  đồng thời nó cũng báo là hãy sử dụng Window Size =2(vì nó chỉ chịu nổi Size =2). Sender sau đó sẽ set Window Size=2.

4. Truyền dữ liệu half-duplex và full-duplex

Trên một môi trường truyền dẫn (ví dụ trên một sợi cáp đồng) thông tin lan truyền giữa các thiết bị mạng có thể được thực hiện theo nhiều dạng thức khác nhau như: Chỉ cho phép truyền một chiều (quá trình t1) từ thiết bị mạng này tới thiết bị mạng khác trong một đơn vị thời gian, quá trình t2 chỉ được thực hiện khi t1 kết thúc. Dạng thức này được gọi là bán song công (half-full duplex gọi tắt là halfduplex). Trong trường hợp môi trường truyền và các thiết bị mạng có thể hoạt động song song cùng lúc để quá trình t1 và t2 xảy ra đồng thời ta có dạng thức truyền toàn song công ( full duplex).

+ Truyền bán song công (half duplex): giữa hai đường truyền dữ liệu và luồng tin, chỉ truyền theo một hướng tại một thời điểm khi một thiết bị hoàn thành việc truyền dẫn, nó phải chuyển môi trường truyền đến thiết bị khác. Một thiết bị có thể đóng vai trò Thu và Phát tín hiệu nhưng tại một thời điểm nó chỉ có thể thực hiện một vai trò duy nhất. Ví dụ hoạt động của bộ tọa đàm điện thoại, mạng LAN có sử dụng các thiết bị trung tâm là thiết bị lớp 1 thì luôn sử dụng không thể sử dụng dạng thức fullduplex.

+ Truyền toàn song công ( full duplex): cho phép dữ liệu truyền đồng thời trên cả hai đường, mỗi thiết kế có một kênh riêng. Một thiết bị có thể đồng thời vừa Phát lại vừa Thu tín hiệu. Các modem máy tính đều hoạt động theo phương thức này, mạng LAN sử dụng toàn thiết bị tập trung lớp 2 hoặc 2 máy tính kết nối trực tiếp với nhau có thể sử dụng dạng thức fullduplex.

+ Bên cạnh đó còn có thể áp dụng dạng thức truyền đơn công (simple mode): Thông tin chỉ truyền theo một chiều qui định trước, một thiết bị chỉ đóng một vai trò Thu hoặc Phát cố định. Hệ thống báo cháy sử dụng phương thức này.

Như vậy là các bạn đã tìm hiểu xong phần CCNA số 4 : TCP và UDP rồi nhé.

Ở lớp Transport có 2 giao thức quan trọng là UDP và TCP.

- TCP là giao thức thuộc dạng connection-oriented (hướng kết nối). Có nghĩa là nó thiết lập kênh kết nối trước khi truyển data đi.

- UDP là giao thức thuộc dạng connectionless (nghĩa là không hướng kết nối). Nó không cần thiết lập kênh truyền trước khi truyền dữ liệu đi.

TCP thiết lập kết nối bằng 3 bước bắt tay (3-way handshake)

sender ___________ receiverSYN seq=X ----------> SYN received (step 1)

SYN received <--------send ACK X+1 and SYN Y (step 2)

Send ACK Y+1 --------> (step 3)

Có lẽ kiến thức về TCP/IP là những gì bạn cần phải tìm hiểu đầu tiên trên con đường trở thành Network Administrator hay Security Advisor. Kiến thức liên quan đến bộ giao thức này có rất nhiều, bạn nên dành thời gian để tìm hiểu thật kỹ về nó. Trong bài này chúng ta sẽ đề cập đến vấn đề 3 bước bắt tay tạo kết nối trong TCP.Một gói dữ liệu TCP chứa các bit cờ (flag bits) để mô tả nội dung và mục đích của gói dữ liệu.Ví dụ:* Gói dữ liệu với cờ SYN (synchronization <=> Sự đồng bộ) dùng để bắt đầu một connection.* ACK (acknowledgement <=> Xác nhận).* FIN (finish <=> hoàn thành) dùng để ngắt một connection.* ...Bây giờ chúng ta sẽ tìm hiểu kỹ hơn một phiên (session) làm việc được bắt đầu như thế nào:1. SYN: các chương trình máy con (ví dụ yêu cầu từ browser, ftp client) bắt đầu connection với máy chủ bằng cách gửi một packet với cờ "SYN" đến máy chủ.SYN packet này thường được gửi từ các cổng cao (1024 - 65535) của máy con đến những cổng trong vùng thấp (1 - 1023) của máy chủ. Chương trình trên máy con sẽ hỏi hệ điều hành cung cấp cho một cổng để mở connection với máy chủ. Những cổng trong vùng này được gọi là "cổng máy con" (client port range). Tương tự như vậy, máy chủ sẽ hỏi HĐH để nhận được quyền chờ tín hiệu trong máy chủ, vùng cổng 1 - 1023. Vùng cổng này được gọi là "vùng cổng dịch vụ" (service port).Ví dụ (mặc định):- Web Server sẽ luôn chờ tín hiệu ở cổng 80 và Web browser sẽ connect vào cổng 80 của máy chủ.- FTP Server sẽ lắng ở port 21.Ngoài ra trong gói dữ liệu còn có thêm địa chỉ IP của cả máy con và máy chủ.2. SYN/ACK: khi yêu cầu mở connection được máy chủ nhận được tại cổng đang mở, server sẽ gửi lại packet chấp nhận với 2 bit cờ là SYN và ACK.SYN/ACK packet được gửi ngược lại bằng cách đổi hai IP của server và client, client IP sẽ thành IP đích và server IP sẽ thành IP bắt đầu. Tương tự như vậy, cổng cũng sẽ thay đổi, server nhận được packet ở cổng nào thì cũng sẽ dùng cổng đó để gửi lại packet vào cổng mà client đã gửi.Server gửi lại packet này để thông báo là server đã nhận được tín hiệu và chấp nhận connection, trong trường hợp server không chấp nhận connection, thay vì SYN/ACK bits được bật, server sẽ bật bit RST/ACK (Reset Acknowledgement) và gởi ngược lại RST/ACK packet.Server bắt buộc phải gửi thông báo lại bởi vì TCP là chuẩn tin cậy nên nếu client không nhận được thông báo thì sẽ nghĩ rằng packet đã bị lạc và gửi lại thông báo mới.3. ACK: khi client nhận được SYN/ACK packet thì sẽ trả lời bằng ACK packet. Packet này được gởi với mục đích duy báo cho máy chủ biết rằng client đã nhận được SYN/ACK packet và lúc này connection đã được thiết lập và dữ liệu sẽ bắt đầu lưu thông tự do.

Đây là tiến trình bắt buộc phải thực hiện khi client muốn trao đổi dữ liệu với server thông qua giao thức TCP. Một số thủ thuật dựa vào đặc điểm này của TCP để tấn công máy chủ (ví dụ DOS).

Video liên quan

Chủ đề