網絡編程要解決的問題:一是確認數據傳輸的起點和終點,我們不關注數據傳輸通道如何建立,這屬于更底層,我們只關注通道兩端的計算機的映射是如何建立的。二是確保數據傳輸的安全與高效,安全意味著數據不能被丟失和篡改、用算法層層封裝,導致數據臃腫,導致傳輸成本高與低效;而確保數據的高效意味著數據要輕簡傳輸,這使數據的安全得不到保障。所以程序員要根據不同場景取舍。
網絡編程與網頁編程是不同的概念,網絡編程是網頁編程的底層,側重于數據的傳輸。而網頁編程側重于用戶,要處理的是用戶能看到或直接影響用戶的數據,怎么使數據對用戶友好?! 【W絡把計算機連接到一起,局域網到城域網再到互聯網。互聯需要取得地址,即ip地址,取得計算機在網絡上的絕對地址。兩臺計算機通過ip連在一起,用于傳輸數據,但是,一臺計算機上有很多軟件,我們就需要為這些軟件提供一個標記,使數據能根據標記正確地發送到指定軟件,這個標記被稱為端口號,兩個字節的整數組成,0-65536,1024以下端口號預留給了知名廠商,80是給http協議,21給ftp協議,就像生活中我們的電話號碼不可以是120,即使你的電話號碼是120,那么你就要煩死,每秒都有人向你求救,這會使社會混亂,會出錯。同一個協議下,端口號不允許重復,在不同協議下端口號則可以重復。 統一資源定位符是URL,統一資源是URI。兩者是有區別的,URL是對資源的定位, 數據傳輸協議:以什么語法傳輸,怎么建立鏈接。鏈接有兩種方式,一是打電話,TCP——需要三次握手,面向鏈接,安全可靠,撥通電話才能建立鏈接才能傳輸數據,效率相對于UDP慢些;二是發郵件,UDP,不需要建立鏈接,發出去了就不管了,對方不需要守在電話旁,但是對方可能一個禮拜不看郵件,一年不看郵件,可能你的郵件發錯地址了,發送方不管接收方是否有收到數據。注意,這兩個比喻只是為了便于理解,并不是說UDP協議TCP協議傳輸數據的原理和打電話發郵件原理一樣。TCP協議傳輸是排隊傳輸,上一個沒傳完就不傳下一個,UDP協議傳輸沒有排隊機制,沒有鏈接使數據排隊傳輸,數據扔過去,可能網絡擁堵然后丟失一個數據,但是下一個數據繼續傳輸,比如視頻通話,網絡堵塞時馬賽克多,就是數據丟失了。現在網絡游戲是二者的結合,重要數據用TCP,次要數據用UDP以優化用戶體驗。接下來數據以什么方式傳輸呢?網購買的商品,賣家如何把商品發給買家呢?把原始數據(商品)發給圓通,這是應用層(細分為應用層、表示層和會話層);圓通把商品打包成快遞件,扔到卡車上,發往目的地,這是傳輸層和網絡層;卡車怎么實現從a地到b地,這是鏈接層;設計公路,讓卡車可以跑,這是物理層。數據在層與層之間傳輸會封裝,買家把商品給圓通時會給商品貼上收件人信息,會盡量包裝商品讓商品在物流過程不會損壞,這是封裝,圓通把商品分類碼好,搬上各個卡車,這是封裝,把數據封裝在卡車內傳輸。等等。拆封同理,卡車卸貨,是拆封,買家收到商品把包裝拆開是拆封。這個購物過程可以看作一個數據的傳輸?! p地址是淘寶京東這樣的網店平臺,是買家住址(對應到戶)。端口號是淘寶店鋪,是買家個人?! CP(transfer control PRotocol) UDP(userDategramProtocol),快遞可以選TCP協議,即圓通協議,也可以選UDP協議,即郵遞(國企,更安全一些。好吧,有點扯)?! CP:ServerSock賣家 Socket買家 UDP:DategramSocket DategrmPacket數據傳輸過程中,底層還是流,是公路,路鏈接買家和賣家。所以IO是重點,但是中高級教程中把IO流封裝了,不直接面對流,畢竟我們不是貨車司機。
類:InetAddress地址和域名解析 InetSocketAdress包含地址端口號 InetAddress 對ip地址和網址解析,InetAddress的構造器是私有的,但是提供方法獲得InetAddress對象 InetAddress.getByName("www.baidu.com"); InetAddress.getByName("223.87.1.58");這兩個是靜態方法?! etHostAdress()返回IP地址, getHostName()返回域名。如果無法解析(如沒有注冊域名),返回的是IP地址 getLocalHost() InetSocketAdress類,在InetAddress的基礎上封裝了端口號,提供了構造器?! netSocketAddress(String hostname,int port)構造方法 getHostname() getport()得到端口號 getAddress()
正在學習java中級課程,因為上個禮拜的上個禮拜講servlet時請了一個禮拜假,現在跟不上了,上禮拜沒聽老師講,網易云課堂上找視頻看,老師還沒視頻里講的好,但是聽的頭昏腦脹,對servlet實現原理不清楚?,F在中級課程講完了,決定重修,所以找初級知識點看,網絡編程本是初級課程,但初級老師沒講。現在,要好好學,慢慢學,不著急。
分類:java網絡編程新聞熱點
疑難解答