我對tcp的初步理解

 以前總聽說tcp/ip協議,感覺很叼,總搞不清是個什麼東西。

最近在看unix網絡編程,似乎有點懂了,不就是源代碼麼。也就是內核的一部分,至於是誰規定出來的,是誰寫出來的,我想應該是n個牛人協議出來的吧。

以前看書的時候總有這樣的問題,爲什麼有了tcp就可以實現網絡的數據傳輸呢?(是不是我有點SB)。現在總算是有點感覺了。

我說個例子看看是不是這樣:

目的:實現兩臺主機之間的簡單tcp通信,就a和b吧。

過程:

1 a想和b通信,那麼a就要有b的相關相關信息,爲什麼?你和別人打招呼都不用知道別人的類似名字之類的東西嗎!那a爲什麼能夠知道b的相關信息勒?這就是tcp協議該乾的事了,別問我tcp協議在哪兒?它就在你的unix/linux內核裏。具體tcp要做的事是把bip,port,等一切相關的信息寫到一定的結構裏,如sockaddr_in。這就是a要做的基本的準備工作。

2 b呢?它需要有什麼準備?你去和別人打招呼,別人準備什麼?等着唄,天知道你什麼時候和人家打招呼啊,只能等着。~~他只需要有打招呼這個心理準備就行了。回到我們的b上,它只需要聽着(listen())有沒有外面的連接來就行了。至於listen之前的工作,我就不說了,網上很多詳細內容的。行了,b也可以了。

Ps 爲什麼這樣就實現了端對端的通信呢?我以前很納悶,答案是因爲這就是tcp規定的(當然前提是這兩個系統裏都有tcp這部分的源代碼),它說行不就行了!想想自己真是太…….

3 好了,現在可以通信了。

再看看tcp它到底幹什麼了?我的理解是:兩個老外,一個會說德語和英語,一個會說韓語和英語。他們兩個人交流時各自用自己的語言,肯定是不通的。此時要是有第三個人他說;“你們爲什麼不用英語交流呢?”那麼他們就可以交流了。沒錯,Tcp充當的就是第三者,兩個老外就是ab,也許他們都有各自的很多通信協議,什麼tcp,udp啊,只要找到一個a b都有的通信機制,它們自然就通了。

簡單的說tcp就是提供了一個模式。

概念不準,但希望例子多少會有點用,看概念的話,書比我清楚,哈哈

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章