Xem mẫu

  1. 5/22/2011 LOGO C3 TẦNG GIAO VẬN Giới thiệu Dịch vụ dồn kênh và phân kênh Giao thức UDP Giao thức TCP Biên soạn : Lê Minh LOGO Giới thiệu I Cung cấp đường truyền logic giữa các tiến trình chạy trên các máy tính khác nhau Dùng hai giao thức: TCP và UDP Biên soạn : Lê Minh 1
  2. 5/22/2011 LOGO Giới thiệu I Các giao thức của tầng giao vận chạy trên các thiết bị đầu cuối ( máy tính,PDA … ) Phía gởi : chia các thông điệp (message) nhận từ tầng ứng dụng thành các segment và chuyển xuống tầng mạng Phía nhận : tái hợp các segment thành thông điệp và gởi lên cho tầng ứng dụng Biên soạn : Lê Minh LOGO Quan hệ tầng giao vận với tầng mạng 1 Tầng mạng: Tầng giao vận: Cung cấp đường Cung cấp đường truyền logic giữa các truyền logic giữa các máy tính tiến trình PDU : datagram PDU: segment Datagram có thể bị Phụ thuộc vào và mở mất, trùng lắp và rộng thêm các dịch chuyển đi không vụ của tầng mạng đúng thứ tự Biên soạn : Lê Minh 2
  3. 5/22/2011 LOGO Giao thức tầng giao vận 2 Mở rộng việc truyền dữ liệu giữa các thiết bị đầu cuối của tầng mạng thành việc truyền dữ liệu giữa các tiến trình TCP: giao thức tin cậy, gởi nhận theo đúng thứ tự Kiểm soát tắt nghẽn Điều khiển lưu lượng Thiết lập đường truyền UDP: giao thức không tin cậy, gởi nhận không theo thứ tự Biên soạn : Lê Minh LOGO Dịch vụ dồn kênh và phân kênh II Tầng mạng sử dụng cùng một kênh truyền giữa hai máy tính cho việc liên lạc với nhau HTTP FTP Transport Transport Telnet Layer Layer Network Network Layer Layer Mỗi máy tính có thể chạy nhiều ứng dụng cùng lúc, mỗi ứng dụng được gởi xuống tầng mạng qua một cổng bằng một tiến trình. Dữ liệu gởi đúng từ tiến trình gởi đến tiến trình nhận? Biên soạn : Lê Minh 3
  4. 5/22/2011 LOGO Dịch vụ dồn kênh và phân kênh II Bên gởi : thực hiện dịch vụ dồn kênh Nhận dữ liệu từ nhiều tiến trình ứng dụng khác nhau từ tầng ứng dụng Thêm tiêu đề để tạo thành segment và chuyển xuống tầng mạng Bên nhận: thực hiện dịch vụ phân kênh Nhận dữ liệu từ tầng mạng chuyển lên Căn cứ vào tiêu đề của segment để chuyển dữ liệu đến đúng tiến trình nhận Biên soạn : Lê Minh LOGO Dịch vụ dồn kênh và phân kênh II Căn cứ để phân kênh? Mỗi tiến trình được gởi qua một cổng Mỗi gói tin (segment) sẽ có địa chỉ cổng nguồn/đích Datagram ở tầng mạng sẽ có IP nguồn/đích Biên soạn : Lê Minh 4
  5. 5/22/2011 LOGO Dịch vụ dồn kênh và phân kênh II Biên soạn : Lê Minh LOGO Giao thức UDP III Là giao thức đơn giản của tầng giao vận Giao thức không hướng kết nối: Không “bắt tay” giữa bên gởi và bên nhận Các UDP segment được xử lý độc lập Giao thức không tin cậy: Các UDP segment có thể bị mất mát khi truyền Không có cơ chế kiểm soát tắt nghẽn Tại sao dùng UDP?? Biên soạn : Lê Minh 5
  6. 5/22/2011 LOGO Giao thức UDP III Tại sao dùng UDP? Không cần thiết lập đường truyền Không cần lưu lại trạng thái ở 2 bên gởi/nhận Trường tiêu đề của gói tin nhỏ Không cần cơ chế kiểm soát tắt nghẽn Thường được dùng bởi các ứng dụng đa phương tiện: Chấp nhận mất mát dữ liệu Cần tốc độ truyền nhanh Muốn truyền tin cậy với giao thức UDP: ứng dụng phải có cơ chế khắc phục lỗi Biên soạn : Lê Minh LOGO Cấu trúc gói tin UDP 1 Source port: địa chỉ 32 bits cổng nguồn dest port # source port # Dest port: địa chỉ checksum length cổng đích Checksum: kiểm tra lỗi của segment Application Length: độ dài của data (message) segment (byte) – tính cả header UDP segment format Biên soạn : Lê Minh 6
  7. 5/22/2011 LOGO UDP checksum 2 Mục đích: phát hiện lỗi trong các segment đã gởi Phía gởi: Chia nội dung của segment thành các từ có độ dài 16 bit Tính checksum bằng cách lấy tổng (có nhớ) của các từ 16 bit này, sau đó lấy bù 1 Đặt kết quả tính checksum vào trường checksum của UDP segment Giá trị ban đầu của trường checksum trong segment là bao nhiêu?? Biên soạn : Lê Minh LOGO UDP checksum 2 Phía nhận: Chia nội dung của segment nhận được thành các từ có độ dài 16 bit Tính tổng của các từ 16 bit kể cả trường checksum Nếu kết quả bằng 111111111 11111111 thì dữ liệu nhận được không lỗi Nếu có bất kỳ bit nào trong kết quả là 0 thì dữ liệu nhận được có lỗi UDP sẽ làm gì khi có lỗi xảy ra??? Biên soạn : Lê Minh 7
  8. 5/22/2011 LOGO Giao thức TCP IV Là giao thức theo hướng kết nối: Tiến trình gởi và nhận phải “bắt tay” với nhau để xác định các tham số đảm bảo cho việc truyền dữ liệu Kết nối TCP: Là kết nối điểm – điểm Cung cấp kênh truyền song công Có bộ đệm ở phía gởi và nhận Quy định lượng dữ liệu lớn nhất MMS có thể đặt trong mỗi segment. Giá trị MMS có thể thay đổi được. Biên soạn : Lê Minh LOGO Cấu trúc gói tin TCP 1 32 bits URG: urgent data Được xác source port # dest port # (thường không dùng) định bởi số sequence number byte dữ liệu ACK: giá trị ACK đã gởi/nhận acknowledgement number đã nhận được head not UA PRS F Receive window PSH: push data now len used Số (thường không dùng) checksum Urg data pnter lượng byte RST, SYN, FIN: Options (độ dài thay đổi) bên Thiết lập kết nối nhận (thiết lập và có thể đóng kết nối) Dữ liệu từ tầng ứng dụng nhận (độ dài thay đổi) Internet checksum (giống ở UDP) Biên soạn : Lê Minh 8
  9. 5/22/2011 LOGO Sequence number và ACK number 2 TCP sẽ đánh số thứ tự cho từng byte của dòng dữ liệu nhận được từ tầng ứng dụng Mỗi segment sẽ mang một số Seq number, là số thứ tự của byte đầu tiên trong phần dữ liệu của segment đó ( không phải là số thứ tự của segment) Ví dụ: A cần truyền cho B file có kích thước 5000 byte, MMS là 1000 byte, byte đầu tiên có số thứ tự là 0 Biên soạn : Lê Minh LOGO Sequence number và ACK number 2 Giá trị ban đầu của sequency number được chọn ngẫu nhiên Việc đánh số sequency number phụ thuộc vào từng bên truyền nhận ACK number: số seq # của segment tiếp theo mong muốn nhận được từ bên kia Biên soạn : Lê Minh 9
  10. 5/22/2011 LOGO Sequence number và ACK number 2 Ví dụ Host B Host A Seq #: số thứ 1000 byte data tự của byte dữ host ACKs liệu đầu tiên receipt of trong segment data ACK #: • Số seq# của segment tiếp Host sends mong another theo 500 bytes chờ từ phía kia • Được tính time kiểu “tích lũy” Biên soạn : Lê Minh LOGO Truyền dữ liệu tin cậy với TCP 3 Tầng mạng cung cấp dịch vụ IP: dịch vụ truyền không tin cậy TCP tạo ra đường truyền dữ liệu tin cậy dựa trên dịch vụ IP Đảm bảo truyền đúng và đủ dữ liệu (segment) cho bên nhận Căn cứ vào ACK và timer để thực hiện việc truyền lại các segment, 1 segment sẽ được truyền lại khi: “Không” nhận được ACK xác nhận từ bên nhận Hết thời gian chờ (timeout) nhận ACK soạn : Lê Minh Biên 10
  11. 5/22/2011 LOGO Truyền dữ liệu tin cậy với TCP 3 Các hoạt động của bên gởi: Nhận dữ liệu từ tầng ứng dụng: • Chia dữ liệu ra và đóng gói thành các segment căn cứ vào giá trị MMS • Đánh số cho các segment và đặt vào trường sequency number của segment • Tiến hành gởi segment và khởi động timer cho từng segment Biên soạn : Lê Minh LOGO Truyền dữ liệu tin cậy với TCP 3 Các hoạt động của bên gởi: Sau khoảng thời gian chờ (timeout) cho mỗi segment, nếu không nhận được ACK xác nhận từ bên nhận: • Gởi lại segment đó • Khởi động lại timer cho segment Nếu nhận được ACK xác nhận từ bên nhận trước thời gian timeout: • gửi tiếp segment có số sequency tương ứng với số ACK vừa nhận được Bên nhận: nếu nhận được segment từ bên gởi sẽ trả lời lại bằng segment chứa ACK Biên soạn : Lê Minh 11
  12. 5/22/2011 LOGO Truyền dữ liệu tin cậy với TCP 3 Ví dụ: ACK xác nhận từ bên nhận bị thất lạc Biên soạn : Lê Minh LOGO Truyền dữ liệu tin cậy với TCP 3 Ví dụ: ACK xác nhận thứ 2 đến trước thời gian timeout của mình Biên soạn : Lê Minh 12
  13. 5/22/2011 LOGO Truyền dữ liệu tin cậy với TCP 3 Ví dụ: ACK xác nhận thứ 2 đến trước thời gian timeout của ACK thứ nhất Biên soạn : Lê Minh LOGO Điều khiển lưu lượng trong TCP 4 Mục đích: tránh hiện tượng bên gởi làm tràn bộ đệm bên nhận Khi khởi tạo kết nối TCP, mỗi bên sẽ khởi tạo cho mình bộ đệm nhận (RevBuffer) Dữ liệu nhận được từ bên gởi sẽ được lưu trong bộ đệm nhận trước khi được xử lý Biên soạn : Lê Minh 13
  14. 5/22/2011 LOGO Điều khiển lưu lượng trong TCP 4 32 bits source port # dest port # sequence number acknowledgement number head not UA PRS F Receive window len used checksum bên gởi biết độUrg data pnter Bên nhận báo cho lớn của vùng đệm còn rỗi ( RcvWindow) của dài thay?? Options (độ mình đổi) Khi bộ đệm bên nhận đầy (RcvWindow = 0)?? Dữ liệu từ tầng ứng dụng (độ dài thay đổi) Biên soạn : Lê Minh LOGO Quản lý kết nối TCP 5 Thiết lập kết nối : bắt client server tay 3 bước giữa client và server: B1: client gởi 1 segment SYN tới server ( không chứa data, chứa số Seq# khởi đầu) B2: server trả lời bằng 1 segment SYN-ACK ( khởi tạo giá trị Seq# của server) B3: client trả lời bằng 1 segment SYN-ACK Biên soạn : Lê Minh 14
  15. 5/22/2011 LOGO Quản lý kết nối TCP 3 Đóng kết nối: B1: client gởi segment client server closing FIN tới server B2: server gởi segment ACK xác nhận, gởi lại 1 segment FIN B3: client gởi lại 1 segment ACK xác nhận timed wait sau khi nhận được segment FIN B4: server nhận được segment ACK, đóng kết nối Biên soạn : Lê Minh 15
nguon tai.lieu . vn