導航:首頁 > 網路問題 > 網路通訊編程是什麼

網路通訊編程是什麼

發布時間:2023-02-23 00:31:08

什麼是網路編程什麼是系統編程跟普通編程有什麼區別如果編程入門應該學哪種

網路編程和系統編程都只是軟體開發的一部分。網路編程主要是網路通信(比如說你的軟體要獲取網路數據,即時通訊等),系統編程主要是你開發的軟體基於的系統層次的(本地文件讀寫,基於系統的調用之類的)。如果你想搞軟體開發這兩個基本都要用到的。
以上基本是軟體開發,開發語言C/C+/OC/JAVA之類的,每個語言都有不同的實現。
編程的話還有其他的網頁編程,使用ASP, PHP等;還有資料庫開發之類的。
想做軟體開發,入門學C,然後看具體方向,想做什麼平台,用什麼開發環境等。網頁開發去學ASP,PHP,javascript之類的。資料庫學ORCAL, SQL之類的。

Ⅱ 計算機編程和網路編程的聯系和區別

兩者有聯系,
軟體編程
傾向於編碼,如果是網路之間通信的軟體,如qq、msn,很明顯就和計算機網路有關,如果要完全實現,必須有網路方面的知識,如網路協議、socket
編程等
影響的話,不是很大
可以通過編程軟體實現網路通訊;需要網路知識才能實現網路通訊軟體的製作

Ⅲ 即時通訊軟體開發 幾種網路編程方式

你好!即時通訊軟體開發 幾種網路編程方式:
ISAPI、CGI、WinInet、Winsock
它們之間的區別:
1)ISAPI主要是開發基於瀏覽器客戶端與伺服器端程序。效率比CGI方式高,而且也擴展了CGI沒有的一些功能。(基於TCP/IP模型中的應用層)
2) CGI主要是開發基於瀏覽器客戶端與伺服器端程序。(基於TCP/IP模型中的應用層)
3) WinInet主要是開發客戶端程序。(基於TCP/IP模型中的應用層)
4) Winsock主要是基於socket來開發客戶端與伺服器端程序。(基於TCP/IP模型中的各層)要想開發低層協議的程序的話就要了解協議的報文格式。
《即時通訊軟體開發》專門討論Windows網路編程技術,覆蓋Windows
95/98/NT
4/2000/CE平台。內容包括NetBIOS和Windows重定向器方法、Winsock方法、客戶端遠程訪問伺服器方法。本書論述深入淺出、用大量實例詳解了微軟網路API函數的應用。
《TCP/IP詳解,卷1:協議》是一本完整而詳細的TCP/IP協議指南。描述了屬於每一層的各個協議以及它們如何在不同操作系統中運行。
《網路通信編程實用案例精選》是一本介紹利用vlsuaIC++進行網路通信程序開發的書籍。書中精選了大量網路實例,涵蓋了本地汁算機網路編程、區域網網路通信編程、IE編程、網路通信協議編程、串口通信編程、代理伺服器編程和高級網路通信編程,即時通訊軟體開發。

Ⅳ 網路編程具體是學什麼內容的

是從網路通信的編程原理和開發基礎入手,闡述主機掃描、TCP協議編程、UDP協議編程、遠程屏幕監視、木馬程序、IP語音網路編程、E-mail協議編程、FTP協議編程、網路信息加密傳輸和網路信息隱藏通信編程等原理、技術和實現方法。每章都有豐富的程序源代碼和實驗項目。《普通高等學校應用性人才培養系列規劃教材:計算機網路編程技術》以套接字編程為基本路線,力求體現網路編程的技術陛、實用性和安全性,在IP語音網路通信和網路信息隱藏通信等章節,還綜合體現了科研成果和技術開發的相關應用,具有一定的先進性。《普通高等學校應用性人才培養系列規劃教材:計算機網路編程技術》適合作為高等院校計算機及相關專業學生的教材,也可作為多媒體網路通信和安全編程人員的參考書

Ⅳ 網路編程(五)TCP詳解

考慮最簡單的情況:兩台主機之間的通信。這個時候只需要一條網線把兩者連起來,規定好彼此的硬體介面,如都用 USB、電壓 10v、頻率 2.4GHz 等, 這一層就是物理層,這些規定就是物理層協議

我們當然不滿足於只有兩台電腦連接,因此我們可以使用交換機把多個電腦連接起來,如下圖:

這樣連接起來的網路,稱為區域網,也可以稱為乙太網(乙太網是區域網的一種)。在這個網路中,我們需要標識每個機器,這樣才可以指定要和哪個機器通信。這個標識就是硬體地址 MAC。

硬體地址隨機器的生產就被確定,永久性唯一。在區域網中,我們需要和另外的機器通信時,只需要知道他的硬體地址,交換機就會把我們的消息發送到對應的機器。

這里我們可以不管底層的網線介面如何發送,把物理層抽離,在他之上創建一個新的層次,這就是 數據鏈路層

我們依然不滿足於區域網的規模,需要把所有的區域網聯系起來,這個時候就需要用到路由器來連接兩個區域網:

但是如果我們還是使用硬體地址來作為通信對象的唯一標識,那麼當網路規模越來越大,需要記住所有機器的硬體地址是不現實的;

同時,一個網路對象可能會頻繁更換設備,這個時候硬體地址表維護起來更加復雜。這里使用了一個新的地址來標記一個網路對象: IP 地址

通過一個簡單的寄信例子來理解 IP 地址。

我住在北京市,我朋友 A 住在上海市,我要給朋友 A 寫信:

因此,這里 IP 地址就是一個網路接入地址(朋友 A 的住址),我只需要知道目標 IP 地址,路由器就可以把消息給我帶到。 在區域網中,就可以動態維護一個 MAC 地址與 IP 地址的映射關系,根據目的 IP 地址就可以尋找到機器的 MAC 地址進行發送

這樣我們不需管理底層如何去選擇機器,我們只需要知道 IP 地址,就可以和我們的目標進行通信。這一層就是 網路層 。網路層的核心作用就是 提供主機之間的邏輯通信

這樣,在網路中的所有主機,在邏輯上都連接起來了,上層只需要提供目標 IP 地址和數據,網路層就可以把消息發送到對應的主機。

一個主機有多個進程,進程之間進行不同的網路通信,如邊和朋友開黑邊和女朋友聊微信。我的手機同時和兩個不同機器進行通信。

那麼當我的手機收到數據時,如何區分是微信的數據,還是王者的數據?那麼就必須在網路層之上再添加一層: 運輸層

運輸層通過 socket(套接字),將網路信息進行進一步的拆分,不同的應用進程可以獨立進行網路請求,互不幹擾。

這就是運輸層的最本質特點: 提供進程之間的邏輯通信 。這里的進程可以是主機之間,也可以是同個主機,所以在 android 中,socket 通信也是進程通信的一種方式。

現在不同的機器上的應用進程之間可以獨立通信了,那麼我們就可以在計算機網路上開發出形形式式的應用:如 web 網頁的 http,文件傳輸 ftp 等等。這一層稱為 應用層

應用層還可以進一步拆分出表示層、會話層,但他們的本質特點都沒有改變: 完成具體的業務需求 。和下面的四層相比,他們並不是必須的,可以歸屬到應用層中。

最後對計網分層進行小結:

這里需要注意的是,分層並不是在物理上的分層,而是邏輯上的分層。通過對底層邏輯的封裝,使得上層的開發可以直接依賴底層的功能而無需理會具體的實現,簡便了開發。

這種分層的思路,也就是責任鏈設計模式,通過層層封裝,把不同的職責獨立起來,更加方便開發、維護等等。

TCP 並不是把應用層傳輸過來的數據直接加上首部然後發送給目標,而是把數據看成一個位元組 流,給他們標上序號之後分部分發送。這就是 TCP 的 面向位元組流 特性:

面向位元組流的好處是無需一次存儲過大的數據佔用太多內存,壞處是無法知道這些位元組代表的意義,例如應用層發送一個音頻文件和一個文本文件,對於 TCP 來說就是一串位元組流,沒有意義可言,這會導致粘包以及拆包問題,後面講。

前面講到,TCP 是可靠傳輸協議,也就是,一個數據交給他,他肯定可以完整無誤地發送到目標地址,除非網路炸了。他實現的網路模型如下:

對於應用層來說,他就是一個可靠傳輸的底層支持服務;而運輸層底層採用了網路層的不可靠傳輸。雖然在網路層甚至數據鏈路層就可以使用協議來保證數據傳輸的可靠性,但這樣網路的設計會更加復雜、效率會隨之降低。把數據傳輸的可靠性保證放在運輸層,會更加合適。

可靠傳輸原理的重點總結一下有: 滑動窗口、超時重傳、累積確認、選擇確認、連續 ARQ

停止等待協議

要實現可靠傳輸,最簡便的方法就是:我發送一個數據包給你,然後你跟我回復收到,我繼續發送下一個數據包。傳輸模型如下:

這種「一來一去」的方法來保證傳輸可靠就是 停止等待協議 (stop-and-wait)。不知道還記不記得前面 TCP 首部有一個 ack 欄位,當他設置為 1 的時候,表示這個報文是一個確認收到報文。

然後再來考慮另一種情況:丟包。網路環境不可靠,導致每一次發送的數據包可能會丟失,如果機器 A 發送了數據包丟失了,那麼機器 B 永遠接收不到數據,機器 A 永遠在等待。

解決這個問題的方法是: 超時重傳 。當機器 A 發出一個數據包時便開始計時,時間到還沒收到確認回復,就可以認為是發生了丟包,便再次發送,也就是重傳。

但重傳會導致另一種問題:如果原先的數據包並沒有丟失,只是在網路中待的時間比較久,這個時候機器 B 會受到兩個數據包,那麼機器 B 是如何辨別這兩個數據包是屬於同一份數據還是不同的數據?

這就需要前面講過的方法: 給數據位元組進行編號 。這樣接收方就可以根據數據的位元組編號,得出這些數據是接下來的數據,還是重傳的數據。

在 TCP 首部有兩個欄位:序號和確認號,他們表示發送方數據第一個位元組的編號,和接收方期待的下一份數據的第一個位元組的編號。

停止等待協議的優點是簡單,但缺點是 信道利用率 太低。

假定AB之間有一條直通的信道來傳送分組

這里的TD是A發送分組所需要的時間(顯然TD = 分組長度 / 數據速率)再假定TA是B發送確認分組所需要的時間(A和B處理分組的時間都忽略不計)那麼A在經過TD+RTT+TA時間後才能發送下一個分組,這里的RTT是往返時間,因為只有TD是採用來傳輸有用的數據(這個數據包括了分組首部,如果可以知道傳輸更精確的數據的時間,可以計算的更精確),所有信道利用率為

為了提高傳輸效率,發送方可以不使用低效率的停止等待協議,而是採用 流水線傳輸 :就是發送方可以 連續的發送多個分組 ,不必每發完一個分組就停下來等待對方的確認。這樣可使信道上一直有數據不間斷地在傳送。顯然這種傳輸方式可以獲得很高的信道利用率

停止等待協議已經可以滿足可靠傳輸了,但有一個致命缺點: 效率太低 。發送方發送一個數據包之後便進入等待,這個期間並沒有干任何事,浪費了資源。解決的方法是: 連續發送數據包

也就是下面介紹的 連續ARQ協議 滑動窗口協議

連續 ARQ 協議

模型如下:

和停止等待最大的不同就是,他會源源不斷地發送,接收方源源不斷收到數據之後,逐一進行確認回復。這樣便極大地提高了效率。但同樣,帶來了一些額外的問題:

發送是否可以無限發送直到把緩沖區所有數據發送完?不可以。因為需要考慮接收方緩沖區以及讀取數據的能力。如果發送太快導致接收方無法接受,那麼只是會頻繁進行重傳,浪費了網路資源。所以發送方發送數據的范圍,需要考慮到接收方緩沖區的情況。這就是 TCP 的 流量控制

解決方法是: 滑動窗口 。基本模型如下:

在 TCP 的首部有一個窗口大小欄位,他表示接收方的剩餘緩沖區大小,讓發送方可以調整自己的發送窗口大小。通過滑動窗口,就可以實現 TCP 的流量控制,不至於發送太快,導致太多的數據丟失。

連續 ARQ 帶來的第二個問題是:網路中充斥著和發送數據包一樣數據量的確認回復報文,因為每一個發送數據包,必須得有一個確認回復。提高網路效率的方法是: 累積確認

接收方不需要逐個進行回復,而是累積到一定量的數據包之後,告訴發送方,在此數據包之前的數據全都收到。例如,收到 1234,接收方只需要告訴發送方我收到 4 了,那麼發送方就知道 1234 都收到了。

第三個問題是:如何處理丟包情況。在停止等待協議中很簡單,直接一個超時重傳就解決了。但,連續 ARQ 中不太一樣。

例如:接收方收到了 123 567,六個位元組,編號為 4 的位元組丟失了。按照累積確認的思路,只能發送 3 的確認回復,567 都必須丟掉,因為發送方會進行重傳。這就是 GBN(go-back-n) 思路。

但是我們會發現,只需要重傳 4 即可,這樣不是很浪費資源,所以就有了: 選擇確認 SACK 。在 TCP 報文的選項欄位,可以設置已經收到的報文段,每一個報文段需要兩個邊界來進行確定。這樣發送方,就可以根據這個選項欄位只重傳丟失的數據了。

第四個問題是:擁塞控制的問題
也是通過窗口的大小來控制的,但是檢測網路滿不滿是個挺難的事情,所以 TCP 發送包經常被比喻成往誰管理灌水,所以擁塞控制就是在不堵塞,不丟包的情況下盡可能的發揮帶寬。

水管有粗細,網路有帶寬,即每秒鍾能發送多少數據;水管有長度,端到端有時延。理想狀態下,水管裡面的水 = 水管粗細 * 水管長度。對於網路上,通道的容量 = 帶寬 * 往返時延。

如果我們設置發送窗口,使得發送但未確認的包為通道的容量,就能撐滿整個管道。

如圖所示,假設往返時間為 8 秒,去 4 秒,回 4 秒,每秒發送一個包,已經過去了 8 秒,則 8 個包都發出去了,其中前四個已經到達接收端,但是 ACK 還沒返回,不能算發送成功,5-8 後四個包還在路上,還沒被接收,這個時候,管道正好撐滿,在發送端,已發送未確認的 8 個包,正好等於帶寬,也即每秒發送一個包,也即每秒發送一個包,乘以來回時間 8 秒。

如果在這個基礎上調大窗口,使得單位時間可以發送更多的包,那麼會出現接收端處理不過來,多出來的包會被丟棄,這個時候,我們可以增加一個緩存,但是緩存裡面的包 4 秒內肯定達不到接收端課,它的缺點會增加時延,如果時延達到一定程度就會超時重傳

TCP 擁塞控制主要來避免兩種現象,包丟失和超時重傳,一旦出現了這些現象說明發送的太快了,要慢一點。

具體的方法就是發送端慢啟動,比如倒水,剛開始倒的很慢,漸漸變快。然後設置一個閾值,當超過這個值的時候就要慢下來

慢下來還是在增長,這時候就可能水滿則溢,出現擁塞,需要降低倒水的速度,等水慢慢滲下去。

擁塞的一種表現是丟包,需要超時重傳,這個時候,採用快速重傳演算法,將當前速度變為一半。所以速度還是在比較高的值,也沒有一夜回到解放前。

到這里關於 TCP 的可靠傳輸原理就已經介紹得差不多。最後進行一個小結:

當然,這只是可靠傳輸的冰山一角,感興趣可以再深入去研究

Ⅵ 即時通訊軟體開發的網路編程方式有哪些

引言、即時通訊是網上最為流行的通訊方式,市場上也出現了各種各樣的即時通訊軟體。這篇文章將會給大家介紹一些開發即時通訊軟體的網路編程方式。

開發即時通訊軟體需要用到安卓端技術java語言,蘋果端oc語言,電腦端win系統桌面C/C++語言,管理後台資料庫語言,後台管理界面java或者php。建議可以使用第三方SDK,可以有效地避免消息漏發,卡頓,數據並發等很多問題,提高了用戶對產品的體驗感。

三、如何設置編程。

mysql資料庫的用戶名為root,密碼為空,可以根據自己的需要設置相應的用戶名和密碼(固定在程序中)。mychatserver是聊天伺服器,myfileserver是文件伺服器,文件伺服器負責上傳和下載聊天中發送的文件,myimgserver負責上傳和下載聊天中的圖片。三個服務之間相互獨立,不會互相影響。聊天伺服器監聽埠是20000,文件伺服器埠是20001,圖片伺服器埠號是20002,這三個埠的客戶端連接,其中聊天埠和客戶端是長連接,文件埠和圖片可選擇長連接或短連接。第一次運行mychatserver時,如果能順利連上mysql,mychatserver會自動檢測是否存在名為myim的資料庫,如果不存在就可以創建了,並新建三張信息表,分別是用戶信息表,好友關系表和聊天消息記錄表。第一次啟動文件伺服器時會創建filecache目錄,這個目錄用來存儲聊天中的聊天圖片和離線文件以及客戶端的升級包。為了方便查看代碼,可以用Visual Studio管理代碼,使用VS打開myserver.sln查看和管理代碼。

閱讀全文

與網路通訊編程是什麼相關的資料

熱點內容
紅米移動4g網路怎麼設置網速更快 瀏覽:23
wifi鏈接沒網路信號 瀏覽:573
起訴用網路代名詞如何表達 瀏覽:438
移動網路維護熱線 瀏覽:882
手機不用網路看電視直播軟體 瀏覽:642
如何判斷網路出現問題 瀏覽:408
房地產網路進客哪個好 瀏覽:503
網路欠費可以打哪個電話 瀏覽:499
蘇州網路優化軟體 瀏覽:649
打和平精英網路延遲多少最好 瀏覽:550
路由器弄到機頂盒再弄網路可以嗎 瀏覽:448
網路安全法規定非法攻擊 瀏覽:881
android手機怎麼連接移動網路 瀏覽:543
筆記本網路設置還原 瀏覽:372
不是共享網路怎麼投屏 瀏覽:906
什麼網路股票是三十多塊 瀏覽:786
怎麼樣讓電腦和手機連接一個網路 瀏覽:951
眾人網路安全技術有限公司 瀏覽:503
蘋果雙卡雙待不支持雙通訊網路 瀏覽:938
為什麼南航app登錄顯示無網路 瀏覽:783

友情鏈接