請問大佬關於網路程式設計的問題

時間 2021-05-31 21:17:09

1樓:Jack Yan

網路程式設計那就要先理解網路的七層模型,這個模型其實就是個規範,為了計算機之間可以互聯通訊,早期沒有這個規範,計算機之間是不能互相通訊的。劃分層次的目的,就是在邏輯上,把負責不同功能的軟硬體分開研發。網路程式設計裡面,主要理解網路層,傳輸層,還有應用層的軟硬體工作原理和實現。

有了規範,那就要互相遵守,於是就有了協議。協議可以理解為乙個規範文件,就像施工圖紙,只要照著這個規範文件,實現它,就行了。於是網路模型的每層都有對應的硬體和軟體。

比如物理層,資料鏈路層,主要是一些基礎的網路硬體,網線網絡卡二層交換機等,協議有arp協議,它是在交換機作業系統裡面實現的。這兩層太底層了,還有哪些協議,如何實現,我也不太清楚了。。

再上面就是網路層和傳輸層,這兩層就是網路程式設計裡面最重要的了,主要的硬體有路由器,三層交換機,其中路由器三層交換機屬於網路層裝置,實現了ip協議,ip協議是個統稱,裡面有很多協議,我也不通,自己去翻tcp ip協議這套書。軟體就是路由器交換機上的作業系統,以及實現了tcpip協議的計算機作業系統,比如windows,linux等。單獨解釋下伺服器,它其實就是乙個計算機,計算機也是有架構,這裡說下通用的x86架構的計算機系統,大多數伺服器以及我們的個人pc都是這個架構的,也就是說,伺服器其實就是乙個效能更強更穩定的電腦。

其他架構的伺服器也有,需要安裝專門的作業系統。你問題裡面的埠是tcp協議裡面的概念,它在各種網路作業系統裡面都有實現,比如windows linux,我們只需要呼叫作業系統的api,也就是系統呼叫,去用它就行了,你用C語言,可以建立乙個tcp連線,linux裡面抽象成了乙個檔案,稱為套接字檔案。

最後應用層,協議有http ftp等,實現這些協議的軟體有nginx,httpd這類http服務端軟體,vsftp服務端的ftp軟體。像http ftp這類應用層協議,你自己也可以照著它們的協議規範,實現你自己的服務端軟體。會話層表示層略。

總結來說,協議其實是個規範文件,各個廠商都有自己的軟硬體實現,只要按照這個規範來,那麼不同廠商的軟硬體之間,就可以通訊。埠和套接字都是tcp協議裡面的概念,具體可以去看tcp協議的書。伺服器和我們的個人電腦一樣,只是硬體效能更好,更加工業級,可以安裝各種作業系統。

網路是個龐大的系統,需要很多的背景知識,要給理解透徹,而且能條例清楚地描述出來,很困難。我這就是通俗一點的解釋一下,半瓢水。要更專業更系統的了解,推薦去看tcpip協議三卷書。

2樓:lalaland

埠,伺服器,協議,更好的方式就是學計算機網路

至於套接字,socket.你可以理解為就是乙個封裝好的庫,每個語言都會實現.呼叫這個庫的函式來實現網路連線.(即終端間互傳資料)

協議: 咱們都是中中國人,規定中文都是可以看懂的,這個中文就是協議.英中國人交流用英語,對不會中文的英中國人說中文他也聽不懂.

協議就是規定了終端間交流的格式-咱倆都得看懂,格式也要一樣.

伺服器: 你想要拿東西終歸要從乙個有這個東西的地方取出來吧? 這個地方就是伺服器.伺服器負責在你找他要東西時製作出來給你(資料,網頁之類的)

埠: 每個電腦都有乙個ip吧?那麼不同電腦間可以通過ip互相找到對方,但是你電腦上不是只有乙個程式吧?

比如我快遞送到河南了,但河南不止乙個城市,所以我還要送到相應的城市才行,而這個城市就有乙個唯一的埠.

即,我東西給你這個電腦的ip了,然後你自己轉給你電腦上剛才找我要資料的應用.那你的電腦通過什麼找到呢? 埠

關於ACM中的程式設計演算法問題 ?

int rampNum int a,int n int s 0 a 0 0 for int i 1 i n i for int j a i 1 j bhuztez的思路,寫出了c 版本的,這裡假設陣列中下標為1的元素為最高位以方便處理,combinationNum為計算組合數的函式。 inspire...

請問各位大佬關於汽車賽車調教問題,有沒相對多用的調教順序?

入坑模擬賽車已有半年,來談談我的看法吧,不一定正確,拋磚引玉哈 就從ac,dr2,acc三個模擬器來說吧,只針對hotlap。我比較喜歡先調入彎 盡量縮短剎車距離和提高入彎速度同時防止推頭 再調出彎 盡快全油出彎同時防止屁股滑 但是到網路翻了翻,很多文章都是先調出彎再調入彎,我能力有限,也不知為啥。...

關於golang併發程式設計的問題,運用chan反而比較慢是為什麼呢?

Micheal睿 首先,在沒有明確你的具體測試用例是如何編寫的時候,不能潦草地下定結論說通道通訊比加鎖要慢。如果可以,希望提問者給出一下具體的測試用例,讓我們好具體分析原因。其次,chan底層其實也是使用了加鎖的機制來實現通訊的 注意緩衝區大於0的chan在讀取和寫入資料的時候才會加鎖,若是不帶緩衝...