linux網絡基礎知識1

1、OSI系統七層模型:
物——物理層(雙絞線,光纖)
數——數據鏈路層(數據的傳輸和錯誤檢測)
網——網絡層(爲數據包選擇路由器)
傳——傳輸層(提供端對端的接口)
會——會話層(解除或建立與其他節點的聯繫)
表——表示層(數據的加密,代碼轉換)
應——應用層(文件傳輸、電子郵件,文件服務,虛擬終端)
2、IP四層模型
數據鏈路層——以太網幀協議
網絡層——IP協議
傳輸層——TCP/UDP傳輸協議
應用層——ftp,http,ssh,telent
3、網絡開發兩種設計模式
C/S-cilent/service——協議選用靈活,可以緩衝數據,但對用戶安全造成威脅,開發工作量大,調試困難
B/S-brower/service——跨平臺,但只能用Http
4、以太網幀協議
以太網幀協議目的地址與源地址這裏都指的是 MAC 地址由網卡決定,佔6個字節。
類型標識符主要有IP、ARP、RARP
IP
ARP
其中:ARP數據查詢格式——根據IP地址得到MAC地址:
ARP以太網幀頭部中的前兩個字段是以太網的MAC地址和源MAC地址,目的地址爲全1的特殊地址是以太網廣播地址。在ARP表項建立前,源主機只知道目的主機的IP地址,並不知道其MAC地址,所以在數據鏈路上,源主機只有通過廣播的方式將ARP請求數據包發送出去,同一網段上的所有以太網接口都會接收到廣播的數據包。
RARP
例子:
ARP查找MAC地址5、IP協議
IP協議版本:IP4|IP6——根服務器
生存時間:該字段用於設置一個“數據報可經過的路由器數量”的上限。發送方在初始發送時設定某個值(建議爲64,、128或255),每臺路由器再轉發時都將其減一,當字段達到0時,該數據報被丟棄,並使用一個ICMP消息通知發送方。
協議:8位,TCP/UDP
32位源IP地址:數據發送端地址
32位目IP的地址:地址接收端地址
6、TCP協議
TCP協議TCP是TCP/IP體系中面向連接的運輸層協議(流式傳輸協議),它提供全雙工和可靠交付的服務。它採用許多機制來確保端到端結點之間的可靠數據傳輸,如採用序列號、確認重傳、滑動窗口等。

7、UDP協議
UDP協議
UDP即用戶數據報協議,它是一種無連接協議(無面向)的報式傳輸,因此不需要像TCP那樣通過三次握手來建立一個連接。同時,一個UDP應用可同時作爲應用的客戶或服務器方。由於UDP協議並不需要建立一個明確的連接,因此建立UDP應用要比建立TCP應用簡單得多。
它比TCP協議更爲高效,也能更好地解決實時性的問題。如今,包括網絡視頻會議系統在內的衆多的客戶/服務器模式的網絡應用都使用UDP協議。
8、socket-套接字
Linux中的網絡編程是通過socket接口來進行的。socket是一種特殊的I/O接口,它也是一種文件描述符。它是一種常用的進程之間通信機制,通過它不僅能實現本地機器上的進程之間的通信,而且通過網絡能夠在不同機器上的進程之間進行通信。

9、大小端模式
大端模式:數據高字節在地址低位,數據低字節在地址高位;與我們閱讀一致。
小端模式:數據低字節在地址低位,數據高字節在地址低位。
大小端圖示

案例:

#include <stdio.h>
#include <stdlib.h>

/*該工程主要是判斷是否爲大小端模式
 *
 * */

/*第一種方法:通過指針取地址,強轉*/
void test01()
{
    int c = 0x1234;

    if(*(char *)&c==0x34)
    {
        printf("該機是大端模式\n");
    }
    else
    {
        printf("該機是小端模式\n");
    }
}

/*第二種方法:通過結構體進行判斷大小端*/
typedef union
{
    char cl;
    int al;
}Arry;

void test02()
{
    Arry ar;
    ar.al = 0x1234;

    if(ar.cl == 0x34)
    {
        printf("該機是大端模式\n");
    }
    else
    {
        printf("該機是小端模式\n");
    }

}

int main()
{
    test01();
    test02();

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章