本文比較長,有些沒有詳細介紹的將會拆分出來在新的博客中。php
OSI參考模型:html
除了標準的OSI七層模型之外,常見的網絡層次劃分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關係以下圖所示:算法
物理層重要設備:中繼器(放大器)和集線器。數據庫
數據鏈路層重點:瀏覽器
1爲網絡層提供可靠的數據傳輸;緩存
2基本數據單位:幀;安全
3主要協議:以太網協議;服務器
4重要設備:網橋和交換機。網絡
網絡層中涉及衆多的協議,最重要的協議是TCP/IP,核心協議——IP協議。分佈式
IP協議僅僅提供不可靠、無鏈接的傳送服務。
IP協議的主要功能有:無鏈接數據報傳輸、數據報路由選擇和差錯控制。
網絡層的重點:
一、負責對子網間的數據包進行路由選擇。實現擁塞控制、網際互連等功能;
二、基本數據單位:IP數據報;
三、包含的主要協議:
IP協議(Internet Protocol,因特網互聯協議);
ICMP協議(Internet Control Message Protocol,因特網控制報文協議);
ARP協議(Address Resolution Protocol,地址解析協議);
RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)。
四、重要設備:路由器。
網絡層重點:
一、負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸以及端到端的差錯控制和流量控制問題;
二、主要協議:
TCP協議(Transmission Control Protocol,傳輸控制協議)、
UDP協議(User Datagram Protocol,用戶數據報協議);
三、重要設備:網關。
會話層、表示層和應用層重點:
一、數據傳輸基本單位:報文;
二、主要協議:FTP(文件傳送協議)、Telnet(遠程登陸協議)、DNS(域名解析協議)、SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議(Hyper Text Transfer Protocol)。
1)網絡地址
IP地址 = 網絡號(包括子網號)+ 主機號組成
規定首字節不能是127、0、255,主機各位不能同時爲0和1。主機號全0表示網絡號,主機號全1表示廣播地址
A類地址:0開頭。 網絡號:第一個字節。 範圍:1.0.0.0 ~ 127.255.255.255
B類地址:10開頭。 網絡號:前兩個字節。 範圍:128.0.0.0 ~ 191.255.255.255
C類地址:110開頭。網絡號:前三個字節。 範圍:192.0.0.0 ~ 223.255.255.255
D類地址:1110開頭。範圍:224.0.0.0 ~ 239.255.255.255
E類地址:1111開頭。範圍:240.0.0.0 ~ 255.255.255.255。E類地址爲保留地址,供之後使用。
只有A,B,C有網絡號和主機號之分,D類地址和E類地址沒有劃分網絡號和主機號。
2)廣播地址
廣播地址(直接廣播地址),區分受限廣播地址。
主機號爲全1。當向某個網絡的廣播地址發送消息時,該網絡內的全部主機都能收到該廣播消息。
3)組播地址
D類地址做爲組播地址,一對多的通訊;
4)255.255.255.255
該IP地址是受限廣播地址,只能用於本地網絡,路由器不會轉發以受限廣播地址爲目的地址的分組;廣播地址(直接廣播地址)可以經過某些路由器(不是全部的路由器),而受限的廣播地址不能經過路由器。
5)0.0.0.0
經常使用於尋找本身的IP地址,例如在咱們的RARP,BOOTP和DHCP協議中,若某個未知IP地址的無盤機想要知道本身的IP地址,它就以255.255.255.255爲目的地址,向本地範圍的服務器發送IP請求分組。
6)迴環地址
127.0.0.0/8被用做迴環地址,迴環地址表示本機的地址,經常使用於對本機的測試,用的最多的是127.0.0.1。
7)A、B、C 類私有地址
私有地址(private address),私有路由不能對外直接提供信息
在 IPv4 規劃時擔憂 IP 有不足的狀況,並且爲了應付某些企業內部的網絡設定,因而有了私有 IP (Private IP) 。私有 IP 分別在 A, B, C 三個 Class 當中各保留一段做爲私有 IP 網段:
Class A:10.0.0.0 - 10.255.255.255
Class B:172.16.0.0 - 172.31.255.255
Class C:192.168.0.0 - 192.168.255.255
網段上每臺主機保存ARP表或ARP緩存的表格,其中包含了網段上其餘主機的IP地址與物理地址的對應關係。
ARP協議工做流程:
1、當主機向網段上的其餘主機發送數據時,先查看ARP緩存上物理地址。ARP緩存是動態變化的
2、不在ARP緩存中,主機發送一個名爲ARP請求幀的廣播。ARP請求幀包含爲解析的IP地址,還包含發送這個請求的主機的IP地址和物理地址。
三、網段上的其餘主機收到請求,擁有這個未解析IP地址的主機向發出請求的主機發送本身的物理地址。這個新的IP地址與物理地址的對應關係就會添加到請求主機的ARP緩存中。
RARP協議工做流程:
1、給主機發送一個本地的RARP廣播,在此廣播包中,聲明本身的MAC地址而且請求任何收到此請求的RARP服務器分配一個IP地址;
2、本地網段上的RARP服務器收到此請求後,檢查其RARP列表,查找該MAC地址對應的IP地址
IPv4的網絡號佔位太多,而主機號位太少,主機地址稀缺。爲了有效地利用IP地址,經過對主機號的高位部分取做爲子網號,從一般的網絡位界限中擴展或壓縮子網掩碼,用來建立某類地址的更多子網。(建立更多子網時,每一個子網上可用主機地址數目減小)
什麼是子網?
子網劃分能夠利用IP地址系統把物理網絡分解爲更小的邏輯實體——子網。
子網的概念最先源自於地址分類系統,並且在ABC類地址中可以獲得很好的展示。然而硬件廠商和internet社區創建了一種解析地址的新系統,名爲無類別域間路由(CIDR),它不須要關心地址類別。
子網最顯著的特徵具備子網掩碼。劃分子網時須要注意:主機ID爲全0時表示網絡ID,全1時表示廣播地址。
什麼是子網掩碼?
子網掩碼:標誌兩個IP地址是否同屬於一個子網,是32位二進制地址。1表明該位是網絡位,0表明主機位。它和IP地址同樣也是使用點式十進制來表示。
若是兩個IP地址在子網掩碼的按位與的計算下所得結果相同,即代表它們共屬於同一子網中。
子網掩碼不能單獨存在,必須結合IP地址一塊兒使用。子網掩碼只有一個做用,就是將某個IP地址劃分紅網絡地址和主機地址兩部分。
A類默認子網掩碼 255.0.0.0 一個子網最多能夠容納1677萬多臺電腦
B類默認子網掩碼 255.255.0.0 一個子網最多能夠容納6萬臺電腦
C類默認子網掩碼 255.255.255.0 一個子網最多能夠容納254臺電腦
1、經過子網掩碼計算子網個數及每一個子網中可以使用的主機地址個數:
一、轉換成二進制:11111111.11111111.11111111.00000000,後面有8個0
2、2^8 -- 2 = 254臺,(有兩個IP不能用,最後一段不能爲0和255)
若要把***.***.***.0/m劃分爲***.***.***.0/n(m<n<32),獲得的子網個數爲2^(n-m),去掉全0和全1,可用子網個數爲2^(n-m) -- 2,每一個子網中可以使用的主機地址是2^(32-n) -- 2。
把網絡117.15.32.0/23劃分爲117.15.32.0/27,獲得的子網是 16 個,可用子網個數爲14個,每一個子網中可以使用的主機地址是 30 個。
2、經過子網個數或主機地址個數計算子網掩碼:
1)根據主機數計算子網掩碼:
1、將主機數目轉化爲二進制來表示:700 = 1010111100
2、若是主機數小於或等於254(N<8)(注意去掉保留的兩個IP地址),取該主機的二進制位數N 。若是大於254, N>8,說明主機地址佔據不止8位。該二進制爲十位數,N=10
3、使用255.255.255.255將該類IP地址的主機地址位數所有置1,而後從後向前的將N位所有置爲 0,即爲子網掩碼值。
子網掩碼一共由32位組成,肯定後面10位是0,那前面的22位就是1,最合適的子網掩碼:11111111.11111111.11111100.00000000,轉換成10進制:255.255.252.0。
2)根據子網數計算子網掩碼:
1、27-1=26,轉化爲二進制11010(--1由於計算機從0開始,到26纔是27個)
2、該二進制的位數:N=5。B類地址的子網掩碼255.255.0.0,將其主機地址前5位置1,即11111111.11111111.11111000.00000000=255.255.248.0。
注:將主機地址前5位置1,劃分出2^5 -- 2=30個子網。(去掉全0和全1的子網)
IP地址的網段
把IP的每一段轉換爲一個二進制數,192.168.0.1 = 11000000.10101000.00000000.00000001
IP 11000000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
要想在同一網段,必需作到網絡標識相同。各種IP的網絡標識算法:A類只算第一段。B類只算第1、二段。C類算第1、2、三段。
將 IP 地址和子網掩碼進行邏輯與運算
如:192.168.0.1, 255.255.255.0,先轉換爲二進制
IP 11000000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
邏輯與結果 11000000.10101000.00000000.00000000
轉換爲十進制192.168.0.0,這就是網絡標識
再將子網掩碼取反:00000000.00000000.00000000.11111111,與IP邏輯與運算
得出結果00000000.00000000.00000000.00000001,轉換爲10進制,即0.0.0.1,
0.0.0.1就是主機標識。
先轉換成二進制
188.188.0.111 = 10111100.10111100.00000000.01101111
188.188.5.222 = 10111100.10111100.00000101.11011010
255.255.254.0 = 11111111.11111111.11111110.00000000 (子網掩碼)
分別將 IP 地址和子網掩碼進行邏輯與運算,得
10111100.10111100.00000000.00000000
10111100.10111100.00000100.00000000
B類IP ,判斷第一二段,網絡標識同樣,在同一網段。
TCP/IP協議族,簡稱TCP/IP。該協議家族的兩個核心協議:TCP(傳輸控制協議)和IP(網際協議)TCP負責發現傳輸的問題,一有問題就發出信號,要求從新傳輸,直到全部數據安全正確地傳輸到目的地。IP給因特網的每臺聯網設備規定一個地址。
DNS(Domain Name System,域名系統),因特網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。經過主機名,最終獲得該主機名對應的IP地址的過程叫作域名解析(或主機名解析)。
詳細參考維基百科:https://zh.wikipedia.org/wiki/域名系統
DNS域名查找流程
當用戶在瀏覽器中輸入域名,如:www.google.com,並按下回車後,DNS解析過程大致以下:
注:下面標題對應着序號
1、瀏覽器緩存檢查(本機)
瀏覽器會首先搜索瀏覽器自身的DNS緩存(域名被緩存的時間能夠經過TTL屬性來設置,通常是1分鐘,且只能容納1000條緩存),若是自身的緩存中有www.google.com對應的條目,並且沒有過時,則解析到此結束。
2、操做系統緩存檢查(本機)+hosts解析(本機)
若是瀏覽器自身緩存裏沒有對應條目,瀏覽器去搜索操做系統自身的DNS緩存中是否有這個域名對應的DNS解析結果,若是找到且沒有過時則中止搜索解析到此結束。
在Linux中能夠經過/etc/hosts文件來設置域名解析的IP地址。瀏覽器會首先使用這個IP地址。當解析到這個域名時,操做系統會在自身的DNS緩存中緩存這個結果
3、本地區域名服務器解析(LDNS)
若是在hosts文件中沒有找到對應的條目,瀏覽器會發起一個DNS的系統調用,向本地配置的首選DNS服務器(LDNS通常是電信運營商提供)發起域名解析請求。經過UDP協議向DNS的53端口發起遞歸請求,運營商的DNS服務器必須提供咱們該域名的IP地址。
大約80%的域名解析都到這裏就已經完成了,因此LDNS主要承擔了域名的解析工做。運營商的DNS服務器首先查找自身的緩存,找到對應的條目,且沒有過時,則解析成功。
4、請求根域名服務器(Root Server)
若是LDNS沒有找到對應的條目,運營商的DNS發起一系列迭代DNS解析請求。首先向根域名服務器(根域名. 內置13個根域DNS的IP地址)發起請求。
五、根域名服務器向LDNS服務器返回所查詢的主域名服務器地址
主域名服務器(gTLD),是國際頂級域名服務器(包含.com、.cn、.org等),全球只有13臺。根域發現這是一個頂級域com域的一個域名,因而就告訴運營商的DNS我不知道這個域名的IP地址,可是我知道com域的IP地址,你去找它去。
6、本地域名服務器向主域名服務器發送請求。
因而運營商的DNS就獲得了com域的IP地址,又向com域的IP地址發起了請求(請問www.google.com這個域名的IP地址是多少?),com域這臺服務器告訴運營商的DNS我不知道www.google.com這個域名的IP地址,可是我知道google.com這個域的DNS地址,你去找它去。
七、gTLD服務器返回此域名對應的管理方域名服務器(Name Server)的地址
Name Server是你註冊的域名服務器,你在某個域名服務提供商申請了域名,那麼這個域名解析任務就由這個域名提供商完成。
八、Name Server域名服務器會查詢存儲的域名和IP的映射關係表,
正常狀況下都根據域名獲得目標IP記錄,連同一個TTL值返回給DNS Server域名服務器。
因而本地區域名服務器的DNS又向google.com這個域名的DNS地址發起請求(請問www.google.com這個域名的IP地址是多少?)這個時候google.com域的DNS服務器一查,果然在我這裏
九、返回該域名對應的IP和TTL值
Local DNS Server會緩存這個域名和IP的對應關係,緩存的時間由TTL值控制。
而後把找到的結果發送給運營商的DNS服務器
十、把解析的結果返回給用戶
這個時候運營商的DNS服務器就拿到了www.google.com這個域名對應的IP地址。
用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束。
超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分佈式、協做式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通訊的基礎。
一、Get是從服務器上獲取數據,Post是向服務器發送數據。
二、Get傳送的數據量小,不能大於2KB;Post傳送的數據量較大,通常被默認爲不受限制。注:get自己是沒有限制大小的,因爲get的參數都是拼接在url上,由於瀏覽器的限制,才限制在2KB
三、根據HTTP規範,GET用於信息獲取,並且應該是安全的和冪等的。
關於http協議,寫起來又是一長篇鉅著,待我往後有空補充。