一個資料包從發送到接收在網路中經歷了那些程序
假設學生給老師發送電子郵件,內容為:“老師您好!”,從計算機A向另一臺計算機B發送電子郵件,站在網路原理的角度來分析整個程序,
-
啟動應用程式新建郵件,將收件人郵箱和郵件內容填寫好,應用程式進行編碼處理,(應用層)
-
應用在發送郵件那一刻建立TCP連接(三次握手),將資料交給傳輸層,
第一次握手:建立連接時,主機A向主機A發送請求報文
第二次握手:主機B收到請求報文后,如同意連接,則向主機A發送確認報文
第三次握手,主機A收到主機B的確認后,再次向主機B給出確認報文,完成連接 -
TCP 就會把這個資料構成一個TCP資料報(附加上TCP首部包括源埠號和目標埠號(用以識別發送主機跟接收主機上的應用)、序號(標明發送的包那部分是資料)以及校驗和(判斷資料是否被更改)),然后將該資料報交給IP協議(網路層),
-
IP協議就會構造一個IP資料報(IP會將TCP傳過來的資料報當作自己的資料,加上IP首部包含接收端IP地址以及發送端的IP地址),此處要根據資料報的長度,以及MTU的限制,考慮是否進行分包,查路由表決定從哪一個埠轉發,將資料交給資料鏈路層;
-
資料鏈路層將資料構造一個以太網資料幀,其中以太網首部包含接收端MAC地址、發送端MAC地址以及標志以太網型別的以太網資料的協議,源mac就是本機mac,目的mac根據上面IP確定的轉發埠來決定(基于mac學習完成,ARP查找)
資料報的結構:

- 資料到達物理層,物理層將資料報轉換成光電信號或者電信號進行傳輸;
- 首先傳輸到下一臺路由器上,路由器進行決議和分用(決議到傳輸層)NAT 路由選擇 ,繼續查路由表,把資料再次封裝的,往下一個路由器設備上轉發(在這里封裝和分用和上邊是一樣的)
- 中間會經過若干個路由器轉發的程序,最終到達目的服務器;
- 服務器就會進行分用,物理層把光電信號轉成二進制bit流,交給資料鏈路層;
- 資料鏈路層從以太網資料報的首部找到MAC地址判斷是否為發給自己的包,如果不是發給自己的資料則丟掉,如果是就決議出其中的IP資料報交給網路層,但是如果是無法識別的協議型別也會丟掉,
- 網路層收到資料報,同樣進行決議判斷自己是不是首部中的目標IP,如果是則接收資料包并查找上一層的協議型別,如果是TCP就交給TCP處理如果是UDP就交給UDP處理,網路層可能需要組包(取決于第4步是否分包),組包后將資料交給傳輸層;
- 傳輸層TCP收到資料,首先計算校驗和保證資料的完整性,然后按照序號檢查接收資料,檢查埠號確定具體的應用程式 ,將決議出的應用層資料,交給應用程式,回傳ACK(確認序號、視窗大小、延時應答、捎帶應答)在這里ACK也是一個TCP資料報,也會涉及到一系列的封裝和分用程序,如果沒有收到ACK就會反復發送,
- 服務器的應用程式讀取資料,決議資料獲知郵件的收件人資訊以及郵件內容,(應用層)
- 主機B給發送端回傳一個回執資訊,
- 斷開連接(四次揮手)
第一次揮手:主機A想分手,發送訊息給主機B
第二次揮手:主機B通知主機A已經接受到分手請求,但還沒做好分手準備
第三次回收:主機B已經做好分手準備,通知主機A
第四次揮手:主機A發送訊息給主機B,確定分手,主機B關閉連接
基本上就是這樣一個程序,我在慢慢在細化每一個程序,
| 參考文獻 |
|---|
| 【圖解HTTP讀書筆記】第一章:了解Web及網路基礎 |
| 【圖解HTTP讀書筆記】第二章:簡單的HTTP協議 |
| 【圖解HTTP讀書筆記】第三章:HTTP報文內的HTTP資訊 |
| 【圖解HTTP讀書筆記】第四章:回傳結果的HTTP狀態碼 |
| 【圖解HTTP讀書筆記】第五章:與HTTP協作的Web服務器 |
| 【圖解HTTP讀書筆記】第六章:HTTP首部 |
| 【圖解HTTP讀書筆記】第七章:確保Web安全的HTTPS |
| 【圖解HTTP讀書筆記】第八章:Session 和 Cookie作業原理 |
| 【圖解TCP_IP讀書筆記】第一章:網路基礎知識 |
| 【圖解TCP_IP讀書筆記】第二章:TCP/IP 基礎知識 |
| ---------------------------------------------------------------------------------- |
| TCP協議 十大特性詳解(上) |
| TCP協議 十大特性詳解(中) |
| TCP協議 十大特性詳解(下) |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253475.html
標籤:其他
上一篇:2021寒假每日一題《火星人》
