|
前言:
大家好,我叫克克,這是本人第一次寫這種技術類博客,選擇tcp/ip協議這個課題入手,是以為我也不太懂,看了一些關于此方面的書籍資料也是云里霧里,實在是一塊難啃的骨頭。
首先在這里得感謝互聯網,和互聯網那一端無私分獻自己寶貴經驗的小伙伴們,是你們讓我踏上了嵌入式這條道路,當初在學校學的東西畢業時就還給老師,所以我完全是從小白開始走上這條道路的,作為一個過來人,我覺得有必要寫點什么回饋給大家,幫助后來的小白們,對于我們從事電子的人來說,知識就是財富。接下來的日子里,我會與大家一起學習tcp/ip協議,并分享我的一些心得,分享的過程也是提升自己的過程,讓我們共同進步吧,好了,廢話不多說了。
一、tcp/ip協議概述
玩過單片機的人都知道,不同的芯片直接交互信息,就需要用的各種各樣的協議,所謂協議既是通信雙方事先約定的規則,就好比我們跟老外交談就得用英語,跟他們講漢語他們是聽不懂的,反之亦然。常用的通信協議有RS232,I2C, SPI, 1-wire等等,這些都屬于串行類型的協議,就是信息是按bit傳輸,一個字節需要從高位到低位或者從低位到高位依次發送。每種協議都有各自的優點和不足,這里就不詳談了。
Tcp/ip協議是個協議族,即包含了多種協議,每種協議的完成的任務都不一樣,按照功能可分為四層,如下圖所示:
看上去是不是很復雜,完全不知其所以然,作為一名底層開發者 ,我們有必要從下往上抽絲撥繭一步步揭開迷霧,所謂軟件,其實就是一層一層的封裝,從上往下看是看不到全貌的,而且越看越糊涂。
一、鏈路層之物理通道
我們每天無時無刻不在使用著tcp/ip協議連接別的電腦,我們的話題就從常見的網線開始吧。
網線通常是4對雙絞的線芯組成,每一對雙絞線都由兩條相互絕緣的導線按照一定規格互相纏繞。這四對雙絞線的顏色通常為:橙、橙白、綠、綠白、藍、藍白、棕、棕白。
而這八根線中有四根是主線(橙、橙白、綠、綠白)起到發送和接收的作用。
另外四根是輔助線(藍、藍白、棕、棕白),起到消除干擾的作用。
在連接網絡的時候,四根主線是一定要接好的。
那么,問題來了,為什么發送和接收需要4根線。
因為平常我們使用的串口線一般只用2根或三根,例如UART使用TX線發送,RX線接收,當然還有根底線。I2C使用的是SDA數據線和SCL時鐘線。
從網線規格資料可知,主線的四根線分別是:
1---輸出數據(+)
2---輸出數據(-)
3---輸入數據(+)
6---輸入數據(-)
也就是說TX和RX都使用了兩根線。
為什么要是2發2收呢?因為網線傳輸的是差分信號。!
關于差分信號我們應該并不陌生,比如常見的RS485、CAN總線。
差分傳輸是一種信號傳輸的技術,區別于一根信號線一根地的做法,差分傳輸是在兩個線上都傳輸信號,兩個信號的振幅相等,相位相反,信號接收端通過比較這兩個電壓的差值來判斷發送端發送的是邏輯0還是邏輯1.
關于差分信號的好處就不詳述了,只需知道它適合長距離傳輸,且抗干擾能力強。
今天就暫時寫到這里吧,后面怎么寫我也還沒想好,我自己也是個小白。
后面的內容更多的是分析協議,物理上的東西太復雜都會一帶而過,我們的目的是使用它,而不是去搞研究。
晚安!
2017-7-2