Java Network Programming 笔记(1)
Java Network Programming 筆記
n5
一 網絡基本概念
Chapter2 Basic Network Concepts
2.1 Networks
keywords: network, node, host, address, name, packet-switched, protocol
網絡是可以或多或少實時地相互發送和接收數據的計算機和其他設備的集合。
網絡上的每臺機器被稱作結點(node),大多數結點是計算機,但是打印機,路由器,橋,網關,啞終端和可口可樂機都可以是結點,但你通常只和其他計算機會話。
功能齊全的計算機結點被稱作主機(host)。
每個網絡結點有一個地址(address):唯一標識它的一系列字節。在不同的網絡中地址分配方法同。以太網地址是附加在物理的以太網硬件上的。設備廠商要保證這些硬件的地址不重復。一臺計算機的Internet地址通常由專門負責分配地址的組織分配。而這些組織可以分配的地址又是由該組織的ISP(Internet Service Provider)提供的。ISP從三個Internet地區性注冊機構之一獲得IP地址(Internet Protocol地址)。比如美洲和非洲的注冊機構為ARIN(the American Registry for Internet Numbers)。地區性注冊機構的地址又是由IANA(Internet Assigned Numbers Authority)分配的。
某些種類的網絡中,結點可使用人類易辨認的名字。名字和地址的對應不是不變的。名字變了,地址可不變;地址變了,名字可不變。一個地址通??捎卸鄠€名字,一個名字也可以對應多個地址(雖然這樣的情況很少)
所有現代計算機網絡是包交換(packet-switched)網絡。在網絡上傳輸的數據被分成包,每個包都被獨立處理。每個包都含有"誰發送了我"和"我要去哪兒"的信息。包交換的最大優點是可以同時進行很多交換,若干計算機可以共享一條電纜。
協議(protocol)是一組精確的規則集合,它定義了計算機之間如何通訊,包括:地址格式,數據如何分包等。公開發布的協議允許不同廠商的軟件和設備相互通訊。比如web瀏覽器不用關心服務器是Unix工作站還是Windows box或者Mac機,因為服務器和瀏覽器都使用同樣的平臺無關的http協議交談。
2.2 The Layers of a Network
標準TCP/IP四層模型:
Application Layer
Transport Layer (TCP,UDP)
InternetLayer (IP)
The Host-To-Network Layer (Ethernet,LocalTalk,FDDI...)
90%的Java網絡編程處于應用層,只須同傳輸層對話。剩下的10%處于傳輸層,同應用層和網間網層對話。
應用層看起來是直接同其他host的應用層對話的,網絡在兩個應用層之間創建了一條邏輯鏈路。
2.2.1 The Host-to-Network Layer
(也稱作link layer,data link layer, network-interface layer)
這一層定義了某個特定的網絡接口,例如以太網卡,如何通過它的物理連接向本地網絡或世界發送IP數據包。
物理層對Java是透明的。數據鏈路層對Java程序員沒有直接影響。然而,你在應用層發送的數據可以優化以適應特定的數據鏈路層的本地包大小(the native packet size of a particular data link layer),這樣性能上會有所提升。不過,不優化程序也正常運行。
2.2.2 The Internet Layer
在OSI模型中,Internet Layer對應于更一般化的名字network layer。一個network layer協議定義bits和bytes如何組織為packets,也定義了不同機器如何找到彼此的地址方案。Internet Protocol(IP)是應用最廣泛的network layer協議,也是Java唯一理解的network layer協議。其他的network layer協議有NetWare網絡上的IPX協議,Mac機上的AppleTalk協議,Windows上的NetBEUI協議。各種network layer協議對于底層是獨立的,AppleTalk,IP,IPX和NetBEUI都可以被用于以太網,令牌環網或使用其他數據鏈路層協議的網絡,而這些數據鏈路層協議本身也是可以運行在不同種類的物理層之上的。
internet layer傳輸的包稱作datagrams,每個IP datagram包括一個20~60字節的頭和最大65515字節的數據。(實際上多數IP datagram非常小)
IP數據包頭的內容為:
4-bit版本號
4-bit頭長度
1-byte type of service
2-byte datagram長度:包括頭的長度
2-byte 標識號
3-bit flags
13-bit fragment offset
1-byte time-to-live(TTL)
1-byte protocol:TCP為6,UDP為17 (都是上一層傳輸層的協議)
2-byte 頭校驗和
4-byte 源地址
4-byte 目的地址
2.2.3 The Transport Layer
傳輸層負責保證所有的包正確的被收到,順序正確,數據也正確。如果包丟失了,傳輸層要求發送者重發丟失的包。
傳輸層有兩種協議,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP保證包不丟失,內容和順序都正確;UDP只保證接受到的包正確,不管是否有包丟失了或到達的包順序是否正確。
2.2.4 The Application Layer
應用層向用戶傳送數據。下面三層一起解決了數據如何從一個計算機到達另一個;而應用層決定數據到達后如何處理。Java網絡編程主要是在應用層。常見的應用層協議有:HTTP,SMTP,POP,FTP等。你的程序可以定義自己的應用層協議。
Domain Names: 域名系統(DNS:Domain Name System)將主機名解析為數字的Internet地址。Java程序使用java.net.InetAddress類
總結
以上是生活随笔為你收集整理的Java Network Programming 笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己总结的java相关面试题
- 下一篇: 北京科技大学计算机与通信工程学院,北京科