網絡編程基礎概述--TCP/IP

一:TCP/IP 協議族(TCP/IP 協議棧)

    互聯網協議族(Internet Protocol Suite,縮寫IPS)是一個網絡通信模型,以及一整個網絡傳輸協議家族,爲互聯網的基礎通信架構。它常被通稱爲TCP/IP協議族(TCP/IP Protocol Suite),簡稱TCP/IP,因爲該協議家族的兩個核心協議:TCP(傳輸控制協議)和IP(網際協議)。

    TCP/IP提供點對點的鏈接機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。

二:互聯網分層與各層主要功能

    互聯網分層方式主要有以下三種:


    這裏主要分析互聯網五層結構:


    1,物理層

    就是把電腦連接起來的物理手段,可以用光纜、電纜、雙絞線、無線電波等方式。主要規定了網絡的一些電氣特性,作用是負責傳送0和1的電信號

    2,數據鏈路層

    單純的0和1沒有任何意義,必須規定解讀方式:多少個電信號算一組?每個信號位有何意義?

    本層的主要功能就是確定 0與1 的分組方式。

    2.1 以太網協議--一種確定0與1分組的標準

    MAC地址:相當於網卡編號;每塊網卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。前6個十六進制數是廠商編號,後6個是該廠商的網卡流水號。

    以太網規定,一組電信號構成一個數據包,叫做”幀”(Frame)。每一幀分成兩個部分:標頭(Head)和數據(Data)(具體格式見上圖)。

    2.2 廣播:以太網發送數據包的方式

    向本子網絡內所有計算機發送數據包,讓每臺計算機自己判斷(對比MAC地址或IP地址),是否爲接收方,是則接收該數據包,不是則丟棄。

    2.3 ARP協議:能從IP地址得到對方MAC地址的實現方式

    在一個子網絡內,以IP地址與MAC地址(FF:FF:FF:FF:FF:FF 稱爲廣播地址)進行廣播,IP地址匹配的那臺機器接收數據,然後回覆本機的MAC地址。


    3,網絡層

    3.1 爲啥要有網絡層

    以太網依靠MAC地址採用廣播方式發送數據包,所有成員人手一"包",不僅效率低,而且侷限在發送者所在的子網絡。如果兩臺計算機不在同一個子網絡,廣播是傳不過去的。這種設計是合理的,否則互聯網上每一臺計算機都會收到所有數據包,那會引起災難。

    所以就有了網絡層:它的作用是引進一套新的地址,使得我們能夠區分不同的計算機是否屬於同一個子網絡。這套地址就叫做"網絡地址”,簡稱”網址 ”。

    3.2 IP協議:規定網絡地址(IP地址)的協議

    IP協議的作用主要有兩個,一個是爲每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網絡

    目前,廣泛採用的是IP協議第四版,簡稱IPv4。這個版本規定,網絡地址由32個二進制位組成。習慣上,我們用分成四段的十進制數表示IP地址,從0.0.0.0一直到255.255.255.255

    IP地址:分成兩個部分,前一部分代表網絡,後一部分代表主機(可從子網掩碼中判斷出哪部分是網絡,哪部分是主機)

    3.3 如何確定兩主機是否在同一個子網絡

    子網掩碼:subnet mask  表示子網絡特徵的一個參數;它在形式上等同於IP地址,也是一個32位二進制數字,它表示網絡部分全部爲1,主機部分全部爲0

    將兩個IP地址與子網掩碼分別進行AND運算,若結果相同,就表明它們在同一個子網絡中

    簡單的說就是:根據子網掩碼判斷出兩IP的網絡部分(對應子網掩碼二進制格式爲1部分),再對比兩IP的網絡部分,一樣則表示這兩主機在同一個子網絡內,不同則表示不在同一個子網絡內。


    4,傳輸層

    同一臺主機上有許多程序都需要用到網絡,當一個數據包從互聯網上發來的時候,如何確定這個數據包該給哪個程序使用?傳輸層主要就是用來解決這個問題的,傳輸層的功能,就是建立"端口到端口"的通信。

    4.1 端口 port

    這裏指的是虛擬端口,TCP/IP協議規定的使用網卡的一種虛擬接口,這種接口有多個,它們的編號稱爲端口號

    端口號是0-65535之間的一個整數;0-1023的端口被系統佔用,用戶的應用程序會被系統隨機分配一個大於1023的端口

    一個應用程序要使用網絡需通過網卡接收和發送數據,系統會自動爲該應用程序分配一個能使用網卡的虛擬接口,表現形式就是系統爲該應用程序隨機分配一個端口號。有了端口號,計算機就能確定從互聯網接收到的數據包該給誰使用了。

    4.2 UDP協議:User Datagram Protocol  用戶數據報協議

    UDP是一種無連接的,不可靠的,面向報文的傳輸層通信協議
    無連接:傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並儘可能快地把它扔到網絡上
    不可靠:不提供數據傳送的保證機制,在網絡質量很差的環境下,UDP協議數據包丟失會比較嚴重

    面向報文:對應用程序交下來的報文,在添加首部後就向下交付給IP層;既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。

    標頭(首部)格式:固定8字節,分爲四部分,各部分均爲2字節;源端口號 目標端口號 數據報長度 校驗和

    4.3 TCP協議:Transmission Control Protocol 傳輸控制協議

    TCP是一種面向連接的、可靠的、基於字節流的傳輸層通信協議
    面向連接:在彼此交換數據包之前必須先建立一個TCP連接(這一過程與打電話很相似)
    可靠的:包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息,數據包丟失會重發

    基於字節流:TCP把應用程序交下來的報文看成一連串無結構的字節流,然後把數據流分割成適當長度的報文段,適當加工後添加首部向下交付給IP層。

    標頭(首部)格式:20-60字節;源端口號 目標端口號 數據包中的第一個字節的序列號 確認序列號 校驗和.....

UDP/TCP 優缺點對比
 優點 缺點 應用場景
UDP 佔用系統資源少,傳輸速度快,效率高不可靠傳輸 實時音視頻聊天等
TCP 可靠傳輸 佔用系統資源多,傳輸速度較慢 大部分情況;when in doubt, use TCP.

    5,應用層

    應用層的主要作用是規定應用程序的數據格式

    主要協議有以下幾種:

    超文本傳輸協議(HTTP):用於實現WWW服務;規定了瀏覽器這類應用程序通信的數據格式
    文件傳輸協議(FTP):用於實現交互式文件傳輸功能;規定了文件傳輸形式的數據格式
    域名系統(DNS):用於實現網絡設備名字到IP地址映射的網絡服務。
    簡單郵件傳送協議(SMTP):用於實現電子郵箱傳送功能
    遠程登錄協議(Telnet):用於實現遠程登錄功能。
    簡單網絡管理協議(SNMP):用於管理與監視網絡設備

 

發佈了53 篇原創文章 · 獲贊 34 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章