1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học mạng máy tính Đề tài giao thức udp & giao thức tcp

17 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 1,69 MB

Nội dung

Giao thức UDPGiao thức truyền dữ liệu không kết nối: UDP a Khái niệm -UDP User Datagram Protocol là một giao thức truyền tải không kết nối được sử dụng trong bộ giao thức Internet IP.. C

Trang 1

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC

MẠNG MÁY TÍNH

ĐỀ TÀI GIAO THỨC UDP & GIAO THỨC TCP

GVHD: PHAN THỊ HỒNG NHUNG SVTH:

070205001302_Ngô Thiên Nhật 20H1120246_Lê Văn Duy Quang 056205009808_Tô Hoàng Vũ 079205043382_Phan Nguyễn Anh Thái

Trang 2

MỤC LỤC

DANH MỤC CÁC TỪ VIẾT TẮT 1

LỜI MỞ ĐẦU 2

Chương 3 : Tầng giao vận 3

3.3 Giao thức UDP và TCP 3

3.3.1 Giao thức UDP(Giao thức truyền dữ liệu không kết nối: UDP) 3

3.3.2.Principles of reliable data transfer ( Các Nguyên Tắc Truyền Dữ Liệu Đáng Tin Cậy ) 4

3.3.3.Giao thức điều khiển truyền TCP ( Transmission Control Protocol ) 5

3.3.3.1 Tổng quan về giao thức TCP 5

3.3.3.2 Khuôn dạng đọan tin - TCP segment 5

3.3.3.3 Chu trình sống của TCP ( đơn giản hóa ) - TCP sender 6

3.3.3.4 TCP flow control - Kiểm soát luồng 7

3.3.3.5.Quản lý kết nối TCP 8

3.3.3.6 Điều khiển tắc nghẽn trong TCP 9

3.3.3.7 TCP congestion control: Chi tiết hành vi gửi của TCP 9

KẾT LUẬN 11

TÀI LIỆU THAM KHẢO 12

PHỤ LỤC 13

Trang 3

DANH MỤC CÁC TỪ VIẾT TẮT

Decrease

PAGE \* MERGEFORMAT 1

Trang 4

LỜI MỞ ĐẦU

Mạng máy tính là sự liên kết giữa nhiều máy tính và các thiết bị khác để chia sẻ tài nguyên thông qua các phương tiện truyền thông chung, sử dụng cùng một tập hợp giao thức Các thành phần trong mạng trao đổi thông tin bằng cách tuân theo một ngôn ngữ chung, được gọi là giao thức truyền thông Những giao thức này là các quy tắc, quy trình hoặc tiêu chuẩn chính thức, giúp đảm bảo rằng các thiết bị trong mạng có thể hiểu và tương tác với nhau hiệu quả

Một ví dụ quen thuộc về giao thức mạng là TCP/IP, thuộc bộ giao thức TCP/IP (Transmission Control Protocol/Internet Protocol) Mặc dù chỉ đề cập đến hai giao thức TCP và IP, nhưng thuật ngữ này thường được dùng để mô tả một nhóm các giao thức khác, tất cả tạo thành nền tảng quan trọng cho hoạt động của Internet

PAGE \* MERGEFORMAT 1

Trang 5

Chương 3 : Tầng giao vận 3.3 Giao thức UDP và TCP

3.3.1 Giao thức UDP(Giao thức truyền dữ liệu không kết nối: UDP)

a) Khái niệm

-UDP (User Datagram Protocol) là một giao thức truyền tải không kết nối được

sử dụng trong bộ giao thức Internet (IP) Khác với TCP, giao thức này không thiết lập một kết nối tin cậy giữa hai điểm cuối trước khi truyền dữ liệu Điều này làm cho UDP hiệu quả hơn và phù hợp với các ứng dụng ưu tiên tốc độ hơn là độ tin cậy

b) Đặc điểm

- Không kết nối: UDP không cần yêu cầu kết nối trước khi gửi dữ liệu

- Dựa trên datagram: Dữ liệu được truyền dưới dạng các đơn vị rời rạc gọi là datagram, chúng độc lập với nhau

- Giao hàng nỗ lực tốt nhất: UDP không đảm bảo giao hàng các datagram Nếu một datagram bị mất hoặc bị hỏng, sẽ không có cơ chế tự động gửi lại

- Không kiểm soát lưu lượng: UDP không thực hiện kiểm soát lưu lượng, nghĩa

là không có cơ chế nào để ngăn chặn người gửi gửi dữ liệu quá nhanh so với khả năng xử lý của người nhận

- Không sửa lỗi: UDP không cung cấp khả năng sửa lỗi Nếu một datagram bị hỏng, người nhận phải phát hiện và loại bỏ nó

Ưu điểm của UDP:

- Chi phí thấp: UDP có chi phí thấp hơn TCP, làm cho nó hiệu quả hơn đối với các ứng dụng yêu cầu xử lý tối thiểu

- Độ trễ thấp: UDP không yêu cầu bắt tay hoặc xác nhận, dẫn đến độ trễ thấp hơn

- Phù hợp với các ứng dụng thời gian thực: UDP rất phù hợp cho các ứng dụng thời gian thực không thể chịu được độ trễ đáng kể, chẳng hạn như truyền phát media, game online và thoại qua IP (VoIP)

Nhược điểm của UDP:

- Không đáng tin cậy: UDP không đảm bảo giao hàng các datagram, làm cho

nó không phù hợp với các ứng dụng yêu cầu độ tin cậy cao

- Không kiểm soát lưu lượng: UDP có thể dẫn đến tắc nghẽn nếu người gửi gửi

dữ liệu quá nhanh so với khả năng xử lý của người nhận

- Không sửa lỗi: UDP không có khả năng sửa lỗi, có thể dẫn đến mất dữ liệu hoặc hỏng dữ liệu

Các trường hợp sử dụng phổ biến của UDP:

- Truyền phát đa phương tiện: UDP thường được sử dụng để truyền phát video

và âm thanh, vì nó có thể cung cấp độ trễ thấp và có thể chịu được một số mất gói tin

- Trò chơi trực tuyến: UDP được sử dụng cho các trò chơi trực tuyến để giảm thiểu độ trễ và đảm bảo trải nghiệm chơi game mượt mà

- Thoại qua IP (VoIP): UDP được sử dụng cho VoIP để cung cấp giao tiếp thoại thời gian thực

- DNS (Hệ thống tên miền): UDP được sử dụng cho các truy vấn và phản hồi DNS

· SNMP (Giao thức quản lý mạng đơn giản): UDP được sử dụng để quản lý

PAGE \* MERGEFORMAT 1

Trang 6

=> UDP là một giao thức truyền tải không kết nối phù hợp cho các ứng dụng

ưu tiên tốc độ và hiệu quả hơn là độ tin cậy Nó được sử dụng rộng rãi trong các ứng dụng thời gian thực như truyền phát đa phương tiện, trò chơi trực tuyến và VoIP

3.3.2.Principles of reliable data transfer ( Các Nguyên Tắc Truyền Dữ Liệu Đáng Tin Cậy )

-Truyền dữ liệu đáng tin cậy đảm bảo rằng dữ liệu được gửi đi sẽ đến được đích một cách chính xác và đầy đủ, không bị lỗi Để đạt được điều này, các giao thức truyền thông sử dụng một số nguyên tắc sau:

1 Phát hiện và sửa lỗi:

- Kiểm tra tổng (Checksum): Tính toán một giá trị dựa trên dữ liệu, sau đó gửi cùng với dữ liệu Khi nhận được, giá trị này được tính lại để so sánh Nếu khác nhau, có lỗi xảy ra

- Bit chẵn lẻ: Thêm một bit vào cuối dữ liệu để kiểm tra xem số bit 1 có chẵn hay lẻ

- Kiểm tra dư thừa tuần hoàn (CRC): Một thuật toán phức tạp hơn, có khả năng phát hiện nhiều loại lỗi hơn

2 Sắp xếp dữ liệu:

- Số thứ tự: Mỗi gói dữ liệu được gán một số thứ tự để đảm bảo chúng được nhận đúng trình tự

- Sắp xếp lại: Nếu các gói đến không đúng thứ tự, chúng sẽ được sắp xếp lại dựa trên số thứ tự

3 Xác nhận:

- Xác nhận dương (ACK): Người nhận gửi một thông báo xác nhận (ACK) để thông báo gói dữ liệu đã nhận được thành công

- Xác nhận âm (NACK): Người nhận gửi một thông báo xác nhận âm để thông báo gói dữ liệu bị lỗi hoặc bị mất

4 Gửi lại:

- Hết thời gian chờ: Nếu người gửi không nhận được xác nhận trong một khoảng thời gian nhất định, gói dữ liệu sẽ được gửi lại

- Gửi lại chọn lọc: Chỉ các gói bị mất hoặc bị lỗi mới được gửi lại, tiết kiệm băng thông

5 Kiểm soát lưu lượng:

- Cửa sổ trượt: Giới hạn số lượng gói dữ liệu được gửi đi mà chưa nhận được xác nhận, giúp tránh quá tải cho người nhận

- Điều chỉnh kích thước cửa sổ: Kích thước cửa sổ có thể thay đổi linh hoạt để thích ứng với tình trạng mạng

6 Kiểm soát tắc nghẽn:

- Giảm tốc độ: Khi mạng quá tải, người gửi sẽ giảm tốc độ gửi dữ liệu để giảm tải cho mạng

- Tránh tắc nghẽn: Các thuật toán như TCP sử dụng các cơ chế để tránh gây tắc nghẽn mạng

7 Cơ chế đảm bảo tin cậy:

- ARQ (Automatic Repeat reQuest): Cơ chế tự động yêu cầu gửi lại các gói dữ liệu bị lỗi hoặc mất

PAGE \* MERGEFORMAT 1

Trang 7

- Go-Back-N ARQ: Người gửi gửi lại tất cả các gói dữ liệu từ gói bị lỗi trở đi.

- Selective Repeat ARQ: Chỉ gửi lại các gói bị lỗi hoặc mất

Các giao thức truyền dẫn đáng tin cậy:

- TCP (Transmission Control Protocol): Là giao thức phổ biến nhất, sử dụng nhiều cơ chế trên để đảm bảo truyền dữ liệu đáng tin cậy

- SCTP (Stream Control Transmission Protocol): Một giao thức tương tự TCP nhưng có thêm một số tính năng nâng cao

=> Các nguyên tắc trên đảm bảo rằng dữ liệu được truyền đi một cách chính xác và đáng tin cậy, mặc dù môi trường mạng có thể gặp nhiều lỗi và trục trặc

3.3.3.Giao thức điều khiển truyền TCP ( Transmission Control Protocol )

3.3.3.1 Tổng quan về giao thức TCP

- TCP là một giao thức hướng liên kết ( Connection Oriented ), Chịu trách nhiệm truyền tải thông điệp từ quy trình này sang quy trình khác có độ tin cậy , chính xác cao

- TCP cung cấp khả năng truyền dữ liệu một cách an toàn giữa các thiết bị khác trong khu vực đa mạng, Cung cấp các chức năng kiểm tra tính chính xác của dữ liệu khi đến đích và truyền lại dữ liệu khi có lỗi xảy ra

- TCP sử dụng cơ chế bắt tay ba bước để thiết lập liên kết

- TCP là giao thức truyền dữ liệu tin cậy theo dòng byte

- TCP truyền theo kiểu pipeline tức truyền liên tiếp các gói tin để tăng hiệu quả quá trình truyền tin

- TCP có hai cơ chế :

+ Cơ chế kiểm soát luồng : điều chỉnh số lượng gói tin để khi một bên gửi đi không làm quá tải mạng và mất dữ liệu vô lý cho bên nhận

+ Cơ chế kiểm soát tắc nghẽn : Việc truyền dữ liệu sẽ được kiểm soát, ngăn chặn tình trạng bị nghẽn mạng khi việc gửi đi dữ liệu quá độ xử lý của mạng

3.3.3.2 Khuôn dạng đọan tin - TCP segment

- TCP segment structure là cấu trúc của một phân đoạn dữ liệu được truyền qua

giao thức TCP Một phân đoạn TCP bao gồm một tiêu đề và một trường dữ liệu

- Khuôn dạng và nội dung của gói tin TCP được biểu diễn như sau :

Hình 3.1 TCP segment [1]

+ Source port : 16 bits , số cổng nguồn

+ Destination Port: 16 bits , số hiệu cổng đích

+ Sequence Number ( số thứ tự ) : 32 bits

+ Acknowlegment Number (số thứ tự xác nhận): 32 bits

PAGE \* MERGEFORMAT 1

Trang 8

+ Offset ( độ dài header gói tin): 4 bits, độ dài header gói tin TCP

+ Reserved : 6 bits

+ Options: Các tùy chọn (dài thay đổi)

+ Checksum: Tổng kiểm

+ Urg data pointer: Con trỏ dữ liệu khẩn cấp

+ Padding : Phần chèn thêm vào header

+ R(RST) ,S( SYN ) ,F( FIN ): ký hiệu các gói tin đặc biệt

3.3.3.3 Chu trình sống của TCP ( đơn giản hóa ) - TCP sender

Hình 3.2 TCP sender[1]

- CLOSED (đóng)

Client: Đây là trạng thái ban đầu của TCP trước khi thiết lập kết nối Ứng dụng client bắt đầu quá trình kết nối bằng cách gửi gói SYN để yêu cầu thiết lập kết nối với server

Server: Ở trạng thái CLOSED, server cũng không có kết nối mở

- LISTEN

Server: Server mở socket và ở trạng thái LISTEN, nghĩa là nó đang chờ nhận kết nối từ client Khi nhận được gói SYN từ client, server sẽ gửi lại SYN/ACK

để xác nhận đã nhận yêu cầu kết nối

- SYN_SENT

Client: Sau khi client gửi gói SYN để yêu cầu kết nối, nó chuyển sang trạng thái SYN_SENT, chờ nhận SYN/ACK từ server để xác nhận yêu cầu kết nối

đã được server xử lý

- SYN_RCVD

Server: Sau khi server nhận được gói SYN từ client và gửi lại gói SYN/ACK, server sẽ vào trạng thái SYN_RCVD, chờ nhận ACK từ client để hoàn tất thiết lập kết nối

- ESTABLISHED

Client và Server: Khi cả hai bên đã trao đổi các gói SYN, SYN/ACK, và ACK,

PAGE \* MERGEFORMAT 1

Trang 9

kết nối TCP sẽ được thiết lập hoàn chỉnh Lúc này, cả client và server đều vào trạng thái ESTABLISHED, cho phép truyền tải dữ liệu qua lại

- FIN_WAIT_1

Client: Khi client muốn kết thúc kết nối, nó sẽ gửi gói FIN và chuyển sang trạng thái FIN_WAIT_1, chờ ACK từ server

- CLOSE_WAIT

Server: Khi server nhận được gói FIN từ client, nó gửi ACK và chuyển sang trạng thái CLOSE_WAIT, chờ client kết thúc kết nối

- FIN_WAIT_2

Client: Sau khi nhận được ACK từ server, client chuyển sang trạng thái FIN_WAIT_2 và chờ nhận gói FIN từ server

- LAST_ACK

Server: Sau khi server gửi FIN để kết thúc kết nối, nó chuyển sang trạng thái LAST_ACK, chờ nhận ACK cuối cùng từ client

- TIME_WAIT

Client: Sau khi client gửi ACK cho gói FIN từ server, nó vào trạng thái TIME_WAIT, chờ 30 giây để đảm bảo không có gói tin trễ nào tồn tại trước khi đóng kết nối hoàn toàn

- CLOSED

Sau khi chờ hết thời gian TIME_WAIT, client quay trở lại trạng thái CLOSED, hoàn tất quá trình đóng kết nối

3.3.3.4 TCP flow control - Kiểm soát luồng

-Điều khiển lưu lượng (flow control) là một cơ chế trong giao thức TCP nhằm đảm bảo rằng người gửi không gửi dữ liệu quá nhanh hơn so với khả năng xử

lý của người nhận Điều này giúp tránh tình trạng quá tải bộ đệm và mất dữ liệu

- Cách hoạt động của TCP flow control :

+ Cửa sổ nhận (Rwnd): Điều này giúp điều chế tốc độ truyền dữ liệu để phù hợp với khả năng xử lý của phía nhận

+Cửa sổ tắc nghẽn(Cwnd): Nó giúp quản lý hiệu quả băng thông mạng bằng cách kiểm soát lượng dữ liệu mà người gửi có thể truyền đi mà không gây ra tắc nghẽn

3.3.3.5.Quản lý kết nối TCP

- TCP là một giao thức theo hướng liên kết , hay nó phải thiết lập 1 liên kết giữa một cặp thực thể TCP trước khi truyền dữ liệu Thiết lập liên kết TCP được thực hiện trên hoạt động cơ bản bắt tay ba bước

PAGE \* MERGEFORMAT 1

Trang 10

Hình 3.3 Bắt tay ba bước của TCP[1]

Bước 1 : A gửi SYN cho B

Bước 2 : B nhận SYN , trả lời bằng SYN/ACK

Bước 3 : A nhận SYN/ACK , trả lời ACK có thể kèm theo dữ liệu

-Sau khi hoàn thành 3 bước này, kết nối TCP được thiết lập thành công và máy khách và máy chủ có thể bắt đầu trao đổi dữ liệu

- Tại sao không dùng giao thức bắt tay 2 bước ?

Bắt tay 2 bước là một quá trình quan trọng trong việc thiết lập kết nối TCP Tuy nhiên, nó có thể bị ảnh hưởng bởi các yếu tố như:

-Độ trễ thay đổi: Độ trễ trên mạng có thể thay đổi theo thời gian, dẫn đến việc gói tin bị truyền lại hoặc bị sắp xếp lại

-Mất tin nhắn: Các gói tin có thể bị mất trên đường truyền, dẫn đến việc phải truyền lại

-Sắp xếp lại tin nhắn: Các gói tin có thể bị sắp xếp lại theo thứ tự khác với thứ

tự được gửi đi

-Không thể "nhìn thấy" bên kia: Người gửi và người nhận không thể trực tiếp nhìn thấy nhau và biết được trạng thái của bên kia

Do đó, mặc dù bắt tay 2 chiều là một cơ chế cơ bản trong TCP, nó không thể đảm bảo rằng kết nối sẽ được thiết lập thành công trong mọi trường hợp

3.3.3.6 Điều khiển tắc nghẽn trong TCP

Điều khiển tắc nghẽn TCP là một cơ chế giúp ngăn chặn mạng bị quá tải và đảm bảo truyền dữ liệu hiệu quả Khi mạng bị tắc nghẽn, tốc độ truyền dữ liệu

sẽ giảm đi đáng kể và có thể dẫn đến mất gói tin

Khi nào tắc nghẽn xảy ra ?

- Quá nhiều cặp gửi-nhận diễn ra cùng lúc

-Truyền quá nhiều làm cho mạng quá tải

- Nguyên lý kiểm soát tắc nghẽn

+Nguyên tắc 1: Slow start

* tăng tốc độ theo hàm số mũ

PAGE \* MERGEFORMAT 1

Trang 11

*tiếp tục tăng đến một ngưỡng nào đó

+Nguyên tắc 2: Tránh tắc nghẽn

*Tăng dẫn tốc độ theo hàm tuyến tính cho đến khi phát hiện tắc nghẽn +Nguyên tắc 3: Phát hiện tắc nghẽn nếu gói tin bị mất

3.3.3.7 TCP congestion control: Chi tiết hành vi gửi của TCP

*TCP congestion control: AIMD

AIMD (Additive Increase, Multiplicative Decrease) là một thuật toán điều khiển tắc nghẽn trong giao thức TCP Thuật toán này sử dụng cách tiếp cận sau:

-Tăng tốc độ truyền: Người gửi có thể tăng tốc độ truyền dữ liệu cho đến khi xảy ra mất gói tin (tắc nghẽn)

-Giảm tốc độ truyền: Khi phát hiện mất gói tin, người gửi sẽ giảm tốc độ truyền dữ liệu

Additive Increase

Tăng tốc độ truyền: Tăng tốc độ truyền dữ liệu bằng cách tăng kích thước phân đoạn tối đa (maximum segment size) một đơn vị trong mỗi RTT cho đến khi phát hiện mất gói tin

Multiplicative Decrease

-Giảm tốc độ truyền: Giảm tốc độ truyền dữ liệu bằng cách giảm một nửa mỗi khi xảy ra sự kiện mất gói tin

TCP AIMD: Chi tiết giảm nhân

-Tốc độ truyền bị giảm một nửa khi phát hiện mất gói tin bằng cách nhận ba ACK trùng lặp (TCP Reno)

-Tốc độ truyền bị giảm xuống 1 MSS (kích thước phân đoạn tối đa) khi phát hiện mất gói tin bằng cách hết hạn (TCP Tahoe)

Tại sao sử dụng AIMD?

AIMD là một thuật toán phân tán, không đồng bộ, đã được chứng minh là:

- Tối ưu hóa tốc độ lưu lượng tắc nghẽn trên toàn mạng!

- Có tính ổn định mong muốn

*TCP Slow start

-Slow start là giai đoạn đầu tiên của thuật toán điều khiển tắc nghẽn TCP, trong đó người gửi tăng tốc độ truyền dữ liệu theo cấp số nhân Sau khi xảy ra

sự kiện mất gói tin đầu tiên, thuật toán chuyển sang giai đoạn congestion avoidance

Ý tưởng cơ bản:

- Đặt cwnm bằng 1 MSS (Maximum segment size )

- Tăng gấp đôi cwnm lúc nhận được ACK

- tiến trình chậm dần nhưng tăng theo hàm mũ

Tăng cho đến một ngưỡng: ssthresh

- TCP chuyển sang trạng thái tránh tắc nghẽn

*TCP CUBIC

- Nếu bạn đang sử dụng một hệ điều hành Linux và một máy chủ web phổ biến, rất có thể thuật toán điều khiển tắc nghẽn TCP đang được sử dụng là CUBIC -CUBIC đã được chứng minh là một thuật toán hiệu quả và đáng tin cậy cho việc truyền dữ liệu trên mạng máy tính

*TCP và liên kết cổ chai tắc nghẽn

PAGE \* MERGEFORMAT 1

Ngày đăng: 24/12/2024, 16:09