很多才開始
學習網(wǎng)絡協(xié)議的人可能在最初很難理解
TCP
。所以筆者給大家寫了一個關于網(wǎng)絡協(xié)議入門教程。教程從一個小故事開始
......
夜朦朧,人方靜,無聊的人打開了無聊的電腦看到了一張無聊的圖,想著想著就睡著了,夢到了人
a
和人
b
的一次聊天。
有一天,
a
有事情想跟
b
商量就問
b“
有時間么,想和你聊一下天
”
,
b
想了一會發(fā)現(xiàn)自己能抽出時間就回復
a
說
“
可以啊,并把具體時間告訴了
a”
,
a
收到消息后就高高興興的去安排自己的時間,并告知
b“
我的時間也安排好了,可以說話了
”
,然后
a
和
b
噼里啪啦的說了好長時間,最后
a
的話終于說完了,想要結束聊天了。于是
a
說
“
我的話說完了
”
,
b
這個時候就有兩種可能性了
:b
的話沒說完和
b
的話說完了。
1.
如果
b
的話沒說完,
b
就要跟
a
說
“
我的話還沒說完了,你還得多聽一會,等我說完了著
”
,然后
b
就噼里啪啦的又跟
a
說了一堆事情,
a
就在那里安靜的聽著,終于
b
說完了,這個時候
b
就跟
a
回了句
“
好了,我的事情終于說完了,你可以去忙其他的事了
”
,然后
a
就準備去忙其他的事情,但是他不知道
b
是不是還在想著這次談話,出于禮貌和不放心,
a
還是決定再回一句讓
b
也去忙其他的,于是
a
就給
b
回了一句
“
我要去忙其他的了,你也去忙你的其他的事吧
”
。于是這次談話就愉快的結束了。
2.
如果
b
的話說完了,
b
就說
“
好,我的話也說完了,你去忙其他的事吧
”
,
a
收到了
b
的回話,
a
就準備去忙其他的事情,但是他不知道
b
是不是還在關注著這次談話,出于禮貌和不放心,
a
還是決定再回一句讓
b
去忙其他的,于是
a
就給
b
回了一句
“
我要去忙其他的了,你也去忙你的其他的事吧
”
。
有這次談話,他想到了計算機的世界,計算機
a
要和計算機
b
建立鏈接,如果
b
剛好有資源就可以分配一段資源(建立進程,分配端口號等)去處理
a
的請求,他們之間通過三次
TCP
鏈接后就正式傳輸數(shù)據(jù),處理數(shù)據(jù)。斷開連接則有可能是
b
請求斷開鏈接也有可能是
a
,但是過程是類似的,假設是
a
的數(shù)據(jù)傳完了,就請求斷開鏈接,
b
要給
a
的答復就有兩種可能了,如果
b
還有數(shù)據(jù)沒傳完要斷開鏈接總共就得四次
TCP
鏈接了,如果
b
的數(shù)據(jù)傳完了要斷開鏈接其實三次
TCP
鏈接就可以完事了。
由于考慮到網(wǎng)絡的不穩(wěn)定性、
TCP
的不可靠性以及充分利用計算機資源等原因,人們就給計算機設定了一個合理的最高等待時間限度,如果網(wǎng)絡斷了,過了這個時間限度還沒收到彼此回復,雙方計算機就主動結束這次通信,終止這次通信所帶來的資源開銷。上例中
a
最后一次發(fā)消息給
b
也是由于
b
在這個時間限度內(nèi)不會主動讓出這次通信所占用的資源,為了讓
b
更早的讓出這些資源,
a
就及時發(fā)一個消息主動告訴
b
,讓
b
騰出這段資源去忙其他的。
a
發(fā)送完最后一條消息后等到時間到了這個時間段就也讓出因這次通信所占用的資源。
計算機本來是笨的,然而人類很聰明,就讓計算機變得很聰明;也讓計算機變得很懂禮貌,然而計算機卻讓人類變得越來越不懂禮貌,越來越虛假。晨曦初露,人漸醒,原來只是整個世界打了個盹,做了個不近人情的交易!
”
醒來的那個人,揉了揉眼,不小心碰到了鍵盤,借著微光,無力地瞅了一眼橫在面前的那副圖,心想:
“Y
的,這世界和這圖與我有關么,還害得我一宿沒睡好?
”
于是就又無精打采地趴著睡了。
原文來自:博客園