一、 計算機網(wǎng)絡(luò)的體系結(jié)構(gòu)
? ? ? 計算機網(wǎng)絡(luò)是一個非常復(fù)雜的系統(tǒng),將整個網(wǎng)絡(luò)的傳輸功能進行分層設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu)層次模型及各層協(xié)議的集合稱為計算機網(wǎng)絡(luò)的體系結(jié)構(gòu)。為了解決異構(gòu)互 聯(lián)及通信問題, 20世紀 70 年代后期國際標準化組織( ISO )制定了 OSI ( Open System Interconnect )開放式系統(tǒng)互聯(lián)參考模型。該模型采用了三級抽象,即體系結(jié)構(gòu)、服務(wù)定義和協(xié)議規(guī)格說明,是一種標準化的理論參考模型。
二、 TCP/IP協(xié)議模型
? ? ?TCP/IP ,全稱為 Transfer Controln Protocol/Internet Protocol ,即傳輸控制 / 網(wǎng)際協(xié)議,它并不單只 TCP 和 IP 這兩個協(xié)議,而是用于計算機通信的一組協(xié)議,我們通常稱之為 TCP/IP 協(xié)議族。
? ? ?TCP/IP 是四層的體系結(jié)構(gòu):應(yīng)用層、運輸層、網(wǎng)際層和網(wǎng)絡(luò)接口層。但最下面的網(wǎng)絡(luò)接口層并沒有具體內(nèi)容。因此往往采取折中的辦法,即綜合 OSI 和 TCP/IP 的優(yōu)點,采用一種只有五層協(xié)議的體系結(jié)構(gòu),如圖
2.1 物理層( Physical Layer )
? ? ?物理層把比特流傳送到物理媒體。電氣信號(或光信號)在物理媒體中傳播,比特流從發(fā)送端物理層傳送到接收端物理層。物理層接收到比特流,上交給數(shù)據(jù)鏈路層。主機的網(wǎng)卡、 RJ45 以太網(wǎng)接口、網(wǎng)線等硬件設(shè)備均屬于物理層范疇。
2.2 數(shù)據(jù)鏈路層( Data Link Layer )
? ? ?數(shù)據(jù)鏈路層也稱為網(wǎng)絡(luò)接口層,它的功能是將網(wǎng)絡(luò)層提交的數(shù)據(jù)報( IP Datagram )封裝成(以太網(wǎng))幀后提交給物理層,或從物理鏈路上接收到的數(shù)據(jù)幀中萃取數(shù)據(jù)報提交給網(wǎng)絡(luò)層。
? ? ?對于一個給定的(物理)連接來說,鏈路層協(xié)議主要實現(xiàn)在網(wǎng)絡(luò)適配器中,即我們常說的網(wǎng)卡( NIC , Network Interface Card )。傳輸節(jié)點的網(wǎng)絡(luò)層把 IP 數(shù)據(jù)報傳遞到適配器,由適配器將此數(shù)據(jù)報封裝到鏈路層的幀中,然后把這個幀傳輸?shù)轿锢韺油ㄐ沛溌贰?/p>
? ? ?現(xiàn)在一般都是以太網(wǎng)卡,上面跑的是以太網(wǎng)驅(qū)動。 DSL 通信中的 PPPoE 即 Point to Point Protocol over Ethernet ,其層級同網(wǎng)絡(luò)層。
2.3 網(wǎng)絡(luò)層( Network Layer )
? ? ?Internet 的網(wǎng)絡(luò)層通過一系列的路由器在源地址和目的地址之間傳輸數(shù)據(jù)包,它依賴于底層鏈路層的服務(wù)。由于該層的主要協(xié)議是 IP 協(xié)議, 因而也可簡稱為 IP 層。它是TCP/IP 協(xié)議棧中最重要的一層,主要功能是可以把源主機上的分片( Fragment )發(fā)送到互聯(lián)網(wǎng)中的任何一臺 目標主機上。
? ? ?網(wǎng)絡(luò)層包含了子網(wǎng)操作,它是懂得網(wǎng)絡(luò)拓撲結(jié)構(gòu)(網(wǎng)絡(luò)中機器的物理配置,帶寬的限制等)的最高層,也是內(nèi)網(wǎng)通信的最高層。涉及到 ARP 協(xié)議, ICMP 協(xié)議, RIP 、 OSPF 、BGP 等路由協(xié)議和路由器設(shè)備。
2.4 傳輸層( Transport Layer )
? ? ?我們通常所說的兩臺主機之間的通信其實是兩臺主機上對應(yīng)應(yīng)用程序之間的通信,傳輸層提供的就是應(yīng)用程序之間的通信,也叫端到端( host-to- host end-to-end )的通信。在 TCP/IP 協(xié)議族中傳輸層包含點對點( Peer to Peer )的傳輸協(xié)議:一個是 TCP (傳輸控制協(xié)議);另一個是 UDP (用戶數(shù)據(jù)報協(xié)議)。
? ? ?TCP 是一個可靠的面向連接的協(xié)議,它允許源于一個機器的字節(jié)流( byte stream )被無錯誤地傳輸?shù)?Internet 上的任何機器。 UDP 是一個不可靠無連接的協(xié)議,它是為那些不需要 TCP 的序列號管理和流 控制而想自己提供這些功能的應(yīng)用程序設(shè)計的。
2.5 應(yīng)用層( Application Layer )
? ? 應(yīng)用層是指建立在傳輸層之上,直接面向用戶,向用戶提供特定的、常用的應(yīng)用程序。如遠程登錄服務(wù)( tcp/telnet )、超文本傳輸協(xié)議 ( tcp/http )、文件傳輸協(xié)議(tcp/ftp )、實時流媒體協(xié)議( tcp/rtsp );動態(tài)主機設(shè)置協(xié)議( udp/dhcp )、簡 單文件傳輸協(xié)議( udp/tftp )、實時傳輸協(xié)議( udp/rtp )等。
? ? ?鑒于 TCP 和 UDP 協(xié)議各自的特性,有些應(yīng)用綜合使用兩種協(xié)議。例如 DNS 在某些情況下使用 TCP (發(fā)送和接收域名數(shù)據(jù)庫),但使 用 UDP 傳送有關(guān)單個主機的信息;RTSP/RTP/RTCP 使用 TCP 實現(xiàn)流點播控制,使用 UDP 實現(xiàn)數(shù)據(jù)傳輸及控制。
三、 HTTP、TCP、UDP三者之間的關(guān)系
都是通信協(xié)議,也就是通信時所遵守的規(guī)則,只有雙方按照這個規(guī)則“說話”,對方才能理解或為之服務(wù)。
TCP/IP是個協(xié)議組,可分為四個層次:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
在網(wǎng)絡(luò)層有IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議。
在傳輸層中有TCP協(xié)議與UDP協(xié)議。
在應(yīng)用層有FTP、HTTP、TELNET、SMTP、DNS等協(xié)議。
因此,HTTP本身就是一個協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
socket:
這是為了實現(xiàn)以上的通信過程而建立成來的通信管道,其真實的代表是客戶端和服務(wù)器端的一個通信進程,雙方進程通過socket進行通信,而通信的規(guī)則采用指定的協(xié)議。socket只是一種連接模式,不是協(xié)議,tcp、udp,簡單的說(雖然不準確)是兩個最基本的協(xié)議,很多其它協(xié)議都是基于這兩個協(xié)議如,http就是基于tcp的,.用socket可以創(chuàng)建tcp連接,也可以創(chuàng)建udp連接,這意味著,用socket可以創(chuàng)建任何協(xié)議的連接,因為其它協(xié)議都是基于此的。
URL:
URL(Uniform Resource Locator) 地址用于描述一個網(wǎng)絡(luò)上的資源,
URL 的一個例子
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Get和Post
? ? ? Http協(xié)議定義了很多與服務(wù)器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用于描述一個網(wǎng)絡(luò)上的資源,而HTTP中的GET, POST, PUT, DELETE就對應(yīng)著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息.
GET和POST的區(qū)別
1. GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456.? POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中.
2. GET提交的數(shù)據(jù)大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制.
3. GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值,也就是說Get是通過地址欄來傳值,而Post是通過提交表單來傳值。
4. GET方式提交數(shù)據(jù),會帶來安全問題,比如一個登錄頁面,通過GET方式提交數(shù)據(jù)時,用戶名和密碼將出現(xiàn)在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼.