前端快速入門 TCP/IP

1. 協議的概念和做用 #

  • 爲了讓計算機可以通訊,計算機須要定義通訊規則,這些規則就是協議
  • 規則是多種,協議也有多種
  • 協議就是數據封裝格式+傳輸

1.1 服務+協議實現數據傳輸

2. OSI七層模型

Open System Interconnection,適用於全部的網絡html

  • 分工帶來效能
  • 將複雜的流程分解爲幾個功能相對單一的子進程
  • 整個流程更加清晰,複雜問題簡單化
  • 更容易發現問題並針對性的解決問題
    • 應用層(Application) 提供網絡與用戶應用軟件之間的接口服務
    • 表示層(Presentation) 提供格式化的表示和轉換數據服務,如加密和壓縮
    • 會話層(Session) 提供包括訪問驗證和會話管理在內的創建和維護應用之間通訊的機制
    • 傳輸層(Transimission) 提供創建、維護和取消傳輸鏈接功能,負責可靠地傳輸數據(PC)
    • 網絡層(Network) 處理網絡間路由,確保數據及時傳送(路由器)
    • 數據鏈路層(DataLink) 負責無錯傳輸數據,確認幀、發錯重傳等(交換機)
    • 物理層(Physics) 提供機械、電氣、功能和過程特性(網卡、網線、雙絞線、同軸電纜、中繼器)

分層模型

3. TCP/IP參考模型

  • TCP/IP是傳輸控制協議/網絡互聯協議的簡稱
  • 早期的TCP/IP模型是一個四層結構,從下往上依次是網絡接口層、互聯網層、傳輸層和應用層
  • 後來在使用過程當中,借鑑OSI七層參考模型,將網絡接口層劃分爲了物理層和數據鏈路層,造成五層結構

tcpip

經常使用協議

  • TCP/IP協議被稱爲傳輸控制協議/互聯網協議,又稱網絡通信協議
  • 是由網絡層的IP協議和傳輸層的TCP協議組成,是一個很大的協議集合
  • 物理層和數據鏈路層沒有定義任何特定協議,支持全部的標準和專用的協議
  • 網絡層定義了網絡互聯也就是IP協議
    • 網際協議IP(Internet Protocal) 負責主機和網絡之間尋址和路由數據包
    • 地址解析協議ARP(Address Resolution Protocol) 得到同一物理網絡中的硬件主機MAC地址
    • 反向地址轉換協議(Reverse Address Resolution Protocol) 容許局域網的物理機器從網關服務器的ARP表或者緩存上請求其IP地址
    • 網際控制消息協議ICMP(Internet Control Message Protocol) 發送消息,並報告有關數據包的傳送錯誤
    • 互聯組管理協議IGMP(Internet Group Management Protocol) IP主機向本地多路廣播路由器報告主機組成員
  • 傳輸層定義了TCP(傳輸控制協議)和UDP(用戶數據報)協議
  • 應用層定義了HTTP(超文本傳輸協議)、FTP(文件傳輸協議)、DNS(域名系統)等協議

分層模型

3.1 網絡接口層

網絡接口層是TCP/IP模型的最底層,負責接收從上一層交來的數據報並將數據報經過底層的物理網絡發送出去,比較常見的就是設備的驅動程序,此層沒有特定的協議 網絡接口層又分爲物理層和數據鏈路層瀏覽器

3.1.1 物理層

計算機在傳遞數據的時候傳遞的都是0和1的數字,而物理層關心的是用什麼信號來表示0和1,是否能夠雙向通訊,最初的鏈接如何創建以及完成鏈接如何終止,物理層是爲數據傳輸提供可靠的環境。緩存

  • 爲數據端設備提供傳送數據的通路
  • 傳輸數據
    • 激活物理鏈接,在鏈接的設備之間鏈接起來造成通路
    • 傳輸數據,關心如何打包數據和控制傳輸速度
    • 關閉物理鏈接

物理層

3.1.2 數據鏈路層

數據鏈路層們於物理層和互聯網層之間,用來向網絡層提供數據,就是把源計算機網絡層傳過來的信息傳遞給目標主機。服務器

  • 如何將數據組合成數據幀(Frame),幀是數據鏈路層的傳輸單位
  • 數據鏈路的創建、維護和拆除
  • 幀包裝、幀傳輸、幀同步
  • 幀的差錯恢復
  • 流量控制

3.1.3 MAC地址

  • 在通訊過程當中是用內置在網卡內的地址來標識計算機身份的
  • 每一個網卡都有一個全球惟一的地址來標識本身,不會重複
  • MAC地址48位的二進制組成,一般分爲6段,用16進製表示

信號

3.2 互聯網層(網絡層)

  • 位於傳輸層和網絡接口層之間,用於把數據從源主機通過若干個中間節點傳送到目標主機,並向傳輸層提供最基礎的數據傳輸服務,它要提供路由和選址的工做

網絡層

3.2.1 選址

交換機是靠MAC來尋址的,而由於MAC地址是無層次的,因此要靠IP地址來確認計算機的位置,這就是選址網絡

網絡層

信封

3.2.2 路由

在可以選擇的多條道路之間選擇一條最短的路徑就是路由的工做併發

網絡層

3.2.3 IP

在網絡中,每臺計算機都有一個惟一的地址,方便別人找到它,這個地址稱爲IP地址。tcp

3.2.3.1 IP頭部

ipheader

  • 版本
  • 首部長部
  • 優先級與服務類型
  • 總長度 該字段用以指示整個IP數據包的長度,最長爲65535字節,包括頭和數據
  • 標識符 惟一標識主機發送的每一份數據報
  • 標誌 分爲3個字段,依次爲保留位、不分片位和更多片位
    • 保留位:通常被置爲0
    • 不分片位:表示該數據報是否被分片,若是被置爲1,則不能對數據報進行分片,若是要對其進行分片處理,就應將其置爲0
    • 更多片位:除了最後一個分片,其餘每一個組成數據報的片都要將該位置設置爲1.
  • 段偏移量 該分片相對於原始數據報開始處位置的偏移量
  • TTL(Time to Live生存時間) 該字段用於表示IP數據包的生命週期,能夠防止一個數據包在網絡中無限循環地發下去。TTL的意思是一個數據包在被丟棄以前在網絡中的最大週轉時間。該數據包通過的每個路由器都會檢查該字段中的值,當TTL的值爲0時此數據包會被丟棄。TTL對應於一個數據包經過路由器的數目,一個數據包每通過一個路由器,TTL將減去1。
  • 協議號 用以指示IP數據包中封裝的是哪一個協議
  • 首部校驗和 檢驗和是16位的錯誤檢測字段。目的主機和網絡中的每一個網關都要從新計算報頭的校驗和,同樣表示沒有改動過.
  • 源IP地址 該字段用於表示數據包的源地址,指的是發送該數據包的設備的網絡地址
  • 目標IP地址 該字段用於表示數據包的目標的地址,指的是接收節點的網絡地址
3.2.3.2 IP地址格式
  • IP地址是一個網絡編碼,用來肯定網絡中的一個節點。
  • IP地址是由32位二進制(32bit)組成

IP地址

3.2.3.3 IP地址組成
  • 網絡部分(NETWORK)
  • 主機部分(HOST)

compose

3.2.3.4 IP地址表示

compose

3.2.3.5 IP地址的分類
  • IP地址的網絡部分是由Internet地址分配機構來統一分配的,這樣能夠保證IP的惟一性。
  • ip地址中全爲1的ip即255.255.255.255,它稱爲限制廣播地址,若是將其做爲數據包的目標地址能夠理解爲發送到全部網絡的全部主機
  • ip地址中全爲0的ip即0.0.0.0,它表示啓動時的ip地址,其含義就是還沒有未分配時的ip地址
  • 127是用來進行本機測試的,除了127.255.255.255外,其它的127開頭的地址都表明本機

compose

3.2.3.6 公有地址和私有地址

私有IP分佈式

  • A類私有IP:10.0.0.0 ~ 10.255.255.255
  • B類私有IP:172.16.0.0 ~ 172.31.255.255
  • C類私有IP:192.168.0.0 ~ 192.168.255.255

其餘範圍的IP均爲公有IP地址ide

3.2.3.7 子網掩碼

子網掩碼(subnet mask)又叫子網絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機位的掩碼。 子網掩碼不能單獨存在,它必須結合IP地址一塊兒使用。 子網掩碼只有一個做用,就是將某個IP地址劃分紅網絡地址和主機地址兩部分。測試

  • 子網掩碼也是32個二進制位
  • 對應IP的網絡部分用1表示
  • 對應IP地址的主機部分用0表示
  • IP地址和子網掩碼作邏輯與運算獲得網絡地址
    • 0和任何數相與都是0
    • 1和任何數相與都等於任何數自己
  • A B C 三類地址都有本身默認的子網掩碼
    • A類 255.0.0.0
    • B類 255.255.0.0
    • C類 255.255.255.0

transfer

3.3 傳輸層

位於應用層和網絡接口層之間

  • 是面向鏈接的、可靠的的進程到進程通訊的協議
  • TCP提供全雙工服務,即數據可在同一時間雙向傳播
  • TCP將若干個字節構成一個分組,此分組稱爲報文段(Segment)

transfer

3.3.1 傳輸層的功能

提供了一種端到端的鏈接

connect

3.3.2 對可靠性要求高的上層協議,實現可靠性的保證

  • 若是數據丟失、損壞的狀況下如何保證可靠性
  • 網絡層只管傳遞數據,成功與否並不關心

3.3.3 協議分類

  • TCP(Transimision Control Protocal)
    • 傳輸控制協議
    • 可靠的、面向鏈接的協議
    • 傳輸效率低
  • UDP(User Datagram Protocal)
    • 用戶數據報協議
    • 不可靠的、無鏈接的服務
    • 傳輸效率高

3.3.4 TCP功能

  • 將數據進行分段打包傳輸
  • 對每一個數據包編號控制順序
  • 運輸中丟失、重發和丟棄處理
  • 流量控制避免擁塞
3.3.4.1 TCP數據包封裝

connect

  • 源端口號和目標端口號,計算機經過端口號識別訪問哪一個服務,好比http服務或ftp服務,發送方端口號是進行隨機端口,目標端口號決定了接收方哪一個程序來接收 connect
  • 32位序列號 TCP用序列號對數據包進行標記,以便在到達目的地後從新重裝,假設當前的序列號爲 s,發送數據長度爲 l,則下次發送數據時的序列號爲 s + l。在創建鏈接時一般由計算機生成一個隨機數做爲序列號的初始值 connect
  • 確認應答號 它等於下一次應該接收到的數據的序列號。假設發送端的序列號爲 s,發送數據的長度爲 l,那麼接收端返回的確認應答號也是 s + l。發送端接收到這個確認應答後,能夠認爲這個位置之前全部的數據都已被正常接收。
  • 首部長度:TCP 首部的長度,單位爲 4 字節。若是沒有可選字段,那麼這裏的值就是 5。表示 TCP 首部的長度爲 20 字節。 connect

  • 控制位 TCP的鏈接、傳輸和斷開都受這六個控制位的指揮

    • PSH(push急迫位) 緩存區將滿,馬上傳輸速度
    • RST(reset重置位) 鏈接斷了從新鏈接
    • URG(urgent緊急位) 緊急信號
  • 緊急指針:盡在 URG(urgent緊急) 控制位爲 1 時有效。表示緊急數據的末尾在 TCP 數據部分中的位置。一般在暫時中斷通訊時使用(好比輸入 Ctrl + C)。

tcpack

  • ACK(acknowledgement 確認)爲1表示確認號 tcpsyn
  • SYN(synchronous創建聯機) 同步序號位 TCP創建鏈接時要將這個值設爲1 tcpfin
  • FIN發送端完成位,提出斷開鏈接的一方把FIN置爲1表示要斷開鏈接 tcpwindow
  • 窗口值 說明本地可接收數據段的數目,這個值的大小是可變的。當網絡通暢時將這個窗口值變大加快傳輸速度,當網絡不穩定時減小這個值能夠保證網絡數據的可靠傳輸。它是來在TCP傳輸中進行流量控制的
  • 窗口大小:用於表示從應答號開始可以接受多少個 8 位字節。若是窗口大小爲 0,能夠發送窗口探測。 connect
  • 用來作差錯控制,TCP校驗和的計算包括TCP首部、數據和其它填充字節。在發送TCP數據段時,由發送端計算校驗和,當到達目的地時又進行一次檢驗和計算。若是兩次校驗 和一致說明數據是正確的,不然 將認爲數據被破壞,接收端將丟棄該數據
3.2.4.2 握手和斷開
  • TCP是面向鏈接的協議,它在源點和終點之間創建虛擬鏈接,而不是物理鏈接
  • 在數據通訊以前,發送端與接收端要先創建鏈接,等數據發送結束後,雙方再斷開鏈接
  • TCP鏈接的每一方都是由一個IP地址和一個端口組成

sequencenumber

3.2.4.2.1 三次握手
  • 第一次握手主機A經過一個標識爲SYN標識位的數據段發送給主機B請求鏈接,經過該數據段告訴主機B但願創建鏈接,須要B應答,並告訴主機B傳輸的起始序列號
  • 第二次握手是主機B用一個確認應答ACK和同步序列號SYNC標誌位的數據段來響應主機A,一是發送ACK告訴主機A收到了數據段,二是通知主機A從哪一個序列號作標記。
  • 第三次握手是主機A確認收到了主機B的數據段並能夠開始傳輸實際數據。
3.2.4.2.2 四次斷開
  • 主機A發送FIN控制位發出斷開鏈接的請求
  • 主機B進行響應,確認收到斷開鏈接請求
  • 主機B提出反方向的關閉要求
  • 主機A確認收到的主機B的關閉鏈接請求
3.2.4.2.3 抓包

sequencenumber

3.4 UDP

  • UDP是一個無鏈接、不保證可靠性的傳輸層協議,也就是說發送端不關心發送的數據是否到達目標主機、數據是否出錯等,收到數據的主機也不會告訴 發送方是否收到了數據,它的可靠性由上層協議來保障
  • 首部結構簡單,在數據傳輸時能實現最小的開銷,若是進程想發送很短的報文而對可靠性要求不高可使用

3.4.1 UDP的封裝格式

connect

connect

connect

3.4.2 UDP的應用

  • QQ
  • 視頻軟件
  • TFTP 簡單文件傳輸協議(短信)

3.4.3 DNS服務器

3.4.3.1 域名
  • 域名空間結構
  • 根域
  • 頂級域
    • 組織域
    • 國家/地區域名
  • 二級域名

域名

3.4.3.2 DNS服務器

DNS是Domain Name Service的縮寫,DNS服務器進行域名和與之對應的IP地址轉換的服務器

  • IP地址不易記憶
  • 早期使用Hosts文件解析域名
    • 主要名稱重複
    • 主機維護困難
  • DNS(Domain Name System 域名系統)
    • 分佈式
    • 層次性
3.4.3.3 查找過程

dns

3.5 應用層

3.5.1 協議

connect

3.5.2 應用層常見協議

  • HTTP 超文件傳輸協議
  • FTP 文件傳輸協議
  • SMTP(發送郵件)和POP3(接收郵件)

3.6 案例

數據->傳輸層(包)->網絡層(段Segment)->數據鏈路層(幀)

3.6.1 發送方是從高層到低層封裝數據

  • 在應用層要把各式各樣的數據如字母、數字、漢字、圖片等轉換成二進制
  • 在TCP傳輸層中,上層的數據被分割成小的數據段,併爲每一個分段後的數據封裝TCP報文頭部
  • 在TCP頭部有一個關鍵的字段信息端口號,它用於標識上層的協議或應用程序,確保上層數據的正常通訊
  • 計算機能夠多進程併發運行,例如在發郵件的同時也能夠經過瀏覽器瀏覽網頁,這兩種應用經過端口號進行區分
  • 在網絡層,上層數據被封裝上親的報文頭部(IP頭部),上層的數據是包括TCP頭部的。IP地址包括的最關鍵字段信息就是IP地址,用於標識網絡的邏輯地址。
  • 數據鏈路徑層,上層數據成一個MAC頭部,內部有最關鍵的是MAC地址。MAC地址就是固化在硬件設備內部的全球惟一的物理地址。
  • 在物理層,不管在以前哪一層封裝的報文頭和仍是上層數據都是由二進制組成的,物理將這些二進制數字比特流轉換成電信號在網絡中傳輸

connect

3.6.2 接收方是從低層到高層解封裝

  • 數據封裝完畢傳輸到接收方後,將數據要進行解封裝
  • 在物理層,先把電信號轉成二進制數據,並將數據傳送至數據鏈路層
  • 在數據鏈路層,把MAC頭部拆掉,並將剩餘的數據傳送至上一層
  • 在網絡層,數據的IP頭部被拆掉,並將剩餘的數據送至上一層
  • 在傳輸層,把TCP頭部拆掉,將真實的數據傳送至應用層

connect

3.6.3 真實網絡環境

  • 發送方和接收方中間可能會有多個硬件中轉設備
  • 中間可能會增長交換機和路由器
  • 數據在傳輸過程當中不斷地進行封裝和解封裝的過程,每層設備只能處理哪一層的數據
    • 交換機屬於數據鏈路層
    • 路由器屬於網絡層

分層模型

4. 附錄

4.1 不一樣層中的稱謂:

  • 數據幀(Frame):是一種信息單位,它的起始點和目的點都是數據鏈路層
  • 數據包(Packet):也是一種信息單位,它的起始和目的地是網絡層
  • 段(Segment):一般是指起始點和目的地都是傳輸層的信息單元。
  • 消息(message):是指起始點和目的地都在網絡層以上(常常在應用層)的信息單元。

4.2 IP頭服務類型

  • IP首部中的服務類型(TOS)
  • TOS包括共8位,包括3 bit的優先權字段(取值能夠從000-111全部值),4 bit的TOS子字段和1 bit未用位但必須置0。
  • 3bit的8個優先級的定義以下:
    • 111--Network Control(網絡控制)通常保留給網絡控制數據使用,如路由。
    • 110--Internetwork Control(網間控制)
    • 101--Critic(關鍵)語音數據使用。
    • 100--Flash Override(疾速)視頻會議和視頻流使用。
    • 011--Flash(閃速)語音控制數據使用。
    • 010--Immediate(快速)數據業務使用
    • 001--Priority(優先)數據業務使用
    • 000--Routine(普通)默認標記值。
  • 4 bit的TOS分別表明:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能置其中1 bit。若是全部4 bit均爲0,那麼就意味着是通常服務。
  • Telnet、Rlogin這兩個交互應用要求最小的傳輸時延,FTP文件傳輸要求最大吞吐量,最高可靠性是指網絡管理(SNMP)和路由選擇協議。用戶網絡新聞要求最小費用

4.3 握手和斷開

sequencenumber

sequencenumber

sequencenumber

5. 參考

相關文章
相關標籤/搜索