how networks work second note
摘要:
思維導圖
整體內容
用電訊號傳輸TCP/IP資料--探索協議棧和網絡卡
問題總結
現在使用的乙太網中存在不符合國際標準的部分
TCP/IP是由TCP和IP兩個協議的名字組合而成的,最早這兩個協議合在一起的
網路包通訊技術是20世紀60年代...
思維導圖

整體內容
用電訊號傳輸TCP/IP資料--探索協議棧和網絡卡
問題總結
現在使用的乙太網中存在不符合國際標準的部分 TCP/IP是由TCP和IP兩個協議的名字組合而成的,最早這兩個協議合在一起的 網路包通訊技術是20世紀60年代為用計算機進行資料通訊而設計出來的
看點
(1)建立套接字階段 介紹協議棧的內部結構、套接字的實體、以及建立套接字的操作過程 (2)連線伺服器 客戶端套接字向伺服器套接字進行連線的階段 (3)收發資料 協議棧將從應用程式收到的資料切換成小塊併發送給伺服器,考慮到通訊過程中可能會出錯導致網路 包丟失,協議棧還需要確認切分的出的每個包是否已經送達伺服器,對於沒有送達的包要重新發送一次 (4)從伺服器斷開連線並刪除套接字 (5)IP與乙太網的收發操作 協議棧會將網絡卡進行配合,將資料切分成小塊並封裝成網路包,再將 網路包轉換成電訊號或者光訊號傳送出去。 (6)用UDP協議收發資料的操作
建立套接字
應用程式使用Socket庫,其中包括解析器,解析器用來向DNS伺服器發出查詢 作業系統內部即協議棧部分: 上半部分負責用TCP協議收發資料的部分和負責用UDP協議收發資料的部分 瀏覽器、郵件等一般應用程式收發資料時用TCP DNS查詢等收發較短的控制資料時用UDP 下半部分是用IP協議控制網路包收發操作的部分,資料會被切成一個一個的網路包, 而將網路包傳送給通訊物件的操作就是由IP負責 IP還包括ICMP協議和ARP協議。 ICMP用於告知網路包傳送過程中產生的錯誤以及各種控制資訊 ARP用於根據IP地址查詢相應的乙太網MAC地址
套接字的實體就是通訊控制資訊
存放控制資訊的記憶體空間就是套接字的實體,例如通訊物件的IP地址、埠號、通訊操作的進行狀態等 在Windows中可以用netstat命令顯示套接字內容,每一行相當於一個套接字 netstat -ano netstat是用於顯示套接字內容的命令,-ano選項表示下面的意思 a 不僅顯示正在通訊的套接字,還顯示包括尚未開始通訊等狀態的所有套接字 n 顯示IP地址和埠號 o 顯示使用該套接字的程式PID
呼叫socket時的操作
建立套接字時,首先分配一個套接字所需的記憶體空間,然後向其中寫入初始狀態 需要將表示這個套接字的描述符告知應用程式
連線伺服器
- 連線的意思
我們需要把伺服器的IP地址和埠號等資訊告知協議棧 客戶端向伺服器傳達開始通訊的請求 當執行資料收發操作時,我們還需要一塊用來臨時存放要收發的資料記憶體空間,這塊空間稱為快取區, 它也是在連線操作過程中分配的
- 負責儲存控制資訊的頭部
第一類是客戶端和伺服器相互聯絡時交換的控制資訊 第二類是儲存在套接字中,用來控制協議棧操作資訊
- 連線操作的實際過程
客戶端先建立一個包含表示開始資料收發操作的控制資訊的頭部,且把SYN位元設定為1(表示連線) TCP模組會將資訊傳遞給IP模組並委託它進行傳送。 伺服器返回響應,將TCP頭部中設定傳送發和接收方埠號以及SYN位元,還需要將ACK控制位設為1. 傳送到客戶端如果SYN為1則表示連線成功,客戶端需要將ACK設定為1,並響應伺服器
收發資料
- 將HTTP請求訊息交給協議棧
若HTTP請求訊息過長,將進行拆分
- 使用ACK號確認網路包已收到
客戶端在連線時需要計算出與從客戶端到伺服器方向通訊相關的序號初始值 如果對方沒有返回某些包對應的ACK號,那麼就重新發送這些包 通過"序號"和"ACK號"可以確認接收方是否收到了網路包
- 根據網路包平均往返時間調整ACK號等待時間
- 使用視窗有效管理ACK號
- ACK與視窗的合併
- 接收HTTP響應訊息
從伺服器斷開並刪除套接字
資料傳送完畢斷開連線 刪除套接字
IP與乙太網的包收發操作
- 包的基本知識
集線器是根據乙太網協議工作的 路由器有IP協議表
- 包收發操作概覽
IP模組負責新增如下兩個頭部 (1)MAC頭部: 乙太網用的頭部,包含MAC地址 (2)IP頭部:IP用的頭部,包含IP地址 無論要收發的包是控制包還是資料包,IP對各種型別的包的收發操作都是相同的
- 生成包含接收方IP地址的IP頭部
- 生成乙太網用的MAC頭部
- 通過ARP查詢目標路由器的MAC地址
- 乙太網的基本知識
- 將IP包轉換成電或光訊號傳送出去