日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

tcp ip協(xié)議到底在講什么

先來談談汽車行業(yè),隨著家庭轎車的普及,越來越多的人開始使用汽車,其中99%人可能只會開車,不會修理汽車,也不了解汽車內部構造(細節(jié)),但這并不影響我們使用汽車 。

tcp ip協(xié)議到底在講什么


而對于汽車維修工程師,很顯然要精通汽車的內部構造,非常資深的工程師可以通過汽車的聲音來定位故障點,這依靠的是多年的經(jīng)驗 。而對于初入行的年輕工程師,如果只是看汽車的維修手冊,即使看千遍也不一定會維修汽車 。經(jīng)常去4S店看到維修工將受損嚴重的汽車大卸八塊,有時還會有老師傅在邊上指導,通過這些動手操作,加上師傅的指導,再去參考維修手冊,要不了多久就會很熟練地維修汽車,這樣的模式:動手 + 理論 + 師傅指導 同樣也適用于計算機網(wǎng)絡的學習 。
對于99%用戶也不需要懂計算機網(wǎng)絡,電腦、手機可以自動上網(wǎng),即使有什么問題,通過插拔線、重啟電腦、重啟無線路由器基本上可以解決90%以上的問題 。但是做為一位網(wǎng)絡專業(yè)人士,則需要精通計算機網(wǎng)絡的工作原理,精通原理可以幫助非專業(yè)人士提供專業(yè)的服務 。
TCP/IP協(xié)議不是計算機網(wǎng)絡的全部,但TCP/IP協(xié)議涵蓋了OSI參考模型的第三層、第四層,即網(wǎng)絡層、傳輸層 。TCP/IP也不是只有TCP + IP這兩種協(xié)議,它是協(xié)議棧的統(tǒng)稱,至少它還包括 ARP,ICMP,IGMP,UDP,以及讓域名訪問成為可能的DNS,以及電腦/手機可以自動獲取IP地址的DHCP 。當然還有形形色色的應用層的協(xié)議如 HTTP / SMTP / FTP 等 。
回到問題本身,《TCP/IP協(xié)議》詳解卷一,是一本很好的教材,但是光看書有用嗎?效果很差,因為這本書有點難度的 。不動手不會有感性認識,然后讀者會被抽象的概念弄的越來越迷糊,覺得越來越無聊,最終扔掉書,因為我干過好多次,然后過段時間又撿起來…
既然光看書很無聊,那就動動手吧 。那時工作在國企,公司網(wǎng)絡和互聯(lián)網(wǎng)隔絕,QQ也無法使用,于是我就按照 Visual C++教程編寫了聊天小程序(基于TCP socket ),把這個小程序給樓下的同事,無聊的時候就聊聊天,比如什么時候去吃午飯,下班什么時候撤?在程序啟動的時候我就開始抓包,想看看究竟聊天內容怎么封裝?究竟幾個包完成發(fā)送任務?
封裝倒很簡單,讓我驚訝的是,一條消息竟然雙向耗費9個包,百撕不得其解,不就是調用一次 connect()建立連接,調用一次 send(),然后程序退出 。
TCP建立連接于是就去翻書,這次有針對性,直接翻到TCP協(xié)議部分,只看TCP如何建立連接,發(fā)現(xiàn)建立連接需要三個包的交互,這個應該是connect()完成的 。
TCP發(fā)送數(shù)據(jù)然后看到自己的消息內容是一個包,對方?jīng)]有數(shù)據(jù),只有確認ACK,這是兩個包,這個由 send () 觸發(fā) 。
TCP釋放連接然后系統(tǒng)自動退出,雖然我的程序沒有調用什么函數(shù),但是系統(tǒng)自動幫我調用了 close () 函數(shù),于是又觸發(fā)了TCP 關閉連接,這是四個包 。
于是把這三個階段包的交換加在一起:3 + 2 + 4 = 9,哦原來是這樣啊,通過這個小程序,再有針對性地看書,覺得很有趣 。
后來我又試試用UDP socket 編寫聊天程序,直接調用一個函數(shù)Sendto() 就可以了(用IP訪問),抓包一看,一個消息就是一個包,對方也沒有確認,UDP就是加上一個封裝頭就出去了,不需要建立連接,自然也無需關閉連接 。
后來工作需要編寫一個仿真程序,模仿GPS接收設備給導航設備周期(100ms 一次)發(fā)送GPS經(jīng)緯度信息 。接口為以太網(wǎng)接口,導航設備有嵌入式操作系統(tǒng),支持TCP/IP協(xié)議棧,有了以前的動手經(jīng)驗,我很快就編寫出基于TCP socket 的仿真軟件,工作也很正常,但是有時發(fā)送數(shù)據(jù)會有卡頓的現(xiàn)象,時快時慢,有時還會停止發(fā)送 。于是開始分析網(wǎng)絡,辦公室網(wǎng)絡是交換機口到墻壁,然后用HUB再分出更多的端口,讓大家共享帶寬 。于是想到了 CSMA/CD機制,電腦工作在半雙工模式,發(fā)送數(shù)據(jù)前需要監(jiān)聽網(wǎng)絡,當網(wǎng)絡繁忙時,大家一起競爭,所以會有很大的延遲 。
于是又用UDP socket 編寫了相同的軟件,卡頓現(xiàn)象好多了,后來我分析因為UDP包沒有自我約束機制,調用一次sendto() 函數(shù)就把數(shù)據(jù)給IP,IP給網(wǎng)卡,網(wǎng)卡有CSMA/CD機制,會等待,也許會有延遲,也許會因為沖突而丟棄重發(fā)、或線路質量差出現(xiàn)CRC錯而丟棄,但我的程序不 care,依然會按照100 毫秒發(fā)送一組數(shù)據(jù),所以我最終選擇UDP來做傳輸機制,丟一組、或幾組數(shù)據(jù)沒有多少關系,只要能把經(jīng)緯度數(shù)據(jù)傳送過去就可以了 。
【tcp ip協(xié)議到底在講什么】寫了這些故事想表達的是:學習協(xié)議一定要動手,最好是結合項目來實踐,然后需要補充哪些理論,有針對性地去翻書,對于每一個陌生的協(xié)議,需要抓包分析,不要偷懶,一份耕耘,一份收獲 。

    推薦閱讀