PDA

View Full Version : TCP/IP


TCP/IP
06-01-2003, 02:48 PM
Làm tí ra mắt anh em ! Bác nào hiểu sâu về mạng thì giới thiệu thêm cho anh em học hỏi với ! :D
Hê hê ! TCP/IP là cái quái gì thế nhẩy ?

TCP/IP gồm 4 lớp giao thức, tương ứng với 7 lớp giao thức của chuẩn ISO OSI. Bốn lớp đó gồm (kể theo thứ tự từ trên xuống dưới): Application layer, Host-to-host layer, Internet layer, cuối cùng là Physical layer. TCP nằm ở lớp thứ 3 (Host-to-host layer), IP nằm ở lớp thứ 2 (Internet layer).

Tên Số thứ tự
Application layer 4
Host-to-host layer 3
Internet layer 2
Physical layer 1

Đi từ trên xuống dưới, lớp ứng dụng sẽ xử lý thông tin và ra lệnh gửi/nhận đến lớp TCP để truyền và nhận dữ liệu.

TCP là viết tắt của Transmission Control Protocol - Giao thức điều khiển truyền tin. TCP phụ trách việc truyền và nhận dữ liệu. TCP giúp cho lớp ứng dụng (Application layer) sử dụng lớp IP (lớp IP là vì lớp Internet chỉ có IP) (Internet Protocol - Giao thức liên mạng) một cách trong suốt. Điều này có nghĩa là lớp ứng dụng không cần biết đến phần cứng sẽ làm việc gì, ra sao, mà chỉ cần quan tâm đến việc xử lý dữ liệu của riêng mình. TCP cũng đảm trách việc nhận đúng dữ liệu và gửi dữ liệu đó đến đúng chương trình cần nhận. TCP còn có chức năng kiểm tra và sửa lỗi thông qua việc đồng bộ hoá (synchronize) thông tin 2 đầu truyền dữ liệu và lời nhận biết (acknowledgement) từ phía nhận dữ liệu.

Lớp IP đảm trách việc tìm đường tối ưu để gửi dữ liệu qua mạng và đưa dữ liệu xuống cho lớp vật lý (Physical layer).

Lớp vật lý chính thức chuyển dữ liệu thành các bit và truyền dữ liệu vào cáp (cable).
Khi dữ liệu đến thì lớp vật lý nhận dữ liệu, gộp lại thành các bit, byte và chuyển lại cho lớp IP. Đến lượt lớp IP sau khi đã kiểm tra dữ liệu là thuộc về giao thức TCP sẽ trả dữ liệu đó cho lớp TCP (lưu ý, tôi dùng từ "lớp TCP" để chỉ đến giao thức TCP, TCP/IP không có "lớp TCP" mà là "Host-to-host layer", bao gồm TCP và UDP. UDP sẽ được nói ở phần cuối bài).

Nguyên tắc hoạt động:
Mục này giới thiệu cách thức hoạt động của lớp TCP và lớp IP.

Các tính chất của TCP:

- Có tính kết nối (connection oriented) với giao tiếp 3 lượt (3-way handshake).
- Phát hiện và sửa lỗi (error detection & recovery).

TCP là một giao thức có tính kết nối. Điều này có nghĩa là mọi kết nối đều có sự thông tin trước. Ví dụ A muốn kết nối tới B thì A phải thong báo cho B biết trước và đợi trả lời đồng ý từ B. Sự thông tin này diễn ra theo 3 bước (3-way handshake) như sau:

1. A gửi thông điệp muốn kết nối tới B. (SYN)
2. B gửi thông điệp đồng ý kết nối lại cho A. (ACK, SYN)
3. A gửi thông điệp đã nhận được sự đồng ý lại cho B. (ACK)

SYN: synchronize, đồng bộ hoá kết nối.
ACK: acknowledgement, sự nhận biết.

Diễn giải quá trình:

Bước 1: A gửi một SYN message tới B, thông báo cổng (port) cần kết nối tới, dung lượng đường truyền của A, khả năng gửi bao nhiêu thông điệp không cần nhận biết (windowing, giải thích sau), và các thông tin khác.

Bước 2: B nhận được thông tin từ A, nếu chấp nhận kết nối sẽ gửi trả thông báo đã nhận được yêu cầu kết nối từ A và chấp nhận sự kết nối, đồng thời cũng gửi thêm thông tin về B như khả năng gửi bao nhiêu thông điệp không cần nhận biết v.v...

Bước 3: A gửi trả ACK message cho B thông báo rằng A đã nhận được. Kết nối thành công.
Ngoài ra, khi muốn chấm dứt kết nối, bốn bước sau sẽ được thực hiện:

1. A gửi tín hiệu chấm dứt kết nối. (SYN)
2. B nhận tín hiệu và gửi trả tín hiệu cho biết đã nhận. (ACK)
3. B gửi tín hiệu cho Application layer thông báo kết nối sẽ bị chấm dứt đồng thời gửi trả cho A tín hiệu thông báo đồng ý chấm dứt. (SYN)
4. A gửi lại cho B tín hiệu cho biết A đã nhận được thông điệp từ B. (ACK)
Nói tóm lại, TCP có tính kết nối.

TCP có tính phát hiện lỗi vì mọi thông điệp gửi theo TCP đều được kiểm tra thông qua một số nguyên 32 bit cho biết giá trị CRC (Cyclic Redundant Check) của thông điệp được gửi. Bên gửi sẽ tính giá trị CRC và gửi kèm trong thông điệp. Bên nhận sẽ tính lại giá trị đó và so sánh với giá trị do bên gửi gửi đi. Nếu không đúng có nghĩa là đã có sự sai sót xảy ra. TCP có tính sửa lỗi vì khi phát hiện ra sai sót, bên nhận sẽ gửi thông điệp báo sai tới bên gửi, đề nghị gửi lại thông điệp bị sai.

Không phải sau mỗi một thông điệp được gửi đi thì đều có một thông điệp thông báo đã nhận được từ bên nhận gửi trả về. Có thể sau 10 thông điệp được gửi đi thì mới có một thông điệp thông báo nhận được gửi trả. Đó gọi là khả năng gửi không cần nhận biết.
Ví dụ:
A gửi cho B 6 lượt, mỗi lượt 1000 bytes, khả năng gửi không cần nhận biết của A là 3, B nhận được thông điệp đầu hoàn chỉnh, thông điệp thứ 2 bị sai, các thông điệp sau bình thường. Quá trình đó sẽ diễn ra như sau:
1. A gửi cho B 3 thông điệp lần lượt.
2. B gửi lại cho A ACK message với giá trị 2000. Nếu B nhận được tất cả các thông điệp hoàn chỉnh, B sẽ gửi lại cho A một ACK message với giá trị 4000 (là giá trị kế tiếp mà A có thể gửi).
3. A gửi lại cho B message thứ 2 (từ vị trí 2000 đến vị trí 2999) và chờ. Lúc này A hy vọng rằng B nhận được thông điệp thứ nhất và thông điệp thứ ba hoàn chỉnh, A sẽ không phải gửi lại toàn bộ các thông điệp từ chỗ bị sai mà chỉ gửi thông điệp bị sai.
4. B gửi lại cho A ACK message với giá trị 4000 cho biết B nhận được 3 thông điệp đầu hoàn chỉnh và A có thể gửi tiếp các thông điệp sau, bắt đầu từ vị trí 4000.
5. A gửi cho B thông điệp thứ 4, 5 và 6.
6. B gửi trả ACK message với giá trị 7000.
Giả sử trong khi gửi thông điệp 4, 5, 6, A chưa kịp gửi thông điệp thứ 5 thì đã nhận được ACK message từ B với giá trị 5000 thì lúc đó window của A sẽ được sửa thành giá trị 3. Nếu A đã gửi thông điệp 4, 5 và nhận được ACK message của B với giá trị 5000 thì window của A được sửa thành 2, A có thể gửi tiếp 2 thông điệp 6 và 7. Có nghĩa là tối đa A có thể gửi ‘window’ lần số thông điệp. Mỗi lần gửi, giá trị window giảm cho đến khi bằng 0. Khi nhận được ACK message, giá trị đó sẽ thay đổi, tăng lên cho đến khi số thông điệp đã gửi đi mà chưa nhận được ACK message bằng giá trị window chính).

Trong quá trình truyền tín hiệu như vậy, nếu bên B cảm thấy có thể nhận được tín hiệu nhanh hơn thì bên B sẽ gửi SYN message lại cho A, thông báo muốn tăng giá trị window lên (giảm thời gian và số ACK message được gửi đi). Bên A sẽ gửi trả ACK message và tự tăng giá trị window lên theo yêu cầu của bên B. Ngược lại, B sẽ đề nghị A giảm giá trị window xuống. Ngoài ra, số lượng thông tin được gửi đi trong mỗi thông điệp cũng có thể thay đổi tuỳ vào đường truyền. Với TCP, lượng thông tin này được đo bằng đơn vị byte. MTU (maximum transmission unit) là số transmission unit (đơn vị truyền) (với TCP được tính là byte) tối đa mỗi thông điệp có thể chứa. Nói tóm lại, sự liên lạc bằng TCP có tính phát hiện và sửa lỗi, cũng như có sự can thiệp một cách tự động của lớp TCP phụ thuộc vào điều kiện đường truyền.

TCP phân biệt các thông điệp gửi cho chương trình này và thông điệp gửi cho chương trình khác thông qua socket. Socket là một khái niệm để chỉ 2 giá trị cần thiết khi khởi tạo kết nối. Đó là địa chỉ IP (IP address) của máy và cổng (port). Nếu B chạy trên một server, nhận kết nối ở cổng 80, có địa chỉ IP là 1.1.1.1. A là máy khách, chạy 2 chương trình client để kết nối tới B, A có địa chỉ là 1.1.1.2. Client đầu tiên dùng port 1024, client thứ 2 dùng port 1025. Khi B nhận tín hiệu kết nối từ client thứ 1, B hiểu rằng tín hiệu đó từ địa chỉ IP 1.1.1.2 và từ port 1024. Tương tự, B hiểu client thứ 2 từ socket khác. Như vậy, khi B trả lời A, B sẽ gửi thông tin tới socket tương ứng với client 1 hay 2 của A. Khi A gửi cho B, B cũng biết thông tin đó từ client 1 hay 2 gửi cho mình thông qua việc nhận biết thông tin đó xuất phát từ socket của client 1 hay 2. Quá trình chuyển thông tin cho lớp ứng dụng này được gọi là multiplexing.

Nói thêm về UDP. UDP là một giao thức truyền khác, cũng nằm ở lớp thứ 3 (Host-to-host layer), cũng làm nhiệm vụ như TCP. UDP khác TCP ở chỗ là một giao thức không có tính kết nối, không có sự kiểm tra và sửa lỗi. UDP dựa vào lớp trên (lớp ứng dụng) để làm việc này. UDP viết tắt của Unreliable Datagram Protocol (tạm dịch giao thức truyền không đáng tin !!! ). Chương trình sử dụng UDP phải tự cài đặt phần kiểm tra dữ liệu. Tuy nhiên, điểm mạnh của UDP là ở chỗ vì không có nhiều tính toán và các thông tin kiểm tra khác nên UDP nhanh hơn TCP, sử dụng ít bộ nhớ cũng như thời gian của CPU hơn. UDP cũng dùng địa chỉ IP và port để nhận biết và chuyển thông tin cho lớp trên.

IP có nhiệm vụ chuyển thông tin đi qua mạng đến nơi cuối. IP làm được việc này nhờ vào một bảng chỉ đường (routing table) dựa trên địa chỉ mạng (network address), không phải dựa trên địa chỉ máy tới) và chuyển thông tin đó tới máy cuối. Trên đường truyền, thông tin có thể qua nhiều trạm trung gian (gateway hay router), cũng sử dụng lớp IP để chuyển tiếp (forward) các tín hiệu đó tới các trạm khác gần máy đích hơn.

hoctrodot
07-01-2003, 03:06 PM
TCP/IP đã có một bài viết rất chi tiết và đầy đủ. Mong bà con xa gần tiếp tục viết bài cho BOX của dân Tin thêm xôm tụ nhé! Ở đây hoctrodot chỉ xin chỉnh sửa một chút về thuật ngữ (trong tiếng Việt) để nghe có vẻ dễ hiểu hơn, thuận hơn thôi!
connection oriented: hướng liên kết, khác với connectionless là không hướng liên kết.
handshake: tín hiệu bắt tay.

TCP có một ưu điểm rất lớn là độ tin cậy cao. Mỗi khi A muốn truyền tin cho B, A gửi tín hiệu yêu cầu và chỉ khi nào B có tín hiệu đồng ý thì kết nối mới xem như được thiết lập và quá trình truyền tin được bắt đầu. Trong quá trình truyền tin, B vẫn sẽ gửi các tín hiệu phản hồi cho A để A có những điều chỉnh hợp lý và quá trình truyền tin cậy hơn. Nhưng bù lại là chi phí vận chuyển lớn, tốn nhiều thời gian, chiếm đường truyền. Header của các gói tin cũng cồng kềnh hơn vì phải có nhiều thông tin điều khiển và kiểm tra. Vì vậy, TCP thường được dùng trong các trường hợp đòi hỏi độ tin cậy cao, chất lượng đường truyền không tốt (hay có nhiễu, sai sót trong quá trình truyền).

Ngược lại, UDP lại không tin cậy bằng, nhưng tốc độ nhanh hơn, header gọn nhẹ hơn. UDP thường được dùng khi không cần đòi hỏi cao quá về độ tin cậy, hạ tầng mạng có chất lượng đường truyền tốt. Đặc biệt, UDP được dùng trong việc truyền thông tin quản trị của quản trị mạng. Bởi vì trong quản trị mạng, tỷ lệ khối lượng thông tin quả trị được truyền trên mạng là rất lớn. Do đó cần phải giảm tối đa lưu lượng của thông tin quản trị. Hơn nữa, khi quản trị mạng (có thể là object, agent ...) gửi thông tin điều khiển, thông báo tới các đối tượng được quản trị bằng giao thức UDP, dựa vào các thông tin phản hồi mà quản trị mạng có thể xác định được trạng thái của mạng.

Mapcon
08-01-2003, 07:44 PM
Em cũng xin góp chút !
ngờ uồn : Network (Academy Japan)
Ethernetrnet là một trong nhiều dạng network và là dạng được dùng phổ biến hiện nay. Trong Ethernet, các máy được nối trực tiếp với cáp chung (common media access) theo mô hình sau:

| Máy 1 Máy 2 Máy 3...
| | | |
|---------+--------------+--------------+----... <--- cáp truy cập chung
|
|-----------------------------------.......

Phạm vi hoạt động của Ethernet không rộng. Mỗi máy có thể kết nối vào dây chung ở khoảng 400m (có thể lên tới 2000m hoặc 4000m). Nếu muốn kết nối xa hơn thì phải có những trạm truyền tiếp (hub, repeater, switch, router, ...). Tốc độ truyền của Ethernet cũng khá cao. Hiện nay thường dùng 100Mbps (FastEthernetrnet) và cũng có 1000Mbps (GigaEthernetrnet).

Chính vì vậy mà Ethernet là mạng dùng CSMA/CD (carrier sense media access/collision detection) để hiểu xem mạng có rỗi mà truyền thông tin không. Vì Ethernet dùng chung cáp nên mỗi máy trước khi gửi tín hiệu phải xem coi cáp chung có rỗi hay không. Mỗi máy kiểm tra tín hiệu của dây chung để biết lúc nào dây chung rỗi hay lúc nào đang bận. Nếu mạng đang bận, máy đó sẽ phải chờ (thường là vào khoảng 7 đến 10 ms) kiểm tra lại. Chẳng hạn cùng lúc mạng đang rỗi mà có 2 máy đồng thời gửi tín hiệu, sẽ xảy ra hiện tượng tín hiệu bị chuyển sai lệch hoặc tín hiệu này chồng lên tín hiệu khác gọi là collision (sự va chạm). Phát hiện ra điều đó, 2 máy sẽ chờ một thời gian ngẫu nhiên. Nếu vô tình thời gian chờ ngẫu nhiên của 2 máy chênh nhau không nhiều, collision lại xảy ra thì thời gian chờ của 2 máy sẽ gấp đôi thời gian chờ ban đầu. Lần thứ 3 sẽ gấp 4, lần thứ 4 sẽ gấp 8... Lặp lại như vậy sẽ dẫn tới việc một máy sẽ gửi tín hiệu đi trước và máy khác đợi tới lượt mình sau. Đó là ý tưởng của carrier sense media access và collision detection.

Cũng chính vì lý do dùng chung cáp nên mọi thông tin gửi đi từ một máy sẽ chạy khắp nơi trên mạng. Việc nhận hay bỏ (accept hay card) sẽ do NIC (network interface card, card giao tiếp mạng) đảm nhận. Đôi khi, việc này sẽ do chương trình đảm nhận (nhiều card mạng không card các tín hiệu không phải dành cho mình mà tin tưởng vào chương trình sẽ không nhận các tín hiệu đó). Giả sử máy A gửi tín hiệu cho máy B trong cùng mạng. Máy C, nếu ở trong cùng mạng đó, cũng sẽ nhận được tín hiệu do máy A gửi. Vậy thì làm sao máy 2 máy có thể gửi thông tin cho nhau?

Vấn đề này được giải quyết ở lớp Data link (trong 7 lớp OSI). Data link layer có một sublayer gọi là Media Access Control (MAC) sublayer. Lớp này làm nhiệm vụ nhận và chuyển tín hiệu vào cáp chung dựa trên địa chỉ card mạng.

Địa chỉ card mạng hay còn được gọi là MAC address là một chuỗi 6 byte, phân ra làm 2 phần. Phần đầu tiên gồm 3 byte, được quy định bởi IEEE (Institute of Electrical & Electronics Engineers) cho nhà sản xuất. Mỗi nhà sản xuất sẽ có 3 byte riêng biệt. Ví dụ IBM có 3 byte khác với 3COM. Phần thứ 2 gồm 3 byte cuối, do nhà sản xuất quyết định. Ví dụ địa chỉ MAC FF.00.FF.E0.01.56 thì phần xác định nhà sản xuất là FF.00.FF, phần xác định card là E0.01.56. Với các chia địa chỉ MAC như vậy sẽ không có một card mạng nào có địa chỉ MAC trùng với một card nào trên thế giới. Do đó, khi một máy trong mạng Ethernet gửi thông tin đến máy khác, máy đó dùng địa chỉ MAC của máy kia. Máy nhận so sánh địa chỉ MAC được gửi đi với địa chỉ MAC của card mình. Nếu là thông tin gửi cho mình thì hai địa chỉ đó sẽ giống nhau và máy nhận nhận thông tin đó. Nếu không phải, máy nhận sẽ bỏ qua, không xử lý (trên lý thuyết).

Một máy (máy thứ nhất) muốn biết địa chỉ MAC của máy khác (máy thứ hai) sẽ gửi thông điệp ARP (Address Resolution Protocol, Giao thức tra cứu địa chỉ, từ IP ra MAC, từ MAC ra IP sẽ dùng RARP, Reverse Address Resolution Protocol) đi khắp subnet nếu máy thứ đó biết máy thứ hai ở trong cùng subnet. Máy thứ hai sẽ trả lời máy thứ nhất với địa chỉ MAC của mình và cũng lưu lại địa chỉ MAC của máy thứ nhất để dùng cho sau này. Mô hình như sau (ví dụ cho IP, các giao thức khác cũng tương tự):

Máy 1: IP 1.1.1.1, MAC: 00.FF.FF.00.00.03
Máy 2: IP 1.1.1.2, MAC: 05.FF.0E.00.05.04

Tôi có địa chỉ MAC 00.FF.FF.00.00.03. Ai có IP 1.1.1.2 thì trả lời.
Máy 1 ----------------------------------------------------------> Toàn subnet (multicast)
Tôi có IP 1.1.1.2 với địa chỉ MAC 05.FF.0E.00.05.04.
Máy 2 ----------------------------------------------------------> Máy 1

Trong khi đó, máy 2 cũng lưu lại địa chỉ MAC 00.FF.FF.00.00.03 của máy 1 để dùng lại sau này.

Sau khi đã biết được địa chỉ MAC của nhau, việc gửi thông tin có thể được tiến hành bình thường theo qui tắc định sẵn !

to Admin : Sao bác im tiếng thế ...he he :D

nowornever
26-02-2003, 10:07 PM
More ifr :

Bạn có thể làm được gì với TCP và UDP

-Thứ nhất khi hiểu được IP,TCP,UDP tạo bạn có một cảm giác ảo rằng bạn

đã hiểu được về mạng rồi. Thế là bạn sẽ făng făng đọc các tài liệu về giao

thức khác. Chẳng hạn Http là một ví dụ

-Khi bạn thấy một mô hình truyền tin trên mạng bạn sẽ cảm nhận rằng mô

hình này có nền tảng ở đâu (chẳng hạn chat, mail). Mod nhất là VOIP đó

-Khi bạn nghe người ta nói rằng gói tin đến máy của bạn thì bạn có những

suy nghĩ rắc rối hơn trời ơi có tôi mở cả Hostmail cả yahoo sao mà lắm gói

tin đến máy của tôi thế làm sao nó phân biệt được----------> bạn sẽ mỉm

cười nếu bạn học TCP và UDP

- Bạn đã lập trình qua Socket chưa? nếu mà chưa thì đã bỏ qua một cơ hội

hiểu TCP/IP rùi

-Cuối cùng cũng muốn nói với bạn rằng mạng máy tính còn có phần cứng

và phần mềm của nó nữa đó.(các khái niệm Server, Host, Firewall, gateway, router,switch, hub, WinNT bạn đã clear chưa?) Tất cả nó từ TCP/IP và kết nối mạng mà ra đấy.

Mapcon
28-02-2003, 12:08 PM
Thấy bác nowornever nói đến lập trình Socket nên em cũng nói thêm một chút về Socket :

Dữ liệu được truyền qua mạng dưới dạng các gói ( Packages ) có kích thước giới hạn, được gọi là các Datagrams. Mỗi Datagram chứa Header và Payload (tải). Header chứa địa chỉ và cổng mà gói tin sẽ đến, địa chỉ và cổng xuất phát của gói và các thông tin điều khiển khác. Payload chứa dữ liệu của gói tin , do Datagram có độ dài giới hạn nên các thông tin được truyền đi sẽ được chia nhỏ ra và chúng sẽ được kết hợp trở lại khi tất cả đến đích. Chính vì thế nên có khả năng một số gói tin bị mất hoặc bị hư hỏng trong quá trình truyền tin dẫn đến việc phải truyền lại .

Socket xuất hiện đã làm đơn giản cách quản lý các thao tác trên. Nó cho phép người lập trình coi kết nối mạng như là một luồng khác mà các Bytes có thể được ghi vào hay đọc ra từ đó. Socket được phát triển từ một đặc điểm rất quan trọng của Unix, đó là : Tất cả các thiết bị Vào/Ra (I/O) được coi như là một File I/O cho người lập trình, chẳng hạn như bàn phím, màn hình,....Socket không cho phép người lập trình thấy được các chi tiết ở mức thấp như kiểu truyền, kích cỡ gói tin, địa chỉ mạng,...

Một Socket có thể thực hiện các thao tác cơ bản như :

+ Kết nối tới một trạm

+ Gửi dữ liệu

+ Nhận dữ liệu

+ Ngắt kết nối

+ Liên kết với một cổng nào đó

+ Nghe ngóng , xem xét dữ liệu đến

+ Chấp nhận kết nối từ một trạm nào đó trên một cổng đã liên kết

Ngoài ra chúng ta còn có 2 khái niệm nữa đó là Client Socket & Server Socket , vậy chúng nó là quái cái gì thế : Client Socket là các chương trình mở một Socket đến 1 Server đang đợi kết nối.Cliet Socket thường được sử dụng trong các trường hợp như :

+ Tạo 1 Socket mới

+ Socket muốn kết nối tới một trạm

+ Khi kết nối đựơc thiết lập thì trạm cục bộ và trạm ở xa lấy các luồng thông tin I/O ra từ Socket và sử dụng chúng để gửi dữ liệu cho nhau. Kết nối kiểu này được gọi là kết nối 2 chiều (Full - duplex), cả 2 trạm đều có thể gửi và nhận dữ liệu.

+ Khi quá trình truyền dữ liệu đã xong thì kết nối sẽ bị ngắt bởi một trong 2 trạm hoặc là cả 2 ( thường là cả 2 ).

Tuy nhiên chỉ Socket Client thì chưa đủ, để các Client sử dụng nhiều lần thì chúng phải có khả năng giao tiếp với Server. Để tạo ra 1 Socket thì cần phải biết rõ trạm mà ta muốn kết nối. Nhưng khi viết một ứng dụng Server ta không được biết trạm nào và khi nào một trạm sẽ kết nối với Server. Hay nói cách khác thì Server lúc này giống như một ông bảo vệ ngồi trực máy ở phòng trực cơ quan, ông ta sẽ chẳng biết khi nào và ai sẽ gọi tới nhưng khi có chuông thì ông ta cứ nhấc máy lên và " Alô !...." với bất kì ai . Vậy thì 1 Socket Server chạy trên một Server và nghe ngóng các kết nối tới Server. Mỗi Socket Server kiểm soát một cổng trên một trạm nào đó. Khi một Client Socket trên một trạm nào đó muốn kết nối vào cổng đó thì Server sẽ thiết lập một kết nối với trạm đó và mở một Socket giữa 2 trạm. Tóm lại thì Client Socket khởi tạo kết nối còn Server Socket thì chờ kết nối.

nowornever
28-02-2003, 08:10 PM
Mô hinh truyền thông không nhất thiết phải có một Server làm switch đâu chú em ah`.

Ý chú em nói rằng các Client nói chuyện với nhau qua Server, nếu như là chat hay web thì với thế nhưng nếu là "mô hình truyền thông hình ảnh thực" thì hơi bị khó khi làm mô hình này đấy hình ảnh có tín hiệu bét ra là 200k đến 300k (anh cũng không nhớ nữa) có Server nào chiu nổi không?

Có nghĩ ra thuật toán nào khác cái mô hình cổ truyền đi không? để hội nghị thoại trong mạng LAN hay truyền hình trong mạng LAN không?

TCP/IP
03-03-2003, 01:18 PM
Thế thì bác [n] nowornever [/b] nói luôn về vấn đề này để anh em được rõ hơn ! Còn những cái mà Mapcon đề cập thì đó là những gì mang tính lý thuyết mà sách vở vẫn đề cập để giúp ta hiểu về cơ bản là nó hoạt động như thế nào thôi.

Hoatigon-xanha
03-03-2003, 10:19 PM
Server người ta không dùng chuyển tải nữa mà người ta dùng để báo hiệu (Tất nhiên là thông tin này phải la TCP vì nó cần sự tin cậy). Nó không còn gọi là Server nữa mà gọi là Trung khu điều khiển. Nói chuyện với trung khu điều khiển rằng tôi muốn nói chuyện với Host nào port nào. trung khu điều khiển báo cho Host đích rằng có kênh muốn nói chuyện với mình ở cai port đó. Tất niên là port cua UDP rồi
(Tại sao lai dùng UDP biết không? chính là tại vì cái thông tin cần thời gian thực hơn là Creditable). Dữ liệu lúc đó tự tống đến cổng UDP đã thoả thuận. Tất nhiên vai trò của Switch_Hub cũng đóng vai trò quan trọng. Trong cai mạng LAN đấy phải có cái Switch để ngăn tải. Chứ dung Hub thì mô hình này cũng xem như là vô nghĩa. Nếu bạn chịu khó tìm hiểu về Virtual Lan và boardcast Address thì bạn sẽ có giải pháp nữa (Mô hình mình vừa nói là Cấp hàng đến tận tay người tiêu dùng qua người môi giới chứ không bán hàng qua chợ nữa )

nowornever
03-03-2003, 10:27 PM
Xin lỗi nhé cài bài trên là do tôi viết nhưng không hiểu sao lai gửi thành cái tên của bạn nào