網絡七層協議

網絡七層協議由下往上分別爲物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。編程

什麼是應用層?服務器

用戶使用的都是應用程序,均工做於應用層 TCP協議能夠爲各類各樣的程序傳遞數據,好比Email、WWW、FTP等等。那麼,必須有不一樣協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了」應用層」網絡

 

 

什麼是傳輸層?socket

網絡層的ip幫咱們區分子網,以太網層的mac幫咱們找到主機,而後你們使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,那麼咱們經過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。 spa

傳輸層功能:創建端口到端口的通訊 .net

補充:端口範圍0-65535,0-1023爲系統佔用端口 blog

 

什麼是網絡層?接口

具體功能包括尋址和路由選擇、鏈接的創建、保持和終止等,標識了源MAC/IP,目標MAC/IP,地址管理和路由選擇。ip

數據鏈路層中會把網絡層的數據包封裝到數數據鏈路層的數據位置,而後再添加上本身的包頭,再發給物理層,物理層發給網關,網關再廣播資源

 

各層協議、設備:

應用層有HTTP協議(超文本傳輸協議)、文件傳送協議FTP、簡單郵件傳送協議SMTP、DNS域名解析協議(一種將域名轉ip的internet服務)

傳輸層有TCP協議,UDP、RTP、DCCP等

網絡層有IP協議,IPX、RIP、OSPF等

HTTP協議是基於TCP鏈接的,TCP/IP是傳輸層協議,主要解決數據如何在網絡中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,是它的一組接口。

 

 

中繼器、集線器、還有咱們一般說的雙絞線也工做在物理層;網橋(現已不多使用)、以太網交換機(二層交換機)、網卡(其實網卡是一半工做在物理層、一半工做在數據鏈路層)在數據鏈路層;路由器、三層交換機在網絡層;傳輸層主要是四層交換機、也有工做在四層的路由器。

 

TCP:面向鏈接、傳輸可靠(保證數據正確性,保證數據順序)、用於傳輸大量數據(流模式)、速度慢,創建鏈接須要開銷較多(時間,系統資源)。

UDP:面向非鏈接、傳輸不可靠、用於傳輸少許數據(數據包模式)、速度快。

TCP是一種流模式的協議,UDP是一種數據報模式的協議。

 

三次握手:

第一次握手:客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

 

三次握手(Three-way Handshake)即創建一個TCP鏈接時,須要客戶端和服務器總共發送3個包。

三次握手的目的是鏈接服務器指定端口,創建TCP鏈接,並同步鏈接雙方的序列號和確認號並交換TCP 窗口大小信息。

在socket編程中,客戶端執行connect()時,將觸發三次握手。

 

握手過程當中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP鏈接一旦創建,在通訊雙方中的任何一方主動關閉鏈接以前,TCP 鏈接都將被一直保持下去。

 

斷開鏈接時服務器和客戶端都可以主動發起斷開TCP鏈接的請求,斷開過程須要通過「四次握手」。

 

四次揮手:

當Server端收到Client端的SYN鏈接請求報文後,能夠直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。可是關閉鏈接時,當Server端收到FIN報文時,極可能並不會當即關閉SOCKET,因此只能先回復一個ACK報文,告訴Client端,」你發的FIN報文我收到了」。只有等到我Server端全部的報文都發送完了,我才能發送FIN報文,所以不能一塊兒發送。故須要四步握手。

參考博客:

http://www.javashuo.com/article/p-touxjwsr-gx.html

http://www.javashuo.com/article/p-euzzvxaz-mk.html

相關文章
相關標籤/搜索