如何做網(wǎng)站的基礎惠州優(yōu)化怎么做seo
一、TCP/IP五層模型
-
物理層(Physical Layer):物理層是最底層,負責傳輸比特流(bitstream)以及物理介質(zhì)的傳輸方式。它定義了如何在物理媒介上傳輸原始的比特流,例如通過電纜、光纖或無線傳輸?shù)取?/p>
-
數(shù)據(jù)鏈路層(Data Link Layer):數(shù)據(jù)鏈路層位于物理層之上,負責在直接相連的節(jié)點之間傳輸數(shù)據(jù)幀(Frame)。它將比特流組織成幀,并提供數(shù)據(jù)的可靠傳輸、差錯檢測和糾正等功能。常見的協(xié)議包括以太網(wǎng)(Ethernet)和Wi-Fi。
-
網(wǎng)絡層(Network Layer):網(wǎng)絡層處理分組(Packet)的傳輸和路由,負責將數(shù)據(jù)從源主機傳輸?shù)侥繕酥鳈C。它定義了邏輯地址(如IP地址)和路由選擇算法,并通過Internet Protocol (IP) 進行數(shù)據(jù)的分組、定址和轉(zhuǎn)發(fā)。
-
傳輸層(Transport Layer):傳輸層提供端到端的可靠數(shù)據(jù)傳輸服務,負責將數(shù)據(jù)從發(fā)送方傳輸?shù)浇邮辗降亩丝?。它通過傳輸協(xié)議(如TCP和UDP)提供了連接管理、流量控制、差錯檢測和糾正等功能。
-
應用層(Application Layer):應用層是最高層,負責處理特定應用程序之間的通信。它包括各種應用協(xié)議,如HTTP、FTP、SMTP和DNS等,用于實現(xiàn)不同應用程序之間的數(shù)據(jù)交換和通信。
OSI七層網(wǎng)絡模型
二、以太網(wǎng)
以太網(wǎng)是應用最普遍的局域網(wǎng)技術(shù),取代了其他局域網(wǎng)技術(shù)如令牌環(huán)、FDDI和ARCNET。
以太網(wǎng)在局域網(wǎng)各種技術(shù)中占統(tǒng)治地位的原因:
- 造價低廉(以太網(wǎng)網(wǎng)卡不到100塊);
- 是應用最廣泛的局域網(wǎng)技術(shù);
- 比令牌環(huán)網(wǎng)、ATM網(wǎng)便宜,簡單;
- 滿足網(wǎng)絡速率要求:10Mb/s~10Gb/s.
以太網(wǎng)的兩個標準:
- DIX Ethernet V2 是世界上第一個局域網(wǎng)產(chǎn)品(以太網(wǎng))的規(guī)約。
- IEEE 802.3 是第一個 IEEE(電氣電子工程師學會) 的以太網(wǎng)標準。
DIX Ethernet V2 標準與 IEEE 的 802.3 標準只有很小的差別,因此可以將 802.3 局域網(wǎng)簡稱為“以太網(wǎng)”。
嚴格說來,“以太網(wǎng)”應當是指符合 DIX Ethernet V2 標準的局域網(wǎng) 。
為了通信的簡便,以太網(wǎng)提供無連接,不可靠的服務
- 無連接:發(fā)送和接收方之間無“握手過程”。
- 對發(fā)送的數(shù)據(jù)幀不進行編號,也不要求對方發(fā)回確認。差錯幀直接丟棄,差錯糾正由高層負責。
這樣做的理由是局域網(wǎng)信道的質(zhì)量很好,信道質(zhì)量產(chǎn)生差錯的概率很小。
也就說:
- 以太網(wǎng)只實現(xiàn)無差錯接收,不實現(xiàn)可靠傳輸。
- 以太網(wǎng)提供的服務是不可靠的交付,即盡最大努力的交付。
- 當目的站收到有差錯的數(shù)據(jù)幀時就丟棄此幀,其他什么也不做。差錯的糾正由高層來決定。
- 如果高層發(fā)現(xiàn)丟失了一些數(shù)據(jù)而進行重傳,但以太網(wǎng)并不知道這是一個重傳的幀,而是當作一個新的數(shù)據(jù)幀來發(fā)送。
三、MAC地址
MAC地址(英語:Media Access Control Address),直譯為媒體存取控制位址,也稱為局域網(wǎng)地址(LAN Address),MAC位址,以太網(wǎng)地址(Ethernet Address)或物理地址(Physical Address),它是一個用來確認網(wǎng)絡設備位置的位址。
MAC地址是網(wǎng)絡設備的唯一識別碼,用于在局域網(wǎng)中確定設備的身份,該地址全球范圍內(nèi)具有唯一性。
MAC地址的長度為48位,即6個字節(jié)。其中前3個字節(jié)是OUI(Organizationally Unique Identifier),由IEEE分配給不同的廠家,后3個字節(jié)由廠家自行分配。
MAC地址通常表示為12個16進制數(shù),每2個數(shù)之間用冒號隔開,例如:09:2F:20:3A:5C:8D。
令牌環(huán)和以太網(wǎng)等 LAN 技術(shù)使用 MAC 地址作為其物理地址,但有些網(wǎng)絡 (AppleTalk) 不使用 MAC 地址。
已經(jīng)有了IP地址,為什么還要有MAC地址呢?
IP地址描述的是整個數(shù)據(jù)傳送過程中的起點和終點。
MAC地址描述的是數(shù)據(jù)傳送過程中,每一跳(一個區(qū)間)的起點和終點。
具體在網(wǎng)絡中,IP地址就是目標主機,MAC地址就是兩個相連路由器,只有一跳一跳經(jīng)過多個路由器,數(shù)據(jù)才能被送到目標主機。
單站地址,組地址,廣播地址
IEEE 規(guī)定地址字段的第一字節(jié)的最低位為 I/G 位。I/G 表示 Individual / Group。
- 當 I/G 位 = 0 時,地址字段表示一個單站地址。
- 當 I/G 位 = 1 時,表示組地址,用來進行多播(以前曾譯為組播)。此時,IEEE 只分配地址字段前三個字節(jié)中的 23 位。
當 I/G 位分別為 0 和 1 時,一個地址塊可分別生成 223 個單個站地址和 223 個組地址。
- 所有 48 位都為 1 時,為廣播地址。只能作為目的地址使用。
全球管理與本地管理
IEEE 把地址字段第一字節(jié)的最低第 2 位規(guī)定為 G/L 位,表示 Global / Local。
當 G/L 位 = 0 時,是全球管理(保證在全球沒有相同的地址),廠商向 IEEE 購買的 OUI 都屬于全球管理。
當 G/L 位 = 1 時, 是本地管理,這時用戶可任意分配網(wǎng)絡上的地址。
四、以太網(wǎng)幀F(xiàn)rame
以太網(wǎng)協(xié)議工作在數(shù)據(jù)鏈路層,它用作數(shù)據(jù)傳輸?shù)母袷浇凶鯢rame, 以太網(wǎng)幀,也叫MAC幀。
4.1 以太網(wǎng)幀類型
目前共有4種類型的以太網(wǎng)幀格式:
-
Ethernet Ⅱ以太幀
即DIX 2.0,是Xerox與DEC、Intel在1982年制定的以太網(wǎng)標準幀格式,已成為事實上的以太網(wǎng)幀標準。 -
Novell Netware 802.3 Raw以太幀
Novell Netware 802.3 Raw幀是Novell在1983年公布的專用以太網(wǎng)標準幀格式,其對IEEE 802.3的數(shù)據(jù)字段進行了專門分隔,以便傳輸NetWare類型的數(shù)據(jù)。 -
IEEE 802.3 LLC以太幀
這是1985年由IEEE正式發(fā)布的802.3標準,由Ethernet V2發(fā)展而來。主要是加入了LLC控制字段所以又叫802.3 LLC。 -
IEEE 802.3 SNAP以太幀
這是1985年IEEE為了保證在802.2 LLC上支持更多的上層協(xié)議,同時更好地支持IP協(xié)議而發(fā)布的標準。 后來為解決Ethernet II與802.3的兼容問題推出了折中的SNAP格式。
總的來說,Ethernet II原本只是幾家公司合伙制定的標準,802.3是IEEE發(fā)布的正式國際標準,但由于歷史原因Ethernet II成了事實上大家都遵循的標準。
最初流行的Ethernet Ⅱ幀第三個字段為幀類型,也沒有定義幀長度字段。后來隨著IEEE 802.3幀的發(fā)布,為了允許一些使用以太II版本的數(shù)據(jù)報和一些使用802.3封裝的最初版本的數(shù)據(jù)包能夠在同一個以太網(wǎng)段使用,以太類型值必須大于等于1536(0x0600)。這個值比802.3數(shù)據(jù)包的最大長度1500byte (0x05DC)要更大。因此如果這個字段的值大于等于1536,則這個幀是以太II幀,而那個字段是類型字段。否則(小于1500而大于46字節(jié)),他是一個IEEE 802.3幀,而那個字段是長度字段。1500~1536(不包含)的數(shù)值未定義。
4.2 Ethernet II以太幀
Ethernet Ⅱ幀,也稱為Ethernet V2幀,是如今局域網(wǎng)里最常見的以太幀,是以太網(wǎng)事實標準。
Ethernet II也是目前使用最為廣泛的幀格式也在事實上成為以太網(wǎng)的幀標準。
- 源地址,6個字節(jié)。發(fā)出數(shù)據(jù)包設備的物理地址(MAC地址),長度是48位,是在網(wǎng)卡出廠時固化的,不可以修改。
- 目的地址,6個字節(jié)。接收數(shù)據(jù)包設備的物理地址。
- 幀協(xié)議類型,2個字節(jié)。該字段有三種值,也就是向上交付時要交付的協(xié)議類型:
- 0x0800 對應IP
- 0x0806 對應ARP
- ox0835 對應RARP
- 有效載荷。有效載荷的大小是46~1500字節(jié)。
- CRC校驗碼,4個字節(jié)。處于幀末尾,用來校驗數(shù)據(jù)是否正確,和校驗和是一樣的作用。
4.3 IEEE802.3幀
可以認為Novell Netware 802.3 Raw以太幀、IEEE 802.3 LLC以太幀 、IEEE 802.3 SNAP以太幀都遵循以下的一個框架結(jié)構(gòu)。
-
Length字段。 定義了Data字段包含的字節(jié)數(shù);
-
邏輯鏈路控制LLC(Logical Link Control)
由目的服務訪問點DSAP(Destination Service Access Point)、源服務訪問點SSAP(Source Service Access Point)和Control字段組成; -
SNAP(Sub-network Access Protocol)由機構(gòu)代碼(Org Code)和類型(Type)字段組成。Org Code三個字節(jié)都為0。Type字段的含義與Ethernet_Ⅱ中的Type字段相同;
LLC和SNAP共占用了Data字段的8個字節(jié);
當DSAP和SSAP都取特定值0xff時,802.3幀就變成Netware-Ethernet幀,用于承載Netware類型的幀;
當DSAP和SSAP都取特定值0xaa時,802.3幀就變成Ethernet_SNAP幀,用于傳輸多種協(xié)議;
DSAP和SSAP其他的取值均為純IEEE802.3幀。
4.3.1 802.3 Raw以太幀
+-----------+-----------+-----------+----------+------------------+----------+| DMAC | SMAC | Length | 0xFFFF | Data | FCS || 6 Bytes | 6 Bytes | 2 Bytes | 2 Bytes | Variable length | 4 Bytes |+-----------+-----------+-----------+----------+------------------+----------+
字段 | 長度 | 含義 |
---|---|---|
DMAC | 6字節(jié) | 以太網(wǎng)幀的目的MAC地址,指明幀的接收者。 |
SMAC | 6字節(jié) | 以太網(wǎng)幀的源MAC地址,指明幀的發(fā)送者。 |
Length | 2字節(jié) | 指后續(xù)數(shù)據(jù)的字節(jié)長度,但不包括FCS字段。 |
Data | 44~1498字節(jié) | 數(shù)據(jù)字段,標識幀的負載(可能包含填充位)。數(shù)據(jù)字段的最小長度必須為44字節(jié)以保證幀長至少為64字節(jié),這意味著傳輸1字節(jié)信息也必須使用44字節(jié)的數(shù)據(jù)字段。如果填入該字段的信息少于44字節(jié),該字段的其余部分也必須進行填充。數(shù)據(jù)字段的最大長度為1498字節(jié)。以太幀的長度必須為整數(shù)字節(jié),因此幀的負載長度不足整數(shù)字節(jié),需插入填充字段以保證數(shù)據(jù)幀的長度為整數(shù)字節(jié)。 |
FCS | 4字節(jié) | 幀校驗序列FCS(Frame Check Sequence)是為接收網(wǎng)卡提供判斷是否傳輸錯誤的一種方法,如果發(fā)現(xiàn)錯誤,丟棄此幀。FCS只是通用叫法,具體的FCS還可以細分多種校驗方法。在以太幀中,FCS通常采用循環(huán)冗余碼校驗CRC(Cyclical Redundancy Check)。 |
802.3 RAW使用Length字段代替了type,又從Data里挪了2個字節(jié)賦值成0xFFFF。前面說過802.3 RAW是Novel公司在IEEE還未正式推出802.3時,在其臨時版本上自己推出的一個版本。在802.3臨時版中使用Length字段代替了type字段,Novel公司沿用了這個設定,但后續(xù)802.3正式發(fā)布時又從Data中挪了3個字節(jié)用作DSAP、SSAP、Control字段(各一個字節(jié),下面會講到)。為了與正式版的802.3做兼容和區(qū)分,RAW就把DSAP和SSAP這兩個字段賦值成0xFFFF,同時Control字段還是劃回到Data里去。
4.3.2 IEEE 802.3 LLC以太幀
+-----------+-----------+-----------+----------+----------+----------+------------------+----------+
| DMAC | SMAC | Length | DSAP | SSAP | Ctrl | Data | FCS |
| 6 Bytes | 6 Bytes | 2 Bytes | 1 Bytes | 1 Bytes | 1 Bytes | Variable length | 4 Bytes |
+-----------+-----------+-----------+----------+----------+----------+------------------+----------+
字段 | 長度 | 含義 |
---|---|---|
DMAC | 6字節(jié) | 目的MAC地址,該字段標識幀的接收者。 |
SMAC | 6字節(jié) | 源MAC地址,該字段標識幀的發(fā)送者。 |
Length | 2字節(jié) | 指后續(xù)數(shù)據(jù)的字節(jié)長度,但不包括FCS字段。 |
DSAP | 1字節(jié) | 目的服務訪問點,長度為1字節(jié),取值范圍是0x00~0xFF。 |
SSAP | 1字節(jié) | 源服務訪問點,長度為1字節(jié),取值范圍是0x00~0xFF。 |
Ctrl | 1字節(jié) | 該字段值通常設為0x03,表示無連接服務的IEEE 802.2無編號數(shù)據(jù)格式。 |
Data | 43~1497字節(jié) | 數(shù)據(jù)字段,標識幀的負載(可能包含填充位)。 |
FCS | 4字節(jié) | 幀校驗序列FCS(Frame Check Sequence)是為接收網(wǎng)卡提供判斷是否傳輸錯誤的一種方法,如果發(fā)現(xiàn)錯誤,丟棄此幀。FCS只是通用叫法,具體的FCS還可以細分多種校驗方法。在以太幀中,FCS通常采用循環(huán)冗余碼校驗CRC(Cyclical Redundancy Check)。 |
4.3.3 IEEE 802.3 SNAP以太幀
+-----------+-----------+-----------+----------+----------+----------+---------+---------+------------------+----------+
| DMAC | SMAC | Length | DSAP | SSAP | Ctrl | OUI | Type | Data | FCS |
| 6 Bytes | 6 Bytes | 2 Bytes | 1 Bytes | 1 Bytes | 1 Bytes | 3 Bytes | 2 Bytes | Variable length | 4 Bytes |
+-----------+-----------+-----------+----------+----------+----------+---------+---------+------------------+----------+
字段 | 長度 | 含義 |
---|---|---|
DMAC | 6字節(jié) | 目的MAC地址,該字段標識幀的接收者。 |
SMAC | 6字節(jié) | 源MAC地址,該字段標識幀的發(fā)送者。 |
Length | 2字節(jié) | 指后續(xù)數(shù)據(jù)的字節(jié)長度,但不包括FCS字段。 |
DSAP | 1字節(jié) | 目的服務訪問點,該值固定為0xAA。 |
SSAP | 1字節(jié) | 源服務訪問點,該值固定為0xAA。 |
Ctrl | 1字節(jié) | 該字段值通常設為0x03,表示無連接服務的IEEE 802.2無編號數(shù)據(jù)格式。 |
SNAP-ID | 5字節(jié) | 由OUI和Type兩部分組成。 |
OUI | 3字節(jié) | 3字節(jié)的組織唯一標識符(Organizationally Unique Identifier),其值通常等于MAC地址的前3字節(jié),即網(wǎng)絡適配器廠商代碼。 |
Type | 2字節(jié) | 標識以太網(wǎng)幀所攜帶的上層數(shù)據(jù)類型。根據(jù)RFC1042標準,OUI使用一個特殊的數(shù)值0x00-00-00,當這個字段為0x00-00-00時,Type字段與Ethernet II封裝中的Type具有相同的含義。 |
Data | 38~1492字節(jié) | 數(shù)據(jù)字段,標識幀的負載(可能包含填充位)。數(shù)據(jù)字段的最小長度必須為38字節(jié)以保證幀長至少為64字節(jié),這意味著傳輸1字節(jié)信息也必須使用38字節(jié)的數(shù)據(jù)字段。如果填入該字段的信息少于38字節(jié),該字段的其余部分也必須進行填充。數(shù)據(jù)字段的最大長度為1492字節(jié)。以太幀的長度必須為整數(shù)字節(jié),因此幀的負載長度不足整數(shù)字節(jié),需插入填充字段以保證數(shù)據(jù)幀的長度為整數(shù)字節(jié)。 |
FCS | 4字節(jié) | 幀校驗序列FCS(Frame Check Sequence)是為接收網(wǎng)卡提供判斷是否傳輸錯誤的一種方法,如果發(fā)現(xiàn)錯誤,丟棄此幀。FCS只是通用叫法,具體的FCS還可以細分多種校驗方法。在以太幀中,FCS通常采用循環(huán)冗余碼校驗CRC(Cyclical Redundancy Check)。 |
SNAP是為了將802.3 LLC與Ethernet II進行兼容,兼容方式是保留Length、DSAP、SSAP、Control這4個字段,同時再從Data里挪5個字節(jié)用作SNAP字段。而SNAP字段又由2個部分組成,前3個字節(jié)是org code,其含義是組織代碼,其實就是MAC地址里前3個字節(jié),所以其實沒啥用。后2個字節(jié)是type與Ethernet II的type字段一模一樣。其實也是通過這個SNAP里的type字段與Ethernet II幀兼容。
為了與LLC幀進行區(qū)別,DSAP、SSAP的值固定為0xAA,Control的值固定為0x03。
4.4 IEEE 802.1Q標簽
IEEE 802.1Q標準對以太幀格式進行了修改,在源MAC地址字段和協(xié)議類型字段之間加入4字節(jié)的802.1Q Tag。802.1Q Tag也稱為VLAN Tag,帶有VLAN Tag的以太幀稱為VLAN幀。
所有四種以太幀類型都可包含一個IEEE 802.1Q選項來確定它屬于哪個VLAN以及他的IEEE 802.1p優(yōu)先級(QoS)。這個封裝由IEEE 802.3ac定義并將幀大小從64字節(jié)擴充到1522字節(jié)(注:不包含7個前導字節(jié)和1個字節(jié)的幀開始符以及12個幀間距字節(jié))。
+-----------+----------+--------+-----------+| TPID | PRI | CFI | VID || 2 Bytes | 3 Bits | 1 Bits | 12 Bits |+-----------+----------+--------+-----------+| || || || |
+-----------+-----------+--------------+---------------+------+-----------+----------+
| DMAC | SMAC | 802.1Q Tag | Length/Type | Data | FCS |
| 6 Bytes | 6 Bytes | 4 Bytes | 2 Bytes | Variable length | 4 Bytes |
+-----------+-----------+--------------+---------------+------+-----------+----------+
4字節(jié)的VLAN TAG 包含以下參數(shù):
- 2個字節(jié)的標簽協(xié)議標識:0x8100
- 2個字節(jié)的標簽控制信息:
- 用戶優(yōu)先級:3 位,取值范圍0~7,值越大優(yōu)先級越大。
- CFI規(guī)范格式標識符:1位,0代表幀VLAN正確,1代表VLAN錯誤
- VID:12位,標識VALN ID,也就是VLAN號
4.5 最小幀長
以太網(wǎng)幀最小幀長為64B——有效載荷46字節(jié),這是信號從爭取信道到占領(lǐng)信道的最短時間。
凡是小于64B的幀,都視為被沖突破壞的信號,應當丟棄。如果要發(fā)送小于64B的幀,需要MAC子層在數(shù)據(jù)字段后填充字段。
這個長度是由CSMA/CD(載波偵聽多路訪問/碰撞檢測)算法以及最大傳輸距離的需求共同決定的。這樣的設計可以避免在網(wǎng)絡中發(fā)生不必要的沖突,確保數(shù)據(jù)包能夠在網(wǎng)絡中正確傳輸。如果數(shù)據(jù)包太短,例如小于64字節(jié),那么它可能在發(fā)送過程中被網(wǎng)絡中的其他設備誤解為沖突信號,從而導致數(shù)據(jù)丟失或重傳。因此,最小幀長有助于區(qū)分由沖突引起的短幀和正常傳輸?shù)挠杏脦?#xff0c;從而保證數(shù)據(jù)傳輸?shù)男屎涂煽啃浴?/p>
規(guī)定對10Mbps以太網(wǎng)一幀的最小發(fā)送時間為51.2微秒。這段時間所能傳輸?shù)臄?shù)據(jù)為512位,因此也稱該時間為512位時。這個時間定義為以太網(wǎng)時隙,或沖突時槽。512位=64字節(jié),這就是以太網(wǎng)幀最小64字節(jié)的原因。
4.6 最大幀長
以太網(wǎng)的最大幀長度為1518字節(jié)(不包括幀校驗序列),其中包括最大的數(shù)據(jù)幀長度為1500字節(jié)和額外的幀頭和幀尾。最大幀長度的設置是為了避免單一主機占用信道時間過長。在不同的網(wǎng)絡環(huán)境下,能夠適應不同的數(shù)據(jù)傳輸需求和網(wǎng)絡負載。
MAC幀協(xié)議規(guī)定自己的有效載荷不能超過1500字節(jié)(由MTU控制——最大傳送單元,可以修改),這1500個字節(jié)限制包括了上層報頭+有效載荷。
路由器也是主機,也有自己的最大MTU的限制,如果某個路由器的MTU為500字節(jié),但是接收到了局域網(wǎng)內(nèi)某個主機1500字節(jié)的報文,這是路由器就會對這個報文再次進行分片組裝!
數(shù)據(jù)包的大小只有傳輸層能控制,但有時仍會超過1500字節(jié),只能由IP協(xié)議進行分片與組裝來解決,發(fā)送端IP層進行分片,每一個分片都會有IP報頭,對端IP層進行組裝(字節(jié)超限并不是主流情況)。TCP和MAC幀并不關(guān)心IP對數(shù)據(jù)包進行了分片和組裝,這僅僅是IP層自己的行為。
4.7 協(xié)議類型
如上圖,0x0800表示要分用給IP協(xié)議,0x0806表示要分用給ARP協(xié)議,0x8035表示要交給RARP協(xié)議,后兩者協(xié)議在后面會詳細介紹。
4.8 解包
從整個數(shù)據(jù)幀讀取前14個字節(jié),然后再從最后讀取4個字節(jié),剩下的就是有效載荷,如此就完成了解包過程。
4.9 分用
根據(jù)幀協(xié)議類型交給對應的上層協(xié)議即可,如0x0800就交給網(wǎng)絡層的IP協(xié)議去處理有效載荷。
五、MTU
對于以太網(wǎng)來說,既然會存在碰撞,那么發(fā)生的數(shù)據(jù)幀是長了好還是短了好呢?
太長和太短都不行,太短會導致數(shù)據(jù)幀無法校驗,因為CRC校驗是需要數(shù)據(jù)幀中有一定數(shù)量的有效載荷的,所以MAC幀協(xié)議規(guī)定,有效載荷的長度要大于等于46字節(jié)。如果最終交付到數(shù)據(jù)鏈路層的有效載荷太小,小于46字節(jié),MAC幀協(xié)議會在后面補充到46字節(jié)。
如果太長的話,數(shù)據(jù)在以太網(wǎng)中傳輸?shù)臅r間就會變長,從而增加了數(shù)據(jù)碰撞的概率,也不合適,所以MAC幀協(xié)議規(guī)定有效載荷的最大值是1500字節(jié),也被叫做以太網(wǎng)的最大傳輸單元(MTU)。
不同的網(wǎng)絡類型有不同的MTU。
如果IP層的數(shù)據(jù)報大于MTU了,則需要分片,然后再交給數(shù)據(jù)鏈路層。
5.1 MTU對IP協(xié)議的影響
由于數(shù)據(jù)鏈路層MTU的限制, 對于較大的IP數(shù)據(jù)包要進行分包:
- 將較大的IP包分成多個小包, 并給每個小包打上標簽;
- 每個小包IP協(xié)議頭的 16位標識(id) 都是相同的;
- 每個小包的IP協(xié)議頭的3位標志字段中, 第2位置為0, 表示允許分片, 第3位來表示結(jié)束標記(當前是否是最后一個小包, 是的話置為1, 否則置為0);
- 到達對端時再將這些小包, 會按順序重組, 拼裝到一起返回給傳輸層;
- 一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗,但是IP層不會負責重新傳輸數(shù)據(jù),傳輸層若為TCP將超時重傳,UDP將表現(xiàn)為丟包。
5.2 MTU對UDP協(xié)議的影響
- 一旦UDP攜帶的數(shù)據(jù)超過1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就會在網(wǎng)絡層分成多個IP數(shù)據(jù)報。
- 這多個IP數(shù)據(jù)報有任意一個丟失, 都會引起接收端網(wǎng)絡層重組失敗. 那么這就意味著, 如果UDP數(shù)據(jù)報在網(wǎng)絡層被分片, 整個數(shù)據(jù)被丟失的概率就大大增加了。
5.3 MTU對TCP協(xié)議的影響
- TCP的一個數(shù)據(jù)報也不能無限大, 還是受制于MTU。TCP的單個數(shù)據(jù)報的最大消息長度, 稱為MSS(Max Segment Size);
- TCP在建立連接的過程中, 通信雙方會進行MSS協(xié)商。最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制于數(shù)據(jù)鏈路層的MTU)。
- 雙方在發(fā)送SYN的時候會在TCP頭部寫入自己能支持的MSS值。
- 然后雙方得知對方的MSS值之后, 選擇較小的作為最終MSS。
- MSS的值就是在TCP首部的40字節(jié)變長選項中(kind=2)。
六、ARP協(xié)議
https://www.ietf.org/rfc/rfc826.txt
6.1 ARP協(xié)議的作用
ARP協(xié)議是一個介于數(shù)據(jù)鏈路層和網(wǎng)絡層之間的協(xié)議。
在局域網(wǎng)通信中,必須得知道目標主機的MAC地址才能將數(shù)據(jù)封裝成MAC幀。
源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的MAC地址,需要使用ARP協(xié)議來查找IP和MAC地址的映射關(guān)系。
6.2 ARP老化
ARP緩存表中保存了IP地址和對應的MAC地址映射關(guān)系。但是,網(wǎng)絡中的設備是動態(tài)的,可能會發(fā)生IP地址分配變化或設備更換的情況。為了保持ARP緩存表的準確性,需要一種機制來處理過時的條目。這就是ARP老化機制。
ARP老化是指ARP緩存表中的條目在一定時間內(nèi)沒有被使用而被刪除的過程。每個條目都有一個生存時間(存活時間),一般默認為20分鐘左右。如果在該時間內(nèi)沒有再次與該IP地址通信,那么該條目將被刪除。當然,如果在生存時間內(nèi)繼續(xù)與該IP地址通信,那么該條目的生存時間會被重置,以保持其有效性。
在Linux中,ARP老化是由內(nèi)核的網(wǎng)絡協(xié)議棧負責的。內(nèi)核會定期檢查ARP緩存表中的條目,并清除過時的條目,以確保ARP緩存表的及時更新。
6.3 ARP協(xié)議格式
ARP協(xié)議下層是MAC幀(幀類型為0x0806)。
ARP數(shù)據(jù)包字段:
- 硬件類型,2字節(jié)。指鏈路層網(wǎng)絡類型, 1為以太網(wǎng)。
- 協(xié)議類型,2字節(jié)。指發(fā)送方要轉(zhuǎn)換的地址類型,0x0800為IP地址;
- 硬件地址長度,1字節(jié)。對于ARP請求或者應答來說,該值為6,物理地址長度。
- 協(xié)議地址長度,1字節(jié)。對于ARP請求或者應答來說,該值為4,IP地址長度。
- op操作類型,2字節(jié)。1表示ARP請求,2表示ARP應答。
- 發(fā)送端以太網(wǎng)地址,6字節(jié)。和以太網(wǎng)源地址相同。
- 發(fā)送端IP地址,4字節(jié)。
- 目的以太網(wǎng)地址,6字節(jié)。發(fā)送ARP請求時,該字段置0。
- 目的IP地址,4字節(jié)。
注意到源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請求中各出現(xiàn)一次,對于鏈路層為以太網(wǎng)的情況是多余的,但如果鏈路層是其它類型的網(wǎng)絡則有可能是必要的。
6.4 ARP請求
6.4.1 ARP廣播請求
當一個主機第一次想去獲取同一網(wǎng)絡中某個設備的MAC地址,由于此時主機不知道設備的MAC地址,所以只能廣播ARP請求,以便于這個ARP請求能被設備收到;當?shù)谝粋€過程走完之后(其實就是主機收到了設備的ARP應答),雙方都知道對方的IP–MAC映射,也會在自己的ARP表中生成這個映射。
這是一條10.10.11.14發(fā)出的廣播請求,詢問10.10.11.114的MAC地址。
- 硬件類型為1,說明為以太網(wǎng)
- 協(xié)議類型為0x0800, IPv4
- 硬件地址長度為6
- 協(xié)議長度為4
- 操作類型為1,表示ARP請求
- 發(fā)送端MAC地址 和 MAC幀頭部源MAC地址一樣。
- 發(fā)送端IP地址為本機地址
- 目的以太網(wǎng)地址留空,ARP請求置0
- 目的IP地址,就是要查詢的IP地址。
MAC地址FF:FF:FF:FF:FF:FF, 代表這是一個廣播MAC幀。
6.4.2 ARP單播請求
由于ARP老化機制第二種–單播輪詢,主機會定期向設備發(fā)送點到點的單播ARP請求報文,用來確認對方是否存在,確認這條ARP緩存是該更新(主要是更新老化定時器)還是刪除,同時,使用單播還可以減少網(wǎng)絡中的ARP報文數(shù)量;因此。這種"明知故問"的單播ARP請求報文其實是非常合理的
這是10.10.11.114發(fā)出的一個ARP請求,問詢10.10.11.14的MAC地址,以前已經(jīng)知道,才能填寫在MAC幀的首部,但是要過期了,查詢是否需要更新。
6.5 ARP應答
目的主機接收到ARP請求,發(fā)現(xiàn)其中的IP地址與本機相符,則發(fā)送一個ARP應答數(shù)據(jù)包給源主機,將自己的硬件地址填寫在應答包中;ARP收到應答的時候,會以最新的應答為準。
當被請求主機發(fā)送ARP應答時,其他主機在數(shù)據(jù)鏈路層就可以通過以太網(wǎng)目的地址字段區(qū)分這個MAC幀是不是給我的。
6.6 Gratuitous ARP(免費 ARP)
Gratuitous ARP 是一種特殊的 ARP 請求,當主機啟動時,發(fā)送一個 Gratuitous ARP 請求,即請求自己的 IP 地址和 MAC 地址,即目標 IP 地址為 自己的 IP 地址。
Gratuitous ARP 的作用 - 以廣播的形式發(fā)送自己的 IP 地址 和 MAC 地址,在網(wǎng)絡中宣告自己的信息,可以是宣告新添加的主機或者更新自己的 MAC 地址 - 檢測 IP 地址沖突,若收到了 ARP 響應報文,則說明網(wǎng)絡中已存在使用該 IP 地址的主機。
七、RARP協(xié)議
Reverse Address Resolution Protocal,逆地址解析協(xié)議。
https://www.ietf.org/rfc/rfc903.txt
7.1 RARP協(xié)議作用
允許局域網(wǎng)的物理機器使用MAC地址,從網(wǎng)關(guān)服務器的ARP表或緩存上請求IP地址。
主要用于無盤工作站,因為給無盤工作站配置IP地址不能保存。
在網(wǎng)絡中配置一臺RARP服務器,里面保存著IP地址和MAC地址的映射關(guān)系,當無盤工作站啟動后,就封裝一個RARP數(shù)據(jù)包,里面有其MAC地址,然后廣播到網(wǎng)絡上去,當服務器收到請求包后,就查找對應的MAC地址的IP地址裝入響應報文中發(fā)回給請求者。因為需要廣播請求報文,因此,RARP只能用于具有廣播能力的網(wǎng)絡。
7.2 RARP工作原理
- 發(fā)送端發(fā)送一個本地的RARP廣播包,在此廣播包中聲明自己的MAC地址,并且請求任何收到此請求的RARP服務器分配一個IP地址。
- 本地網(wǎng)段上的RARP服務器收到此請求后,檢查其RARP列表,查找該MAC地址對應的IP地址。如果存在,RARP服務器就給源主機發(fā)送一個響應數(shù)據(jù)包,并將此IP地址提供給對方主機使用;如果不存在,RARP服務器對此不做任何響應。
- 源端在收到從RARP服務器來的響應信息后,利用得到的IP地址進行通信;如果一直沒有收到RARP服務器的響應信息,則表示初始化失敗。
7.3 RARP協(xié)議格式
RARP協(xié)議格式和ARP協(xié)議格式相同。使用區(qū)別是:
- RARP請求或應答幀代碼類型是0x8035,
- RARP的請求的操作代碼是3,應答操作代碼是4。
可以看出這個包發(fā)送出來的時候是沒有IP地址的——因為不知道,就是要查詢自己的IP。
然后是目的MAC是一個廣播地址。
八、以太網(wǎng)幀F(xiàn)rame的傳輸過程
以太網(wǎng)采用廣播機制,所有與網(wǎng)絡連接的工作站都可以看到網(wǎng)絡上傳遞的數(shù)據(jù)。通過查看包含在幀中的目標地址,確定是否進行接收或放棄。如果證明數(shù)據(jù)確實是發(fā)給自己的,工作站將會接收數(shù)據(jù)并傳遞給高層協(xié)議進行處理。
以太網(wǎng)采用CSMA/CD媒體訪問機制,任何工作站都可以在任何時間訪問網(wǎng)絡。在發(fā)送數(shù)據(jù)之前,工作站首先需要偵聽網(wǎng)絡是否空閑,如果網(wǎng)絡上沒有任何數(shù)據(jù)傳送,工作站就會把所要發(fā)送的信息投放到網(wǎng)絡當中。否則,工作站只能等待網(wǎng)絡下一次出現(xiàn)空閑的時候再進行數(shù)據(jù)的發(fā)送。
而局域網(wǎng)中存在多臺主機,這些主機都和以太網(wǎng)相連,都能夠看到以太網(wǎng),故而也能看到以太網(wǎng)中跑的數(shù)據(jù)。
網(wǎng)絡通信本質(zhì)上就是進程間通信,而網(wǎng)絡就是臨界資源。
所以局域網(wǎng)中的所有主機都唔那個收到主機MAC1發(fā)送的數(shù)據(jù),每臺主機在收到數(shù)據(jù)后,數(shù)據(jù)鏈路層會對比數(shù)據(jù)幀報頭中的目的MAC地址,如果和自己的MAC地址相同,則進行解包分用交給下一層。
如果數(shù)據(jù)幀報頭中的目的MAC地址和自己的MAC地址不符,那么直接在數(shù)據(jù)鏈路層就丟棄該數(shù)據(jù),上層根本不知道曾經(jīng)有過這個數(shù)據(jù)。
8.1 單播
主機B給主機C發(fā)送單播幀,主機B首先要構(gòu)建該單播幀,在幀首部中的目的地址字段填入主機C的MAC地址,源地址字段填入自己的MAC地址,再加上幀首部的其他字段、數(shù)據(jù)載荷以及幀尾部,就構(gòu)成了該單播幀
主機B將該單播幀發(fā)送出去,主機A和C都會收到該單播幀
主機A的網(wǎng)卡發(fā)現(xiàn)該單播幀的目的MAC地址與自己的MAC地址不匹配,于是丟棄該幀
主機C的網(wǎng)卡發(fā)現(xiàn)該單播幀的目的MAC地址與自己的MAC地址匹配,于是接受該幀,并將該幀交給其上層處理
8.2 廣播
假設主機B要發(fā)送一個廣播幀,主機B首先要構(gòu)建該廣播幀,在幀首部中的目的地址字段填入廣播地址,也就是十六進制的全F,源地址字段填入自己的MAC地址,再加上幀首部中的其他字段、數(shù)據(jù)載荷以及幀尾部,就構(gòu)成了該廣播幀
主機B將該廣播幀發(fā)送出去,主機A和C都會收到該廣播幀,發(fā)現(xiàn)該幀首部中的目的地址字段的內(nèi)容是廣播地址,就知道該幀是廣播幀,主機A和主機C都接受該幀,并將該幀交給上層處理
8.3 多播
假設主機A要發(fā)送多播幀給該多播地址。將該多播地址的左起第一個字節(jié)寫成8個比特,第一個字節(jié)的最低比特位是1,這就表明該地址是多播地址
快速判斷地址是不是多播地址,就是上圖所示箭頭所指的第十六進制數(shù)不能整除2(1,3,5,7,9,B,D,F),則該地址是多播地址
假設主機B,C和D支持MAC多播,各用戶給自己的主機配置多播組列表如下所示
主機B屬于兩個多播組,主機C也屬于兩個多播組,而主機D不屬于任何多播組
主機A首先要構(gòu)建該多播幀,在幀首部中的目的地址字段填入該多播地址,源地址字段填入自己的MAC地址,再加上幀首部中的其他字段、數(shù)據(jù)載荷以及幀尾部,就構(gòu)成了該多播幀
主機A將該多播幀發(fā)送出去,主機B、C、D都會收到該多播幀
主機B和C發(fā)現(xiàn)該多播幀的目的MAC地址在自己的多播組列表中,因此主機B和C都會接受該**多播幀,**并交付給上層處理
主機D發(fā)現(xiàn)該多播幀的目的MAC地址不在自己的多播組列表中,則丟棄該多播幀
8.3 兩主機同一子網(wǎng),不經(jīng)過網(wǎng)關(guān)
當主機A發(fā)向主機B的數(shù)據(jù)流在網(wǎng)絡層封裝成IP數(shù)據(jù)包,IP數(shù)據(jù)包的首部包含了源地址和?標地址。
主機A會?本機配置的24位IP網(wǎng)絡掩碼255.255.255.0與目標地址進?與運算,得出?標網(wǎng)絡地址與本機的?絡地址是不是在同?個?段中。
如果在同一個子網(wǎng),可以通過ARP協(xié)議獲取目的IP的MAC地址,數(shù)據(jù)鏈路層直接封裝以太網(wǎng)幀發(fā)送出去。
這個過程中源IP、目標IP、源MAC、目標MAC都不會改變。
8.3 路由轉(zhuǎn)發(fā)過程
當主機A發(fā)向主機B的數(shù)據(jù)流在網(wǎng)絡層封裝成IP數(shù)據(jù)包,IP數(shù)據(jù)包的首部包含了源地址和?標地址。
主機A會?本機配置的24位IP網(wǎng)絡掩碼255.255.255.0與目標地址進?與運算,得出?標網(wǎng)絡地址與本機的?絡地址是不是在同?個?段中。
如果不是將IP數(shù)據(jù)包轉(zhuǎn)發(fā)到網(wǎng)關(guān)。在發(fā)往?關(guān)前主機A還會通過ARP的請求獲得默認?關(guān)的MAC地址。在主機A數(shù)據(jù)鏈路層IP數(shù)據(jù)包封裝成以太網(wǎng)數(shù)據(jù)幀,然后才發(fā)住到網(wǎng)關(guān)……也就是路由器上的?個端?。
當網(wǎng)關(guān)路由器接收到以太網(wǎng)數(shù)據(jù)幀時,發(fā)現(xiàn)數(shù)據(jù)幀中的目標MAC地址是自己的某?個端?的物理地址,這時路由器會把以太網(wǎng)數(shù)據(jù)幀的封裝去掉。路由器認為這個IP數(shù)據(jù)包是要通過自己進行轉(zhuǎn)發(fā),接著它就在匹配路由表。匹配到路由項后,它就將包發(fā)往下?條地址。
IP地址始終不變
目的IP地址是為了確認目的主機。如果IP地址改變則目的主機改變無法進行正常通信。
源IP地址由于NAT等相關(guān)技術(shù)可能會發(fā)生變化,看情況。
經(jīng)過交換機, 源/目的MAC地址不變
數(shù)據(jù)幀在交換機之間轉(zhuǎn)發(fā)。在一個網(wǎng)段內(nèi)部,通過數(shù)據(jù)包通過MAC尋址(二層交換機和終端都有MAC表,查表或者通過MAC廣播)因此在二層交換機,數(shù)據(jù)包里的源目MAC地址肩負著把數(shù)據(jù)包從發(fā)包終端傳遞到目的IP所在終端(網(wǎng)段的其他主機~其他網(wǎng)段IP的話就是給網(wǎng)關(guān))的任務。
經(jīng)過路由器,源/目的MAC地址變
經(jīng)過路由器,由于三層設備轉(zhuǎn)發(fā),跨網(wǎng)段了,原來的MAC地址當然就不能使用了,所以出接口的MAC此時成為在新一個網(wǎng)段實現(xiàn)兩個IP之間尋址的源MAC,根據(jù)MAC表找到匹配到的路由條目指出的需要轉(zhuǎn)給的下一個IP的MAC地址(沒的話ARP廣播得到),然后封裝好新的源目MAC,轉(zhuǎn)給新網(wǎng)段之間的交換機。。。直到完成新的網(wǎng)段里兩點之間的數(shù)據(jù)包的傳遞。
在幀不斷轉(zhuǎn)發(fā)的過程中,IP源/目的地址不變,MAC源/目的地址根據(jù)所經(jīng)過的路由器端口變化。
參考:
- https://www.cnblogs.com/kingwz/p/16938768.html
- https://blog.csdn.net/sj15814963053/article/details/124128878