1、為什么會有TCP/IP協議
中國人和中國人說話,要遵循漢語的的語法結構,使用漢語的發音。當我們和外國人交
流時,就要適用外國的語言了,遵循外國的語法機構和發音。其實這就是一種協議,只不過我們稱之為語言。計算機在這方面體現的更為直觀,兩臺機器要想進行通信就需要制定各種各樣的協議了。例如:文件傳輸適用TCP協議。域名系統適用DNS協議。有了些協議的存在,各種數據流按照規則傳輸,計算機之間得以通信。
簡單來說,協議就是計算機之間通過網絡實現通信時事先達成的一種“約定”;這種“約定”使那些由不同廠商的設備,不同CPU及不同操作系統組成的計算機之間,只要遵循相同的協議就可以實現通信。協議分為很多種,每一種協議都明確界定了它的行為規范:兩臺計算機之間必須能夠支持相同的協議,并且遵循相同的協議進行處理,才能實現相互通信
2、TCP/IP協議分層
TCP/IP協議其實是一個協議集合。為了方便所以統稱為TCP/IP。TCP/IP協議族中有一個重要的概念是分層,TCP/IP協議按照層次分為以下四層。應用層、傳輸層、網絡層、數據鏈路層。為什么要分層?這就如同鄧小平1978年的大包干,責任到人。一個層只負責一個層次的問題,如果出問題了,和其他的層次無關,只要維護這個層次也就好了。其實編程語言里也能體現這個分層理論,即封轉性、隔離。
應用層是最上面的,這里面有HTTP、FTP等協議;第二層是傳輸層,著名的TCP和UDP協議就在這個層次;第三層是網絡層,IP協議就在這里,它負責對數據加上IP地址和其他的數據以確定傳輸的目標;第四層叫數據鏈路層,這個層次為待傳送的數據加入一個以太網協議頭,并進行CRC編碼,為最后的數據傳輸做好準備。
下面這張圖是TCP/IP協議的基本框架:
3、TCP連接
TCP(Transmission Control Protocol) 傳輸控制協議。TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接。位碼即tcp標志位,有6種 標示:SYN(synchronous建立聯機) 、PSH(push傳送)、ACK(acknowledgement 確認) 、FIN(finish結束)、 RST(reset重置)、 URG(urgent緊急)、Sequence number(順序號碼) 、Acknowledge number(確認號碼)。
手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網絡建立TCP連接。TCP協議可以對上層網絡提供接口,使上層網絡數據的傳輸建立在“無差別”的網絡之上。建立起一個TCP連接需要經過“三次握手”:
第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。握手完成后,兩臺主機開始傳輸數據了。
握手過程中傳送的包里不包含數據,三次握手完畢后,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。斷開連接時服務器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過“四次揮手”(過程就不細寫了,就是服務器和客戶端交互,最終確定斷開)。
4、IP協議
IP是英文Internet Protocol(網絡之間互連的協議)的縮寫,中文簡稱為“網協”,也就是為計算機網絡相互連接進行通信而設計的協議。在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守 IP協議就可以與因特網互連互通。IP地址具有唯一性,根據用戶性質的不同,可以分為5類。另外,IP還有進入防護,知識產權,指針寄存器等含義。
IP是怎樣實現網絡互連設備,如以太網、分組交換網等,它們相互之間不能互通,不能互通的主要原因是因為它們所傳送數據的基本單元(技術上稱之為“幀”)的格式不同。IP協議實際上是一套由軟件、程序組成的協議軟件,它把各種不同“幀”統一轉換成“IP數據包”格式,這種轉換是因特網的一個最重要的特點,使所有各種計算機都能在因特網上實現互通,即具有“開放性”的特點。
IP協議中還有一個非常重要的內容,那就是給因特網上的每臺計算機和其它設備都規定了一個唯一的地址,叫做“IP 地址”。由于有這種唯一的地址,才保證了用戶在連網的計算機上操作時,能夠高效而且方便地從千千萬萬臺計算機中選出自己所需的對象來。