Thiết lập kết nối TCP

Một phần của tài liệu Quản trị hạ tầng mạng phần cứng căn bản Truyền thông và mạng máy tính (Trang 50)

Để hiểu quá trình three-way handshake, chúng ta hãy xem xét các giá trị khác nhau của cột Control Bit trong TCP header mà hai máy tính trao đổi. Cột này có 6 bit, mỗi bit biểu diễn một cờ và cờ này chỉ có thể là bật hay khơng bật. Các cờ này là các thông tin điều khiển được dùng để quản lý các tiến trình TCP. Chúng bao gồm:

• ƯRG: cờ cho cột Urgent.

• ACK: cờ cho cột Acknowledgement.

(SEQ =300 ACK=101 C T L= SY N , Ằ C K )

• PSH: hàm Push.

• RST:thiết lập lại đường truyền.

• SYN: đồng bộ lại số thứ tự (sequence number). • FIN: khơng gửi thêm dữ liệu.

Quá trình three-way handshake trải qua 3 bước:

1. A—»B: Một client TCP bắt đầu three-way handshake bằng cách gửi một segment đồng bộ với các thông tin: cờ SYN để được bật thông báo cho server biết rằng tôi muốn thiết lập kết nối với anh; một giá trị ban đầu trong cột sequence number. Giá trị của sequence number được tăng lên 1 cho mỗi byte dữ liệu được gửi từ client đến server khi trao đổi dữ liệu diễn ra.

2. B->A: TCP server cần phải xác nhận rằng mình đã nhận được segment đồng bộ từ client gửi đến. khi đó, server phản hồi bằng một segment xác nhận với các thông tin: cờ ACK được bật để thông báo cho client biết rằng đây là một thông tin xác nhận; giá trị của cột ACK bằng giá trị của cột sequence number trong segment đồng bộ đầu tiên cộng 1. Khi client nhận được segment phản hồi này có nghĩa là một phiên giao dịch (session) từ client đến server được thiết lập. Trong segment này ngoài cờ ACK được bật lên, còn cờ SYN được bật lên để thiết lập một session từ server đến client. Đồng thời server cũng chỉ ra một giá trị ban đầu trong cột sequence number. Giá trị này được dùng để theo dõi luồng dữ liệu trong session từ server đến client. Đen lúc này bạn có thể thấy rõ rằng trong cuộc trao đổi giữa client và server thực sự có hai phiên giao dịch một chiều: một từ client đến server và một từ server đến client.

3. A->B: Cuối cùng, client phản hồi với một segment xác nhận. Đây là một trả lời cho SYN được gửi từ server. Trong segment này có cờ ACK được bật lên và giá trị của cột acknowledgement lớn hơn giá trị của cột sequence number được nhận từ server 1. Khi cả 2 session được thiết lập giữa client và server, tất cả các segment được trao đổi tiếp theo sẽ có cờ ACK được bật lên.

Dựa vào các bước thiết lập kết nối này mà những kẻ xấu có thể thực hiện kiểu tấn công Deny of Service (DoS). Loại tấn công này thường nhắm vào mục tiêu xác định trước và làm cho nó xử lý quá tải bằng cách tạo nhiều kết nối đến đổi tượng cùng một lúc. Nếu hệ thống không được trang bị chổng lại tấn công DoS, hệ thống dễ bị quá tải và bị gián đoạn.

• cấm thiết lập các TCP session.

• Chỉ cho phép thiết lập session với các dịch vụ đặc biệt.

• Chỉ cho phép luồng thơng tin khi một phần của session được thiết lập thực sự. Bảo mật này có thể được triển khai cho tất cả TCP session hay chỉ các session được chọn.

Ngắt phiên giao dịch TCP

Đối với TCP, để ngắt một phiên giao dịch một chiều phải trải qua hai bước (two-way handshake). Vì thế, để ngắt hai phiên giao dịch trong cuộc trao đổi giữa hai máy tính phải có bốn trao đổi được thực hiện.

A sends ACK response to B.

Hình 22: Ngắt kết nổi TCP

1. Khi client khơng cịn dữ liệu để gửi, nó gửi đến server một segment với cờ FIN được bật lên.

2. Server gửi phản hồi một segment với cờ ACK được bật lên để xác nhận rằng đã nhận được yêu cầu ngắt phiên giao dịch từ client.

3. Server gửi đến client một segment với cờ FIN được bật lên để thông báo ngắt session từ server đến client.

Khi client kết thúc session, nó bật cờ FIN trong header của segment. Kể tiếp, server kết thúc kết nối sẽ gửi một segment thông thường chứa dữ liệu với cờ ACK được bật, xác nhận rằn? tất cả các byte dữ liệu đã được nhận. Khi tất cả các segment được xác nhận đã nhận, session bị đóng.

Session trong hướng ngược lại cũng bị đóng trong cách tương tự.

Nó cũng có thể ngắt kết nối bằng three-way handshake. Khi client khơng cịn dữ liệu để gửi, nó gửi một FIN đến server. Nếu server khơng cịn dữ liệu để gửi, nó có thể trả lời với cờ FIN và ACK được bật đồng thời, kết họp bước 2 và bước 3 thành 1. Client trả lời với một ACK.

1.3.6 I QUẢN LÝ CÁC PHIÊN GIAO DỊCH TCPSắp xếp lại các segment Sắp xếp lại các segment

Khi các ứng dụng, dịch vụ sử dụng giao thức vận chuyển là TCP thì các segment có thể đến đích khơng đúng thứ tự như ban đầu. Đe người nhận đọc và hiểu được thông điệp của người gửi, tại máy nhận, các segment này phải được tổng hợp sắp xếp lại đúng thứ tự ban đầu. Để đạt được mục tiêu này, TCP đưa ra cột segment number trong header của mỗi segment.

Khi bắt đầu thiết lập kết nối, TCP khởi tạo một giá trị ban đầu cho sequence number. Giá trị này biểu diễn giá trị bắt đầu cho segment trong phiên giao dịch này và nó được dùng để theo dõi các segment dữ liệu được truyền và nhận. Dựa vào giá trị này người nhận sẽ phản hồi lại cho người gửi và người gửi biết được segment nào bị lỗi và gửi lại.

Hình 23 cho biết: tại máy gửi dữ liệu chia làm 6 segment và được đánh số thứ tự từ 1 đến 6. Các segment này có thể đi theo nhiều đường khác nhau để đến đích. Do đó, máy nhận được các segment theo thứ tự 1, 2, 6, 5, 4, 3. TCP dựa vào sequence number sắp xếp lại các segment và chuyển đến ứng dụng đích.

Different segments may take different routes.

TCP reorders the segments to the original order.

Segment 1 Se

Having taken segment 2 Segment 2 different routes to toe Segment 6 destination, segments I arrive out of order. Segment 3 Segment 4 * Segment 3 L*>. Segment 6

Hình 23: Tại đích, các TCP segment được sắp xếp lại

Tiến trình nhận sẽ đặt dữ liệu từ một segment vào một vùng đệm nhận (receiving bufer). Các segment được đặt thứ tự theo sequence number thích hợp và chuyển đến lớp Application khi đã được tổng hợp. Bất kỳ segment nào đến với sequence number không liên tục sẽ được giữ lại để xử lý sau. Sau đó, khi các segment bị lỗi đã được truyền lại, những segment này được tiếp tục xử lý.

Xác nhận vói Windowing

Tính năng của TCP là bảo đảm ràng tất cả các segment đều đến được đích của nó. Để đạt được điều này TCP đưa ra rất nhiều cơ chế, một trong những cơ chế đó là báo nhận (acknowledgement). Điều này có nghĩa là máy nhận phải phản hồi cho máy gửi biết được rằng đã nhận được những segment nào.

Sequence number và acknowledgement number trong TCP header là hai giá trị được dùng trong quá trình xác nhận. Sequence number chỉ ra số byte đã được truyền bao gồm các byte trong segment hiện hành. Sau khi nhận được segment, TCP phản hồi một giá trị acknowledgement number bằng giá trị sequence number của segment vừa được cộng với 1. Giá trị này chỉ ra số byte kế tiếp mà người nhận đang mong chờ. Khi nhận được acknowledgement number này, máy gửi tiếp tục gửi từ byte này trở đi.

MSS = Maximum Segment Sere

Send window 10,000

Sequence number 1

Sequence number 1,461

During three-w ay handshake Window size 10,000. M SS 1,460 4 . ^ , - ^ « . ....mm......... ............................................................... 1,460 bytes 1,460 bytes — - ..................... ..........—— Receive 1 - 1 , 4 6 0 Receive 1.461 -2 ,9 2 0

Receive acknow ledgem ent Send window 12,920

ACK 2,921

W in d ow size 10,0 0 0 ---------- — -----------------

Sequence number 2,921

Receive acknow ledgem ent Send window 14,360 1,460 bytes ACK 4,381 Window size 10,000 < — — ----------------- Receive 2,921 - 4,380

Hình 24: Acknowledgement và Window size

Giao thức TCP cho phép truyền nhiều segment liên tiếp đến máy nhận trước khi chờ nhận một phản hồi từ máy nhận. Xác nhận này chứa một số ACK dựa trên tổng số byte đã được nhận trong phiên này. số lượng segment mà máy gửi được phép gửi trước khi nhận được một phản hồi từ máy nhận được gọi là kích thước cửa sổ (window size). Window size là một cột trong TCP header. Giá trị ban đầu của window size được quyết định trong lúc thiết lập session thông qua three-way handshake.

Điều khiển luồng (Flow Control)

Điều khiển luồng là một trong những chức năng được xem là “thông minh”. Một thiết bị trên mạng có những khả năng riêng về bộ nhớ, băng thông và các tài nguyên khác. Do đó, khi truyền dữ liệu các thiết bị sẽ không xử lý với cùng một tổc độ. Có thể truyền nhanh - nhận chậm, chính điều này làm mất dữ liệu. Hay truyền chậm - nhận nhanh, lúc này tại sao không phải tăng tốc độ truyền. Do đó, để giải quyết những vấn đề này, TCP đưa ra một cơ chế điều khiển luồng. Cơ chế này giúp cho máy gửi và máy nhận biết được tình trạng của nhau qua kênh giao tiếp. Sau đó, hai máy thiết lập một tốc độ truyền sao cho đạt được sự thống nhất ở cả hai phía.

Thay đổi window size - Cửa sổ trượt (Sliding window)

Sliding window là một kỹ thuật mà TCP sử dụng để điều khiển luồng với tham số đại diện là window size. Khi các tài nguyên mạng hay thiết bị bị quá tải. TCP có thể giảm

window size xuống để tránh mất dữ liệu và phải gửi lại. Lúc này các acknowledgement sẽ phản hồi thường xuyên hơn.

TCP segment 1 TCP segment 2 TCP segment 3 TCP segment A Acknowledgement segment 1 <--------------— ------- -------- Acknowledgement segment 2 TCP segment 2 TCP segment 3

Hình 25: Điều khiển luồng

1.3.7 I GIAO THỨC UDP

UDP - So sánh giữa chỉ phí thấp và độ tin cậy

UDP là một giao thức đơn giản ở lớp Transport, nó chỉ cung cấp những tính năng cơ bản để vận chuyển dữ liệu. Chi phí vận chuyển của nó thấp hơn nhiều so với giao thức TCP. Bởi vì nó khơng có các cơ chế giống như TCP chẳng hạn như: thiết lập kết nối trước khi truyền dữ liệu thực sự, truyền lại đổi với những dữ liệu bị mất, đánh số thứ tự các segment và điều khiển luồng. Điều này khơng có nghĩa là các ứng dụng sử dụng giao thức ƯDP để vận chuyển thì ln ln khơng tin cậy. Nó chỉ đơn giản là làm sao vận chuyển dữ liệu cho nhanh và tính năng tin cậy được thực hiện ở lớp Application nếu cần.

Một số ứng dụng, như trò chơi trực tuyến hay VoIP, có thể chấp nhận mất một vài dữ liệu. Nếu các ứng dụng này dùng TCP thì độ trễ lớn do TCP phát hiện dữ liệu bị mất và truyền lại. Độ trễ này sẽ gây ra nhiều thiệt hại cho ứng dụng hơn là việc mất một vài dữ liệu nhỏ. Một vài ứng dụng, như DNS, sẽ truy vấn lại nếu không nhận một trả lời từ DNS server và vì thế chúng khơng cần sử dụng TCP để phân phát thông điệp tin cậy.

Port nguồn được cấp phát động và ngẫu nhiên cũng giúp ích cho việc bảo mật. Nếu có một quy định trước đối với việc cấp phát port nguồn, một người có ý đồ xấu có thể dễ dàng truy cập đến một client bằng cách cố gắng kết nối đến port thường được mở nhất. Do UDP không tạo session, nên ngay từ khi dữ liệu đã được sẵn sàng để gửi và port được xác định, UDP có thể tạo ngay thành datagram và chuyển nó đến lófp Network để đánh địa chỉ và các lớp thấp hơn để gửi trên mạng.

Nhớ rằng, khi một client đã chọn port nguồn và đích, cặp port này được dùng trong header của tất cả datagram trong giao dịch này. Đối với dữ liệu của server phản hồi cho client, port nguồn và đích trong header được đảo lại.

1 .4 I L Ớ P A PPLIC A TIO N

Hầu hết các giao thức của lớp Application trong mơ hình TCP/IP đều tích họp các tính năng của lóp 5, 6 và 7 của mơ hình OSI. Chúng chỉ ra định dạng và điều khiển thơng tin cần thiết cho các tính năng giao tiếp chung.

1 .4 .1 I CÁC ỨNG DỤNG - GIAO DIỆN ĐÊ GIAO TIẾP GIỮA CÁC MẠNG

Các tính năng của các giao thức trong lớp Application cho phép chúng ta giao tiếp với nhau qua mạng, khi chúng ta mở một ứng dụng chẳng hạn như một trình duyệt web hay một cửa sổ chat, thì mỗi ứng dụng được khởi động sẽ kích hoạt một tiến trình trong hệ thống. Tiến trình này được đưa vào bộ nhớ của thiết bị.

Ở lóp Application, có hai dạng chương trình hoặc tiến trình mà chúng cung cấp sự giao tiếp qua mạng là: ứng dụng mạng và dịch vụ mạng.

Các ứng dụng mạng

Các ứng dụng mạng là các chương trình phần mềm được người sử dụng để giao tiếp với nhau qua mạng. Chúng thực thi các giao thức ở lớp Application và có thể giao tiếp trực tiếp với các lớp thấp hơn của chồng giao thức. Một vài ứng dụng mạng như Outlook Express, Google,...

Các dịch vụ mạng

Muốn sử dụng các ứng dụng mạng để trao đổi thông tin như: download file, upload file, gửi/nhận mail,... can phải có sự giúp đỡ của các dịch vụ mạng ở lóp Application như dịch vụ mail (SMTP/POP), dịch vụ web (HTTP),... Các dịch vụ này chạy trong hậu cảnh và người dùng khơng nhìn thấy được. Nhưng chúng đóng một vai trò rất quan trọng trong việc cung cấp sự giao tiếp qua mạng.

Các ứng dụng hay dịch vụ mạng sử dụng các giao thức. Các giao thức này định nghĩa các chuẩn và định dạng dữ liệu được dùng. Nếu khơng có các giao thức, mạng dữ liệu khơng có cách chung để định dạng và truyền dữ liệu.

1 .4 .2 I MỒ HÌNH CLIENT-SERVER

Mơ hình client-server là mơ hình phổ biến nhất hiện nay. Các chưong trình server chấp nhận tất cả các yêu cầu hợp lệ đến từ mọi nơi trên mạng, sau đó nó xử lý yêu cầu và trả kết quả về cho máy yêu cầu. Một chương trình được gọi là Client khi nó gửi các u cầu tới máy có chương trình server và chờ đợi câu trả lời từ server.

Một ví dụ về mơ hình client/server: Trong cơng ty có một mail server. Mail server giống như là bưu điện là nơi đại diện nhận mail từ những nơi khác gửi đến những người trong công ty hay từ những nhân viên trong cơng ty gửi ra ngồi và chuyển đen hộp thư của từng nhân viên. Khi có nhu cầu kiểm tra xem có ai gửi mail đến cho mình khơng, người dùng sử dụng một chương trình mail Client gửi một yêu cầu đến mail server. Mail server trả lời bằng cách gửi các mail của nhân viên đó mà nó đã nhận được đến cho mail Client.

Chương trình server và Client tương tác vớ i nhau bằng các thông điệp thông qua một cổng truyền thông. Để một chương trình server và một chương trình Client giao tiếp được với nhau thì giữa chúng phải có một chuẩn để truyền thông, chuẩn này được gọi là giao thức. N ếu một chương trình Client nào muốn yêu cầu lấy thơng tin từ server thì nó phải tn theo giao thức mà server đó đưa ra.

C lie n t/S e rv e r M odel

R e so u rce s are stored on the A client is a hardware/software

server. com bination that people use

directly.

Hình 29: Client download fde từ server

UDP d oes not establish a connection before sending data.

Hình 26: Vận chuyển dừ liệu với giao thức UDP

Một phần của tài liệu Quản trị hạ tầng mạng phần cứng căn bản Truyền thông và mạng máy tính (Trang 50)

Tải bản đầy đủ (PDF)

(184 trang)