1.應用層,(協議http)?
2.傳輸層(TCP)
3.?網絡層(ip)
4.鏈路層(網絡電纜等。)
?答:3g 4g 5g -對應->鏈路層
1.幀用於表示數據鏈路層中的數據包單元。
2.碼片是ip中的數據單位。
3.數據段代表Tcp數據流中的信息。
4.消息是指應用協議中的數據單元。
(流程)
用戶a發送了壹條消息,例如我是Android:
交給Tcp層(傳輸層)打包,附上Tcp包頭。?我是安卓(Tcp頭)
交給ip層(網絡層)打包。附加ip數據包報頭。?我是安卓(Tcp頭)(ip頭)
將其交給數據鏈路層,並附上以太網數據包報頭。我是安卓(Tcp頭)(ip頭)(以太網頭)
然後交給物理層進行相關傳輸:
用戶b收到消息:
壹層壹層解開:
數據鏈路層打開以太網報頭:?我是安卓(Tcp頭)(ip頭)
Ip層(網絡層)我是安卓(Tcp頭)
Tcp層(傳輸層)?我是安卓?
上層接收。?我是機器人。
這種設計的目的是遵循單壹責任的原則
?TCP是壹種可靠的面向連接的協議。在發送和接收數據之前,需要與對方建立可靠的連接,包括三次握手建立連接和四次揮手斷開連接。UDP是壹種無連接的通信協議。在數據傳輸之前,源和終端不建立連接。發送方盡快將數據拋出網絡,接收方從消息隊列中讀取消息段。
IP地址的作用主要是尋址。(ip地址(網絡層):給網絡或主機分配壹個邏輯地址,以區分mac地址。隨意改。Mac地址(數據鏈路)不能改變)
例如:
公司有兩棟樓?
A棟:有壹個通信子網。
B棟,有壹個通信子網。
有兩臺路由器將A(通信子網)和B(通信子網)連接到局域網。
a有自己的子網,由多臺計算機組成。?b也是自己電腦的子網。
現在A棟有壹臺A機(ip地址:192.168.1.2)。
B棟有壹臺B機(ip地址:192.167.1.2)。
a向機器B發送數據:
包到了路由器,當前包不在我的子網,我就去找哪個子網是192+067。-並發送到相應的路由器。
它怎麽知道是192.5438+067.438+0.2?
在我們的子網中,每臺電腦都要保存在路由器中,並告訴其他機器我的ip地址和mac地址是什麽。然後發送到對應的電腦。路由器給每臺電腦發壹份,但是網卡會判斷數據包的mac地址和電腦的mac地址是否相同,如果不同就直接丟棄。
所以這裏就引出了網絡嗅探的網絡攻擊:
在同壹個子網中。不要讓網卡接收數據,提前把獲得的數據都抓起來。
標準建立的端口號:0 ~ 1023?1024~49151
服務器程序設置端口號。
客戶。操作系統會給它分配壹個49152-65535。
因此,我們可以通過源ip地址、目的ip地址、協議號、源端口號和目的端口號來識別通信。
這裏我們重點關註TCP:
特點:
面向連接,
可靠性,
RTT(往返時間)和RTO(重新傳輸超時)。
數據分類
流控制
全雙工
?假設應用層有壹串消息要通過網絡發送以供流通(傳輸層、網絡層等)。).用戶發送大量數據怎麽辦?如何保證用戶發送的數據不會丟失?這個龐大的數據在這裏要被拆分,ip層會被拆分成碎片。壹般來說,以太網可以接收1046字節,按照1046字節進行切片,然後傳輸到對端。在這種情況下,問題就出現了。我以前是壹個龐大的數據,現在把它發出去,切割成很多塊。如果我中途丟了幾塊,那麽TCP提出重傳超時和確認機制,保證數據完整性。如果對等體沒有收到對方的消息,它不會永遠等待,而是在壹定時間後重新發送,那麽這個時間如何確定呢?操作系統在設計時,會引入RTT機制,即往返延遲機制。壹個數據包從我這邊發給對方,然後收到對方的回復,這個時間就是往返延遲。操作系統將針對最新的往返延遲重新計算其內部RTO。這個重傳超時是不固定的。
數據排序:被拆分成碎片後,對方要知道順序才能形成完整的數據包,所以網絡協議會在這壹端進行排序。以便於在相對端的完全組裝。
流量控制(滑動窗口):我的通信對手有不同的數據處理能力。發送方只是發送數據,對方收到後可能需要處理,所以可能收到的數據沒有妳發送方發送的快。所以也有壹個機制,會告訴對方我壹次響應壹個消息或者發送壹個消息收到了多少數據。
全雙工:在通信的兩個相對端,接收器和服務器可以同時發送或接收來自對端的數據。
客戶端(連接):
1.首先向服務器發送SYN消息(SYN = 1 seq = 23412)。客戶端狀態:同步發送
2.服務器收到消息後會回復客戶端(SYN = 1。ACK = 1,ACK?= 23413 seq = 6478)服務器狀態:RCVD
3.客戶端收到消息後檢查:ACK是1嗎?ack是23413嗎?,客戶端確定服務器收到了我的SYN = 1 seq = 23412消息。響應服務器
4.客戶端用ACK = 1和ACK = 6479回復服務器。客戶狀態:已建立
5.在服務器接收到來自客戶端的消息後。服務器狀態:已建立
Tcp是面向連接的,所以需要雙方確認連接的建立(維護序列號)。
SYN flooding攻擊:通過網絡所在端口發送大量偽造原始地址的攻擊報文,造成服務器上半開連接隊列滿,從而阻止其他用戶訪問。
原理:攻擊者的客戶端使用偽造的ip地址向服務器發送請求(第壹次握手,服務器的響應消息永遠不會發送給真實的客戶端,服務器在等待客戶端的三次握手(永遠不會),服務器在等待這個半開連接的同時消耗資源。如果有成千上萬個這樣的連接,就會耗盡主機資源,從而達到攻擊的目的。
解決方案:
1.無效的連接監控版本。
2.延遲TCB分配方法
第三步:防火墻
客戶端第壹次發送關閉請求,fin = 1 seq = 98745-->;客戶端:Fin_wait_1
客戶端響應:ack = 1 ack = 98756-> CLOSE _ WAIT?
客戶端接收來自服務器的請求——“客戶端?鰭_等待_2
服務器發送消息FIN = 1 seq = 76432-“Close”。
客戶端收到服務器的請求-> time _ waiting回復ACk = 1?ack = 76433?
服務器->關閉
客戶端時間_等待持續壹段時間?:2 * MSL-& gt;客戶端關閉
因為Tcp是雙重作業(客戶端和服務器可以互相發送和接收請求),所以雙方都需要確認關閉和連接。
MSL:最長段壽命(最長存活時間RFC定義為2分鐘系統30秒);TIME_WAITING其實是1-4 min。
服務器發送消息——“客戶端應該回復。網絡丟失,服務器再次發送。
端口沖突:
A:端口A:8080?
乙:8080端口
如果A馬上關閉,B已經申請了,但是服務器還在發送,只是還沒有收到。b收到了。
wireshark?tcpdump。