MAC層
-
修改網卡屬性來修改MAC地址
大部分的網卡都可以通過在控制面板中修改網卡屬性來更改其MAC地址。在“設備管理器中”,右鍵點擊需要修改MAC地址的網卡圖標,並選擇“屬性/高級”選項卡。在“屬性”區,就可以看到一個稱作“Network Address”或其他相類似名字的的項目,例如“Locally Administrered Address”,總之點擊它,在右側“值”的下方,輸入要指定的MAC地址值。要連續輸入,不要在其間輸入“-”。重新啟動系統后設置就會生效了。
如果你想把網卡的 MAC 地址恢復原樣,只要選擇“ Network Address ”項右邊的“沒有顯示”再重新啟動即可。在 WIN2000 下面是選擇“不存在”,不過不用重新啟動了
IP層
IP分類
-
A類:0.xx.xx.xx ~ 127.xx.xx.xx ( 私有:10.xx.xx.xx )
-
B類:128.xx.xx.xx ~ 191.xx.xx.xx ( 私有:172.16.xx.xx ~ 172.31.xx.xx )
-
C類:192.xx.xx.xx ~ 223.xx.xx.xx ( 私有:192.168.xx.xx )
-
D類:224.xx.xx.xx ~ 239.xx.xx.xx (組播地址) 224.0.0.1指所有主機,224.0.0.2指所有路由器。
特殊IP
-
0.0.0.0 (缺省路由地址)
-
127.0.0.1 (環回地址) 用於IP協議棧測試,不會到達網卡。
-
255.255.255.255 (廣播地址) 指向本網段內的所有主機 (注:路由器不轉發)
-
169.254.x.x (DHCP錯誤)
診斷網絡問題
-
ping 127.0.0.1
TCP/IP協議實體會將目的地址為環回地址的IP包送給上層。如果ping不通,說明 TCP/IP 協議錯誤,查看“事件查看器”系統日志,或重新安裝 TCP/IP 協議
-
ping 本機IP
如果網卡連接正確,IP地址設置正確,則TCP/IP協議會在本地路由表中添加項,使目的地址為本機IP的數據包發給環回地址,即交給上層。如果ping不通,說明網卡連接不正常或IP設置不正確。
注:和ping環回地址一樣,ping本機IP的數據包不會交給網卡發送,IP數據包會根據本機路由表返回給上層。
-
清空ARP緩存
arp -d -
ping 默認網關
如果ping不通,說明本機和網關的連接不正常或網關工作不正常。
NAT
使用私有地址將網絡連至Internet,需要將私有地址轉換為公有地址,這個轉換過程稱為網絡地址轉換(NetworkAddressTranslation,NAT)。
NAT有三種類型,通過改寫數據包的IP地址或端口號實現
-
靜態NAT (Static NAT):固定將某一私有IP地址改寫為公有IP地址。
-
動態地址NAT (Pooled NAT):根據申請的情況,將某一私有IP地址改寫為公有IP地址。
-
網絡地址端口轉換NAPT (Port-Level NAT):根據申請情況,將某一私有IP地址+端口號改寫為公有IP地址+端口號。IP地址+端口號稱為套接字(socket)
NAPT分為四種:設一個內部主機A的socket_i轉換為socket_e
-
full cone NAT, 任何外部主機都可以通過socket_e訪問內部主機A
-
(address) restricted cone NAT, 只有和內部主機A通信過的外部主機才能通過socket_e訪問內部主機A
-
port restricted cone NAT:只有和內部主機A通信過的外部主機上的某個端口才能通過socket_e訪問內部主機A
-
symmetric NAT:內部主機A的socket_i根據連接對象不同,會轉換為不同的socket_e,只有和內部主機A通信過的外部主機才能向內部主機A發包,不同外部主機的套接字會通過不同的socket_e和socket_i進行通信
-
路由器協議
RIP
每30s廣播自己的路由表,並從相鄰路由器接收相鄰節點的路由表,更新自己路由表
OSPF
維護3張表
- 鄰接表
- 鏈路狀態表
- 路由表
1, 每10s廣播Hello包(空包),維護自己的鄰接表;
2, 與鄰接路由器交換鏈路狀態(LSA)的頭部;
3,發送鄰接節點缺失的LSA的請求包;
4,接收鄰接節點反饋的完整的LSA;
5,更新自己的路由表
DSDV
RIP + Sequence Number
DSR
RREQ
RREP
常用網絡命令
- ping (發送ICMP回響請求)
ping 172.18.130.111 –t 一直ping直到ctrl+C
ping 172.18.130.111 -n 100 ping100次。
ping 172.18.130.111 -l 100 數據字段100字節。
- ipconfig
/all 顯示網卡的所有信息。
/flushdns 清空DNS緩存。
/displaydns 顯示DNS緩存。
- tracert
通過遞增TTL值將ICMP回響請求消息發送給目標。
/d 不將路由器的IP地址解析為它們的名稱。
- arp
顯示和修改ARP緩存(IP轉MAC的對照表)。
-a 顯示ARP緩存。
-s 添加ARP緩存的靜態項。如:arp-s10.0.0.8000-AA-00-4F-2A-9C
- nslookup
顯示可用來診斷域名系統(DNS)基礎結構的信息。
- route
在本地IP路由表中顯示和修改條目。
add添加路由 例如:添加默認網關route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
change更改現存路由
delete刪除路由
print打印路由
路由表的含義:
假設本機IP為172.18.130.112,子網掩碼為255.255.255.192,網關IP為172.18.130.65,環路IP為127.0.0.1
IP層協議實體從上層或下層收到任何IP包,用其目的IP地址的網絡部分去匹配路由表,然后進行處理
目的網絡地址 | Gateway | Interface | Metric | 處理過程 | 注釋 |
---|---|---|---|---|---|
127.0.0.0 | 環路IP | 環路IP | 1 | 將IP包送給上層 | 上層發送的測試IP包 |
172.18.130.112 | 環路IP | 環路IP | 20 | 將IP包送給上層 | 發送給本機的IP包 |
172.18.130.64 | 本機IP | 本機IP | 20 | 將IP包下發給接口網卡,網卡加上源MAC(本機的MAC)和目的MAC(目的IP的MAC)發送 | 向直連網段發送的IP包 |
224.0.0.0 | 本機IP | 本機IP | 20 | 組播 | |
172.18.255.255 | 本機IP | 本機IP | 20 | 本地廣播 | |
255.255.255.255 | 本機IP | 本機IP | 1 | 絕對廣播 | |
0.0.0.0 | 網關IP | 本機IP | 20 | 將IP包下發給接口網卡,網卡加上源MAC(本機的MAC)和目的MAC(網關的MAC)發送 | 缺省路由 |
Network Destination 表示目的網絡地址,下划線的部分表示有效的網絡地址(直連網段的子網掩碼為255.255.255.192), Gateway 網關地址 Interface 接口(網卡)
Metric 這里表示路由優先值,如果有多條相同目的地址的路由記錄,路由器會采用metric值小的那條路由,如果同時連接了有線和無線網絡,一般有線是20,無線是30
Persistent Routes:手工配置的靜態固化路由,即時重啟也不會消失
開機生成的路由表項:環回路由 + (本機IP+本機直連+本地廣播)本地IP數 + 組播 + 絕對廣播 + (默認網關)默認網關數
- netstat
顯示活動的TCP連接。
查看端口號9050是否被占用
netstat-aon|findstr"9050"|為管道標示符
查看PID=2016這個進程
tasklist|findstr"2016"
- nbtstat
顯示本地計算機和遠程計算機的基於TCP/IP(NetBT)協議的NetBIOS資料
-n顯示本地計算機的NetBIOS名稱表
-a remotename顯示遠程計算機的NetBIOS名稱表
工作組從本質上說就是共享一個瀏覽列表(Browser List)的一組計算機,每個工作組中有一台主瀏覽器,負責維護本工作組中的瀏覽列表及指定其他工作組的主控服務器列表
一台啟用了文件及打印機共享的主機連入局域網會發送一個包給主瀏覽器告知它的存在,主瀏覽器會將這個信息加入Browser List,並每隔一段周期進行驗證。
初次進行時,這個周期是1分鍾、2分鍾、4分鍾和8分鍾,最后到12分鍾,而之后每12分鍾客戶機都會發一個通知,通知主瀏覽器“我還在呢”。如果經過三個周期(36分鍾),主瀏覽器都沒有聽到“我還在呢”的通知,那么它就會把這個客戶機的名字從Browser List中刪除掉,“網上鄰居”中就再也不會有這個用戶了。
指定某台電腦為主瀏覽器
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters]中將IsDomainMaster的值改為True
指定某台電腦不為主瀏覽器
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters]中將MaintainServerList的值改為No,同時Computer Browser服務也將無法啟動
- net send
在局域網內發消息(不能跨網段,必須開啟Messenger服務)
net send 計算機名/IP地址 "消息內容"。 如:net send 192.192.192.1 "還有5分鍾就下班關閉服務器了
小提示:可以使用以下命令啟動或禁止Messenger服務: net stopMessenger 停止Messenger服務; net startMessenger 開始Messenger服務
ICMP
ICMP全稱Internet Control Message Protocol(網際控制信息協議)。層3網關之間發送IP層的控制報文。
- ICMP報文格式
ICMP報文包括封裝在IP包內,IP頭部的Protocol值為1就說明這是一個ICMP報文,ICMP頭部中的類型(Type)域用於說明ICMP報文的作用及格式,此外還有一個代碼(Code)域用於詳細說明某種ICMP報文的類型,所有數據都在ICMP頭部后面。RFC定義了13種ICMP報文格式,具體如下:
類型代碼 類型描述
0 響應應答(ECHO-REPLY)
3 不可到達
4 源抑制
5 重定向
8 響應請求(ECHO-REQUEST)
11 超時
12 參數失靈
13 時間戳請求
14 時間戳應答
15 信息請求(已作廢)
16 信息應答(已作廢)
17 地址掩碼請求
18 地址掩碼應答
下面是幾種常見的ICMP報文:
1.響應請求
我們日常使用最多的ping,就是響應請求(Type=8)和應答(Type=0),一台主機向一個節點發送一個Type=8的ICMP報文,如果途中沒有異常(例如被路由器丟棄、目標不回應ICMP或傳輸失敗),則目標返回Type=0的ICMP報文,說明這台主機存在,更詳細的tracert通過計算ICMP報文通過的節點來確定主機與目標之間的網絡距離。
2.目標不可到達、源抑制和超時報文
這三種報文的格式是一樣的,目標不可到達報文(Type=3)在路由器或主機不能傳遞數據報時使用,例如我們要連接對方一個不存在的系統端口(端口號小於1024)時,將返回Type=3、Code=3的ICMP報文,它要告訴我們:“嘿,別連接了,我不在家的!”,常見的不可到達類型還有網絡不可到達(Code=0)、主機不可到達(Code=1)、協議不可到達(Code=2)等。源抑制則充當一個控制流量的角色,它通知主機減少數據報流量,由於ICMP沒有恢復傳輸的報文,所以只要停止該報文,主機就會逐漸恢復傳輸速率。最后,無連接方式網絡的問題就是數據報會丟失,或者長時間在網絡游盪而找不到目標,或者擁塞導致主機在規定時間內無法重組數據報分段,這時就要觸發ICMP超時報文的產生。超時報文的代碼域有兩種取值:Code=0表示傳輸超時,Code=1表示重組分段超時。
3.時間戳
時間戳請求報文(Type=13)和時間戳應答報文(Type=14)用於測試兩台主機之間數據報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接收方收到請求后填充接收時間戳后以Type=14的報文格式返回,發送方計算這個時間差。一些系統不響應這種報文。
我的理解
網絡上的傳輸的數據包可以看成是一層一層包起來的信封,
所謂網絡設備工作在某一層,是指這個設備能識別這一層的數據,並利用這一層的數據做一些事情,也就是會拆開數據包的第幾層信封,並利用信封上的內容做一些事情。
網絡連接設備:
中繼器工作在物理層,不能識別幀,只能放大信號強度。
集線器工作在物理層,可以識別幀(會丟棄由於沖突或干擾導致格式錯誤的幀)。向所有端口轉發識別出的幀。不能分割沖突域。
傳統交換機(層2交換機)歸於網橋,工作在數據鏈路層。根據MAC地址來轉發數據,只能分割沖突域,不能分割廣播域。網橋中會有一張MAC->端口表,記錄目的MAC和出口端口的對應關系。這張表由網橋負責維護。層2交換機本身可以沒有MAC地址,但一般為了能生成支撐樹,都會有一個MAC地址,交換機不改寫源和目的MAC地址
路由器工作在網絡層,根據IP地址來轉發數據。可以分割廣播域。
路由器可以看成是一台具有多個IP地址的機器,這些IP地址可能屬於不同的網絡,連接着各自網絡中的主機和別的路由器。(路由器中有一張路由表,記錄着目的網絡和下一站路由器IP地址的對應關系,路由器根據接收IP包中目的IP地址中的網絡號,查找路由表,找到下一站路由的IP地址,並根據ARP協議找到下一站路由的MAC地址,將源MAC改為自己的MAC,目的MAC改為下一站路由的MAC。源IP和目的IP在整個發送過程中都不會變,變的是源MAC和目的MAC地址
簡單來說,把一個主機插入多塊網卡,每塊網卡對應不同的IP地址連入不同的網絡,如果主機具有維護路由表的功能(好像一般都有),並對接收到的數據包根據路由表轉發,這就是一台路由器。
如果接收到包的IP是內網IP,路由器必須進行NAT轉換,將源IP和源端口號換成自己的IP和特定的端口號,並將對應關系保存在NAT表中。NAT協議本身不改寫mac,但nat一般運行於路由器上,路由器會改寫mac。nat協議不是對等的,內部主機A必須先對外部主機B發起連接,然后在nat設備中建立映射項,才能接收主機B的數據,一般會忽略非主機B的接收數據,這對P2P通信造成一定影響。
主機設備:
網卡工作在數據鏈路層,負責發送接收幀。網卡一直監測網線中是否有載波信號,如果有載波,則試圖接收完整的數據幀,並根據幀中的MAC地址決定是否將幀中的IP包上交CPU或丟棄該幀。如果沒有載波且有數據要發送的話,則會發送自己的數據幀(為了減小沖突概率,會延遲一個隨機時間再發送)。
運行在CPU上的IP協議收到網卡上交的IP包后,會看看IP包的目的地址,如果和自己的IP地址相同,則收下該包,處理后上交上層協議。
如果網絡中兩台機器如果IP和MAC地址相同,是可以同時上網的,可這同一台機器上開兩個瀏覽器上網的效果相同,但兩者的應用程序的源端口號必須不同,如果相同,會造成TCP連接中斷
路由器與交換機的區別
(1)工作層次不同
最初的的交換機是工作在OSI/RM開放體系結構的數據鏈路層,也就是第二層,而路由器一開始就設計工作在OSI模型的網絡層。由於交換機工作在OSI的第二層(數據鏈路層),所以它的工作原理比較簡單,而路由器工作在OSI的第三層(網絡層),可以得到更多的協議信息,路由器可以做出更加智能的轉發決策。
(2)數據轉發所依據的對象不同
交換機是利用物理地址或者說MAC地址來確定轉發數據的目的地址。而路由器則是利用不同網絡的ID號(即IP地址)來確定數據轉發的地址。IP地址是在軟件中實現的,描述的是設備所在的網絡,有時這些第三層的地址也稱為協議地址或者網絡地址。MAC地址通常是硬件自帶的,由網卡生產商來分配的,而且已經固化到了網卡中去,一般來說是不可更改的。而IP地址則通常由網絡管理員或系統自動分配。
(3)傳統的交換機只能分割沖突域,不能分割廣播域;而路由器可以分割廣播域
由交換機連接的網段仍屬於同一個廣播域,廣播數據包會在交換機連接的所有網段上傳播,在某些情況下會導致通信擁擠和安全漏洞。連接到路由器上的網段會被分配成不同的廣播域,廣播數據不會穿過路由器。雖然第三層以上交換機具有VLAN功能,也可以分割廣播域,但是各子廣播域之間是不能通信交流的,它們之間的交流仍然需要路由器。
(4)路由器提供了防火牆的服務
路由器僅僅轉發特定地址的數據包,不傳送不支持路由協議的數據包傳送和未知目標網絡數據包的傳送,從而可以防止廣播風暴。
交換機一般用於LAN-WAN的連接,交換機歸於網橋,是數據鏈路層的設備,有些交換機也可實現第三層的交換。 路由器用於WAN-WAN之間的連接,可以解決異性網絡之間轉發分組,作用於網絡層。他們只是從一條線路上接受輸入分組,然后向另一條線路轉發。這兩條線路可能分屬於不同的網絡,並采用不同協議。相比較而言,路由器的功能較交換機要強大,但速度相對也慢,價格昂貴,第三層交換機既有交換機線速轉發報文能力,又有路由器良好的控制功能,因此得以廣泛應用。
傳輸層
-
Well-Known Ports (0 ~ 1023)
FTP: 21 (TCP),Telnet: 23 (TCP),SMTP: 25 (TCP),HTTP: 80 (TCP)DNS: 53 (UDP), SNMP: 161 (UDP)
-
Custom Ports (1024 ~ 65535)
QQ: 8000, 4000 -
在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:
netstat
-a 顯示所有活動的TCP連接以及計算機監聽的TCP和UDP端口。
-n 只以數字形式顯示所有活動的TCP連接的地址和端口號。
-o 顯示連接進程ID(PID)。PID可以在任務管理器中查看(選擇列添加)
-p Protocol 顯示指定協議的連接。Protocol 可以是 tcp、udp、tcpv6 或 udpv6。
-e 表示顯示以太網發送和接收的字節數、數據包數等。
-s 按協議顯示統計信息。查看端口號9050是否被占用
netstat -aon|findstr "9050" |為管道標示符
查看PID=2016這個進程
tasklist|findstr "2016" -
限制端口
1、通過系統自帶功能“限制開放”需要的端口(Win2000/XP/server2003)
通過系統自有的“TCP/IP篩選功能”限制服務器端口,控制面板-網絡連接-“本地連接”-右鍵-屬性,然后選擇internet(tcp/ip)-屬性-高級-選項-選中TCP/IP篩選-屬性,在這里分為3項,分別是TCP、UDP、IP協議,假設我的系統只想開放21、80、25、110這4個端口,在“TCP端口”上勾選“只允許”然后點擊“添加”依次把這些端口添加到里面,然后確定,重新啟動后生效。
2、通過系統自帶防火牆增加“允許通過”的端口 (Windows XP - SP2)
控制面版-windows防火牆-例外-添加端口,在取名后,輸入端口號,確認TCP或者UDP協議,然后確認,在你取名的這個設置前打勾,表示允許通過此端口,不打勾表示不例外。
3、利用帶有的“本地安全策略”功能關閉端口(WINXP HOME版本無此功能)
fast TCP protocols
- TCP fast open
- QUIC
- KCP
應用層
HTTP
1991 HTTP/0.9
1996 HTTP/1.0
1997 HTTP/1.1 默認采用keep alive的長TCP連接(即打開一個網頁后,建議底層的TCP連接保持較長的時間)
2000 HTTPS HTTP over TLS/SSL
2016 HTTP/2 並發
2020 HTTP/3 HTTP over QUIC over UDP
其它
啟用 802.1X 身份驗證
開啟服務 “Wired AutoConfig”,然后再本地連接屬性中選中啟用 802.1X 身份驗證