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

網(wǎng)絡(luò)編程簡(jiǎn)介

1. 前言

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

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

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

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

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

3. Socket 發(fā)展史

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

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

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

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

4. 為什么要學(xué)習(xí)網(wǎng)絡(luò)編程

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

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

5. 如何學(xué)習(xí)網(wǎng)絡(luò)編程

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

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

學(xué)習(xí)編程必須要?jiǎng)邮謱?shí)踐,只有當(dāng)你親自上機(jī)調(diào)試一些程序,你才能體會(huì)的更深刻,掌握的更牢固。

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

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

6. 小結(jié)

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

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