計算機網絡總結


1、TCP/IP 模型

這里寫圖片描述

2、TCP/IP各層的協議和接口

這里寫圖片描述

ARP的存在層是有爭議性的,書上有說,它在網絡層進行封裝(在IP報頭之后)一般在數據鏈路層進行廣播尋求MAC地址時,才會觸發它

3、各層基本概念
//物理層:
該層為上層提供了一個傳輸數據的可靠的物理媒體,物理層確保了原始數據在各種物理媒體上傳輸

//數據鏈路層
數據鏈路層在不可靠的物理介質中提供可靠的傳輸。
在物理層提供的服務基礎上向上級提供服務,最基本的服務是接收來自網絡的數據塊並將接收到數據塊(幀)傳遞給上層。
這就要求數據鏈路層具備很多條件:如何建立網絡連接、如何控制幀在數據鏈路層的傳輸。
該層作用:物理地址尋址,數據的檢測、重發,流量控制

//網絡層
實現兩個端系統之間的數據透明傳輸
功能包括:邏輯尋址、路由選擇、連接的建立、保持和終止
它提供的服務使傳輸層不需要了解底層的實現
IP協議:提供不可靠,無連接的傳輸。 功能:無連接數據報傳輸,數據報路由選擇,差錯控制。

//網絡層只是根據網絡地址將源節點發出的數據報傳送到目的地的節點
//傳輸層則負責將數據可靠的傳輸到相對應的端口

//傳輸層
第一個端到端、主機到主機的層次。 傳輸層負責將上層數據分段並提供 端到端,可靠或不可靠的服務。在傳輸層也要處理端對端的差錯控制與流量控制。
4、數據報傳輸詳情

這里寫圖片描述

1、我們把自身數據在傳輸過程中額外的數據叫報頭
2、每一層都有不同的功能,每一次都有不同的報頭
3、層與層之間具有上下級關系,上層使用下層的接口收發數據,下層使用上層的接口交付數據(分用)
4、用戶數據自頂向下增加報頭為封裝,自低向上為解報
5、當前層接收上層的信息都為數據,當前層並不關心內容,都會增加相對應報頭
6、每層協議都要可以將數據與報頭分離
定長報頭:報頭長度固定
自描述報頭:在報頭信息中包含報頭長度
7、每層協議在忽略其底層的所有協議時,都會認為自己在與對方直接通信,發送的數據就是其接收的數據
8、不同層的協議不能識別
5、以太網協議報

這里寫圖片描述

1、源地址和目的地址是指網卡的硬件地址(也叫MAC地址),長度是48位,是在網卡出場時固化的。⽤ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。

2、幀協議類型字段有三種值,分別對應IP數據(上層交付的)、 ARPRARP

3、幀校驗碼:32位的循環冗余校驗碼,來檢查幀數據是否被破壞

4、幀間距: 當一個幀發送出去之后,發送方在下次發送幀之前,需要再發送至少12個字節的空閑線路狀態碼。

5、以太網幀中的數據長度規定最小46 字節,最大1500 字節,當數據超過1500時,會分片操作,這個過程不會在數據鏈路層完成,因為以太網的報頭中不包含其信息。ARPRARP 數據包的長度不夠46 字節,要在后面補填充0。


6、ARP協議(地址解析協議

這里寫圖片描述

1、注意到源MAC地址、目的MAC地址在以太網部和ARP請求中各出現一次,對於鏈路層為以太網的情況是多余的,但如果鏈路層是其它網絡類型則有可能是必要的。
2、幀類型: 如果是ARP報文,值為0x0806
3、硬件類型指鏈路層網絡類型,1為以太網
4、協議類型指要轉換的地址類型
5、op字段為1表示ARP請求,op字段為2表示ARP應答,3表示RARP請求包,4表示RARP應答包
6、命令arp -a查詢ARP緩存表(存放mac地址)(緩存表是有時限的,一般是20分鍾)


//原理:
假設 主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01
主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02
當主機A要與主機B通信時,地址解析協議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:

1步:根據主機A上的路由表內容,IP確定用於訪問主機B的轉發IP地址是192.168.1.2。然后A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。

2步:如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每台主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。

3步:主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。

4步:主機B將包含其MAC地址的ARP回復消息直接發送回主機A

5步:當主機A收到從主機B發來的ARP回復消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束后,將再次重復上面的過程。
主機B的MAC地址一旦確定,主機A就能向主機B發送IP通信了。
//ARP欺騙

阻止目標的數據包通過網關
1>比如在一個局域網內通過網管上網,那么連接外部的計算機上的ARP緩存中就存在網管IP-MAC對應記錄

2>如果,該記錄被更改,那么該計算機向外發送的數據包總是發送到了錯誤的網關硬件地址上,這樣,該計算機就不能上網了。

3>這里也主要是通過ARP欺騙進行的。有兩種方法達到這樣的目的:
Ø 向目標發送偽造的ARP應答數據包,其中發送方的IP地址為網管的地址,而MAC地址則為一個偽造的地址。當目標接收到ARP包,那么就更新自身的ARP緩存。如果該欺騙一直持續下去,那么目標的網管緩存一直是一個被偽造的錯誤記錄。不過,如果使用arp –a,就知道問題所在了。

Ø 第二種方法是欺騙網管。向網管發送偽造的ARP應答數據包,其中發送方的IP地址為目標的IP地址,而MAC地址則為一個偽造的地址。這樣,網管上的目標ARP記錄就是一個錯誤的,網管發送給目標的數據報都是使用了錯誤的MAC地址。這種情況下,目標能夠發送數據到網管,卻不能接收到網管的任何數據。同時,目標自己查看arp –a卻看不出任何問題來。


//防御措施


1、不要把網絡安全信任關系建立在IP基礎上或MAC基礎上(RARP同樣存在欺騙的問題),理想的關系應該建立在IP+MAC基礎上。
2、設置靜態的MAC-->IP對應表,不要讓主機刷新設定好的轉換表。
除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應表中。
3、使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這台ARP服務器不被黑。
4、使用硬件屏蔽主機。設置好路由,確保IP地址能到達合法的路徑(靜態配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。
5、管理員定期用響應的IP包中獲得一個RARP請求,然后檢查ARP響應的真性。
6、管理員定期輪詢,檢查主機上的ARP緩存。
7、使用防火牆連續監控網絡。注意有使用SNMP的情況下,ARP的欺騙有可能導致陷阱包丟失。
8、若感染ARP病毒,可以通過清空ARP緩存、指定ARP對應關系、添加路由信息、使用防病毒軟件等方式解決
7、IP 數據報與ip協議

這里寫圖片描述

1、IPv4 ,4位版本字段是4

24位首部長度的數值是以4字節為單位的,最小值為5,也就是說首部長度最小是4x5=20字節,也就是不帶任何選項的IP首部,4位能表示的最小值是15,最大值為60字節。

38位TOS字段有3個位來指定IP數據報的優先級(⽬前已經廢棄不⽤),還有4個位表示可選的服務類型(最小延遲、最大呑吐量、最大可靠性、最小成本),還有一個位總是0

416位總長度是整個數據報(包括IP⾸部和IP層payload)的字節數。
每傳一個IP數據報,16位的標識加1,可用於分片和重新組裝數據報。

516位標識:把分片后的報文集合在一起,用於組裝
3位標志 保留位 不可分片標志 結尾標識(10
13位片偏移(把分片的報文排序組裝,可用於判斷報文的丟失)

6、TTL(Time to live):源主機為數據包設定一個生存時間,如64,每過一個路由器就把該值減1,如果減到0就表⽰路由已經太長了仍然找不到目的主機的網絡,就丟棄該包,因此這個生存時間的單位不是秒,⽽是跳(hop)(路過路由器的次數)

7、協議字段指上層協議是TCP、 UDP、 ICMP還是IGMP。

816位校驗和,只校驗IP首部,數據的校驗由更高層協議負責。

IP地址:
1)、網絡地址:
IP地址由 網絡號 和主機號組成,網絡地址的主機號全為0,標識着整個網絡
2)、廣播地址:
廣播地址通常為直接廣播地址,是為了區分受限廣播地址,廣播地址與網絡地址的主機號剛好相反,全為1,當向某個網絡的廣播地址發送消息時,該網絡內所有主機都能收到該廣播(既可以本地,也可以跨網段)
3)、組播地址
D類地址就是組播地址
回憶::

     A類地址:   0      開頭,第一個字節為網絡號,地址范圍 0.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.255D類地址作為組播地址(一對多的通信);
   E類地址: 1111 開頭,地址范圍是240.0.0.0~255.255.255.255E類地址為保留地址,供以后使用。
  注:只有A,B,C有網絡號和主機號之分,D類地址和E類地址沒有划分網絡號和主機號。
4)、255.255.255.255
為受限的廣播地址,他只能用於本地網絡,路由器不會轉發以受限廣播地址為目的地址的分組
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
8、TCP協議

這里寫圖片描述

1、TCP基於請求應答機制,它並不是完全可靠,只有經過確認的的消息才是可靠的,所以,傳遞的最后一條消息無法保證可靠性
2、面向連接的安全的全雙工字節流(雙向隨時通信)管道屬於半雙工。
332位序號,(自己的),保證傳遞的數據按序到達
432位確定號,(對方的),基於確定號查看是否丟包,選擇重傳
5、報頭長度:20-60字節(有4位首部長度)以4字節為單位,最小為5,最大為15
6、SYN:同步標志,建立連接報文(三次握手)
FIN:用於斷開連接
ACK:當被設置時,認為是請求確認報文
RST:重置連接,當連上服務器長時間不訪問目的服務器時,會自動重置
PSH: 為1表示有真正的date數據報
URG:緊急標志位,被設置時,表示序列號開始到緊急指針之間的報文為緊急數據。
716位窗口大小:基於滑動窗口(接收緩沖區大小)進行流量控制的,發送方給接收方發送的信息中,會包含發送方的緩沖區大小,接收方會根據發送方緩沖區的大小進行數據調整
8、如果出現大面積的丟包,不會執行選擇重傳機制,會執行TCP網絡擁塞算法
9、設置了多種定時器,保證數據傳輸的可靠性(超時重傳定時器)

URG 與PSH區別:

URG標志 URG 緊急指針有效。當URG=1時,表示分段中有緊急數據應當加速傳送。
PSH標志 PSH 緊急位。當PSH=1時,要求發送方馬上發送該分段,而接收方盡快的將報文交給應用層,不做隊列處理。
URG=1,表示緊急指針指向包內數據段的某個字節(數據從第一字節到指針所指字節就是緊急數據),不進入接收緩沖(一般不都是待發送的數據要先進入發送緩存嗎?)就直接交給上層進程,余下的數據都是要進入接收緩沖的;一般來說TCP是要等到整個緩存都填滿了后再向上交付,但是如果PSH=1的話(把緊急數據之后的數據從緩存區交付給上層),就不用等到整個緩存都填滿,直接交付,但是這里的交付仍然是從緩沖區中交付的,URG是不要經過緩沖區的,千萬記住!

9、UDP協議

1、UDP用戶數據報協議,是面向無連接的通訊協議,
2、UDP數據包括目的端口號和源端口號信息,由於通訊不需要連接,所以可以實現廣播發送。
3、UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程序員編程驗證。
4、UDP與TCP位於同一層,但它不管數據包的順序、錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。
5、每個UDP報文分UDP報頭和UDP數據區兩部分。報頭由四個16位長(2字節)字段組成,分別說明該報文的源端口、目的端口、報文長度以及校驗值。UDP報頭由4個域組成,其中每個域各占用2個字節,具體如下:
  (1)源端口號;
  (2)目標端口號;
  (3)數據報長度;
  (4)校驗值。
  使用UDP協議包括:TFTP(簡單文件傳輸協議)、SNMP(簡單網絡管理協議)、DNS(域名解析協議)、NFS、BOOTP。


  TCP UDP 的區別:TCP是面向連接的,可靠的字節流服務;UDP是面向無連接的,不可靠的數據報服務。
10、TCP通信之三次握手與四次揮手

這里寫圖片描述

三次握手:
首先,client端發送SYN連接請求,server端收到連接請求,會回復SYN+ACK數據報,client端再發送ACK數據報確認連接。

為什么要三次握手:
server端在回復連接請求時,數據在傳送過程中可能會丟失,client端數據重新傳輸,並不會有什么問題,但是如果是由於網絡原因產生阻塞(數據阻塞在某個節點),導致連接暫時沒有成功,client端再次發送數據,這會導致server端在最終收到兩個連接請求,並建立兩個連接資源,要是client發送多個請求,導致資源浪費,所以三次握手灰常重要

四次揮手:
當斷開連接時,就是兩個人的事,client端發送FIN數據報請求斷開連接,然后進入FIN_WAIT狀態,server端接收到客戶端數據時,發送ACK報文確定,再發送他沒有發送完的數據,當發送完數據時,再發送FIN報文也請求斷開連接,又因為client端不相信網絡,它再次發送ACK數據報確定,進TIME_WAIT狀態,server端收到ACK報文后,關閉連接,client端等待2MSL(數據報傳輸時間),沒有收到server端的報文,說明斷開連接,自己也斷開連接

為什么要四次揮手:
保證一次合約的完整執行,確保數據傳輸的可靠性。

11、DNS協議

域名系統(DomainNameSystem)的縮寫,該系統用於命名 組織到域層次結構的計算機和網絡服務,可以簡單的理解為將URL轉換為IP地址。在Internet網上,域名與IP一一對應,DNS就是對域名解析的服務器,DNS命名用於TCP/IP網絡中,通過用戶好友的名稱查詢計算機和服務。

工作原理:
A主機要訪問百度,那先向本地的NDS服務器發送請求,本地NDS服務器查詢自己的DNS緩存表中有沒有百度的IP地址,有的話,就直接訪問百度網站服務器,沒有的話,就向根DNS服務器發送訪問請求,然后,根服務器根據域名地址的類型,返回對應的域DNS服務器IP地址給主機A,主機A再去訪問域DNS服務器,域服務器通過查詢注冊信息,告訴主機A百度的服務器IP在哪里,這樣就得到了百度的IP

這里寫圖片描述

12、NAT協議

NAT網絡地址轉換屬於接入廣域網(WAN)技術,是一種將私有地址轉化為合法IP地址的一種高技術,被廣泛應用於各種類型的Internet接入方式和各種類型的網絡中,完美解決了IP地址不足的問題,還能有效避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機

13、HTTP協議

超文本傳輸協議,是互聯網應用最廣泛的一種網絡協議,所有的www文件都遵循這個標准
1、基於client—-server模式
2、基於傳輸層(TCP協議),是應用層的面向對象的協議
3、訪問時簡單,快速(只需要傳入路徑或者方法就可以)
4、靈活(可以傳輸任意類型)
5、無連接的(限制每次連接只處理一個請求)
客戶端發起請求,服務器處理請求,服務器收到客戶端應答,斷開連接
6、無狀態連接(對輸入處理沒有記憶功能)
有記憶指:客戶端(瀏覽器等cookie功能)、、服務端()
7、HTTP協議包括的請求:
GET: 請求讀取由URL所標志的信息(安全的,不會修改,添加信息)
POST: 給服務器添加信息(如注釋)
PUT: 在給定的URL下存儲一個文檔
DELETE: 刪除給定的URL所標志 的資源

GET與POST方法有以下區別:

(1) 在客戶端, Get 方式在通過 URL 提交數據,數據 在URL中可以看到;POST方式,數據放置在HTML HEADER內提交。
(2) GET方式提交的數據最多只能有1024字節,而POST則沒有此限制。
(3) 安全性問題。正如在( 1 )中提到,使用 Get 的時候,參數會顯示在地址欄上,而 Post 不會。所以,如果這些數據是中文數據而且是非敏感數據,那么使用 get ;如果用戶輸入的數據不是中文字符而且包含敏感數據,那么還是使用 post 為好。
(4) 安全的和冪等的。所謂安全的意味着該操作用於獲取信息而非修改信息。冪等的意味着對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。換句話說, GET 請求一般不應產生副作用。從根本上講,其目標是當用戶打開一個鏈接時,她可以確信從自身的角度來看沒有改變資源。比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。 POST 請求就不那么輕松了。POST 表示可能改變服務器上的資源的請求。仍然以新聞站點為例,讀者對文章的注解應該通過 POST 請求實現,因為在注解提交之后站點已經不同了(比方說文章下面出現一條注解)

這里寫圖片描述

14、在瀏覽器輸入www.baidu.com 后執行的全過程:

1、客戶端通過瀏覽器訪問服務器(baidu.com),首先通過NDS(IP地址解析協議)解析到www.baidu.com的IP地址(這塊不清楚可以看看DNS工作原理),通過這個IP找到客戶端通往服務器的路徑。

2、查找過程
客戶端瀏覽器發起一個http會話,然后通過TCP協議封裝,傳輸到網絡層。

客戶端在傳遞http會話過程中(傳輸層),會將HTTP會話請求分為報文段,添加源和目的端口,然后使用IP層的IP地址查找目的端。

客戶端在網絡層不用關心應用層或者傳輸層的信息,它主要是通過路由表確定如果到達服務器端。期間可能經過多個路由

在鏈路層,通過ARP協議查詢給定IP的MAC地址,具體就是發送廣播等一系列操作,當得到回應時,就拿到了IP的MAC地址(我們都知道 得到IP與MAC 就可以准確的到達對方),就可以直接建立聯系,發送數據報請求。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com