1. 程式人生 > >IP地址和MAC地址

IP地址和MAC地址

網路分層

思考一個問題?
為什麼網路要分層?

因為複雜的程式都要分層,這是程式設計的要求
電腦科學領域的任何問題都可以通過增加一個間接的中間層來解決,計算機整個體系從上到下都是按照嚴格的層次結構設計的。

理解計算機網路中的概念,一個很好的角度就是:想象網路包就是一段buffer,或者一塊記憶體,是有格式的。同時,想象自己是一個處理網路包的程式,而且這個程式可以跑在電腦上,可以跑在伺服器上,可以跑在交換機上,也可以跑在路由器上。你想象自己有很多的網口,從某個口拿進一個網路包來,用自己的程式處理一下,再從另一個網口傳送出去。

web開發中,三層架構模型,以及MVC

只要在網路上跑的包,都是完整的。可以有下層沒上層,但是絕對不可能有上層沒下層。

以TCP協議來說,我們都知道TCP建立連線需要三次握手。那TCP在進行三次握手的時候,IP和MAC層在做什麼呢?
當然是TCP每傳送一個訊息,都會帶著IP層和MAC層了。因為TCP每傳送一個訊息,IP層和MAC層的所有機制都要執行一遍。而你可能會認為只有TCP進行了三次握手,其實IP層和MAC層也為此忙活很久了。

IP地址

如何檢視IP地址
windows下ipconfig
Linux ifconfig & ip addr

ora@ora:~$ ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:e9:73:04:
0f inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX
bytes:0 (0.0 B) enp0s31f6 Link encap:Ethernet HWaddr e0:d5:5e:45:69:59 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:16 Memory:ef200000-ef220000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4816126 errors:0 dropped:0 overruns:0 frame:0 TX packets:4816126 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6481363724 (6.4 GB) TX bytes:6481363724 (6.4 GB) wlx64fb81657322 Link encap:Ethernet HWaddr 64:fb:81:65:73:22 inet addr:192.168.198.152 Bcast:192.168.198.255 Mask:255.255.255.0 inet6 addr: fe80::30fb:fe91:31f:884a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1025544 errors:0 dropped:0 overruns:0 frame:0 TX packets:198910 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:372764486 (372.7 MB) TX bytes:23978433 (23.9 MB)
[email protected]:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether e0:d5:5e:45:69:59 brd ff:ff:ff:ff:ff:ff
3: wlx64fb81657322: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 64:fb:81:65:73:22 brd ff:ff:ff:ff:ff:ff
    inet 192.168.198.152/24 brd 192.168.198.255 scope global dynamic wlx64fb81657322
       valid_lft 36645sec preferred_lft 36645sec
    inet6 fe80::30fb:fe91:31f:884a/64 scope link 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:e9:73:04:0f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

ifconfig & ip addr
區別:net-tools和iproute2
想象你登入一個被剪裁過的非常小的Linux系統中,發現既沒有ifconfig也沒有ip addr命令,你可能會覺得這個系統壓根兒沒法用。這個時候,你可以自行安裝net-tools和iproute這兩個工具。大多時候,這兩個命令是系統自帶的。

net-tools起源於BSD,自2001年起,Linux社群已經停止對其維護,而iproute2旨在取代net-tools,並提供了一些新功能。一些Linux發行版已經停止支援net-tools,只支援iproute2。net-tools通過procfs/proc和ioctl系統呼叫去訪問和改變核心的網路配置。iproute2則通過netlink套接字介面與核心通訊。
net-tools中工具的名字比較雜亂,而iproute2則相對整齊和直觀,基本是ip命令加後面的子命令。很多年過去了,net-tools還是廣泛使用,並沒有完全取代,所以對於兩者的命令最好都能夠掌握。

IP地址是一個網絡卡在網路世界的通訊地址,相當於我們現實世界的門牌號碼。
IPv4是32位地址,後來因為IP地址不夠用,又有了IPv6,有128位,現在看來是夠了,但是未來計算機數量不斷增多,會不會出現不夠用的情況還是未知。

類別 IP地址範圍 最大主機數 私有IP地址範圍
A 0.0.0.0 - 127.255.255.255 16777214 10.0.0.0 - 10.255.255.255
B 128.0.0.0 - 191.255.255.255 65534 172.16.0.0 - 172.31.255.255
C 192.0.0.0 - 223.255.255.255 254 192.168.0.0 - 192.168.255.255

由上圖可以看出,對於C類地址,包含的最大主機數量太少了,只有254個。而B類地址的最大主機數量又太多了。6萬多臺機器放在一個網路下面,一般企業基本達不到這個規模,閒著的地址就會造成浪費。

無型別域間選路(CIDR)
出於以上的問題,於是有了一個折中的方式,CIDR。這種方式打破了原來設計的幾類地址的做法,而是把32的IP地址一分為二,前面是網路號,後面是主機號。至於從哪裡分,我們可以看到這類地址後面有個/加一個數字。如10.100.100.1/24。即表示前24位是網路號,後8位是主機號
伴隨著CIDR存在的,一個是廣播地址10.100.100.255。如果傳送這個地址,所有10.100.100網路裡的機器都可以收到。另一個是子網掩碼 255.255.255.0
將子網掩碼和IP地址按位計算AND,就可以得到網路號

MAC地址

link/ether e0:d5:5e:45:69:59 brd ff:ff:ff:ff:ff:ff

MAC地址,是一個網絡卡的實體地址,用16進位制,6個byte表示
這裡大家思考一個問題:
MAC地址號稱全域性唯一,不會有兩個網絡卡有相同的MAC地址,而且MAC地址是在網絡卡生產出來時就確定了的。那為什麼整個網際網路的通訊,不直接全部使用MAC地址呢?按理說只要知道對方的MAC地址,就可以把資訊直接傳過去呀。

這樣當然是不行的。一個網路包要從一個地方到另一個地方,除了要有確定的地址,還需要有定位功能。而有門牌號碼屬性的IP地址,才是有遠端定位功能的。

我們舉個簡單的例子,我目前座標是杭州市西湖區浙大路38號智權大樓D座5層,你為了找到我,可以通過在校園內問人,智權大樓在哪裡?D座在哪裡?你應該是可以找到D座的。但是如果我只告訴你我的身份證號碼,你要尋找我,肯定無從找起,幾乎沒有人會知道身份證號碼為0000的人在哪裡。

MAC地址更像是身份證,是一個唯一的標識。
為什麼設定成唯一的?
為了在組網的時候,不同的網絡卡放在一個網路的時候,可以不用擔心衝突。從硬體角度,保證不同的網絡卡有不同的標識。
我們可以簡單的理解對於IP地址,有定位功能;MAC是身份證,無定位功能。
MAC其實也是有一定的定位的功能的,只不過範圍很小,侷限在一個子網裡面。比如你找到了D座5層,但是我具體在哪一個辦公室,你並不知道。這個時候,你就要發揮你河東獅吼的本事,大吼一聲,身份證號為411527—-的是哪位?我聽到後,就會站出來,說是我啊,我在這裡。但這裡的前提是我要在D座5層,如果我壓根就不在杭州,或者說我不在智權樓,你即使是喊破嗓子我也是聽不到的,你也無法找到我。
這裡可以看出MAC的通訊範圍比較小,侷限在一個子網裡面。例如,從IP地址為192.168.10.2/24這臺主機訪問192.168.10.2/24這臺主機,是可以直接使用MAC地址的。一旦跨子網,即從192.168.10.2/24到192.168.11.2/24,MAC地址就不行了,需要IP地址起作用。

相關推薦

理解IP地址MAC地址

因此 出廠 表示 器) linu PC 多個 CP unknown 概述: IP 是地址,有定位功能(網與網的通訊)(網絡層) MAC 是身份證,無定位功能(在子網幹活)(鏈路層) 首先是如何查看ip地址的問題: Window:ipconfig Linux:ifconf

Linux下通過shell獲取網絡卡的ip地址mac地址

ip=`ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'` mac=`ifconfig | grep HWaddr | awk -F" " '{print $5}'` 轉自:http://blog.csdn.

如何檢視小米手機的IP地址MAC地址

以小米note為例 1 檢視小米手機的IP地址及MAC地址的方法有很多,在主介面找到設定選項,或者下拉螢幕,找到設定。 2 找到設定裡面的WLAN 3 進入wLAN設定後,首要條件是:開啟WLAN,尋找並加入WIFI,因為你不加入WIFI的話,是不存在IP地址的(只能

為什麼同時需要IP地址MAC地址

每個乙太網裝置在出廠時都有一個唯一的MAC地址,為什麼還需要為每臺主機再分配一個IP地址?或者說每臺主機都分配唯一的IP地址,為什麼還要在網路裝置(如網絡卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢? 主要原因有以下幾點: (1)IP地址的分配是根據網路的拓樸結構

網路基礎之ARP地址解析協議(為什麼IP地址MAC地址都要有,又是如何通過IP地址解析到MAC地址的)

ARP協議      Address Resolution Protocol      地址解析協議  在區域網中,網路中實際傳輸的是“幀”,幀裡面是有目標主機的MAC地址的。在乙太網中,一個主機要和另一個主機進行直接通訊,必須要知道目標主機的MAC地址。但這個目標MAC地址

IP地址MAC地址的異同

IP地址和MAC地址相同點是它們都唯一,不同的特點主要有:  1. 對於網路上的某一裝置,如一臺計算機或一臺路由器,其IP地址可變(但必須唯一),而MAC地址不可變。我們可以根據需要給一臺主機指定任意的IP地址,如我們可以給區域網上的某臺計算機分配IP地址為192.168.

IP地址MAC地址

網路分層 思考一個問題? 為什麼網路要分層? 因為複雜的程式都要分層,這是程式設計的要求 電腦科學領域的任何問題都可以通過增加一個間接的中間層來解決,計算機整個體系從上到下都是按照嚴格的層次結構設計的。 理解計算機網路中的概念,一個很好的角度就是:想象

LINUX下獲取網絡卡IP地址MAC地址,子網掩碼程式參考

/* mode time:20120727 LINUX下獲取IP地址和MAC地址.程式相關結構體在程式後面。 列印網絡卡的ip地址 子網掩碼 廣播地址 mac地址 環境: [[email protected] temp]# uname -a Linux b

華為三層交換機綁定IPMAC地址基礎命令

流程 bsp tab mac地址 基本 tegra 端口 root權限 如果 //本文檔主要介紹交換機地址綁定基本流程和用到的命令; //不記得命令可以輸入?查看,或在一段命令中用‘TAB’鍵進行命令補全:如”user-b s mac-a ‘TAB‘ //此處,將自動補全命

Windows 7下用arp命令繫結IPMAC地址,提示“ARP 項新增失敗: 拒絕訪問”的解決方法

在Win 7版本以管理員身份執行時提示:“ARP 項新增失敗:請求的操作需要提升。”    解決辦法: CMD中輸入:netsh i  i show in  //注意兩個i之間是有空格的 然後找到“本地連線”對應的 “Idx” (我的是

delphi 獲取多網絡卡IP地址列表Mac地址

1、宣告windows系統的sendarp函式 function sendarp(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng: pointer): Dword; StdCall;External

Java獲取訪問服務端的客戶端IPMAC地址

/** * 得到訪問者的IP地址 * @return ip * @throws Exception */ public String getI

Linux Arp命令繫結IPMAC地址防止ARP欺騙

Linux Arp命令危害:Linux Arp命令危害極大,有的病毒就使用ARP欺騙,不僅影響自身機器,同時也會影響同網段的其它機器,將其它機器的HTTP資料包里加入病毒程式碼。 1、程式碼例子如:<html><iframe src=http://病毒連結.htm width=0 h

VB.NET獲取區域網IPMAC地址

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         For i = 1 To 10             My.Comp

IP地址MAC地址

class gateway 運行 釋放 width 無法 是否 adapter sub 眾所周知,每一塊網卡在出廠時都燒錄了世界唯一的MAC地址,使用該地址可以在網絡中識別不同的計算機。同時,互聯網中也使用IP地址來定位客戶端,這是因為IP地址比MAC地址定位更方便,而且也

正則表達式 - IP地址Mac地址、端口、經緯度、車牌號碼校驗

size ip地址 端口 font ont round strong [0 -a IP地址驗證: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2

IP地址的網絡地址廣播地址,以及主機數

IP記錄簡便的方法: 例: 100.102.10.20/27 第一步:轉換子網掩碼 27 ==》 255.255.255.224 第二步:我們需要處理的是子網掩碼不是255的地方,所以計算224部分 因為0-255有256個,所以用256-224=32 ==>2^5從最後一段借了3位 第三步:可以看出

正則表示式 - IP地址Mac地址、埠、經緯度、車牌號碼校驗

驗證地址 需要把表示式首尾斜槓去掉 IP地址驗證: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d

第1章 1.3計算機網路概述--規劃IP地址介紹MAC地址

IP地址的作用是:指定傳送資料者和接收資料者。 MAC地址的作用:指定資料包的下一跳轉裝置。就是說明資料下一步向誰發。 路由器的作用:在不同的網段中轉發資料。路由器本質就是有2個網絡卡的裝置。 網絡卡:用於對外發送資料的裝置,有一個唯一的MAC地址,出廠就生成了。每個網絡卡都有快取,包括髮送快取和接收快

克隆之後一鍵修改IP、刪除Mac地址、修改主機名(未測試成功只是思路)

克隆之後需要修改IP、刪除Mac地址、修改主機名 $1:表示IP $2:表示主機名 1.IP 因為IP存在於/etc/sysconfig/network-scripts/ifcfg-eth0 替換IP 刪除HWADDR 2.刪除 rm -rf /etc/udev/rules