国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Networks(網絡)

2019-11-17 05:39:57
字體:
來源:轉載
供稿:網友

  linux和網絡幾乎是同義詞。實際上Linux是Internet或WWW的產物。它的開發者和用戶使用web交換信息、想法、代碼而Linux自身也常用于支持一些組織的聯網需求。本章描述了Linux如何支持統稱為TCP/ip的網絡協議。

 

TCP/IP協議設計用來支持連接在ARPANET上的計算機之間的通訊。ARPANET是美國政府投資的一個美國的研究網絡。ARPANET是一些網絡概念的先驅,例如報文交換和協議分層,讓一種協議利用其它協議提供的服務。ARPANET于1988年退出,但是它的后繼者(NSF NET和Internet)發展的甚至更大?,F在所知的World Wide Web是在ARPANET中發展的,它本身也是由TCP/IP協議支持的。Unix在ARPANET上大量使用,第一個發布的網絡版的Unix是4.3BSD。Linux的網絡實現是基于4.3BSD的模型,它支持BSD socket(和一些擴展)和全系列的TCP/IP網絡功能。選擇這種編程接口是因為它的流行程度,而且可以幫助程序在Linux和其它Unix平臺之間移植。

 

10.1 An Overview of TCP/IP Networking(TCP/IP網絡概覽)

 

本節為TCP/IP網絡的主要原理給出了一個概覽。這并不是一個詳盡的描述。要更具體的描述,閱讀第10本參考書(附錄)。

 

在一個IP網絡中,每一個機器都分配一個IP地址,這是一個32位的數字,唯一標識這一臺機器。WWW是一個非常巨大、不斷增長的IP網絡,每一個連接在上面的機器都分配了一個獨一無二的IP地址。IP地址用點分隔的四個數字表示,例如,16.42.0.9。IP地址實際上分為兩個部分:網絡地址和主機地址。這些地址的大?。ǔ叽纾┛赡懿煌ㄓ袔最怚P地址),以16.42.0.9為例,網絡地址是16.42,主機地址是0.9。主機地址可以進一步劃分成為子網(subnetwork)和主機地址。再次以16.42.0.9為例,子網地址可以是16.42.0,主機地址為16.42.0.9。對于IP地址進行進一步劃分答應各個組織劃分它們自己的網絡。例如,假設16.42是ACME計算機公司的網絡地址,16.42.0可以是子網0,16.42.1可以是子網1。這些子網可以在分離的大樓里,也許通過電話專線或者甚至通過微波連接。IP地址由網絡治理員分配,使用IP子網是分散網絡治理任務的一個好辦法。IP子網的治理員可以自由地分配他們自己子網內的IP地址。

 

但是,通常IP地址難于記憶,而名字更輕易記憶。Linux.acme.com比16.42.0.9更好記。必須使用一種機制把網絡名字轉換為IP地址。這些名字可以靜態地存在/etc/hosts文件中或者讓Linux詢問一個分布式命名服務器(Distributed Name Server DNS)來解析名字。這種情況下,本地主機必須知道一個或多個DNS服務器的IP地址,在/etc/resolv.conf中指定。

 

不管什么時候你連接另外一臺機器的時候,比如讀取一個web page,都要使用它的IP地址和那臺機器交換數據。這種數據包括在IP報文(packet)中,每一個報文都有一個IP頭(包括源和目標機器的IP地址,一個校驗和和其它有用的信息。這個校驗和是從IP報文的數據中得到的,可以讓IP報文的接收者判定傳輸過程中IP報文是否損壞(可能是一個噪音很大的電話線)。應用程序傳輸的數據可能被分解成輕易處理的更小的報文。IP數據報文的大小依靠于連接的介質而變化:以太網報文通常大于PPP報文。目標主機必須重新裝配這些數據報文,然后才能交給接收程序。假如你通過一個相當慢的串行連接訪問一個包括大量圖形圖像的web頁,你就可以用圖形的方式看出數據的分解和重組。

連接在同一個IP子網的主機可以互相直接發送IP報文,而其它的IP報文必須通過一個非凡的主機(網關)發送。網關(或路由器)連接在多于一個子網上,它們會把一個子網上接收的IP報文重新發送到另一個子網。例如,假如子網16.42.1.0和16.42.0.0通過一個網關連接,那么所有從子網0發送到子網1的報文必須先發送到網關,這樣才能轉發。本地的主機建立一個路由表,讓它可以把要轉發的IP報文發送到正確的機器。對于每一個IP目標,在路由表中都有一個條目,告訴Linux要到達目標需要先把IP報文發送到那一臺主機。這些路由表是動態的,而且當應用程序使用網絡和網絡拓撲變化的時候不斷改變。

IP協議是傳輸層協議,被其他協議使用,攜帶它們的數據。傳輸控制協議(TCP)是一個可靠的端到端的協議,使用IP傳送和接收它的報文。象IP報文有自己的頭一樣,TCP也有自己的頭。TCP是一個面向連接的協議,兩個網絡應用程序通過一個虛擬的連接連接在一起,甚至它們中間可能會有許多子網、網關和路由器。TCP在兩個應用程序之間可靠地傳送和接收數據,并且保證不會有丟失和重復的數據。當TCP使用IP傳送它的報文的時候,在IP報文中包含的數據就是TCP報文自身。每一個通訊的主機的IP層負責傳送和接收IP報文。用戶數據報協議(UDP)也使用IP層傳送它的報文,但是不象TCP,UDP不是一個可靠的協議,它只提供數據報服務。其它協議也可以使用IP意味著當接收到IP報文,接收的IP層必須知道把這個IP報文中包含的數據交給哪一個上層協議。為此,每一個IP報文的頭都有一個字節,包含一個協議標識符。當TCP請求IP層傳輸一個IP報文的時候IP報文的頭就說明它包含一個TCP報文。接收的IP層,使用這個協議標識符來決定把接收到的數據向上傳遞給哪一個協議,在這種情況下,是TCP層。當應用程序通過TCP/IP通訊的時候,它們不但必須指定目標的IP地址,也要指定目標應用程序的端口(port)地址。一個端口地址唯一標識一個應用程序,標準的網絡應用程序使用標準的端口地址:例如web服務器使用端口80。這些已經注冊的端口地址可以在/etc/services中查到。


 

協議分層不僅僅停留在TCP、UDP和IP。IP協議本身使用許多不同的物理介質和其它IP主機傳輸IP報文。這些介質自己也可能增加它們自己的協議頭。這樣的例子有以太網層、PPP和SLIP。一個以太網答應許多主機同時連接在一個物理電纜上。每一個傳送的以太幀可以被所有連接的主機看到,所以每一個以太網設備都有一個獨一無二的地址。每一個傳送到那個地址的以太網幀會被那個地址的主機接收,而被連接到這個網絡的其它主機忽略掉。這個獨一無二的地址當每一個以太網設備制造的時候內建在設備里邊,通常保存在以太網卡的SROM中。以太地址由6個字節長,例如,可能是08-00-2b-00-49-4A。一些以太網地址保留用于多點廣播,用這種目標地址發送的以太網幀會被網絡上的所有的主機接收。因為以太網幀中可能運載許多不同的協議(作為數據),和IP報文一樣,它們的頭中都包含一個協議標識符。這樣以太網層可以正確地接收IP報文并把數據傳輸到IP層。



為了通過多種連接協議,例如通過以太網來傳輸IP報文,IP層必須找出這個IP主機的以太網地址。這是因為IP地址只是一個尋址的概念,以太網設備自己有自己的物理地址。IP地址可以由網絡治理員根據需要分配和再分配,而網絡硬件則只響應具有它自己物理地址的以太網幀,或者非凡的多點廣播地址(所有的機器都必須接收)。Linux使用地址解析協議(ARP)讓機器把IP地址轉換成真實的硬件地址例如以太網地址。為了得到一個IP地址所聯系的硬件地址,一個主機會發送一個ARP請求包,包含它希望轉換的IP地址,發送到一個多點廣播地址,讓網絡上所有的點都可以收到。具有這個IP地址的目標主機用一個ARP回應來應答,這中間包括了它的物理硬件地址。APR不僅僅限制在以太網設備,它也可以解析其它物理介質的IP地址,例如FDDI。不能進行ARP的設備會有標記,這樣Linux就不需要試圖對它們進行ARP。也有一個相反的功能,反向ARP,或RARP,把物理地址轉換到IP地址。這用于網關,回應對于代表遠端網絡的IP地址的ARP請求。

 

10.2 The Linux TCP/IP Networking Layers(Linux TCP/IP網絡分層)

 

象網絡協議一樣,圖10.2顯示了Linux對于internet 協議地址族的實現就似乎一系列連接的軟件層。BSD socket由只和BSD socket相關的通用的socket治理軟件來支持。支持這些的是INET socket層,它治理以IP為基礎的協議TCP和UDP的通訊端點。UDP是一個無連接的協議,而TCP是一個可靠的端到端的協議。當傳送UDP報文的時候,Linux不知道也不關心它們是否安全到達目的地。TCP報文進行了編號,TCP連接的每一端都要確保傳送的數據正確地接收到。IP層包括了網際協議(Internet Protocol)的代碼實現。這種代碼在傳送的數據前增加IP頭,而且知道如何把進來的IP報文轉送到TCP或者UDP層。在IP層之下,支持Linux聯網的是網絡設備,例如PPP和以太網。網絡設備并非總是表現為物理設備:其中一些比如loopback設備只是純粹的軟件設備。不象標準的Linux設備用mknod命令創建,網絡設備只有在底層的軟件找到并且初始化它們之后才出現。你只有在建立俄一個包含恰當的以太望設備驅動程序的核心之后你才能看到設備文件/dev/eth0。ARP協議位于IP層和支持ARP的協議之間。

 

 

 



10.3 The BSD Socket Interface(BSD socket 接口)

 

這是一個通用的接口,不僅僅支持多種形式的聯網,也是一種進程間通訊機制。一個socket描述了通訊連接的一端,兩個通訊進程每一個都會有一個socket,描述它們之間通訊連接的自己部分。Socket可以想象成一種非凡形式的管道,但是和管道不同,socket對于可以容納的數據量沒有限制。Linux支持幾種類型的socket,這些類叫做address families(地址族)。這是因為每一類都有自己通訊尋址方式。Linux支持以下socket address families或domain:

UNIX Unix domain sockets,

INET

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 农安县| 临沧市| 余江县| 通州市| 陵川县| 冷水江市| 自治县| 东海县| 偏关县| 新泰市| 寿光市| 昌邑市| 遵化市| 札达县| 伊宁市| 平昌县| 平原县| 宜兰县| 黄龙县| 肇州县| 科尔| 镇江市| 来凤县| 会泽县| 肥东县| 洪雅县| 南开区| 旌德县| 黎城县| 岳阳市| 许昌市| 明光市| 台南市| 桂平市| 佛冈县| 同仁县| 家居| 安平县| 鄂伦春自治旗| 丹阳市| 桦南县|