在操作系統中,進程之間的通信是用ipc(內存基本通信)以及內存共享shm來實現本地的通信,那么如果跨主機間通信或者說是不同之間的主機用rpc(遠程過程調用)以及socket套接字,用一個主機在socket中寫數據,另一個主機在socket之間讀數據,以實現進程通信的最終目的。
在網絡功能出現之前,基本都是用電話線來通信,發送數據基本都是靠著那根線,要是先壞了可能就無法發送數據,所以美國的軍方就有那么一種設想,如果未來世紀大戰時,我的數據的發送不要靠著一條線,或者如果說這個線路斷了,那么數據自動判斷走另一條線路,最后輸出到目的地。
計算機之間的通信數據是流式數據,所謂流式數據是指,在我的本地計算機中的文件抽成一條一條的絲通過介質的傳輸輸送到對方的目標主機上,目標主機自動將這些流式數據拼湊起來再由計算機內部轉化成我們人類看得語言。
我們現在使用的主要還是以以太網為主,是施樂公司的Park實驗室發明了,并無償給了全人類。
兩臺計算機彼此之間連接起來,這種連接是靠借助于某種介質(分為有線和無線),無論是用哪一個到另一端都要轉換成電磁信號,彼此協商多長時間為一個信號,這種商定稱之為協議。
主機A發送給主機B,主機A在比之前的網絡發送信號時,把信號廣播出去,C、D看到不是他們的信號就不理了,但是B看見了會返回數據發送給A,主機A發送的信息首部叫報頭,真正的信息在報文的后面,B數據返回給A之后,獲得了B的地址A就可以直接通信,再也不用廣播尋找B,不過要是找C主機的話,就得重新發一次廣播了。
我們有多種的線路拓撲圖,有總線型、星型、環形等
以上可以用總線型來實現網絡之間的通信,但是有個問題,就是都是在同一鏈路上,如果A要想給B主機發數據,C和D想通信的話肯定會造成沖突,為什么?因為都在一個線路上,而造成線路沖突的地方我們也叫它為沖突域,所以我們就得搞一個線路仲裁機制,要實現線路仲裁,就先標識主機,標識主機的機制叫MAC,我們稱為硬件MAC地址,這種地址是唯一性的,并且不可更改,但是問題依然沒有解決,就是A和B發數據被別人用了怎么辦?
CSMA/CD(載波監聽,多路訪問/沖突檢測),主要A要發信號時先探測一下這個線路是否有忙,如果不忙的話立即向外發送信號,且邊發邊聽,過程中有沖突的話,則立即停止,等待一段時間后再次探測,如果A、C探測沒有都發出去沖突了,都會等待一段時間延遲隨機再次發送,過一段時間,A再次探測,如果其它主機沒有占用的話,就邊發邊監聽,因為發報文還是有沖突,有沖突的話,就會往后退,過一會再次探測,使用這種機制的通常為以太網。
還有一種線路仲裁,就是以環形為主。
這種線路仲裁就是形成(環形)環狀結構,在線路中會有一個令牌環,如果沒有主機發送數據的話,這個令牌環就會在這些主機上游走,那個主機想要發數據就會把那個令牌環拿過來,用完之后釋放出來讓令牌環繼續在線路上游走,注意:只有持有令牌環的主機才能外網發送信號。
另一種是星型,它使用的是在一個中心設備上有很多的接口,每個接口連接一臺主機,早期用的HUB接入的時候非常簡單,因為里面還是一根線,和總線型差不多。
但如果接入的設備越來越多,說明沖突也會越來越多,搞得誰發就沖突,誰也干不成,還有就是線路過長就會失去作用,因為傳輸的信號總歸來說是有限的,當完成到已經讓接收方無法識別的時候,這個信號意味著就失去作用了,如果這樣的話,可以使用中繼器,把傳輸信號放大,向目標進行傳輸,存放傳輸的主機過多,可以用CSMA/CD,但是巨多的話,則沖突也會巨多,我們要找一個隔離設備,比如A和C在同一范圍內,B和D在另一范圍內,A向C主機發送信號時,這個設備不會轉到主機B,同樣也是如此,但如果A和B通信時,則就把信號轉發給另一個范圍到主機B中,這個設備就叫做網橋。
在網橋內有一張表,里面記錄了主機和接口,那如何獲得的呢?網橋會廣播到各個主機來獲取MAC地址,具有自動學習的一個能力,當A發送到C主機時,網橋不知道C在哪兒,但知道A在那個接口上,C接收看到,回應這個報文的時候,C的源、目標地址也有了,這時候網橋也記錄了C的源地址。
如果這個網橋上有很多接口,而每個接口只能接一臺主機,這個網橋內部是一個交叉網絡,找個空閑的線路,所以A和B能通信,C和D也能通信,而且工作在全雙工的模式下,整個網絡可以有效的利用起來,而這個設備就是交換機,表里面的數據也是定時清理的,如果還有沖突,就切成更小的范圍,但這種平面地址也是有限的,平面地址叫物理地址,當A要想從交換機以外的設備通信的話,就將要靠邏輯上的地址進行通信,這個邏輯就叫IP地址,當一個主機交換機通信能夠通過中間的那個設備,所以中間那個設備是標記網絡不同的設備,中間設備看的是邏輯地址是什么,用IP地址來標記網絡,用1.0可以為一個范圍,2.0為一個范圍,轉發不同的網絡通過這個設備來轉發,這個接口叫做網關,而在不同網絡之間可以轉發數據的設備叫路由器,整個就是把交換網絡的報文接下來轉到另一個交換網絡(中間設計到MAC的轉換)只要不在同一網絡需要轉發出去到另一個網絡中,而這種轉發就需要借助于路由器,每一個PC上都有一個默認網關,而這個網關就是路由器的IP地址,對于路由器的另一端接口也是PC網關的轉發非本地網絡通信,如果本地通信則不需要網關,相同的網用網卡上和IP通信,IP可以轉為MAC地址。所以報文在前端中有源IP、目標IP、源mac、目標mac。
原創文章,作者:劉 祥宇,如若轉載,請注明出處:http://www.www58058.com/60553