網絡:幾部計算機主機或網絡打印機之類的接口設備,通過網線或者無線網絡技術將其連接起來,使得數據可以通過網絡介質(網線以及其他網卡等硬件)來傳輸的一種方式。
網絡分類:
1.以太網(Ethernet):局域網(local area network,LAN)使用的就是以太網
以太網絡傳輸速度單位用的是Mbps,需要注意的是其中的b用的是bit而不是我們常用的byte,所以我們家中定寬帶時的實際下載速度需要除以8才能夠得到一般速度。
我們常見的網線就是用於傳輸以太網數據的,通過主機的網卡連接另一台主機的網卡或者集線器(Hub)【集線器*注1】
以太網的傳輸協議:CSMA/CD
以太網的傳輸關鍵是以太網卡(常簡稱網卡),每張網卡有一個“固定”的網卡號稱為MAC地址(6bytes大小,是硬件地址標識),所以能夠用於確定位置。
以太網內的機器間數據傳輸就是使用CSMA/CD協議來發送MAC數據幀的,MAC數據幀構成如下:
*其中的目標地址與源地址即是MAC地址
注1:集線器是網絡共享介質設備,局域網絡所有主機連接到他,當需要主機間通信時將數據發送到集線器,其再負者轉發出去直到目標主機收到並接收數據。還有個叫交換機(Switch)的非共享介質設備也起類似作用,但是他們轉發數據的原理不同,集線器是將數據傳給所有機器,但只有目標機接收,而交換機是保存了目標機的MAC地址,故能夠直接發送給目標主機。【具體其差別請自行搜索】
小結:通過上面我們能夠看出以太網的硬件部分有網線,網卡,Hub/Switch等,而數據傳輸使用網卡卡號為標准的MAC數據幀配合CSMA/CD標准來傳輸。
注:上面說過了局域網內部數據傳輸通過Hub/Switch就能夠完成,但是如果我們希望通過廣域網傳輸數據的話就需要使用路由器(即是默認網關),先將數據傳輸到路由器,再通過路由器通過多次跳轉傳輸到目標主機所在網段的路由器(默認網關處),通過其的“公共IP/MAC表”其再定位分發到具體目標主機。
2.英特網(Internet):廣域網(wide area network,WAN)使用的就是Internet
Internet使用的通信協議是TCP/IP協議,其是一個四層模型:
在此需要立即說明的一項是在我們看看上面TCP/IP四層模型的倒數兩層,我們發現IP數據包實際在決定傳輸目標的位置是在局域網還是廣域網之前就已經准備好了,在最后一層時,每個主機有個路由表記錄了本局域網的IP,通過與IP包里的目標IP地址對比能夠發現目標主機是否屬於本機所在局域網,假設發現是在同一局域網,由上面已經說過實際的局域網傳輸使用的是MAC數據包,所以這里是如何處理的呢?實際上會將IP數據包依據CSMA/CD標准封裝到MAC數據幀中去並且添加幀頭。如果發現不是處於同一局域網就直接將IP包發給路由器進行后續轉發。
在實際過程中,比如打開了瀏覽器輸入網址並點擊回車,此時網址信息及其相關信息就會包裝成data傳到應用層,此時使用的是HTTP協議將data封裝起來並加入應用層報頭后傳入傳輸層,由於HTTP為可靠連接,故使用TCP協議封裝並加入TCP報頭后傳入網絡層,將其封裝到IP數據包里並添加IP包頭后傳到網絡接口層,判斷目標主機地址后再做相應處理后轉化為比特流進行傳輸。最后會形成下面的關系(注意各報頭的順序):
注:ARP協議與ICMP協議
ARP協議:(Address Resolution Protocol)網絡地址解析協議,我們知道的是IP也是配置在網卡上的,上面又提到網卡有固定的網卡號(MAC地址),實際上IP地址是通過軟件配置在指定網卡上的,通過向局域網發送ARP包能夠返回具體IP配置所在的網卡的MAC地址。【注:獲取網卡MAC地址:#ifconfig,獲取本機IP/MAC地址對應數據:#arp -n】
ICMP協議:(Internet Control Message Protocol)因特網信息控制協議,其是一個錯誤檢測與報告的機制,用於確保網絡的連接狀態,常用的ping與traceroute命令即是使用的此協議,其也需要放到IP包里進行傳輸。
現在來看看常用的TCP協議的報頭
*我們常說的TCP為穩定狀態連接,其三次握手(主機設置SYN=1后發包,目標主機回包設置ACK為1,主機將SYN與ACK都是1的包再次發給目標主機。經過這三次發包“握手”就建立了TCP連接)
同上面使用CSMA/CD標准來傳輸MAC數據幀一樣,這里是使用TCP/IP協議來傳輸IP數據包,IP包頭如下:
*所用協議編號指向的有TCP,UDP 與 ICMP 等等;
如果IP包太大需要重組成幾個小的IP包再放到MAC中,故需要上表中的“識別碼”,“特殊標志”,“分段偏移“三個指標來完成后面的IP包的重組
生存時間:范圍0~255,每進過一個路由器TTL減一,為0后自動丟棄此數據包
報頭校驗碼:檢查報頭是否有錯
MAC幀頭上一節已經介紹
總結:到現在我們就明白了我們具體發送一個數據到目標主機,分別經歷了哪些協議的封裝后又是通過哪些硬件最后根據什么找到目標主機的了。