網絡基礎一(協議的概念,網絡應用程序設計模式)

協議的概念

什么是協議?

從應用的角度出發,協議可理解為“規則”,是數據傳輸和數據的解釋的規則。
假設,A、B雙方欲傳輸文件。規定:
第一次,傳輸文件名,接收方接收到文件名,應答OK給傳輸方;
第二次,發送文件的尺寸,接收方接收到該數據再次應答一個OK;
第三次,傳輸文件內容。同樣,接收方接收數據完成后應答OK表示文件內容接收成功。由此,無論A、B之間傳遞何種文件,都是通過三次數據傳輸來完成。A、B之間形成了一個最簡單的數據傳輸規則。
雙方都按此規則發送、接收數據。A、B之間達成的這個相互遵守的規則即為協議。這種僅在A、B之間被遵守的協議稱之為原始協議。
當此協議被更多的人采用,不斷的增加、改進、維護、完善。最終形成一個穩定的、完整的文件傳輸協議,
被廣泛應用于各種文件傳輸過程中。該協議就成為一個標準協議。最早的ftp協議就是由此衍生而來。

TCP協議注重 數據的傳輸http協議著重于 數據的解釋。

典型協議

傳輸層 常見協議有TCP/UDP協議。
應用層 常見的協議有HTTP協議,FTP協議。
網絡層 常見協議有IP協議、ICMP協議、IGMP協議。
網絡接口層 常見協議有ARP協議、RARP協議。TCP傳輸控制協議,是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。
UDP用戶數據報協議(是OSI參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。
HTTP超文本傳輸協議 是互聯網上應用最為廣泛的一種網絡協議。
FTP文件傳輸協議
IP協議是因特網互聯協議
ICMP協議是Internet控制報文協議它是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。
IGMP協議是 Internet 組管理協議,是因特網協議家族中的一個組播協議。該協議運行在主機和組播路由器之間。
ARP協議是正向地址解析協議,通過已知的IP,尋找對應主機的MAC地址。
RARP是反向地址轉換協議,通過MAC地址確定IP地址。

網絡應用程序設計模式

C/S模式

傳統的網絡應用設計模式,客戶機(client)/服務器(server)模式。需要在通訊兩端各自部署客戶機和服務器來完成數據通信。

B/S模式

瀏覽器()/服務器(server)模式。只需在一端部署服務器,而另外一端使用每臺PC都默認配置的瀏覽器即可完成數據的傳輸。

**優缺點

對于C/S模式來說,其優點明顯。

客戶端位于目標主機上可以保證性能,將數據緩存至客戶端本地,從而提高數據傳輸效率。
且,一般來說客戶端和服務器程序由一個開發團隊創作,所以他們之間所采用的協議相對靈活。
可以在標準協議的基礎上根據需求裁剪及定制。例如,騰訊公司所采用的通信協議,即為ftp協議的修改剪裁版。

因此,傳統的網絡應用程序及較大型的網絡應用程序都首選C/S模式進行開發。如,知名的網絡游戲魔獸世界。3D畫面,數據量龐大,使用C/S模式可以提前在本地進行大量數據的緩存處理,從而提高觀感。

C/S模式的**缺點也較突出。

由于客戶端和服務器都需要有一個開發團隊來完成開發。工作量將成倍提升,開發周期較長。
另外,從用戶角度出發,需要將客戶端安插至用戶主機上,對用戶主機的安全性構成威脅。
**這也是很多用戶不愿使用C/S模式應用程序的重要原因。

B/S模式相比C/S模式而言,由于它沒有獨立的客戶端,使用標準瀏覽器作為客戶端,

**其工作開發量較小。只需開發服務器端即可。
另外由于其采用瀏覽器顯示數據,因此移植性非常好,不受平臺限制。
如早期的偷菜游戲,在各個平臺上都可以完美運行。

B/S模式的缺點也較明顯。

由于使用第三方瀏覽器,因此網絡應用支持受限。
另外,沒有客戶端放到對方主機上,緩存數據不盡如人意,從而傳輸數據量受到限制。應用的觀感大打折扣。
第三,必須與瀏覽器一樣,采用標準http協議進行通信,協議選擇不靈活。	

因此在開發過程中,模式的選擇由上述各自的特點決定。根據實際需求選擇應用程序設計模式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383386.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu修改root密碼

sudo passwd root [sudo] password for you :---> 輸入你的密碼,不會顯示 Enter new UNIX password: --- > 設置root 密碼 Retype new UNIX password: --> 重復

linux 消息隊列機制

現在我們來討論第三種也是最后一種System V IPV工具:消息隊列。在許多方面看來,消息隊列類似于有名管道,但是卻沒有與打開與關閉管道的復雜關聯。然而,使用消息隊列并沒有解決我們使用有名管道所遇到的問題,例如管道上…

堆(概念,數據結構中堆與內存堆區的區別 ,堆的基本操作)

堆的特性: 必須是完全二叉樹 用數組實現 任一結點的值是其子樹所有結點的最大值或最小值 最大值時,稱為“最大堆”,也稱大根堆; 在完全二叉樹中,任何一個子樹的最大值都在這個子樹的根結點。最小值時,稱為…

makefile中的shell調用---注意事項

在之前一次編寫makfile時候,有看到相關的makefile中使用$$來引用變量,而且嘗試后發現$$使用居然和${}有類似的功能。當時也沒具體追究相關的用法,當然剛才所說的都是錯誤的觀念 $$:在makefile中會被替換成一個$。 相關資料是這么描…

網絡基礎2(分層模型,通信過程,以太網,ARP協議格式和具體功能詳解)

分層模型 OSI七層模型 OSI模型 1 物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后再轉化為1、0&#…

為github帳號添加SSH keys

使用git clone命令從github上同步github上的代碼庫時,如果使用SSH鏈接(如我自己的beagleOS項目:gitgithub.com:DamonDeng/beagleOS.git),而你的SSH key沒有添加到github帳號設置中,系統會報下面的錯誤&…

網絡基礎3(IP段格式,UDP數據報格式,TCP數據報格式)

IP段格式 IP數據報的首部長度和數據長度都是可變長的,但總是4字節的整數倍。 對于IPv4,4位版本字段是4。4位首部長度的數值是以4字節為單位的,最小值為5,也就是說首部長度最小是4x520字節,也就是不帶任何選項的IP首部…

Linux 開發路線

Linux 開發路線: 使用 linux—〉linxu 系統編程開發---〉驅動開發和分析 linux 內核 開始學 linux 內核:最好有三件寶物:《深入理解 linux 內核》《LINUX內核源代碼情景分析》和源代碼。 《深》是綱,《情》是目。最后深入代碼 Linux 內核原理:比較淺顯…

堆的應用(堆排序,TopK問題)

堆的應用 1)排序 堆排序 選擇排序 既可以找到最大的放在最后 也可以找到最小的方最前 但是,堆排序不能找最小的放在最前 因為把最小數放在最前,會破壞掉堆的原來的順序,除非重新建堆 1, 2,9&#xff0c…

有名管道和無名管道的區別

1)無名管道:管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道;只能用于父子進程或者兄弟進程之間(具有親緣關系的進程)。 單獨構成一種獨立的文件系統:管道…

網絡基礎4(TCP三次握手,四次握手,TCP流量控制,TCP狀態轉換 , TCP異常斷開,設置TCP屬性,端口復用)

TCP協議 TCP通信時序 下圖是一次TCP通訊的時序圖。TCP連接建立斷開。包含大家熟知的三次握手和四次握手。 TCP通訊時序 在這個例子中,首先客戶端主動發起連接、發送請求,然后服務器端響應請求,然后客戶端主動關閉連接。 兩條豎線表示通訊的…

linux編程手冊讀書筆記第一章(20140329)

(2)管道、FIFO、套接字、設備(比如終端、偽終端)都支持非阻塞模式。(因為無法通過open()來獲取管道和套接字的文件描述符。所以要啟用非阻塞標志,就必須使用fcntl(&#…

排序(基本概念及分類,直接插入排序和希爾排序)

排序的概念 排序:所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。 穩定性:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序&a…

Linux編程手冊讀書筆記第二章(20140330)

內核:管理和分配計算機資源(即CPU、RAM和設備)的核心軟件層Linux內核可執行文件采用/boot/vmlinuz或類似的路徑名,“z”表明內核是經過壓縮的可執行文件。內核主要任務: (1&#xff…

直接交換排序

直接交換排序 缺點:進行一些重復性比較,解決放法:堆排序 選擇排序優化 //如果當前的數大于假定最大的數 //改變下標 //如果當前的數小于假定最小的數 //改變下標 //遍歷數組跳到下一個元素 //如果最大的數沒有在它的位置上 //交換 //交換…

Linux編程手冊讀書筆記第三章(20140407)

外殼函數執行一條中斷機器指令(int 0x80),引發處理器從用戶態切換到核心態,并執行系統中斷0x80的中斷矢量所指向的代碼。(在2.6內核及glib 2.3.2之后的版本都支持sysenter指令,進入內核的速度更快&#xff…

Linux編程手冊讀書筆記第四章(20140407)

標準文件描述符定義在<unistd.h>中&#xff0c;STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO打開一個文件&#xff1a;open&#xff08;&#xff09; &#xff03;include<sys/stat.h> #include<fcntl.h> int open(const char *pathname, int flags, …/* …

快速排序概念及實現

快速排序 快速排序是Hoare于1962年提出的一種二叉樹結構的交換排序方法&#xff0c; 其基本思想為&#xff1a; 任取待排序元素序列中的某元素作為基準值&#xff0c;按照該排序碼將待排序集合分割成兩子序列&#xff0c;左子序列中所有元素均小于基準值&#xff0c;右子序列…

Linux編程手冊讀書筆記第五章(20140408)

改變已打開文件性質&#xff1a;fcntl&#xff08;&#xff09; #include<fcntl.h> int fcntl(int fd, int cmd, …); (1) 調用失敗返回&#xff0d;1 &#xff08;2&#xff09;fcntl函數有5種功能&#xff1a; a. 復制一個現有的描述符&#xff08;cmd&#xff1d;F_D…

歸并排序概念及其實現

基本思想&#xff1a; 歸并排序&#xff08;MERGE-SORT&#xff09;是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一個非常典型的應用。將已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每個…