TCP dùng cơ chế cửa sổ (window) để điều khiển luồng dữ liệu. Khi một kết nối đợc thiết lập, mỗi đầu kết nối cấp phát một vùng đệm để lu giữ các dữ liệu đến, và gửi đi kích thớc của vùng đệm đến đầu kia. Khi dữ liệu đến, máy nhận gửi đi các acknowledgement và chúng cũng chỉ ra kích thớc vùng đệm còn lại. Khối lợng buffer sẵn có tại bất kỳ thời điểm gọi là cửa sổ, và một sự thông báo về kích thớc của nó gọi là một thông báo cửa sổ (window advertisement). Một máy nhận gửi đi một thông báo cửa sổ trong mỗi acknowledgement.
Nếu ứng dụng nhận có thể đọc dữ liệu ngay khi đến, máy nhận sẽ gửi một thông báo giá trị cửa sổ dơng theo mỗi acknowledgement. Tuy nhiên, nếu bên gửi thực hiện nhanh hơn bên nhận (có thể do tốc độ CPU nhanh hơn), dữ liệu sẽ đầy vùng đệm của máy nhận làm cho máy nhận có cửa sổ là 0. Máy gửi khi nhận đợc thông báo giá trị cửa sổ là 0 sẽ phải dừng gửi đến khi máy nhận gửi trở lại một thông báo giá trị cửa sổ dơng.
Trong hình vẽ, máy gửi dùng một phân đoạn kích thớc cực đại là 1000 byte. Sự truyền đi bắt đầu khi máy nhận thông báo một kích thớc cửa sổ ban đầu là 2500 byte. Máy gửi ngay lập tức truyền đi 3 đoạn, hai đoạn 1000 byte và một đoạn 500 byte. Khi các đoạn đó đến, máy nhận tạo ra một acknowledgement với kích thớc cửa sổ giảm xuống bằng lợng dữ liệu đến.
Trong ví dụ này, 3 đoạn đầu tiên điền vào vùng đệm của máy nhận nhanh hơn tốc độ ứng dụng có thể tiêu thụ dữ liệu. Do vậy, cửa sổ thông báo sẽ tiến tới 0, và máy gửi không thể truyền thêm dữ liệu nữa. Sau khi ứng dụng nhận tiêu thụ dữ liệu 2000 byte, máy nhận gửi đi một acknowledgement để thông báo kích thớc cửa sổ là 2000 byte. Kích thớc của cửa sổ luôn đợc thông báo lớn hơn dữ liệu đợc chấp nhận, do vậy, máy nhận đang thông báo rằng nó chấp nhận 2000 byte vợt quá 2500 byte nó đã nhận. Máy gửi đáp lại bằng việc truyền thêm hai đoạn nữa. Khi mỗi đoạn đến, máy nhận gửi một acknowledgement với kích thớc cửa sổ giảm đi 1000 byte.
Lặp lại lần nữa, kích thớc cửa sổ giảm tới 0, làm cho máy gửi dừng việc truyền tin. Cuối cùng, ứng dụng máy nhận thu thập đợc dữ liệu, và TCP nhận truyền đi một ack với
kích thớc cửa sổ dơng. Nếu máy gửi có dữ liệu chờ để gửi, máy gửi có thể tiếp tục quá trình truyền một đoạn khác.
VI. Sự thống nhất 3 bên
Để đảm bảo rằng các kết nối đợc thiết lập hoặc kết thúc một cách an toàn, TCP dùng một cách bắt tay 3 bên trong đó 3 thông điệp sẽ đợc trao đổi. Các nhà khoa học đã chứng minh rằng sự trao đổi 3 bên là cần thiết và đủ để đảm bảo rằng sự thống nhất này là rõ ràng bất chấp sự mất gói tin, trùng lặp và độ trễ.
TCP dùng thuật ngữ đoạn đồng bộ (synchronization segment) để miêu tả các thông điệp trong bắt tay 3 bên dùng để tạo ra kết nối, và thuật ngữ FIN segment (finish) để miểu tả các thông điệp trong bắt tay 3 bên khi đóng kết nối. Hình dới minh hoạ bắt tay 3 bên dùng để đóng một kết nối.
Hình 30. bắt tay 3 bên dùng để đóng kết nối. Các ack gửi đi theo mỗi hớng để đảm bảo rằng tất cả các dữ liệu đã đến trớc khi kết nối đó kết thúc.
Giống nh các thông điệp khác, TCP tủyền lại các đoạn SYN hoặc FIN bị mất. Hơn nữa, sự bắt tay đảm bảo TCP không mở hoặc đóng một kết nối chỉ khi cả hai bên đều tơng tác với nhau.
Một phần để tạo ra bắt tay 3 bên dùng để tạo ra một kết nối đòi hỏi mỗi đầu tạo ra một số 32 bit ngẫu nhiên. Nếu một ứng dụng cố gắng thiết lập một kết nối TCP mới sau khi một máy tính khởi động lại, TCP chọn một số ngẫu nhiên mới. Bởi vì mỗi kết nối mới nhận một dãy giá trị ngẫu nhiên mới nên một cặp ứng dụng có thể dùng TCP để giao tiếp, đóng kết nối và sau đó thiết lập một kết nối mới mà không bị các gói tin trùng lặp hoặc trễ.
VII. Điều khiển tắc nghẽn
Một trong những lĩnh vực thú vị nhất của TCP đó là cơ chế điều khiển tắc nghẽn. Trong hầu hết liên mạng hiện đại, mất gói tin (hoặc trễ trong thời gian dài) có thể bị gây ra bởi tắc nghẽn nhiều hơn là do phần cứng trục trặc. Thú vị là các giao thức truyền thông thực hiện sự truyền lại có thể còn làm nghiêm trọng sự tắc nghẽn bởi việc tống thêm nhiều bản sao của một thông điệp vào mạng. Nếu tắc nghẽn gây ra bị truyền lại qua nhiều, toàn
Gửi đi FIN+ACK
Sự kiện ở máy trạm 2
Sự kiện ở máy trạm 1
Gửi đi FIN+ACK Nhận FIN+ACK Nhận FIN+ACK
Gửi ACK
bộ hệ thống có thể tới một tình trạng sụp đổ tắc nghẽn (congestion collapse), tơng tự nh tắc nghẽn giao thông trên đờng cao tốc. Để tránh sự cố này, TCP luôn luôn dùng gói tin bị mất để đo độ tắc nghẽn của mạng, và đáp lại bằng việc giảm tốc độ truyền lại dữ liệu.
Mỗi khi một thông điệp bị mất, TCP bắt đầu điều khiển tắc nghẽn. Thay vì truyền lại dữ liệu đủ để điền đầy vùng đệm của máy nhận, TCP bắt đầu bằng việc gửi đi một thông điệp đơn có chứa dữ liệu. Nếu ack đến mà không có thông tin bị mất, TCP sẽ gấp đôi lợng dữ liệu gửi đi, và gửi đi 2 thông điệp nữa. Nếu có ack trả lời cho 2 thông điệp đó, TCP sẽ gấp 4 lần lợng dữ liệu và cứ nh vậy. Sự tăng theo hàm mũ đến khi TCP gửi đợc một nửa kích thớc của cửa sổ máy nhận và nó sẽ giảm dần tốc độ tăng để truyền.
Cơ chế điều khiển tắc nghẽn của TCP đáp ứng rất tốt sự tăng nhanh của liên mạng. Bằng cách giảm nhanh chóng, TCp có thể tránh đợc sự tắc nghẽn. Hơn nữa, bởi vì nó tránh thêm vào sự truyền lại với tắc nghẽn của liên mạng, cơ chế điều khiển tắc nghẽn của TCP ngăn ngừa đợc sự sụp đổ do tắc nghẽn.
VIII. Định dạng một đoạn TCP
TCP dùng một định dạng cho tất cả các thông điệp, bao gồm các thông điệp có chứa dữ liệu, ack và thông điệp bắt tay 3bên để khởi tạo hoặc kết thúc một kết nối. TCP dùng thuật ngữ phân đoạn (segment) để chỉ một thông điệp: Hình 20.6 minh hoạ định dạng của phân đoạn đó.
Hình 31. định dạng một phân đoận TCP. Mỗi thông điệp gửi từ TCP trên một máy đến TCP trên máy khác dùng định dạng này bao gồm cả dữ liệu và acknowledgement
Để hiểu định dạng của phân đoạn, cần nhớ lại rằng kết nối TCP có chứa hai luồng dữ liệu theo hai hớng ngợc nhau. Nếu ứng dụng tại mỗi bên cùng truyền dữ liệu đồng thời, TCP có thể gửi một phân đoạn có chứa acknowledgement cho dữ liệu đến, một thông báo cửa sổ chỉ ra lợng cùgn đệm còn trống cho dữ liệu đến và dữ liệu đi. Do vậy, một vài trờng trong phân đoạn để chỉ luồng dữ liệu truyền một hớng, trong khi các trờng khác chỉ luồng dữ liệu truyền theo chiều ngợc lại.
SOURCE PORT DESTINATION PORT
0 4 10 16 24 31 SEQUENCE NUMBER
ACKNOWLEDGEMENT NUMBER HLEN NOT USEDCODE BITS WINDOW CHECK SUM URGENT POINTER
Khi một máy tính gửi đi một phân đoạn, trờng ACKNOWLEDGEMENT NUMBER và trờng WINDOW chỉ dữ liệu truyền đến: trờng ACK NUMBER chỉ ra số thứ tự của dữ liệu nhận đợc và trờng WINDOW chỉ ra vùng trống còn lại của vùng đệm. Trờng SEQUENCE NUMBER chỉ dữ liệu đi. Nó chứa số thứ tự của dữ liệu đợc truyền đi trong phân đoạn. Máy nhận dùng số thứ tự đó để sắp xếp lại các phân đoạn mà đến sai thứ tự và để tính số ack. Trờng DESTINATION PORT xác định chơng trình ứng dụng nào trên máy nhận sẽ nhận dữ liệu này, ngợc lại trờng SOURCE PORT xác nhận ứng dụng nào gửi dữ liệu đi. Cuối cùng trờng CHECKSUM có chứa giá trị checksum của toàn bộ phân đoạn TCP gồm phần header và dữ liệu.
Mục lục
Lời giới thiệu...1
Phần I...2
Sơ lợc về giao thức TCP/IP...2
I. Các lớp và giao thức TCP/IP...2 ...2 Lớp 1: vật lý...2 Lớp 2: Nối ghép mạng ...3 Lớp 3: Internet...3 Lớp 4: truyền tải...3 Lớp 5: ứng dụng...3
II. Máy chủ, router và các lớp giao thức...3
Phần II...3
Địa chỉ IP...3
I. IP_ Địa chỉ giao thức internet...3
Để tạo ra một địa chỉ đồng bộ trong mạng internet, phần mềm giao thức định nghĩa ra một cơ chế đánh địa chỉ trừu tợng mà mỗi host đợc thiết lập một địa chỉ duy nhất. Ngời sử dụng , các chơng trình ứng dụng và các lớp phần mềm giao thức cao hơn sử dụng địa chỉ trừu tợng này để giao tiếp với nhau...4
II. Cơ chế đánh địa chỉ IP...4
Trong stack giao thức TCP/IP, địa chỉ đợc quy định bởi giao thức liên mạng (IP - internet protocol). Chuẩn IP quy định mỗi host đợc thiết lập một số 32 bit duy nhất gọi là địa chỉ giao thức liên mạng của host, hay thờng đợc viết tắt là địa chỉ IP hoặc địa chỉ internet. Mỗi gói tin gửi qua mạng đều có chứa địa chỉ IP 32 bit của máy gửi và địa chỉ của máy nhận. Do vậy, để truyền thông tin qua mạng TCP/IP, một máy tính cần biết địa chỉ IP của máy tính cần truyền đến...4
1. Phân cấp địa chỉ IP...4
2. Các lớp của địa chỉ IP...5 Lớp A, B và C gọi là các lớp cơ bản bởi vì chúng sử dụng cho địa chỉ của các host. Lớp D sử dụng cho multicast để dùng cho một tập các máy tính. Để sử dụng
địa chỉ multicast, một tập các máy trạm phải thoả thuận dùng chung một địa chỉ multicast. Mỗi khi một nhóm multicast đợc thiết lập, một bản sao của bất kỳ gói tin nào chuyên đến địa chỉ multicast đều đợc chuyển đến tất cả các máy trạm
thuộc nhóm multicast...6
3. Tính toán các lớp của một địa chỉ...6
Ký hiệu thập phân bằng chấm...7
4. Các lớp và các ký hiệu thập phân bằng chấm...7
5. Nơi quản lý các địa chỉ...8
III. Ví dụ về một cách đánh địa chỉ...9
IV .Địa chỉ IP đặc biệt...10
1. Địa chỉ mạng ...10
2. Địa chỉ quảng bá trực tiếp...10
3. Địa chỉ quảng bá giới hạn...11
4. Địa chỉ của máy tính này...11
5. Địa chỉ lặp quay lại...11
IP định nghĩa một địa chỉ lặp quay lại đợc sử dụng để kiểm tra các ứng dụng của mạng. những ngời lập trình thờng sử dụng kiểm tra lặp quay lại cho việc tìm lỗi ban đầu với các ứng dụng mạng vừa đợc viết. Để thực hiện kiểm tra lặp quay lại, ngời lập trình cần có hai ứng dụng mà định giao tiếp với nhau qua mạng. Mỗi ứng dụng cần có phần mã lệnh thực hiện việc tơng tác với phần mềm giao thức TCP/IP. Thay vì việc phải thực hiện từng chơng trình trên các máy khác nhau, ngời lập trình có thể chạy cả hai chơng trình trên một máy tính và chỉ dẫn chúng thực hiện địa chỉ IP lặp quay lại khi kết nối. Khi một ứng dụng gửi dữ liệu đến một ứng dụng khác, dữ liệu truyền qua các ngăn xếp giao thức để đến chơng trình kia. Do vậy, ngời lập trình có thể kiểm tra chơng trình ứng dụng của mình một cách nhanh chóng không cần chạy trên hai máy tính và không cần truyền các gói tin qua mạng...11
Tóm tắt các địa chỉ IP đặc biệt...12
6. Dạng địa chỉ quảng bá Berkeley...12
V. Router và các nguyên tắc đánh địa chỉ IP...12
Phần III...14
Đóng kết địa chỉ giao thức (ARP)...14
I.Giới thiệu chung...14
2. Địa chỉ giao thức và sự phân phát các gói tin...14
Để tạo ra đợc một mạng ảo lớn, phần mềm làm việc với địa chỉ IP khi truyền tiếp các gói tin. Cả địa chỉ của máy tiếp và địa chỉ đích của gói tin đều là địa chỉ IP. Không may là địa chỉ giao thức không thể đợc sử dụng để truyền các frame qua phần cứng mạng vật lý bởi nó không hiểu đợc địa chỉ IP. Thay vào đó, frame gửi qua mạng vật lý phải sử dụng định dang frame của phần cứng và tất cả địa chỉ trong frame đều là địa chỉ vật lý. Kết quả là, địa chỉ giao thức của máy tiếp sẽ đ- ợc chuyển thành địa chỉ vật lý tơng ứng trớc khi frame đợc truyền đi...14
II. Phân giải địa chỉ...15
III.Kỹ thuật phân giải địa chỉ...16
IV. Giao thức phân giải địa chỉ...16
VI. Gửi đi một thông điệp ARP...17
VII. Xử lý thông điệp ARP đến...18
IP datagram và datagram forwarding...20
I. IP Datagram...20
II. Truyền tiếp một IP Datagram...21
Mỗi đích liệt kê trong bảng định tuyến là một mạng, không phải là một máy trạm. Sự phân biệt này là quang trọng bởi vì một liên mạng có thể có nhiều gấp 1000 lần máy trạm có trong các mạng này. Do vậy, sử dụng các mạng là các đích trong bảng định tuyến góup cho kích thớc của chúng nhỏ hơn. ...21
III. Địa chỉ IP và các dòng bảng định tuyến...22
IV. Trờng mặt nạ và truyền tiếp datagram...22
V. Các địa chỉ của đích và của máy tiếp...23
VI. Truyền đi với nỗ lực hết mình (Best-effort Delivery)...23
VII . Định dạng header của IP datagram...24
Phần V...25
Sự đóng gói IP, phân đoạn và hợp lại...25
I. Sự truyền đi các datagram và các frame...25
II. Sự đóng gói...26
III. Sự truyền tin qua liên mạng ...26
Nh trên hình vẽ, máy trạm và router lu trữ một datagram trong bộ nhớ mà không có phần header thêm vào. Khi datagram truyền qua mạng vật lý, datagram đợc đóng gói trong một frame thích hợp với mạng đó. Kích thớc của frame header xuất hiện trớc datagram phụ thuộc vào công nghệ của mạng. Ví dụ, nếu mạng 1 là Ethernet, header của frame 1 là Ethernet header. Tơng tự, nếu mạng 2 là mạng vòng FDDI, header của frame 2 là FDDI header...27
V. Nhận dạng một datagram...28
VI. Sự mất phân đoạn...29
Phần VI...29
Giao thức IP tơng lai (IPv6)...29
Sự thành công của giao thức IP...30
I. Các đặc điểm của giao thức IPv6...30
II. Định dạng Datagram của Ipv6...31
Header cơ sở...31
Định dạng header cơ sở của Ipv6...31
II. Ipv6 làm việc với nhiều header nh thế nào...32
III. Sự phân đoạn...33
Base header...34
New Base header...34
New Base header...34
New Base header...34
Giống nha Ipv4, Ipv6 thiết lập một địa chỉ duy nhất cho mỗi kết nối giữa một máy tính với mạng vật lý. Do vậy, nếu một máy tính (có thể là router) kết nối với 3 mạng vật lý, máy tính đó sẽ đợc thiết lập 3 địa chỉ. Cũng giống nh Ipv4, Ipv6 chia địa chỉ thành 2 phần là phần đầu để xác nhận thuộc mạng nào và phần cuối để xác định máy tính cụ thể trên mạng đó...34
Tcp_dịch vụ truyền tin cậy...36
Lời giới thiệu...36
I. Sự cần thiết truyền tin đáng tin cậy...37
II. Sự truyền lại và mất các gói tin...37
III. Sự truyền lại thích hợp...38
IV. So sánh giữa thời gian truyền lại...39
V. Bộ đệm, điều khiển luồng và cửa sổ...40
VI. Sự thống nhất 3 bên...41
VII. Điều khiển tắc nghẽn...41
VIII. Định dạng một đoạn TCP...42
Để hiểu định dạng của phân đoạn, cần nhớ lại rằng kết nối TCP có chứa hai luồng dữ liệu theo hai hớng ngợc nhau. Nếu ứng dụng tại mỗi bên cùng truyền dữ liệu đồng thời, TCP có thể gửi một phân đoạn có chứa acknowledgement cho dữ liệu đến, một thông báo cửa sổ chỉ ra lợng cùgn đệm còn trống cho dữ liệu đến và dữ liệu đi. Do vậy, một vài trờng trong phân đoạn để chỉ luồng dữ liệu truyền một hớng, trong khi các trờng khác chỉ luồng dữ liệu truyền theo chiều ngợc lại...42