網絡結構和TCP/IP協議族

網絡五層模型結構圖:安全

 

 

 鏈路層:以太網協議服務器

  規定數據包:幀,每一幀分爲兩部分:頭(Head)和數據(Date);頭固定22字節,數據最短46字節,最長1500字節,因此整個幀最短68字節,最長1522字節。頭中包含發送方和接收方的MAC地址(各6字節)等。網絡

  鏈接層只能在局域網內鏈接,採用廣播的發送方式傳遞信息。加密

網絡層:IP協議spa

  IP地址:32位,從0.0.0.0-255.255.255.255;前24位表明網絡,後8位表明主機,同一子網絡(局域網)的電腦,IP部分相同。3d

  規定數據包仍分爲兩部分:頭(Head)和數據(Date);頭部份包含版本、長度、IP地址等信息。頭部20-60字節,數據部分最長65515字節,總長最長65535字節;由於以太網數據部分最長只有1500字節,因此若是IP數據包過長,須要分割成幾個以太網數據包,分別發送。orm

  IP協議主要有兩個做用:爲每個計算機分配IP地址,肯定哪些地址在同一個子網絡。blog

傳輸層:TCP\UDP資源

  傳輸層的功能就是創建「端到端」的通訊,端口:即每個使用網卡的程序的編號,是0-65535之間的一個整數。正好16位.不論是瀏覽網頁仍是在線聊天,應用程序都會隨機選用一個大於1023的端口,而後與服務器相應端口聯繫。terminal

  UPD:頭包含發送端口和接收端口。幾乎就是在數據前面加上端口號。標頭只有8字節,總長度不超過65536個字節。

  TCP:能夠近似地認爲是有確認機制的UPD協議,每發送一個數據包都要求確認,若是有數據包遺失,發送方就能知曉並重發。TCP數據包沒有長度限制,但通常不會超過IP數據包長度,以免再次分割。

      發送的時候PCT協議爲每一個包編號,以便接收方按照順序還原;第一個包編號是隨機值,第二個包編號是第一個包編號+1;就是說每一個包均可以知道本身的編號的和下一個包的編號,這就可讓接收方按照順序還原啦。

 

每個應用層(TCP/IP參考模型的最高層)協議通常都會使用到兩個傳輸層協議之一:

運行在TCP協議上的協議:

  • HTTP(Hypertext Transfer Protocol,超文本傳輸協議),主要用於普通瀏覽。
  • HTTPS(HTTP over SSL,安全超文本傳輸協議),HTTP協議的安全版本。
  • FTP(File Transfer Protocol,文件傳輸協議),用於文件傳輸。
  • POP3(Post Office Protocol, version 3,郵局協議),收郵件用。
  • SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議),用來發送電子郵件。
  • TELNET(Teletype over the Network,網絡電傳),經過一個終端(terminal)登錄到網絡。
  • SSH(Secure Shell,用於替代安全性差的TELNET),用於加密安全登錄用。

運行在UDP協議上的協議:

  • BOOTP(Boot Protocol,啓動協議),應用於無盤設備。
  • NTP(Network Time Protocol,網絡時間協議),用於網絡同步。
  • DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),動態配置IP地址。

運行在TCP和UDP協議上:

  DNS(Domain Name Service,域名服務),用於完成地址查找,郵件轉發等工做。

 NDS協議:能夠將網址轉成IP地址。

 

TCP/IP 協議族

在互聯網使用的各類協議中最重要和最著名的就是 TCP/IP 兩個協議。如今人們常常提到的 TCP/IP 並不必定是單指 TCP 和 IP 這兩個具體的協議,而每每是表示互聯網所使用的整個 TCP/IP 協議族。

 TCP(傳輸控制協議)和IP(網際協議) 是最早定義的兩個核心協議,因此才統稱爲TCP/IP協議族

TCP的三次握手四次揮手

當一個鏈接被創建或被終止時,交換的報文段只包含TCP頭部,而沒有數據。

三次握手的本質是確認通訊雙方收發數據的能力

四次揮手的目的是關閉一個鏈接:

由於只有在客戶端和服務端都沒有數據要發送的時候才能斷開TCP。而客戶端發出FIN報文時只能保證客戶端沒有數據發了,服務端還有沒有數據發客戶端是不知道的。而服務端收到客戶端的FIN報文後只能先回復客戶端一個確認報文來告訴客戶端我服務端已經收到你的FIN報文了,但我服務端還有一些數據沒發完,等這些數據發完了服務端才能給客戶端發FIN報文(因此不能一次性將確認報文和FIN報文發給客戶端,就是這裏多出來了一次)。

 

 

 

爲何客戶端發出第四次揮手的確認報文後要等2MSL的時間才能釋放TCP鏈接?

這裏一樣是要考慮丟包的問題,若是第四次揮手的報文丟失,服務端沒收到確認ack報文就會重發第三次揮手的報文,這樣報文一去一回最長時間就是2MSL,因此須要等這麼長時間來確認服務端確實已經收到了

若是已經創建了鏈接,可是客戶端忽然出現故障了怎麼辦?

TCP設有一個保活計時器,客戶端若是出現故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求後都會從新復位這個計時器,時間一般是設置爲2小時,若兩小時尚未收到客戶端的任何數據,服務器就會發送一個探測報文段,之後每隔75秒鐘發送一次。若一連發送10個探測報文仍然沒反應,服務器就認爲客戶端出了故障,接着就關閉鏈接。

相關文章
相關標籤/搜索