天天看點

TCP/IP 網路基礎

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

        計算機網絡是指将地理位置不同的,具有獨立功能的多台計算機及其他外部裝置,通過通信線路連接配接起來,在網絡作業系統,網絡管理軟體及網絡通信協定的管理和協調下,實作資源共享和資訊傳遞的計算機系統。

        20世紀90年代後,以Internet為代表的計算機網絡得到了迅猛發展,Internet成為世界上最大的計算機網絡。Internet主要由主機,線路,交換,路由,數據機等裝置組成。

TCP/IP 網路基礎

        主機有不同的形式,主要分為兩種:伺服器和用戶端。在Interent中提供服務的主機叫做伺服器,比如各大門戶網站,社交平台等;通過通路伺服器進而獲得有用資訊的主機叫做用戶端,比如各種家庭計算機和智能手機。

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

TCP/IP 網路基礎

應用層: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,是傳輸層及應用層的裝置。防火牆通常位于不同網絡的邊界處,主要用于防止惡意程式及資料進入内部網絡,或者防治機密資訊洩露到廣域網中。企業級網絡通常用防火牆抵禦違法入侵。

        網絡位址(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的8x1028倍,達到2128個。這個不但解決了網絡位址資源數量的問題,也位除計算機外的裝置連入網際網路在數量限制上掃清了障礙。然而讓人遺憾的是,IPv6自1999年開始配置設定以來,并沒有在網際網路上得到廣泛應用。目前網際網路的主要位址表達方式及其調制仍主要以IPv

4為主,但IPv6必将會替代IPv4.

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

        域名(Domain Name)是一個應用層概念,是由一串用點分隔的名字組成的Internet上某台計算機或計算機組的名稱,用于在資料傳輸時辨別計算機的電子方位(有時也指地理位置,地理上的域名或有行政自主權的一個地方區域)。域名是一個IP位址的“面具”。一個域名是便于人們記憶和溝通的一組伺服器的位址(網絡,電子郵件,FTP等)。使用域名作為标記網際網路計算機的名稱已有30多年的曆史,世界上第1個被注冊的域名是在1985年1月被注冊的。

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

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

<code>[協定://[主機]:[端口]/[路徑]?[參數]]</code>

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

        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(Transmission Control Protocol,傳輸控制協定)是一種面向連接配接的,可靠的,基于位元組流的傳輸層通信協定,由IETF的的RFC793定義。當應用層向TCP層發送用于網間傳輸的用8位位元組表示的資料流時,TCP則把資料流分割成适當長度的封包段,最大傳輸段大小(MSS)通常受計算機連接配接的網絡的資料鍊路層的最大傳送單元(MTU)限制;

TCP标志位:

SYN(synchronous),建立聯機。

ACK(acknowledgement),确認。

PSH(push),傳輸。

FIN(finish),結束。

RST(reset),重置。

URG(urgent),緊急。

TCP/IP 網路基礎

三次握手建立連接配接闡述:

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

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

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

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

四次揮手斷開連接配接闡述:

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

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

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

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

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

        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,即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架構對系統安全性的要求系統時應該加關注系統的防攻擊,資料加密,備份,防僞造等能力。