1. 程式人生 > >詳解 TCP/IP 協議

詳解 TCP/IP 協議

什麼是TCP/IP協議

TCP/IP通訊協議是目前最完整、最被廣泛支援的通訊協議,它可以讓不同網路架構、不同作業系統的計算機之間通訊,是Internet的標準通訊協議。
TCP的介紹

TCP也叫傳輸控制協議(Transmission Control Protocol)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由IETF的RFC 793定義。

UDP

  UDP是OSI參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。UDP 協議基本上是IP協議與上層協議的介面。UDP協議適用埠分別執行在同一臺裝置上的多個應用程式。

  TCP埠和UDP埠。由於TCP和UDP 兩個協議是獨立的,因此各自的埠號也相互獨立,比如TCP有235埠,UDP也 可以有235埠,兩者並不衝突。

常見埠號 :

  80埠分配給WWW(HTTP)服務;

  21埠分配給FTP服務

  22埠分配給Ssh服務

  23埠分配給(  郵件傳輸協議)Telnet (遠端登入)服務

  25埠分配給SMTP服務

  110埠分配給P0P3服務

  111埠分配SUN公司的( 遠端過程呼叫 )RPC服務所有埠,常見RPC服務有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等

  119埠分配給NEWS新聞組傳輸協議

  135埠分配給DCOM服務

  161埠分配給SNTP服務



  TCP 22=遠端登入協議

  TCP 23=遠端登入(Telnet),Tiny Telnet Server (= TTS)

  TCP 25=電子郵件(SMTP)

  TCP 49=主機登入協議

 TCP 70=Gopher服務

 TCP 80=超文字伺服器(Http),Executor,RingZero

 TCP 102=訊息傳輸代理

 TCP 109=Pop2

 TCP 110=電子郵件(Pop3),ProMail

 TCP 115=簡單檔案傳輸協議

 TCP 156=SQL伺服器

 TCP 177=X Display管理控制協議

 TCP 179=Border閘道器協議(BGP)

  TCP 443=安全服務(HTTPS)

 TCP 546=DHCP Client

TCP 547=DHCP Server

TCP 569=MSN

 TCP 990=ssl加密

TCP 1703=Exloiter 1.1

TCP 1723=VPN 閘道器(PPTP)

TCP 4000=騰訊QQ客戶端

TCP 5000=WindowsXP伺服器

UDP 1701=VPN閘道器(L2TP)

**HTTP協議代理伺服器常用埠號:80/8080/3128/8081/9080
HTTPS伺服器,預設的埠號為443/tcp 443/udp;**

動態埠(Dynamic Ports)

動態埠的範圍是從49152到65535。之所以稱為動態埠,是因為它 一般不固定分配某種服務,而是動態分配。

註冊埠

埠1024到49151,分配給使用者程序或應用程式。這些程序主要是使用者選擇安裝的一些應用程式,而不是已經分配好了公認埠的常用程式。這些埠在沒有被伺服器資源佔用的時候,可以用使用者端動態選用為源埠。

埠號可分為3大類

  公認埠(WellKnownPorts):從0到1023,它們緊密繫結(binding)於一些服務。通常這些埠的通訊明確表明了某種服務的協議。例如:80埠實際上總是HTTP通訊。

  註冊埠(RegisteredPorts):從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於這些埠,這些埠同樣用於許多其它目的。例如:許多系統處理動態埠從1024左右開始。

    動態和/或私有埠(Dynamicand/orPrivatePorts):從49152到65535。理論上,不應為服務分配這些埠。實際上,機器通常從1024起分配動態埠。但也有例外:SUN的RPC埠從32768開始。

什麼情況下tcp進入time_wait?

當關閉一個 socket 連線時,主動關閉一端的 socket 將進入TIME_WAIT狀態,而被動關閉一方則轉入CLOSED狀態。
具體過程如下:1、 客戶端傳送FIN報文段,進入FIN_WAIT_1狀態。2、 伺服器端收到FIN報文段,傳送ACK表示確認,進入CLOSE_WAIT狀態。3、 客戶端收到FIN的確認報文段,進入FIN_WAIT_2狀態。4、
伺服器端傳送FIN報文端,進入LAST_ACK狀態。5、 客戶端收到FIN報文端,傳送FIN的ACK,同時進入TIME_WAIT狀態,啟動TIME_WAIT定時器,超時時間設為2MSL。6、 伺服器端收到FIN的ACK,進入CLOSED狀態。7、
客戶端在2MSL時間內沒收到對端的任何響應,TIME_WAIT超時,進入CLOSED狀態。

一個正常的TCP連線,都會有三個階段:1、TCP三次握手;2、資料傳送;3、TCP四次揮手:(如下)

這裡寫圖片描述

TCP/IP和OSI協議

OSI:應用層,表示層,會話層,傳輸層,網路層,資料鏈路層,物理層
TCP/IP:網路介面層,互連網路層,傳輸層,應用層

TCP三次握手(建立 OPEN)

客戶端發起一個和服務建立TCP連結的請求,這裡是SYN(J)
服務端接受到客戶端的建立請求後,返回兩個資訊: SYN(K) + ACK(J+1)
客戶端在接受到服務端的ACK資訊校驗成功後(J與J+1),返回一個資訊:ACK(K+1)
服務端這時接受到客戶端的ACK資訊校驗成功後(K與K+1),不再返回資訊,後面進入資料通訊階段

資料通訊

客戶端/服務端 read/write資料包

TCP四次握手(關閉 finish)

客戶端發起關閉請求,傳送一個資訊:FIN(M)
服務端接受到資訊後,首先返回ACK(M+1),表明自己已經收到訊息。
服務端在準備好關閉之前,最後傳送給客戶端一個 FIN(N)訊息,詢問客戶端是否準備好關閉了
客戶端接受到服務端傳送的訊息後,返回一個確認資訊: ACK(N+1)
最後,服務端和客戶端在雙方都得到確認時,各自關閉或者回收對應的TCP連結。

詳解 TCP/IP 協議 :https://mp.weixin.qq.com/s/nzLhnAfno5WwMTnldLMVWw

HTTP協議中POST、GET、HEAD、PUT等請求方法及相應值得含義: https://mp.weixin.qq.com/s/_X-eqZHlWVX3QA_evR8aRA

TCP/IP 詳解 :http://techlog.cn/article/list/10182929