1、簡述osi七層模型和TCP/IP五層模型
osi七層模型示意圖

微信圖片_20210115115019.png
osi七層模型各層的含義詳細解釋
第一層物理層:
物理層(Physical Layer)在局部局域網上傳送數據幀(Data Frame),它負責管理電腦通信設備和網
絡媒體之間的互通。包括了針腳、電壓、線纜規(guī)范、集線器、中繼器、網卡、主機接口卡等
第二層數據鏈路層
數據鏈路層(Data Link Layer)負責網絡尋址、錯誤偵測和改錯。當表頭和表尾被加至數據包時,會形
成信息框(Data Frame)。數據鏈表頭(DLH)是包含了物理地址和錯誤偵測及改錯的方法。數據鏈
表尾(DLT)是一串指示數據包末端的字符串。例如以太網、無線局域網(Wi-Fi)和通用分組無線服務
(GPRS)等。分為兩個子層:邏輯鏈路控制(logical link control,LLC)子層和介質訪問控制
(Media access control,MAC)子層
第三層網絡層
網絡層(Network Layer)決定數據的路徑選擇和轉寄,將網絡表頭(NH)加至數據包,以形成報文。
網絡表頭包含了網絡數據。例如:互聯(lián)網協(xié)議(IP)等。
第四層 傳輸層
傳輸層(Transport Layer)把傳輸表頭(TH)加至數據以形成數據包。傳輸表頭包含了所使用的協(xié)議
等發(fā)送信息。例如:傳輸控制協(xié)議(TCP)等。
第5層 會話層
會話層(Session Layer)負責在數據傳輸中設置和維護電腦網絡中兩臺電腦之間的通信連接。
第6層 表示層
主條目:表示層(Presentation Layer)把數據轉換為能與接收者的系統(tǒng)格式兼容并適合傳輸的格式
第7層 應用層
應用層(Application Layer)提供為應用軟件而設的接口,以設置與另一應用軟件之間的通信。例如:
HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
tcp/ip五層模型
osi七層模型和tcp/ip模型對比圖

微信圖片_20210115120847.png
tcp/ip簡單介紹
tcp/ip全稱為傳輸控制協(xié)議/因特網互聯(lián)協(xié)議 Transmission Control Protocol/Internet Protocol
tcp/ip為一個協(xié)議棧,包括tcp、ip、udp、icmp、rip、telnet、ftp、smtp、arp等眾多協(xié)議
各層協(xié)議參考圖

微信圖片_20210115121755.png
tcp/ip和osi七層模型的比較
相同點
兩者都是以協(xié)議棧的概念為基礎
協(xié)議棧中的協(xié)議彼此相互獨立
下層對上層提供服務
不同點
OSI是先有模型;TCP/IP是先有協(xié)議,后有模型
OSI是國際標準,適用于各種協(xié)議棧;TCP/IP實際標準,只適用于TCP/IP網絡
層次數量不同
2、總結描述TCP三次握手四次揮手
TCP三次握手

微信圖片_20210115122450.png
第一次握手:建立連接時,客戶端發(fā)送syn包(syn=x)到服務器,并進入SYN_SENT狀態(tài),等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也發(fā)送一個SYN包(syn=y),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK(ack=y+1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。
TCP的四次揮手

微信圖片_20210115123006.png
客戶端進程發(fā)出連接釋放報文,并且停止發(fā)送數據。釋放數據報文首部,FIN=1,其序列號為seq=u(等于前面已經傳送過來的數據的最后一個字節(jié)的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,FIN報文段即使不攜帶數據,也要消耗一個序號。
服務器收到連接釋放報文,發(fā)出確認報文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑杝eq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態(tài)。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處于半關閉狀態(tài),即客戶端已經沒有數據要發(fā)送了,但是服務器若發(fā)送數據,客戶端依然要接受。這個狀態(tài)還要持續(xù)一段時間,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間。
客戶端收到服務器的確認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài),等待服務器發(fā)送連接釋放報文(在這之前還需要接受服務器發(fā)送的最后的數據)。
服務器將最后的數據發(fā)送完畢后,就向客戶端發(fā)送連接釋放報文,FIN=1,ack=u+1,由于在半關閉狀態(tài),服務器很可能又發(fā)送了一些數據,假定此時的序列號為seq=w,此時,服務器就進入了LAST-ACK(最后確認)狀態(tài),等待客戶端的確認。
客戶端收到服務器的連接釋放報文后,必須發(fā)出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)。注意此時TCP連接還沒有釋放,必須經過2??MSL(最長報文段壽命)的時間后,當客戶端撤銷相應的TCB后,才進入CLOSED狀態(tài)。
服務器只要收到了客戶端發(fā)出的確認,立即進入CLOSED狀態(tài)。同樣,撤銷TCB后,就結束了這次的TCP連接??梢钥吹?,服務器結束TCP連接的時間要比客戶端早一些。
tcp協(xié)議的三次握手四次揮手的11種狀態(tài)集的解釋
CLOSED 沒有任何連接狀態(tài)
LISTEN 偵聽狀態(tài),等待來自遠方TCP端口的連接請求
SYN-SENT 在發(fā)送連接請求后,等待對方確認
SYN-RECEIVED 在收到和發(fā)送一個連接請求后,等待對方確認
ESTABLISHED 代表傳輸連接建立,雙方進入數據傳送狀態(tài)
FIN-WAIT-1 主動關閉,主機已發(fā)送關閉連接請求,等待對方確認
FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發(fā)送關閉傳輸連接請求
TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失
CLOSE-WAIT 被動關閉,收到對方發(fā)來的關閉連接請求,并已確認
LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失
CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認
3、描述TCP和UDP區(qū)別
TCP特性
工作在傳輸層
面向連接協(xié)議
全雙工協(xié)議
半關閉
錯誤檢查
將數據打包成段,排序
確認機制
數據恢復,重傳
流量控制,滑動窗口
擁塞控制,慢啟動和擁塞避免算法
**更多關于tcp的內核參數,可參看man 7 tcp**
UDP特性
工作在傳輸層
提供不可靠的網絡訪問
非面向連接協(xié)議
有限的錯誤檢查
傳輸性能高
無數據恢復特性
**更多關于udp的內核參數,可參看man 7 udp**