第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

網(wǎng)絡編程簡介

1. 前言

在計算機誕生之初,它們的體積非常龐大,它們常常被擺放在一個很大的房間內(nèi),這些房間通常都裝有玻璃墻,你可以透過玻璃欣賞這個神奇的電子物種。一般來說,只有大學或者大型研究機構才會擁有先進的電子計算機,如果你需要通過這些大型計算機完成一些工作,需要走進機房,面對面的和它交流。現(xiàn)在看來,通過這些奇跡工作很不方便,但在當時來說,代表了最先進的科技實力。

隨著 PC 的迅猛發(fā)展,以及計算機網(wǎng)絡的誕生,很快這些計算機就被連接在了一起,你再不需要走進機房面對面和它交流了,通過遠程就可以和他們交流了。當然,早期的計算機網(wǎng)絡也是來源于大學和科研機構。然而計算機技術的發(fā)展真是太過迅猛了,經(jīng)過短短幾十年,從最早的專業(yè)科研機構的計算機網(wǎng)絡,到現(xiàn)在的移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng),手機、家電、交通工具都實現(xiàn)了互聯(lián)。

2. 什么是網(wǎng)絡編程

我們今天所討論的網(wǎng)絡編程是指編寫特定的應用程序,使得接入到計算機網(wǎng)絡中的設備能夠相互通信。網(wǎng)絡設備之間的通信,需要程序員設計好特定的協(xié)議,然后通過編程語言實現(xiàn)這些協(xié)議,最終由計算機設備來執(zhí)行。在計算機網(wǎng)絡的發(fā)展過程中,通用的、基礎的網(wǎng)絡協(xié)議已經(jīng)被實現(xiàn)在計算機操作系統(tǒng)中,通常叫做網(wǎng)絡協(xié)議棧。而操作系統(tǒng)為程序員提供了網(wǎng)絡相關的 API ,通常把它叫做 Socket。為此,網(wǎng)絡編程也叫 Socket 編程套接字編程。

任何事物的發(fā)展都有它的起源和歷史,現(xiàn)在我們了解一下 Socket 的發(fā)展史。

3. Socket 發(fā)展史

我們現(xiàn)在以及今后所討論的 Socket 都叫做 Berkeley (伯克利) Socket,是由加州大學伯克利分校的計算機系統(tǒng)研究小組發(fā)布的。從歷史上來看,Berkeley Socket 是隨著 4.x BSD(Berkeley Software Distribution) 操作系統(tǒng)一起發(fā)布的。BSD 操作系統(tǒng)最早是在貝爾實驗室的 Unix V6 之上增加了一些新的功能,或者是一些優(yōu)化,所以不是完全自己實現(xiàn)的,這個版本就是 BSD1。從 BSD1 開始,中間經(jīng)歷了好幾個版本,直到 BSD 4.2 開始支持了 TCP/IP 軟件。關于 Berkeley Socket 的發(fā)布歷史年表,如下:

  • 4.2 BSD(1983)第一個包含 TCP/IP 的版本。
  • 4.3 BSD(1986)對 TCP/IP 的支持更加完善。
  • 4.3 BSD Tahoe(1988) 支持慢啟動、擁塞避免等。
  • 4.3 BSD Reno(1990)支持 TCP 頭部預測、SLIP 頭部壓縮等。
  • 4.4 BSD(1993)支持多播、長肥管道修改等。

由于 BSD 是基于 AT&T 的 UNIX 發(fā)布的,核心代碼都是 AT&T 的 UNIX,所以受限于 AT&T License。伯克利的研究人員決定開發(fā)可以自由發(fā)布的系統(tǒng),所以在 4.3 BSD Tahoe 基礎之上,對系統(tǒng)中原有 AT&T 的源碼進行重寫,發(fā)布了 BSD Net/x 系列,它的歷史年表如下:

  • BSD Net/1(1989)
    針對網(wǎng)絡部分進行移植。
  • BSD Net/2(1991)
    對系統(tǒng)中網(wǎng)絡以外的組件進行了移植,
  • BSD Net/3(1994)
    也叫 4.4 BSD-Lite,是一個系統(tǒng)功能比較完善的版本,符合 BSD license 的規(guī)定。后來出現(xiàn)的 OpenBSD、FreeBSD 都是基于 4.4 BSD-Lite 修改的。

4. 為什么要學習網(wǎng)絡編程

現(xiàn)代人的生活已經(jīng)離不開網(wǎng)絡,不知道你是否體會過不帶手機、家里不能上網(wǎng)的心情。不管你在意還是不在意,網(wǎng)絡就在你身邊,如影隨形。想象一下,現(xiàn)代社會如果沒有網(wǎng)絡又會是什么狀況呢?

當然,作為一名程序員,就算你不需要編寫網(wǎng)絡程序,但也應該理解網(wǎng)絡通信原理。各種網(wǎng)絡中間件、分布式框架、微服務框架,其中很大一部分工作都是在處理網(wǎng)絡通信的邏輯,要想學習這些中間件不懂網(wǎng)絡通信是很難學好的。另外,一些知名的網(wǎng)絡庫,它里面包含了許多優(yōu)秀的設計理念和編程技巧,也是非常值得研讀的,對于個人技術能力的提升具有很大的幫助。

5. 如何學習網(wǎng)絡編程

要想學習網(wǎng)絡編程,需要學習計算機網(wǎng)絡基礎知識。比如,TCP/IP 協(xié)議棧工作原理,分組在路由器中的存儲、轉發(fā)原理,可靠協(xié)議 TCP 的工作原理,不可靠協(xié)議 UDP 的工作原理等。

由于網(wǎng)絡協(xié)議棧的發(fā)展是離不開操作系統(tǒng)的,所以需要學習操作系統(tǒng)的基礎知識,比如進程、線程的基本概念。

學習編程必須要動手實踐,只有當你親自上機調試一些程序,你才能體會的更深刻,掌握的更牢固。

最后,你需要學會使用 tcpdump 和 Wireshark 這兩個抓包工具,這倆個工具是解決很多網(wǎng)絡相關問題的利器,可以說是開發(fā)人員工具箱里面必備工具。tcpdump 是 linux 系統(tǒng)自帶的工具,而 Wireshark 是具有圖形界面的工具,一般在 Windows 系統(tǒng)上使用。同時,要學會應用 ipconfig、netstat 等網(wǎng)絡工具。

本系列文章的所有示例代碼路徑:

6. 小結

文中涉及到的所有示例程序都采用 JAVA 語言實現(xiàn),JAVA 作為一門平臺無關語言,天生就對網(wǎng)絡編程提供了很好的支持。所以,需要具備一定的 JAVA 語言基礎。當然,選擇一款自己喜歡的 IDE 也是很重要的,這樣可以提高你學習編程的效率。

另外,在調試網(wǎng)絡程序的過程中,經(jīng)常需要檢查端口是否被占用,檢查服務是否監(jiān)聽成功,定位消息收發(fā)失敗等問題。所以需要學習一下 ipconfig、netstat 的使用方法,這兩個工具都是系統(tǒng)自帶的,使用非常方便。最好在你的個人電腦上安裝一個 Wireshark 工具,方便問題的分析。