1. 程式人生 > >TCP/IP 網路基礎

TCP/IP 網路基礎

net 其他 規則 系統 資源共享 開放 特殊 系統安全 miss

一、引子

????????TCP/IP是“Transmission Control Protocol/Internet Protocol”的簡寫,翻譯成中文為傳輸控制協議/互聯網網絡協議。TCP/IP是一種網絡通信協議,它規範了網絡上的所有通信設備,尤其是一個主機與另一個主機之間的數據來往格式及傳送方式。TCP/IP是Interent的基礎協議,也是一種計算機數據打包和尋址的標準方法。

二、計算機網絡概述

????????計算機網絡是指將地理位置不同的,具有獨立功能的多臺計算機及其他外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。

????????20世紀90年代後,以Internet為代表的計算機網絡得到了迅猛發展,Internet成為世界上最大的計算機網絡。Internet主要由主機,線路,交換,路由,調制解調器等設備組成。

技術分享圖片

????????主機有不同的形式,主要分為兩種:服務器和客戶端。在Interent中提供服務的主機叫做服務器,比如各大門戶網站,社交平臺等;通過訪問服務器從而獲得有用信息的主機叫做客戶端,比如各種家庭計算機和智能手機。

網絡分層

????????將數據從一個主機傳輸到另一個主機是一個復雜的過程,包括信息格式轉換,分發,尋址,物理傳輸等,在這個過程中還要加入多種校驗措施以保證傳輸的正確性。為了使這個過程利於設計並且向開發者隱匿網絡細節,計算機網絡被縱向分割為不同的層,每一層表示不同的抽象程序和設計目的。每一層的功能相互獨立,這使得它們可以僅完成自己的任務,比如傳輸編碼等。Internet是基於TCP/IP網絡而搭建的,TCP/IP將網絡分為4層結構,分別是應用層,傳輸層,網絡層,接口層。

技術分享圖片

  • 應用層:Application Layer,為用戶的進程直接提供服務,應用層負責發送及接受什麽數據,如果解釋數據,如何呈現數據,如何加密數據等問題,是網絡應用程度開發者重點打交道的對象。例如HTTPS定義了網絡間數據加密認證的標準方法,HTML定義了網頁的解析方式等。

  • 傳輸層:Transport LAyer:為了兩個主機的不同端口之間的通信提供服務。端口(Port)是一種在同一主機內的不同通道之間進行尋址的方式。傳輸層的發送方與接受方在物理上無須相鄰。TCP/IP的傳輸層包括兩種協議:TCP和UDP。TCP提供可靠的有序傳輸,UDP提供非可靠的傳輸。
  • 網絡層:Network Layer,為兩個主機之間提供通信服務。網絡層定義了數據如何封裝為傳送報,並且定義了不同主機的尋址方式。主要由IP(Internet Protocal)組成,輔以ICMP,IGMP等路由協議
  • 接口層:Link Layer,負責相鄰物理設備之間的信息傳輸。接口層的工作非常多且復雜,它需要完成接口層的數據組裝(形成Frame),加入必要的控制和校驗數據,並且將二進制數據流(0/1)轉換為物理鏈路上的標準電平(高電平,低電平)。針對不同的物理傳輸介質,接口層定義了多套標準,並且這些標準,並且這些標準隨著電子技術的進步一直發展,列如802.3、802.11等/

網絡設備

????????網絡設備及部件是連接網絡的物理實體。網絡設備的種類繁多且與日俱增,網絡設備特指Internet除主機外,僅起網絡傳輸及數據交換作用的設備,具體有:集線器,交換機,網橋,路由器,網關,網絡接口卡(NIC),無限接入點(WAP),調制解調器,光纜等。

  • 集線器:簡稱HUB,是接口層設備。集線器是網絡互連的最簡單設備,它接受並識別網絡信號,然後再生信號並將其發送到網絡的其他分支上。
  • 交換機:即Switcher,是接口層設備,也是網絡互聯中的最常用設備。它與集線器的差別是HUB本身不能識別目的的地址,而交換機可以。當同一局域網內的A主機向B主機傳輸數據時,數據包在經過UHB時在網絡上以廣播方式傳輸的,由每一臺終端通過地址信息來確定數據包是否屬於自己;數據包經過Switcher時,Switcher會根據Frame目的地址直接發送給B主機所在的鏈路。因此,在網絡中用交換機替換集成線路通常能提高網絡的整體性能。
  • 網橋:Bridge,是接口層設備。網橋通常同於物理異構的網絡之間相互連接,列如以太網和令牌之間
  • 路由器:即Roouter,是網絡層設備。路由器是互聯網的主要結點設備,通過發送者,接受者IP地址和路由算法決定數據的收發路徑,這一過程叫做Routing。
  • 網關:Gateway,是一個通用概念,主要指不同網絡環境之間的協議轉換,一般為應用層設備,比如一個專用於數據存儲轉發的服務器。
  • 調試解調器:即Modem,俗稱“貓”,是接口層設備,用於連接計算機網絡與傳統通信網。Modem將計算機的數字信號轉譯成能夠在常規電話線中傳輸的模擬信號。因為模擬信號道的傳輸距離更長,所以長距離的網絡傳輸一般都需要經過Modem轉接。常見的家用Modem包括56k貓,ADSL貓,光纖貓等。
  • 無線接入點:即Wireless Access Point,是接口層設備,將有線網絡轉為無線網絡,最常用的無線接入點即WiFi。
  • 防火墻:即Firewall,是傳輸層及應用層的設備。防火墻通常位於不同網絡的邊界處,主要用於防止惡意程序及數據進入內部網絡,或者防治機密信息泄露到廣域網中。企業級網絡通常用防火墻抵禦違法入侵。

IP地址

????????網絡地址(Network Address)是一個網絡層概念,是互聯網上的主機在網絡中具有的邏輯地址。Internent上采用IP地址表示網絡地址。當前有兩種形式的IP地址,即IPv4和IPv6.

????????Ipv誕生於1982年,隨著TCP/TP的發展壯大,締造了當今的計算機網絡通信模式。IP地址是一個32位二進制的地址,在表達方式上以4個十進制數字表示,比如172.16.32.3,10.38.96.243等。從理論上講,有大約60億(2的32次方)中可能的地址組合,這似乎是一個很大的地址空間。實際上,一個IPv4地址被劃分兩部分:網絡地址和主機地址。根據網絡地址和主機的不同位數規則,可以將IP地址分為A(8位網絡ID和24位主機ID),B(16位網絡ID和16位主機ID),C(24位網絡ID和8位主機ID)3類,由於歷史原因和技術發展的差異,A類地址和B類地址幾乎分配已盡。

????????由於IPv4的數據限制,IPv6應運而生。IPv6由128位二進制數組成,在表達方式上用8個16進制數字表示,比如等d23:4334:0:0:23:ade:9853:23.
單從數量級上來說,IPv6所擁有的地址容量約是IPv4的8x10^28倍,達到2^128個。這個不但解決了網絡地址資源數量的問題,也位除計算機外的設備連入互聯網在數量限制上掃清了障礙。然而讓人遺憾的是,IPv6自1999年開始分配以來,並沒有在互聯網上得到廣泛應用。目前互聯網的主要地址表達方式及其調制仍主要以IPv
4為主,但IPv6必將會替代IPv4.

域名

????????由於IP地址由純數字組成,很難讓人記憶,且不能表達功能,地址位置等附加含義,所以在TCP/IP網絡形成不久,標準化組織就定義了域名這種主機地址表達方式。

????????域名(Domain Name)是一個應用層概念,是由一串用點分隔的名字組成的Internet上某臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指地理位置,地理上的域名或有行政自主權的一個地方區域)。域名是一個IP地址的“面具”。一個域名是便於人們記憶和溝通的一組服務器的地址(網絡,電子郵件,FTP等)。使用域名作為標記互聯網計算機的名稱已有30多年的歷史,世界上第1個被註冊的域名是在1985年1月被註冊的。

????????域名中的標號都由英文字母和數字組成,每個標號不超過63個字符,也不區分大小寫字母。標號中除字符(-)外不能使用其他標點標號。級別最低的域名寫在最左邊,而級別最高的域名寫在最右邊。由多個標記組成的完整域名總共不超過255個字符。

URL

????????為統一資源定位符,是用來表示Internet上資源位置的標準。資源位置包括資源所在的主機及其在主機內的訪問路徑。這裏所說的資源是指Internet上任何可訪問的對象,包括文本,圖像,視頻流等。URL的標準形式如下:

[協議://[主機]:[端口]/[路徑]?[參數]]

????????其中,【協議】可以是HTTP,FTP等應用層協議;【主機】是域名或IP地址;【端口】是傳輸層端口號;【路徑】是以斜杠“/”分割的主機內的路徑;【參數】是以“&”分割的若幹鍵值對。

三、TCP和UDP

????????TCP/IP的傳輸層是網絡中承上啟下的關鍵一層,向上對應用層提供通信服務,向下將應用信息封裝為網絡信息。傳輸層連接主機之間的進程,同一主機中不同進程的網絡通信通過端口(port)進行區分。所以傳輸層為主機提供的是端口到端口的服務。

????????TCP和UDP是Internet中傳輸層最重要的兩種協議,由於開發者不可避免地要與傳輸層打交道;

端口

????????所說的端口,不是計算機硬件的I/O端口,而是軟件級的概念,就像IP地址是網絡層的尋址方式,端口是傳輸層的尋址方式,端口是一個16位二進制數表達的正整數,數字範圍為0-65535,即一個在網絡上通信的主機理論上最多有65535個傳輸層信道。但由於在操作系統和一些應用中端口也被用作同一主機上不同進程之間的通信,所以通常可用的網絡端口數量少於65535個。

????????應用程序(調入內存運行後一般被稱為進程)通過系統調用與某端口建立連接(Binding,綁定)後,傳輸層給該端口的數據都被相應的進程所接收,相應的進程發給傳輸層的數據都從該端口輸出。由於TCP/IP傳輸層的TCP和UDP是兩個完全獨立的軟件模塊,因此各自的端口號也相互獨立。

????????註意:TCP和UDP可以在同一主機上使用相同的端口而互不幹擾。列如TCP有個53號端口,UDP也可以有個53號端口,兩者並不沖突。

TCP

TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的,可靠的,基於字節流的傳輸層通信協議,由IETF的的RFC793定義。當應用層向TCP層發送用於網間傳輸的用8位字節表示的數據流時,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)限制;

TCP標誌位:

  • SYN(synchronous),建立聯機。
  • ACK(acknowledgement),確認。
  • PSH(push),傳輸。
  • FIN(finish),結束。
  • RST(reset),重置。
  • URG(urgent),緊急。

技術分享圖片

三次握手建立連接闡述:

第一次握手:客戶端要和服務端進行通信,首先要告知服務端一聲,遂發出一個SYN=1的連接請求信號,”服務端哥哥,我想給你說說話”。

第二次握手:當服務端接收到客戶端的連接請求,此時要給客戶端一個確認信息,”我知道了(ACK),我這邊已經準備好了,你現在能連嗎(SYN)”。

第三次握手:當客戶端收到了服務端的確認連接信息後,要禮貌的告知一下服務端,“好的,咱們開始聯通吧(ACK)”。

到此整個建立連接的過程已經結束,接下來就是雙方你一句我一句甚至同時交流傳遞信息的過程了。

四次揮手斷開連接闡述:

第一次揮手:雙方交流的差不多了,此時客戶端也已經結尾了,接下來要斷開通信連接,所以告訴服務端“我說完了(FIN)”,此時自身形成等待結束連接的狀態。

第二次揮手:服務端知道客戶端已經沒話說了,服務端此時還有兩句心裏話要給客戶端說,“我知道你說完了(ACK),我再給你說兩句,&*……%¥”。

第三次揮手:此時客戶端洗耳恭聽繼續處於等待結束的狀態,服務器端也說完了,自身此時處於等待關閉連接的狀態,並對告訴客戶端,“我說完了,咱們斷了吧(FIN)”。

第四次揮手:客戶端收知道服務端也說完了,也要告訴服務端一聲(ACK),因為連接和斷開要雙方都按下關閉操作才能斷開,客戶端同時又為自己定義一個定時器,因為不知道剛才說的這句話能不能準確到達服務端(網絡不穩定或者其他因素引起的網絡原因),默認時間定為兩個通信的最大時間之和,超出這個時間就默認服務器端已經接收到了自己的確認信息,此時客戶端就關閉自身連接,服務器端一旦接收到客戶端發來的確定通知就立刻關閉服務器端的連接。

到此為止雙方整個通信過程就此終結。這裏要聲明一下:斷開鏈接不一定就是客戶端,誰都可以先發起斷開指令,另外客戶端和服務端是沒有固定標準的,誰先發起請求誰就是客戶端。

UDP

????????UDP(User DataGram Protocol)是一種無連接的傳輸層協議,提供面向事物的簡單的不可靠消息傳輸服務,IETF RFC768是UDP的正式規範。UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包的額外開銷小,因此UDP能提供更快速,輕量級的傳輸層控制。總結UDP特性如下:

  • 數據可以隨時發送,接收,沒有建立,斷開連接的過程,因此主機不需要維護復雜的連接狀態。
  • UDP不保證數據的可靠傳輸,僅僅盡最大可能進行發送。
  • 沒有擁塞控制算法控制收發速率,程序需在應用層自行空難址。
  • 發送方的UDP對應程序交互的報文,在添加首部後向交付給IP層,即不拆分,也不合並。因此,應用程序需要選擇合適的報文大小。

????????由此,不難總結出UDP協議適用的應用場景:吞吐量大(因為只做輕量級控制),可以承受信息丟失(因為傳輸不可靠)。在網絡狀況良好的情況下,UDP的丟包率在實際下也非常少,所以仍有很多經典協議采用UDP進行傳輸,比如SNMP,NFS,DNS,BOOTP等。

四、C/S及B/S架構

????????C/S,即Client/Server,是當前大多數網絡編程所使用的架構模型。通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通信開銷。Client和Server常常分別處在相距很遠的兩個計算機上,Client程序的任務是將用戶的要求提交給Server程序,再將Server程序返回的結果以特定的形式顯示給用戶;Server程序的任務是接收客戶程序提出的服務請求,進行相應的處理,再將結果返回給客戶程序。

????????B/S,即Browser/Server,是Web興起後的一種網絡結構模式。B/S使用Web瀏覽器作為客戶端的應用軟件,所以B/S可以看做C/S的一種特殊情況。B/S架構是伴隨因特網的興起而興起的,是對C/S結構的一種改進,它的主要特點如下:

  • 便於部署,維護與升級:隨著社會生活節奏的日益加快,主流企業的軟件開發流程與方法也從傳統瀑布模型轉為叠代式敏捷開發。軟件系統的改進與升級節奏的加快對系統的快速部署,升級提出了很高的要求。B/S架構的產生明顯體現著更為方便的特性,因為B/S系統的所有應用程序的部署在服務器上你,而一般無須更新客戶端軟件(即瀏覽器)。
  • 跨平臺,開放,對客戶端要求低:客戶端計算機的軟硬件環境千差萬別,雖然大多數是Windows系統,但近年來MAC操作系統也越來越普及,另外有少數鐘情於Linux的用戶。傳統的C/S架構需要針對每種操作系統開發相應的客戶端程序;而因為每種操作系統都支持Web瀏覽器,所以基於B/S架構的系統只需開發一套客戶端程序。B/S架構的客戶端程序部署在服務端,由瀏覽器在訪問時下載到客戶端運行。
  • 對安全性的要求較高:由開發性而延伸的一個負面作用就是B/S架構對系統安全性的要求系統時應該加關註系統的防攻擊,數據加密,備份,防偽造等能力。

TCP/IP 網路基礎