網(wǎng)絡
網(wǎng)絡是幾乎可議實時發(fā)送和接收數(shù)據(jù)的計算機和其他設備的集合。
網(wǎng)絡中的每臺機器稱為一個節(jié)點,每個節(jié)點都有地址,用于唯一標識一個節(jié)點的字節(jié)序列。
不同的網(wǎng)絡會以不同的方式分配地址。以太網(wǎng)地址與物理以太網(wǎng)硬件地址關聯(lián)。以太網(wǎng)硬件廠家使用預分配的廠商編碼確保他們的硬件地址與其他廠商的硬件地址不沖突。Internet地址由分配地址的組織分配給計算機,一個組織允許選擇的地址一般由該組織的Internet服務供應商(ISP)分配。ISP從四個區(qū)域Internet注冊機構之一獲得ip地址,這四個機構的ip地址由互聯(lián)網(wǎng)名稱和數(shù)字地址分配機構分配。
每個節(jié)點還可以有幫助人們標識的名稱(域名),但該名稱并不一定與一個地址綁定。
所有節(jié)點的網(wǎng)絡都是包交換的網(wǎng)絡,將流經(jīng)網(wǎng)絡的數(shù)據(jù)拆分成小塊稱之為包,每個包包含源和目的地址,優(yōu)點是多個即將交換的包可以在一條線纜上傳輸,降低網(wǎng)絡建立成本。
協(xié)議是定義計算機如何傳輸通信的規(guī)則,包括地址格式、數(shù)據(jù)如何拆包等。
網(wǎng)絡分層
TCP/IP四層模型
主機網(wǎng)絡層(鏈路層host-to-work:以太網(wǎng)、wifi、lte):定義了如何通過物理鏈接向網(wǎng)絡發(fā)送IP數(shù)據(jù)報的接口。
網(wǎng)際層(網(wǎng)絡層network:IPv4、IPv6):定義了數(shù)據(jù)位和字節(jié)如何組織為更大的分組(包),定義了尋址機制,通知支持不同的主機網(wǎng)絡層相互對話,使用同構協(xié)議將異構網(wǎng)絡相互鏈接。
傳輸層(TCP/UDP):確保各包以發(fā)送的順序接收,并保證沒有數(shù)據(jù)丟失或破壞,若丟失,傳輸層會要求發(fā)送方重傳這個包。
TCP(傳輸控制協(xié)議Transmission Control Protocol):可靠協(xié)議,支持對丟失和破壞的數(shù)據(jù)重傳,并按照發(fā)送的順序傳輸數(shù)據(jù)。
UDP(用戶數(shù)據(jù)包協(xié)議User Datagram Protocol):不可靠協(xié)議,允許接收方檢測被破壞的包,但不保證按正確但順序傳送(或者根本沒有傳送)。
應用層:向用戶傳送數(shù)據(jù)的層,如http、smtp、ftp等
IP:可以在IP只上建立其他協(xié)議,如TCP、UDP、ICMP(如ping程序實現(xiàn))等,java僅支持tcp、udp及在其上建立的應用協(xié)議,其他協(xié)議只能通過鏈接到原生代碼實現(xiàn)
IP地址和域名
ipv4是一個四個字節(jié)的數(shù)字表示,一般為點分四段,每段為一個無符號數(shù)字,范圍為0-255。
ipv6使用16字節(jié)地址,由冒號:分割為8個區(qū)塊,每個區(qū)塊由四個16進制數(shù)字組成,前導的0不需要寫,連續(xù)的兩個::表示多個0區(qū)塊,但每個地址至多出現(xiàn)一次,后四個字節(jié)可寫為ipv4的點分四段地址。
域名系統(tǒng)(Domain Name System,DNS),將人類易用記住的主機名映射為Internet地址,但主機名和地址并不一定固定,因此編寫java程序不能將其永久緩存。
有一些特殊地址區(qū)塊,如:10.、172.16.、172.31.、192.168.等未分配,這些地址可以在內部網(wǎng)使用,但不允許加入Internet中。127開頭但一般表示本地回送地址(ipv6一般為::1)。4字節(jié)都相同數(shù)字但ipv4(如255.255.255.255)是一個廣播地址,發(fā)送到該地址的數(shù)據(jù)報將被該網(wǎng)絡的所有節(jié)點接收。
端口
一個傳輸層協(xié)議大概有65535個端口。
每個端口分配給一個特定的服務。
1-1023的端口保留給已知的服務,在linux或mac上只有以root運行的程序才可以使用這些端口。
Internet地址分塊
區(qū)域Internet注冊機構會為ISP分配地址塊。每個地址塊有固定的前綴,固定n為就稱為/n,余下的位數(shù)表示本地網(wǎng)絡可用該塊的地址,其中最低地址用于標識網(wǎng)絡本身,最高位為一個廣播地址。
網(wǎng)絡地址轉換(Network Address Translation,NAT)
用于解決ipv4的稀缺性?;贜AT的網(wǎng)絡中,大多數(shù)節(jié)點為不可路由(被Internet)的本地地址,通常為10.x.x.x、172.16.、172.31.、192.168.。將本地網(wǎng)絡鏈接到ISP的路由器會將這些地址轉換為更小的一組可路由的地址。
路由器會監(jiān)視出站和入站的鏈接,調整IP報中的地址。對于出站,將源地址改為路由器的外部地址。對于入站的包,將目的地址改為一個本地地址。
ipv6的發(fā)展可能使得NAT無意義。
防火墻
位于Internet和本地網(wǎng)絡之間會有一些硬件或軟件,檢查所有進出的數(shù)據(jù),以保證其合法性,稱之為防火墻。
代理服務器
代理服務器可實現(xiàn)請求轉發(fā)、緩存等。
防火墻一般工作于網(wǎng)絡層或傳輸層。代理服務器一般工作于應用層。
Internet標準
IETF(Internet Engineering Task Force,Internet工程任務組):向所有感興趣的人開放,標準根據(jù)多數(shù)人的意見和正在運行的代碼制定。
W3C(Word Wide Web Consortium,國際互聯(lián)協(xié)會):繳納會費的組織組成。注解、工作草案、候選推薦、提議推薦、推薦。