UDP-User Datagram Protocol cung cấp dịch vụ phi nối kết và khơng yêu cầu máy nhận thơng báo rằng nĩ đã sẵn sàng cho việc nhận các thơng điệp. Nĩ cĩ thể mang dữ liệu ngay trong gĩi đầu tiên. Các ứng dụng sử dụng UDP thường quan tâm nhiều về tốc độ hơn là độ chính xác của dữ liệu.
Port và Header
Hình V-2. Định dạng khung UDP
Một cách tiếp cận thơng thường nhất(UDP) để trao đổi thơng tin giữa các tiến trình ứng dụng là tiến trình xác định gián tiếp(khơng phải do OS gán) một ví trí ảo giữa hai tiến trình trên hai máy khác nhau để trao đổi thơng tin, nĩ thường được gọi là port. Ý tưởng là máy gửi gửi thơng tin qua một port và máy nhận nhận thơng tin qua một port.
Để thực hiện chức năng phân kênh, mỗi header trong gĩi thơng điệp của UDP chứa một địng danh (port) của máy gửi và máy nhận. Trong hình minh hoạt định dạng khung UDP ở trên, mỗi port cĩ giá trị 16 bit.
Vấn đề tiếp theo là như thế nào một tiến trình biết port mà nĩ muốn gửi 1 thơng điệp. Một tiến trình client khởi tạo trao đổi thơng tin với một tiến trình server, một khi liên lạc được với server, server cĩ thể biết port của client và cĩ thề đáp lại. Một số server nhận thơng điệp ở một cổng cố định. Trong Internet, DNS(Domain Name Server)nhận thơng điệp port 53 ở trên mỗi host.
0 15 16 31 16-bit Source Port Number 16-bit Destination Port Number
16-bit UDP Length 16-bit UDP Checksum
Data (if any)
Hình V-3. Hàng đợi thơng điệp UDP
Minh họa trong hình trên, lúc một thơng điệp được truyền đến, thơng điệp được ở cuối hàng đợi. Nên khi hàng đợi đầy thơng điệp sẽ bị loại bỏ. Khơng cĩ kỹ thuật điều khiển luồn được sử dụng tại đây. Lúc một tiến trình ứng dụng muốn nhận một thơng điệp nĩ lấy từ hàng đợi. Nếu hàng đợi rỗng tiến trình sẽ đợi cho đến khi thơng điệp đến hàng đợi.
Mặc dù UDP khơng thực thi điều khiển luồn, đảm bảo phân phối, trật tự gĩi, nhưng nĩ cũng thực hiện kiểm tra lỗi khi truyền bằng cách sử dụng thuật tốn checksum.
Application Application Application
UDP Các gói đến Hàng đợi Phân kênh các gói Port V.3. Giao thức hướng kết nối TCP
Ngược lại với UDP, TCP-Transmission Control Protocol là một giao thức vận chuyển cung cấp dịch vụ tin cậy, connection-oriented, byte-stream.
Dịch vụ này nâng cao hiệu quả của các ứng dụng bởi vì ứng dụng khơng cần lo lắng về lỗi hay thứ tự dữ liệu khi truyền. TCP cĩ thể là một giao thức thỏa mãn tất cả những yêu cầu này.
• TCP là một giao thức full-duplex(cĩ thể trao đổi thơng tin hai chiều). • TCP cũng gồm một kỹ thuật điều khiển luồn cho mỗi byte-stream mà nĩ cho phép máy nhận giới hạn dữ liệu máy gửi gửi trong một khoảng thời gian nào đĩ.
• TCP hỗ trợ kỹ thuật phân kênh mà nĩ cho phép nhiều chương trình ứng dụng trên bất kỳ máy cĩ thểđồng thời trao đổi thơng tin với các chương trình trên máy khác.
• TCP cũng thực hiện kỹ thuật điều khiển xung đột(khơng làm máy gửi quá tải máy nhận).
1. Định dạng khung:
TCP là một giao thức byte-oriented, điều này cĩ nghĩa rằng máy gửi ghi các byte vào trong một nối kết TCP và máy nhận nhận được byte này từ nối kết TCP. Mặc dù "byte stream" được xem là dịch vụ TCP cung cấp cho các tiến trình ứng dụng. TCP khơng phải chính nĩ truyền các byte riêng biệt qua Internet, máy nguồn nhận các byte từ các tiến trình rồi tạo thành các gĩi cĩ kích thước hợp lý, sau đĩ nĩ gửi các gĩi này đến đích. TCP của máy đích nhận các gĩi vào trong một buffer và tiến trình nới máy đích đọc các gĩi này lúc rảnh rỗi.
H
ình V-4. TCP quản lý một bit stream
Các gĩi được trao đổi giữa hai TCP được gọi là các đoạn, bởi vì mỗi đoạn mang một nhĩm các byte. Câu hỏi đặt ra là như thế nào TCP quyết định đủ số byte để gửi vào trong một đoạn. TCP cĩ 3 kỹ thuật để xây dựng truyền một đoạn:
Application process W rite bytes TCP Send buffer Segmen t Segmen t Segment Transmit segments Application process Read bytes TCP Receive buffer … … …
• TCP chứa một biến maximum segment size(MSS) và nĩ gửi ngay một đoạn khi nĩ nhận đủ số byte từ các tiến trình.
• Các tiến trình yêu cầu thực hiện gửi.
• Sau một khoảng thời gian, nĩ sẽ gửi bất cứ đoạn đang cĩ trong buffer.
Mỗi đoạn TCP chứa một header mơ tả trong hình sau:
0 15 16 31 16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number 32 bit Acknowledgement Number 4-bit Header
Length (Reserved) 6-bit
U R G A C K P S H R S T S Y N F I
N 16-bit Window Size
16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any) Data (if any)
Hình V-5. Định dạng khung TCP SrcPort và DstPort xác định port nguồn và port đích.
<SrcPort, SrcIPAddr, DstPort, DstIPAddr> xác định duy nhất cho một nối kết TCP.
Bởi vì TCP là một nối kết đến và đi, nĩ cho phép một nối kết giữa hai port được thiết lập, sử dụng để gửi và nhạn dữ liệu và sau đĩ đĩng lại và rồi một khoảng thời gian nào đĩ hai port như vậy khẩn cầu một nối kết thứ hai.
SequenceNum, Acknownledgment, AdvertiseWindow được sử dụng trong thuật tốn cửa sổ trượt. Bởi vì TCP là một giao thức byte-oriented nên mỗi byte dữ liệu cĩ một số thứ tự. Trường SequenceNum chứa số thứ tự của byte dữ liệu đầu tiên mang đoạn. Acknownledgment, AdvertiseWindow mang thơng tin về dịng dữ liệu đi theo các hướng khác nhau.
Hình V-6. Minh họa đơn giản một tiến trình TCP
6 bit Flag thường được sử dụng để sắp đặt thơng tin tin điều khiển giữa hai TCP. Nĩ bao gồm SYN, FIN, RESET, PUSH, URG, ACK.
Máy nhận Dữ liệu(SequencyNum)
Máy gửi
Ackownledgment + Advertisedwindow
• SYN và FIN dùng để thiết lập và kết thúc một nối kết.
• ACK thiết lập để chỉ sự hồi báo.
• URG để chỉđoạn chứa dữ liệu khẩn cấp.
• PUSH thiết bị gửi mong muốn một hoạt động push, nĩ muốn TCP máy nhận thơng báo đến các tiến trình sự kiện này.
• RESET thiết bị nhận bị nhần lẫn, ví dụ nĩ nhận một đoạn khơng mong đợi.
• CheckSum dùng để kiểm tra lỗi.
2. Quá trình thiết lập và kết thúc kết nối:
Một nối kết bắt đầu với một client thực hiện một hoạt động mở đến server. Cho rằng server chủ động mở nối kết trước, hai phía hứa hẹn với một thơng điệp trao đổi để thiết lập nối kết. Chỉ sau khi giai đoạn thiết lập nối kết, hai phía mới bắt đầu gởi dữ liệu. Ngược lại, một khi khơng muốn trao đổi, nĩ đĩng nối kết. Mỗi phía tựđộng đĩng nối kết của mình.
Thuật tốn 3 cách bắt tay
Thuật tốn này bao gồm gửi 3 thơng điệp giữa client và server. Minh họa trong hình sau:
Hình V-7.Thuật tốn ba cái bắt tay.
Ý tưởng:
Hai phía đồng ý nối kết trên một tập các thơng số(tất cả các thơng tin mà chúng muốn biết về nhau). Trong trường hợp mở nối kết, đầu tiên client gửi một thơng điệp đến server với (flag = SYN, SequenceNum = x). Server đáp lại với một đoạn chứahồi báo(flag = ACK, ACK = x + 1) và trạng thái bắt đầu (flag = SYN, SequenceNum = y), Kết thúc client hồi báo với thơng điệp (flag = ACK, ACK = y+1).
Lược đồ trạng thái chuyển tiếp:
WAI
Hình V-8. Hình lược đồ trạng thái chuyển tiếp.
Lược đồ này chỉ ra trạng thái yêu cầu để mở một nối kết và đĩng một nối kết.
Cĩ hai loại sự kiện gây ra trạng thái chuyển tiếp:
CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACK CLOSING TIME_WAIT FIN_WAIT_2 FIN_ Trang 85 • Một đoạn đến từ TCP ngang hàng. • Tiến trình ứng dụng cục bộ yêu cầu một hoạt động trên TCP.
Chú ý: Nếu một ACK từ client đến server bị mất(tương ứng với bước thứ ba của 3 cách bắt tay), nối kết vẫn thực hiện đúng. Bởi vì phía client đã thật sựở trạng thái ESTABLISHED, vì vậy các tiến trình ứng dụng cục bộ cĩ thể bắt đầu gởi dữ liệu. Mỗi đoạn dữ liệu này đặt cờ ACK, vì vậy server sẽ chuyển đến trạng thái ESTABLISHED lúc gĩi đầu tiên được nhận.
Tiến trình ứng dụng trên cả hai phía của nối kết phải tự đĩng nữa nối kết. Nếu chỉ một phía đĩng nối kết (cĩ nghĩa là nĩ khơng cịn dữ liệu để gửi) nhưng nĩ vẫn cịn nhận dữ liệu từ phía kia.
Cĩ ba khả năng xảy ra khi một phía đĩng kết nối: • Nĩ đĩng trước phía kia:
ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED
• Nĩ đĩng sau phía kia:
T_1
Passive open Close
Send / SYN SYN/SYN + ACK SYN + ACK/ACK SYN/SYN + ACK ACK Close/FIN FIN/ACK Close/FIN FIN/ACK
ACK + FIN/ACK Timeout after two segment lifetimes
FIN/ACK ACK ACK ACK Close /FIN Close CLOSED Active open /SYN
ESTABLISHED ->CLOSE_WAIT -> LAST_ACK -> CLOSED. • Hai phía cùng đĩng
ESTABLISHED -> FIN_WAIT_1 -> CLOSING -> TIME_WAIT -> CLOSED.
3. Điều khiển dịng truyền (Cửa sổ trượt):
Mục đích của cửa sổ trượt:
• Đảm bảo phân phối dữ liệu tin cậy. • Dữ liệu phân phối theo đúng trật tự
• Sử dụng điều khiển dịng giữa máy gửi và máy nhận.
Để cĩ được kích thước cửa sổ thanh trượt cố định, máy nhận quảng cáo kích thước cửa sổ đến máy gửi. Nĩ được thực hiện bởi sử dụng trường AdvertiseWindow trong header TCP.
Hình V-9. Quan hệ giữa buffer gửi và buffer nhận. Sending application LastByteWritten TCP LastByteSent LastByteAcked Receiving application LastByteRea d TCP LastByteRcvd NextByteExpected a) Phân phối tin cậy và thứ tự
TCP bên phía gửi duy trì một buffer gửi. Buffer này được sử dụng lưu các dữ liệu đã gửi nhưng chưa cĩ hồi báo, cũng như các dữ liệu được ghi bởi các ứng dụng nhưng chưa truyền. Bên phía nhận TCP duy trì một buffer nhận, buffer này lưu trữ dữ liệu đến thứ tự hay khơng thứ tự mà các tiến trình ứng dụng chưa cĩ cơ hội để đọc.
b) Điều khiển luồng
Trong giao thức cửa sổ trượt, kích thước của cửa sổ thiết lập dung lượng dữ liệu mà chúng cĩ thể gửi mà khơng cần đợi hồi báo từ máy nhận. Thật vậy máy nhận cĩ thể bĩp nghẹt máy nhận bởi nĩ quảng cáo một cửa sổ mà nĩ lớn hơn dung lượng dữ liệu lưu trữ của buffer. Do đĩ kích thước cửa sổ trên máy nhận phải thỏa:
LastByteRcvd - LastByteRead <= MaxRcvBuffer
Để tránh quá tải trong buffer, nĩ phải quảng cáo kích thước cửa sổ:
AdvertiseWindow = MaxRcvBuffer -( LastByteRcvd - LastByteRead)
Nĩ thể hiện số khơng gian cịn trống cịn lại trong buffer.
TCP trên máy gửi lấy thơng tin quảng cáo từ máy nhận. Nĩ phải đảm bảo rằng:
LastByteSent - LastByteAcked <= AdvertisedWindow
Máy gửi tính kích thước cửa sổ giới hạn dữ liệu gửi, phải đảm bảo:
EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked)
Rõ ràng, EffectiveWindow phải lớn hơn khơng trước khi nguồn cĩ thể gửi dữ liệu. Cĩ khả năng, một đoạn đến hồi báo x byte, do đĩ cho phép máy gửi gia tăng LastByteAcked thêm x, nhưng bởi vì tiến trình tại các máy nhận khơng đọc bất kỳ dữ liệu, cửa sổ quảng cáo bây giờ giảm x byte so với thời gian trước. Trong trường hợp này, máy gửi cĩ thể giải phĩng buffer nhưng khơng tiếp tục gửi dữ liệu.
Máy gửi cũng đảm bảo rằng các tiến trình ứng dụng cục bộ khơng quá tải buffer gửi bằng cách giới hạn:
LastByteWriten - LastByteAcked <= MaxSendBuffer.
Nếu tiến trình gửi cố gắng viết y byte đến TCP nhưng
LastByteWriten - LastByteAcked + y > MaxSendBuffer
TCP sẽ khố tiến trình gửi và khơng cho phép tạo ra dữ liệu.
V.4. So sánh TCP và UDP
TCP là giao thức cĩ liên kết, quản lý trạng thái liên kết và tin cậy. Tuy nhiên tốc độ truyền của TCP chậm hơn UDP vì phải cĩ thời gian thiết lập, quản lý liên kết. Tùy vào yêu cầu cụ thể của ứng dụng mà sử dụng TCP hay UDP.
Một số các ứng dụng thực tế:
Ứng dụng Giao thức ứng dụng Giao thức vận chuyển
Thưđiện tử SMTP TCP
Truy cập từ xa Telnet TCP
Web HTTP TCP
Truyền File FTP TCP
Phân giải tên DNS thơng thường là UDP Giao thức định tuyến RIP thơng thường là UDP
Chương VI. Giao thức tầng ứng dụng
VI.1. Chức năng:
Chương trình ứng dụng (Applicationa) chạy trên các máy tính, trao đổi thơng điệp (message) với các ứng dụng khác nhằm thực thi vai trị của ứng dụng. Khác với ứng dụng, giao thức tầng ứng dụng (application-layer protocols) là một thành phần của chương trình ứng dụng mạng, dùng để định nghĩa các quy tắc trao đổi thơng điệp và giao tiếp với các dịch vụ được cung cấp bởi tầng dưới (chẳng hạn TCP hay UDP). Ví dụ như Web là một ứng dụng mạng cho phép người dùng lấy những “tài liệu” từ Web server theo yêu cầu. Ứng dụng Web gồm nhiều thành phần, bao gồm các chuẩn định dạng tài liệu (HTML,..), trình duyệt Web (Internet Explorer, Firefox,..), Web server (IIS, Apache,..) và một giao thức ứng dụng. Giao thức ứng dụng của web là HTTP (Hyper Text Transfer Protocol), định nghĩa thơng điệp được truyền giữa Web server và trình duyệt như thế nào. Vì vậy HTTP chỉ là một thành phần của ứng dụng Web.
Giao thức tầng ứng dụng định nghĩa làm cách thức các tiến trình của ứng dụng trao đổi thơng điệp với nhau.Cụ thể giao thức tầng ứng dụng định nghĩa:
• Các loại thơng điệp cần trao đổi khác nhau, ví dụ như thơng điệp yêu cầu (request message), thơng điệp phản hồi (response message),… • Cú pháp của các loại thơng điệp, chẳng hạn các trường của thơng
điệp.
• Ý nghĩa của các trường.
• Các nguyên tắc quyến định lúc và cách thức gửi thơng điệp yêu cầu hay phản hồi.
Các giao thức ứng dụng thường được đặc tả trong RFC và phổ biến rộng rãi. Tuy nhiên cũng cĩ một số giao thức cĩ bản quyền.
VI.2. World Wide Web - HTTP
Hyper Text Transfer Protocol-Giao thức truyền siêu văn bản, sử dụng cho các dịch vụ truyền thơng đa phương tiện WWW, dựa trên mơ hình Client/Server. Dịch vụ WWW cho phép người sử dụng kết hợp văn bản, âm thanh, hình ảnh, hoạt hình tạo nên nguồn thơng tin tư liệu. Đặc biệt ở đây là thơng tin tư liệu trong WWW cĩ dạng chủ yếu là HyperText-là dạng tư liệu chuẩn trong WWW. Về cơ bản đây là các file HTML-Hyper Text Markup Language.HTML sử dụng các thẻ (tag) để mơ tả đối tượng chứa trong nĩ.Giao thức HTTP cho phép lấy và đọc nhanh các tài liệu này.
HTTP là giao thức truyền thơng nhưng cĩ thêm ưu điểm là thơng tin tư liệu cần truy cập lại cĩ chứa các liên kết với các đối tượng khác nằm khắp nơi trên mạng Internet. Phần mền cho Web server là chương trình điều khiển cho sự thu thập các tư liệu WWW trên một máy chủ. Để truy cập WWW cần phải cĩ một trình duyệt (browser) chạy trên WWW client.
HTTP là giao thức Client/Server, được thiết kế để truyền các dạng dữ liệu siêu văn bản.Client yêu cầu truy cập web thơng qua URL (URL request) và Server Gửi các đối tượng tới client thơng quan phản hồi (response). HTTP là một giao thức khơng trạng thái, nghĩa là khi Server đáp ứng được yêu cầu dữ liệu của Client xong thì Server hủy bỏ kết nối đĩ để khơng tốn bộ nhớ cho sự kiện. Khơng trạng thái là yếu tố làm cho tốt độ truyển dẫn giữa Client và Server rất nhanh.
Hình VI-1. Mơ hình hoạt động giao thức HTTP Các giai đoạn kết nối của HTTP:
• Mở kết nối: Client (browser) thiết lập liên kết tới web server (TCP connection) qua cổng 80 (mặc định). Server đồng ý kết nối (accept). • Tạo yêu cầu: Client gửi thơng điệp tới Server yêu cầu dịch vụ. Yêu
cầu bao gồm các tiêu đề của HTTP, nĩ định nghĩa các phương thức được yêu cầu cho tác vụ và cung cấp thơng tin về khả năng của Client (được theo sau dữ liệu gửi tới Server). Các phương thức HTTP điển hình là GET để nhận các đối tượng từ Server và POST để truyền dữ liệu cho đối tượng trên Server.
• Gửi đáp ứng: Server trả lời cho Client bao gồm các tiêu đề để trả lời mơ tả trạng thái của các tác vụ (ví dụ thành cơng hay khơng thành