看了不少遍,才整理出來我對整個通訊過程的理解,大體以下,後期會不斷學習補充更正:網絡
在利用TCP/IP協議族進行通訊的時候,有三個比較關鍵的確認身份的信息:mac地址、IP地址和端口號。學習
端口號有兩種:spa
端口號由傳輸層協議決定,所以不容傳輸協議可使用相同的端口號,因此TCP和UDP可使用同一個端口號blog
例如,主機A向主機B利用發送了一條消息,則在TCP head裏包含了發送消息的應用的端口號以及接收方應用的端口號,傳遞給它的下一層,網絡層會將TCP數據包封裝起來再加本身的頭部,IP頭部裏包含本地IP以及接收方IP等信息傳遞給數據鏈路層。數據鏈路層會再給加一個以太網頭部,這裏包含雙方的mac地址。那麼對方IP和端口號都好獲得,但是mac地址如何得到呢?這個時候須要ARP協議,這個暫且不說,直說在已知mac地址和IP地址端口號狀況下如何發送消息。路由
首先以太網數據包會在其子網內部廣播,若是接收方在其子網內,則在比對mac地址後直接接收數據。若是不在同一個子網內,以太網協議就不能實現數據傳輸了,並且由於以太網協議採起廣播的方式發送消息,就算沒有侷限在子網內,若是給很是龐大的主機羣廣播消息是很是可怕的。這個時候就須要IP地址了,IP地址主要是用來區分哪些mac地址在同一個子網。找到目的主機所在子網以後再根據mac地址確認主機,IP層從IP首部肯定數據包所用的協議以後將數據包交給對應的協議,再由協議來確認程序的端口號,從而實現了消息的傳遞io