TCP/IP協議

無線網絡標準

IEEE 802.3

802.11a/b/g/n/ac 物理層,數據鏈路層data link layer

 

以太網是工作在物理層和數據鏈路層上

單工,雙工(物理層概念)

單工:單向傳輸數據??? (廣播,收音機)

雙工:雙向傳輸數據

全雙工:同時雙向?????? (手機)

半雙工:輪流雙向???? (對講機)

 

Hub集線器

共享帶寬(同一時間只能一臺機器發數據)

半雙工(一邊發另一邊不能發)

廣播發送數據(沒有安全性)

工作在物理層(不記憶MAC地址)

 

沖突域:指范圍,一個主機發送單波數據另一個主機同時發送單波數據,數據沖突,這兩臺主機就在同一個

沖突域。如果兩個主機同時向網絡發信息,信息不沖突,就證明兩個主機在不同的沖突域。

 

以太網橋

工作在數據鏈路層(記錄MAC地址)

學習源地址填充MAC地址表(網橋表)

網橋可以隔離分割沖突域

學習時根據源地址記錄機器位置,添加到網橋表

通過記錄網橋表,實現數據隔離,分割沖突域

當學習完成,進入轉發階段時,以太網橋是通過目標地址來轉發

網橋能夠隔斷沖突域不能隔斷廣播域

廣播地址只能出現在目標地址,所以網橋表不可能出現廣播地址

廣播域:一個主機發送廣播,其他機子收到廣播,那就表示所有機子在一個廣播域中。

 

交換機swich

工作在數據鏈路層(MAC地址)

全雙工

每一個接口代表一個沖突域

無法隔斷廣播域

 

查看網卡信息

mii -tool -v eth0

ethtool eth0

 

路由器router

工作在網絡層

隔斷廣播形成的廣播域

選擇路由表中到達目標最好的路徑

維護和檢查路由信息

連接廣域網

路由表記錄的不是MAC地址而是IP地址

路由器和電腦上都有路由表而且至關重要

只要要網絡通訊,就必須有路由表告訴系統信息應該怎么走

路由器隔開的叫網段

注意:100M的網絡傳輸100M的數據理論要8秒多,因為實際傳輸速率是要100M/8bit,還有報文首部等額

外驗證信息等要傳輸,所以實際達不到那么高。

 

查看路由表(在電腦和路由器上都有)

route -n

網卡工作在數據鏈路層

wifi 802.11工作在數據鏈路層

交換機是局域網設備,路由器是廣域網設備

局域網通訊是基于廣播機制的,廣域網通訊是基于單波(點對點)機制。

 

VLAN虛擬局域網

交換機隔斷廣播域的技術

VLAN=廣播域=邏輯網絡(Subnet)=網段

按照交換機端口來劃分不同的VLAN,實現隔斷廣播的效果

VLAN一般使用數字來編號? 10VLAN??? 20VLAN

在同一個廣播域的機器必須使用同一個廣播域的IP地址(網段)

172.20.x.x???? 不能直接訪問???? 172.18.x.x??? 必須加路由器

因此可以在路由器上加安全訪問策略,實現單向或雙向或禁止訪問。

兩個VLAN間通訊必須有路由

因此用trunk連接路由器和交換機,實現不同VLAN之間的通訊。

 

trunk

干道線路

鏈接不同樓層同一VLAN接口的數據,可以同時傳輸多個VLAN數據。

trunk協議

為了區別不同VLAN數據,所以會修改數據包,為數據幀打標簽,添加VLAN標簽

國際標準:802.1Q? (華為等)

思科:ISL

 

(另一個角度劃分)分層的網絡架構:

 

核心層???? 高速交換機? 企業級應用快速轉發

分布層???? 路由器???????? 路由、安全策略

訪問層???? 交換機???????? 接入

TCP/IP 協議棧???????????????????? OSI

應用層??????????? data??????????????????????? 應用層?? 表示層?? 會話層

傳輸層??????????? tcp/udp????????????????? 傳輸層

Internet層????? ip??????????????????????????? 網絡層

網絡訪問層???? ethernet???????????????? 數據鏈路層?? 物理層

 

 

應用層協議:

http80 https443? ftp21?? nfs?? dns(tcp53 udp53) tftp69?? smtp25? pop3? imap143 telnet23? ssh22 QQ

mysql 3306

oracle 1521

sql server 1433

 

查詢協議

cat /etc/services

cat /etc/services? | less

端口號就是標記

表示上層協議的區分

 

傳輸層

UDP? TCP

里面含有上層協議的端口號,用于區分數據的類型

多會話

分段

流控制(需要時)

面向連接(需要時)

可靠性(需要時)

 

Internet層

里面也有標記體現上層是TCP還是UDP協議的類型

IP地址

 

TCP

傳輸控制協議

工作在傳輸層

可靠 (錯誤檢查)

有序號? (可重傳)

文件Email下載

 

UDP

用戶數據包協議

高效

無序號

聲音圖像流

 

TCP特性

工作在傳輸層

面向連接協議(有協商過程)

全雙工

半關閉

錯誤檢查

數據包打包分段

確認機制

數據恢復重傳

流量控制滑動窗口

擁塞控制,慢啟動和擁塞避免算法

 

TCP包頭

共32位

0-15位表示源端口

16-31位表示目的端口

因此理論最多通訊的應用程序

2^16=65536

 

IANA:互聯網數字分配機構

0-1023:系統端口(僅管理員可用端口)

1024-49151:用戶端口或注冊端口

49152-65536:隨機端口(客戶端,上面是服務器的端口)

其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range

查看當前空余未被使用的端口號

cat? /etc/services | grep 9527

 

源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個NFS? network file system

端口號不固定,且同時用好幾個

 

序號

本方電腦端的數據包編號

最大編號

2^32

42億多,用完就重新從0編(配合時間戳區分)

 

確認號

對方電腦端的序號

例如序號為100對方確認號就是101

表示100號包已收到并希望本方下次發101號包

 

 

ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段

 

SYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段

 

FIN:表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:“我的數據已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段

 

 

 

三次握手:?????????????????????????????????????????????????????????? A狀態????????????????????????? B 狀態

第一次握手:SYN位是1其他位全為0????????????????? CLOSED??????????????????? CLOSED/ LISTEN

第二次握手:SYN、ACK為1其他為0???????????????? SYN-SENT??????????????????? SYN-RCVD

第三次握手:ACK為1其他為0???????????????????????? ESTABLISHED?????????????? ESTABLISHED

 

四次揮手:????????????????????????????????????????????????????????? A狀態??????????????????????????? B狀態

第一次揮手:FIN為1?????????????????????????? ESTABLISHED/FIN-WAIT1???????? ESTABLISHED

第二次揮手:ACK為1???????????????????????????????????? FIN-WAIT2???????????????????? CLOSE-WAIT

第三次揮手:FIN、ACK為1??????????????????????????? FIN-WAIT2??????????????????????? LAST-ACK

時間等待狀態:2倍MSL時間,消息生存期

第四次揮手:ACK為1?????????????????????????????? TIME-WAIT /CLOSED????????????????? CLOSED

 

有限狀態機FSM:FiniteState Machine

CLOSED 沒有任何連接狀態

LISTEN 偵聽狀態,等待來自遠方TCP端口的連接請求

SYN-SENT 在發送連接請求后,等待對方確認

SYN-RECEIVED 在收到和發送一個連接請求后,等待對方確認

ESTABLISHED 代表傳輸連接建立,雙方進入數據傳送狀態

FIN-WAIT-1 主動關閉,主機已發送關閉連接請求,等待對方確認

FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發送關閉傳輸連接請求

TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失

CLOSE-WAIT 被動關閉,收到對方發來的關閉連接請求,并已確認

LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失

CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認 (比較少見)

 

窗口大?。罕硎粳F在允許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始允許對方發送的數據量

校驗和:提供額外的可靠性

緊急指針:標記緊急數據在數據字段中的位置

 

 

處于FIN_WAIT_2狀態的客戶端需要等待服務器發送結束報文段,才能轉移至TIME_WAIT狀態,否則它將一直停留在這個狀態。如果不是為了在半關閉狀態下繼續接收數據,連接長時間地停留在FIN_WAIT_2狀態并無益處。連接停留在FIN_WAIT_2狀態的情況可能發生在:客戶端執行半關閉后,未等服務器關閉連接就強行退出了。此時客戶端連接由內核來接管,可稱之為孤兒連接(和孤兒進程類似)

孤兒連接數最大數目:

/proc/sys/net/ipv4/tcp_max_orphans

 

孤兒連接最大保留時間:

/proc/sys/net/ipv4/tcp_fin_timeout

 

SYN攻擊

通過不斷發送2次握手耗光服務器內存,導致服務器無法響應普通用戶訪問

 

哪些端口處于監聽狀態

ss -ntul

 

Window size

固定窗口

滑動窗口

 

 

 

與TCP超時重傳相關的兩個內核參數:

/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管之前TCP最少執行的重傳次數,默認值是3

/proc/sys/net/ipv4/tcp_retries2,指定連接放棄前TCP最多可以執行的重傳次數,默認值15(一般對應13~30min)

 

 

UDP包頭

16bit? source port???? 16bit destination port

16bit? UDP? length??? 16bit? UDP checksum

data

 

特性

工作在傳輸層

提供不可靠的網絡訪問

非面向連接協議

有限的錯誤檢查

傳輸性能高

無數據恢復特性

 

Internet層

 

Internet Protocol IP

Internet Control Message Protocol (ICMP)

Address Resolution Protocol(ARP)

Reverse Address Resolution Protocol(RARP)

 

分層編址

無數據恢復功能

IP協議

 

ICMP協議

ping 命令就是用這種協議

默認每次發送一條

 

判斷網絡穩定性:把包調大?? 最大65507

ping 192.168.30.128 -s 65507

 

洪水攻擊??? dos攻擊? 拒絕服務

必須本機性能比目標性能好,或者組團PING

ping 172.20.108.10 -s 65507 -f

 

IGMP???? 多播應用

Internet Group Management Protocol

 

ARP

地址解析協議

把IP地址解析成MAC地址

 

查看APR

arp -n

 

注意:

tcp握手前一定要經過arp廣播取得MAC地址才有可能進行

電腦上有一個類似路由表的表格,把取得的IP和MAC地址關系存放起來

ARP協議是基于廣播機制

ARP廣播不能跨路由

ARP會先行判斷兩臺機子是否處于一個4網段:

1)如果是一個網段則發送ARP廣播。

2)如果不是,就使用ARP廣播發送IP地址給默認網關,以此取得路由網關的MAC端口地址,以后發送數據包直接使用對應端口的網關MAC地址,由路由再次使用ARP廣播取得目標機器MAC地址,同時轉發信息給目標IP機器。

3)由此可知,在跨路由情況下,MAC地址會變化,IP地址不變。

 

arp -d

清除目標IP地址對應MAC地址記錄

 

systemctl restart network

重啟網絡

 

特殊ARP

機子重啟后,通過自問自答形式取得IP,目的防止將使用的IP地址與網絡上其他機子沖突(IP相同)。

 

RARP

反向地址解析協議

通過MAC地址獲得綁定的IP地址

通常用于無硬盤工作站獲取IP

通常獲取的是固定的IP地址

 

面試:

當你打開網絡瀏覽器訪問網站,背后做了什么事

它詳細的工作過程是什么?

應用層APP發出通訊請求,并提出數據包是基于可靠還是基于效率。

傳輸層響應上層APP的請求,準備建立通訊,基于可靠性則使用TCP協議,基于效率則使用UDP協議。在數據包里添加源端口號以及SYN等信息,并向下層INTERNET層提出通訊要求。

INTERNET層響應上層傳輸層的要求,準備建立IP通訊,把上層信息添加好本機以及對方IP地址信息,并通過查詢ARP表來確定是否有對應IP的MAC地址,如果沒有,則需要通過ARP廣播向網路中尋找目標IP。于是向下層網絡訪問層提出ARP廣播請求。

網絡訪問層響應INTERNET層要求,把源地址設為自己MAC,以48個1廣播地址為目標MAC向網路發送廣播信息。對方主機的網絡訪問層收到Frame后,向INTERNET層反映,目標主機INTERNET層收到廣播信息后,添加對方IP以及MAC地址到自己的ARP table,要求網絡訪問層通過單波把自己的MAC地址信息發送回給主機。主機收到信息后,傳送給本機ARP,并在ARPtable里添加上對方的IP以及MAC信息。

至此通訊雙方的IP以及MAC地址信息都已經齊全,可以開始三次握手過程,SYN、SYN ACK 、ACK通過三次握手建立對話連接后,開始進入穩定數據傳輸模式。

 

 

 

 

Internet 協議特征

 

運行于OSI 網絡層

面向無連接的協議

獨立處理數據包

分層編址

盡力而為傳輸

無數據恢復功能

 

IP PDU 報頭

 

含有上層協議的類型(tcp/udp)

版本:占4位???? ipv4

標識: 大于1500數據幀大小的單位切割的標識,標識一樣就代表來自同一個包

標志:占3位,表示包是拆分包還是不可拆分包,同時是否最后一個拆分包

目前只有后兩位有意義

DF,中間的一位,只有當DF=0時才允許分片

MF,最高位,MF=1表示后面還有分片。MF=0表示最后一個分片。

源地址? 目標地址? 每個地址32位????? 2^32 總共42億個地址

 

片偏移,實際就是切片包位于整個數據包的位置。

生存時間就是,ping命令看到的ttl,以經過路由器數量為單位,每經過一個路由器,ttl值就要減1。ttl為0則會被認為失效,會被拋棄。默認值為64。

 

ttl值可人為更改

echo 128 > /proc/sys/net/ipv4/ip_default_ttl

linux默認64,windows默認128,為防黑客通過ping判斷系統類型,可以修改ttl來實現。

 

192.168.30.128

如何從10進制轉換成2進制

實際范圍就是:0-255????? 00000000-11111111

00000000???? 0

00000001???? 1

00000010???? 2

00000100???? 4

00001000???? 8

00010000???? 16

00100000???? 32

01000000???? 64

10000000??? 128

11111111??? 255

所以根據上圖可知,

192=128+64

11000000

168=128+32+8

10000000+00100000+00001000=10101000

30=32-2

00100000-00000010=00011110

128

10000000

 

192.168.30.128

11000000? 10101000 00011110 10000000

 

把這一串數字連起來用bc轉化成10進制就是

3232243328

 

ping 3232243328? 能ping通!

 

實驗證明IP地址為2進制

 

協議域 Protocol Numbers

6表示TCP

17表示UDP

 

它們可唯一標識IP 網絡中的每臺設備

每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的地址

IP地址由兩部分組成:

網絡ID:netid

標識網絡

每個網段分配一個網絡ID

主機ID:hostid

標識單個主機

由組織分配給各設備

 

為什么有了唯一的MAC地址還要有IP地址來標識設備?

因為MAC地址體現不出管理性,IP地址則可以體現管理思路,例如通過網絡ID體現主機處于哪個網段,主機ID體現哪個網段里哪一臺主機。

 

網絡ID肯定在前面,主機ID肯定在后面,具體看地址分類:

 

A類地址

0XXXXXXX.J.Y.Z

范圍就是

00000000?? 0

01111111?? 127

0-127

但是0和127都是特殊地址必須去除,所以實際范圍是1-126

前8位為網絡ID

 

A類網絡有幾個?

 

公式:

網絡(網段)數量=2^可變網絡ID位數

一個網絡的主機數量=2^主機ID位數-2

 

兩個地址不能用所以減2:

X.0.0.0? X網段號

X.255.255.255? X網段廣播

 

有類地址:

類別??????????? 地址????????????????????????????????? 網段號????????? 網絡ID?????????? 主機ID

A???? 0xxxxxxx.j.y.z?????????????????????????????? 1-126?????????? 前8位???????????? 后 24位

B???? 10xxxxxx.xxxxxxxx.y.z????????????????? 128-191?????? 前16位?????????? 后16位

C???? 110xxxxx.xxxxxxxx.xxxxxxxx.z???? 192-223??????? 前24位?????????? 后8位

D???? 1110xxxxx.x.x.x?????????????????????????? 224-239???????????????? 多播地址

E????? 11110xxx.x.x.x??????????????????????????? 240-255???????????????? 保留地址

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101537

(0)
MaxMax
上一篇 2018-06-24
下一篇 2018-06-24

相關推薦

  • 第四周作業:etc/skel實戰聯系

    第四周作業

    2018-04-13
  • DNS服務

    1、相關原理概念
    2、配置主DNS服務器
    3、配置從DNS服務器

    2018-06-03
  • LAMP、php、mariadb

    LAMP: a:apache m:mariadb、mysql p:php,perl,python LAMMP:memcached   靜態資源:靜態內容,客戶端從服務器獲得的資源的表現形式與源文件相同; 動態資源:通常是程序文件,需要在服務器執行之后,將執行的結果返回給客戶端; CGI:common gateway interface通用網關接口 …

    Linux筆記 2018-05-21
  • Linux第1-5天的基礎命令。

      alias 是顯示當前shell中所有別名。 我們可以將一些常用且較長的命令進行簡化,就是別名。 alias 新的命令 = ‘原命令’ ????unalias 刪除別名 -p? 是查看系統中已經設置的別名   bc?? 是linux中的計算器語言??? ^C? 退出   clock 顯示硬件時間 -s 使系統時間和硬件時間同…

    Linux筆記 2018-03-31
  • 如何刪除大文件并立馬釋放磁盤空間

    我們先用df ?-h發現磁盤空間快滿了,圖1 我們馬上有rm -f /boot/bigfile刪除大文件,發現磁盤并沒有釋放空間 圖2 那我們用這個命令ls /boot來看看到底有沒有刪除 ?圖3 發現確實已經刪掉了,那怎么辦了,我這里有個簡單明了的方法,我們用大于號> /boot/bigfile把文件清空然后再用rm -f /boot/bigfile…

    2018-03-31
欧美性久久久久