wap網(wǎng)站開發(fā)協(xié)議個人推廣網(wǎng)站
每個應(yīng)用層協(xié)議都是為了解決某一類應(yīng)用問題,而問題的解決又往往是通過位于不同主機中的多個應(yīng)用進程之間的通信和協(xié)同工作來完成的。
應(yīng)用層的具體內(nèi)容就是規(guī)定應(yīng)用進程在通信時所遵循的協(xié)議。
應(yīng)用層的許多協(xié)議都是基于客戶服務(wù)器方式。即使是對等通信方式,實質(zhì)上也是一種特殊的客戶服務(wù)器方式。
客戶(client)和服務(wù)器(server)都是指通信中所涉及的兩個應(yīng)用進程??蛻舴?wù)器方式所描述的是進程之間服務(wù)和被服務(wù)的關(guān)系??蛻羰欠?wù)請求方,服務(wù)器是服務(wù)提供方。
域名系統(tǒng) DNS
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來把便于人們使用的機器名字轉(zhuǎn)換為 IP 地址。域名系統(tǒng)其實就是名字系統(tǒng)。
許多應(yīng)用層軟件經(jīng)常直接使用域名系統(tǒng) DNS,但計算機的用戶只是間接而不是直接使用域名系統(tǒng)。
因特網(wǎng)的域名系統(tǒng) DNS 被設(shè)計成為一個聯(lián)機分布式數(shù)據(jù)庫系統(tǒng),并采用客戶服務(wù)器方式。DNS 使大多數(shù)名字都在本地進行解析(resolve),僅少量解析需要在因特網(wǎng)上通信,因此DNS 系統(tǒng)的效率很高。由于 DNS 是分布式系統(tǒng),即使單個計算機出了故障,也不會妨礙整個 DNS 系統(tǒng)的正常運行。
域名到 IP 地址的解析是由分布在因特網(wǎng)上的許多域名服務(wù)器程序(可簡稱為城名服務(wù)器)共同完成的。域名服務(wù)器程序在專設(shè)的結(jié)點上運行,而人們也常把運行域名服務(wù)器程序的機器也稱為域名服務(wù)器。
域名到IP 地址的解析過程:
當某一個應(yīng)用進程需要把主機名解為 IP 地址時,該應(yīng)用進程就調(diào)用解析程序(resolver),并成為 DNS 的一個客戶,把待解析的域名放在 DNS 請求報文中,以 UDP 用戶數(shù)據(jù)報方式發(fā)給本地域名服務(wù)器(使用 UDP 是為了減少開銷)。本地域名服務(wù)器在查找域名后,把對應(yīng)的 IP 地址放在回答報文中返回。應(yīng)用進程獲得目的主機的IP地址后即可進行通信。
若本地域名服務(wù)器不能回答該請求,則此域名服務(wù)器就暫時成為 DNS 中的另一個客戶,并向其他域名服務(wù)器發(fā)出查詢請求。這種過程直至找到能夠回答該請求的域名服務(wù)器為止。
因特網(wǎng)的域名結(jié)構(gòu)
任何一個連接在因特網(wǎng)上的主機或路由器,都有一個 唯一的層次結(jié)構(gòu) 的名字,即 域名(domain name) 。這里,域(domain) 是名字空間中一個可被管理的劃分。域還可以劃分為子域,而子域還可繼續(xù)劃分為子域的子域,這樣就形成了頂級域、二級域、三級域,等等。
從語法上講,每一個域名都是由 標號(label) 序列組成,而各標號之間用點隔開(小數(shù)點.
)。
例子:
DNS 規(guī)定,域名中的標號都由英文字母和數(shù)字組成,每一個標號不超過 63 個字符(但為了記憶方便,最好不要超過 12個字符),也不區(qū)分大小寫字母。標號中除連字符(-
)外不能使用其他的標點符號。級別最低的域名寫在最左邊,而級別最高的頂級域名則寫在最右邊。由多個標號組成的完整域名總共不超過 255 個字符。 DNS 既不規(guī)定一個域名需要包含多少個下級域名,也不規(guī)定每一級的域名代表什么意思 。各級域名由其上一級的域名管理機構(gòu)管理,而最高的頂級域名則由 ICANN 進行管理。
需要注意的是,域名只是個邏輯概念,并不代表計算機所在的物理地點 。
域名中的點和點分十進制 IP 地址中的點并無一一對應(yīng)的關(guān)系 。點分十進制IP 地址中一定是包含三個點,但每一個域名中點的數(shù)目則不一定正好是三個。
現(xiàn)在頂級域名 TLD(Top Level Domain) 分為三大類:
(1)國家頂級域名 nTLD:采用 ISO 3166 的規(guī)定。如 cn 表示中國,us 表示美國,uk 表示英國,等等。國家頂級域名又常記為 CCTLD(cc 示國家代碼 country-code)。
(2)通用頂級域名 gTLD:最常見的通用頂級域名有 7個,即:com(公司企業(yè)),net (網(wǎng)絡(luò)服務(wù)機構(gòu)),org(非營利性的組織),int (國際組織),edu(美國專用的教育機構(gòu)),gov(美國的政府部門),ml(美國事部門)
其余 11個通用頂級域名是:aero(航空運輸企業(yè)),biz(公司和企業(yè)),cat (加泰隆人的語言和文化團體),coop(合作團體),info(各種情況),jobs (人力資源管理者),mobi(移動產(chǎn)品與服務(wù)的用戶和提供者),museum(博物館),name (個人),pro(有證書的專業(yè)人員),travel(旅游業(yè))。
(3)基礎(chǔ)結(jié)構(gòu)域名(infrastructure domain):這種頂級域名只有一個,即arpa,用于反向域名解析,因此又稱為反向域名。
在國家頂級域名下注冊的二級域名均由該國家自行確定。我國把二級域名劃分為類別域名和“行政區(qū)域名兩大類。
域名服務(wù)器
因特網(wǎng)上的 DNS 域名服務(wù)器也是按照層次安排的。每一個域名服務(wù)器都只對域名體系中的一部分進行管轄。
根據(jù)域名服務(wù)器所起的作用,可以把域名服務(wù)器劃分為以下四種不同的類型:
(1)根域名服務(wù)器(root name server) :根域名服務(wù)器是最高層次的域名服務(wù)器,也是最重要的域名服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級域名服務(wù)器的域名和 IP 地址。
(2)頂級域名服務(wù)器(即 TLD 服務(wù)器) :這些域名服負責(zé)管理在該頂級域名服務(wù)器注冊的所有二級域名。當收到 DNS 查詢請求時,就給出相應(yīng)的回答(可能是最后的結(jié)果也可能是下一步應(yīng)當找的域名服務(wù)器的IP 地址)。
(3)權(quán)限域名服務(wù)器 :這就是前面已經(jīng)講過的負責(zé)一個區(qū)的域名服務(wù)器。當一個權(quán)限域名服務(wù)器還不能給出最后的查詢回答時,就會告訴發(fā)出查詢請求的 DNS 客戶,下一步應(yīng)當找哪一個權(quán)限域名服務(wù)器。
(4)本地域名服務(wù)器(local name server) :當一個主機發(fā)出 DNS 查詢請求時,這個查詢請求報文就發(fā)送給本地域名服務(wù)器。每一個因特網(wǎng)服務(wù)提供者 ISP,或一個大學(xué),甚至一個大學(xué)里的系,都可以擁有一個本地域名服務(wù)器,這種域名服務(wù)器有時也稱為默認域名服務(wù)器。
本地域名服務(wù)器是用戶計算機或網(wǎng)絡(luò)中的DNS服務(wù)器。
當用戶發(fā)起域名解析請求時,本地域名服務(wù)器負責(zé)遞歸地查詢整個DNS系統(tǒng),直到獲得域名對應(yīng)的 IP 地址。
(5)遞歸域名服務(wù)器(Recursive DNS Servers):
遞歸域名服務(wù)器通常是本地域名服務(wù)器的一部分,負責(zé)從根域名服務(wù)器開始遞歸地查詢解析域名。
它們可以緩存查詢結(jié)果,以提高查詢效率,并向客戶端返回解析后的IP地址。
(6)反向域名服務(wù)器(Reverse DNS Servers):
反向域名服務(wù)器負責(zé)將IP地址解析為域名,與正向解析相反。
主要用于郵件服務(wù)器的反垃圾郵件檢查、安全審計等。
(7)緩存域名服務(wù)器(Caching DNS Servers):
緩存域名服務(wù)器保存最近解析過的域名和其對應(yīng)的IP地址,以提高查詢速度。
這些服務(wù)器可以獨立運行,也可以是本地域名服務(wù)器或遞歸域名服務(wù)器的一部分。
(8)輔助域名服務(wù)器(Secondary DNS Servers):
輔助域名服務(wù)器是備份權(quán)威域名服務(wù)器,存儲與主權(quán)威域名服務(wù)器相同的域名信息。
當主服務(wù)器不可用時,輔助服務(wù)器可以提供域名解析服務(wù)。
文件傳送協(xié)議
文件傳送協(xié)議FTP(File Transfer Protocol) 是因特網(wǎng)上使用得最廣泛的文件傳送協(xié)議。
FTP 提供交互式的訪問,允許客戶指明文件的類型與格式(如指明是否使用 ASCII碼),并允許文件具有存取權(quán)限(如訪問文件的用戶必須經(jīng)過授權(quán),并輸入有效的口)。
FTP 屏蔽了各計算機系統(tǒng)的細節(jié),適合于在異構(gòu)網(wǎng)絡(luò)中任意計算機之間傳送文件。
基于 TCP 的 FTP 和基于UDP 的 TFTP,都是文件共享協(xié)議中的一大類,即復(fù)制整個文件,其特點是:若要存取一個文件,就必須先獲得一個本地的文件副本。如果要修改文件,只能對文件的副本進行修改,然后再將修改后的文件副本傳回到原節(jié)點。
文件共享協(xié)議中的另一大類是聯(lián)機訪問(on-line access)。
聯(lián)機訪問意味著允許多個程序同時對一個文件進行存取。和數(shù)據(jù)庫系統(tǒng)不同之處是用戶不需要調(diào)用一個特殊的客戶進程,而是由操作系統(tǒng)提供對遠地共享文件進行訪問的服務(wù),就如同對本地文件的訪問一樣。這就使用戶可以用遠地文件作為輸入和輸出來運行任何應(yīng)用程序,而操作系統(tǒng)中的文件系統(tǒng)則提供對共享文件的透明存取。
透明存取的優(yōu)點:將原來用于處理本地文件的應(yīng)用程序用來處理遠地文件時,不需要對該應(yīng)用程序作明顯的改動。屬于文件共享協(xié)議的有網(wǎng)絡(luò)文件系統(tǒng)NFS(Network File System)最初是在 UNIX 操作系統(tǒng)環(huán)境下實現(xiàn)文件和目錄的共享。NFS 可使本地計算機共享遠地的資源,就像這些資源在本地
FTP 的基本工作原理
文件傳送協(xié)議 FTP 只提供文件傳送的一些基本的服務(wù),它使用 TCP 可靠的運輸服務(wù)。 FTP 的主要功能是減少或消除在不同操作系統(tǒng)下處理文件的不兼容性。
FTP 使用客戶服務(wù)器方式。一個FTP 服務(wù)器進程可同時為多個客戶進程提供服務(wù)。FTP的服務(wù)器進程由兩大部分組成:一個主進程,負責(zé)接受新的請求;另外有若干個從屬進程,負責(zé)處理單個請求。
主進程的工作步驟如下:
(1)打開熟知端口(端口號為21),使客戶進程能夠連接上。
(2)等待客戶進程發(fā)出連接請求。
(3)啟動從屬進程來處理客戶進程發(fā)來的請求。從屬進程對客戶進程的請求處理完畢后即終止,但從屬進程在運行期間根據(jù)需要還可能創(chuàng)建其他一些子進程。
(4)回到等待狀態(tài),繼續(xù)接受其他客戶進程發(fā)來的請求。主進程與從屬進程的處理是并發(fā)地進行。
FTP的工作情況如圖。圖中的服務(wù)器端有兩個從屬進程:控制進程和數(shù)據(jù)傳送進程。為簡單起見, 服務(wù)器端的主進程沒有畫上。在客戶端除了控制進程和數(shù)據(jù)傳送進程外,還有一個用戶界面進程用來和用戶接口。
在進行文件傳輸時,FTP 的客戶和服務(wù)器之間要建立兩個并行的 TCP 連接:控制連接和數(shù)據(jù)連接。
控制連接在整個會話期間一直保持打開,FTP 客戶所發(fā)出的傳送請求,通過控制連接發(fā)送給服務(wù)器端的控制進程,但控制連接并不用來傳送文件。 實際用于傳輸文件的是數(shù)據(jù)連接 。服務(wù)器端的控制進程在接收到 FTP 客戶發(fā)送來的文件傳輸請求后就 創(chuàng)建數(shù)據(jù)傳送進程和數(shù)據(jù)連接 ,用來連接客戶端和服務(wù)器端的數(shù)據(jù)傳送進程。數(shù)據(jù)傳送進程實際完成文件的傳送,在傳送完畢后關(guān)閉“數(shù)據(jù)傳送連接”并結(jié)束運行。由于FTP 使用了一個分離的控制連接,因此FTP 的控制信息是 帶外(out of band) 傳送的。
當客戶進程向服務(wù)器進程發(fā)出建立連接請求時,要尋找連接服務(wù)器進程的熟知端口(21),同時還要告訴服務(wù)器進程自己的另一個端口號碼,用于建立數(shù)據(jù)傳送連接。接著,服務(wù)器進程用自己傳送數(shù)據(jù)的熟知端口(20)與客戶進程所提供的端口號碼建立數(shù)據(jù)傳送連接。由于FTP 使用了兩個不同的端口號,所以數(shù)據(jù)連接與控制連接不會發(fā)生混亂。
使用兩個獨立的連接的主要好處是使協(xié)議更加簡單和更容易實現(xiàn),同時在傳輸文件時還可以利用控制連接。
FTP 并非對所有的數(shù)據(jù)傳輸都是最佳的。例如,計算機 A 上運行的應(yīng)用程序要在遠地計算機 B 的一個很大的文件末尾添加一行信息。若使用 FTP,則應(yīng)先將此文件從計算機 B 傳送到計算機 A,添加上這一行信息后,再用 FTP 將此文件傳送到計算機 B,來回傳送這樣大的文件很花時間。實際上這種傳送是不必要的,因為計算機 A 并沒有使用該文件的內(nèi)容。
然而網(wǎng)絡(luò)文件系統(tǒng) NFS 則采用另一種思路。 NFS 允許應(yīng)用進程打開一個遠地文件,并能在該文件的某一個特定的位置上開始讀寫數(shù)據(jù) 。這樣,NFS 可使用戶只復(fù)制一個大文件中的一個很小的片段,而不需要復(fù)制整個大文件。計算機 A 中的 NFS 客戶軟件,將要添加的數(shù)據(jù)和在文件后面寫數(shù)據(jù)的請求一起發(fā)送到遠地的計算機 B 中的 NFS 服務(wù)器,NFS 服務(wù)器更新文件后返回應(yīng)答信息。在網(wǎng)絡(luò)上傳送的只是少量的修改數(shù)據(jù)。
簡單文件傳送協(xié)議 TFTP
TCP/IP 協(xié)議族中還有一個 簡單文件傳送協(xié)議 TFTP(Trivial File Transfer Protocol) ,它是個很小且易于實現(xiàn)的文件傳送協(xié)議。
雖然 TFTP 也使用客戶服務(wù)器方式,但它使用 UDP 數(shù)據(jù)報,因此 TFTP 需要有自己的差錯改正措施。TFTP 只支持文件傳輸而不支持交互。TFTP 沒有一個龐大的命令集,沒有列目錄的功能,也不能對用戶進行身份鑒別。
TFTP 的主要優(yōu)點有:
1.TFTP 可用于 UDP 環(huán)境。例如,當需要將程序或文件同時向許多機器下載時就往往需要使用 TFTP。
2.TFTP 代碼所占的內(nèi)存較小。對較小的計算機或某些特殊用途的設(shè)備是很重要:這些設(shè)備不需要硬盤,只需要周化了 TFTP,UDP 和 IP 的小容量只讀存儲器即可。當接通電源后,設(shè)備執(zhí)行只讀存儲器中的代碼,在網(wǎng)絡(luò)上廣播一個 TFTP 請求。網(wǎng)絡(luò)上的 TFTP 服務(wù)器就發(fā)送響應(yīng),其中包括可執(zhí)行二進制程序。設(shè)備收到此文件后將其放入內(nèi)存,然后開始運行程序。這種方式增加了靈活性,也減少了開銷。
TFTP 的主要特點是:
(1)每次傳送的數(shù)據(jù)報文中有 512 字節(jié)的數(shù)據(jù),但最后一次可不足 512 字節(jié);
(2)數(shù)據(jù)報文按序編號,從1開始;
(3)支持 ASCII 碼或二進制傳送;
(4)可對文件進行讀或?qū)?#xff1b;
(5)使用很簡單的首部。
TFTP 的工作很像停止等待協(xié)議。 發(fā)送完一個文件塊后就等待對方的確認,確認時應(yīng)指明所確認的塊編號。發(fā)完數(shù)據(jù)后在規(guī)定時間內(nèi)收不到確認就要重發(fā)數(shù)據(jù) PDU。發(fā)送確認 PDU 的一方若在規(guī)定時間內(nèi)收不到下一個文件塊,也要重發(fā)確認 PDU。這樣就可保證文件的傳送不致因某一個數(shù)據(jù)報的丟失而告失敗。
在一開始工作時。TFTP 客戶進程發(fā)送一個讀請求報文或?qū)懻埱髨笪慕o TFTP 服務(wù)器進程,其熟知端口號碼為 69
。TFTP 服務(wù)器進程要選擇一個新的端口和 TFTP 客戶進程進行通信。若文件長度恰好為 512 字節(jié)的整數(shù)倍,則在文件傳送完畢后,還必須在最后發(fā)送一個只含首部而無數(shù)據(jù)的數(shù)據(jù)報文。若文件長度不是 512 字節(jié)的整數(shù)倍,則最后傳送數(shù)據(jù)報文中的數(shù)據(jù)字段一定不滿 512 字節(jié),這正好可作為文件結(jié)束的標志。
遠程終端協(xié)議 TELNET
TELNET 是一個簡單的遠程終端協(xié)議,它也是因特網(wǎng)的正式標準。
用戶用 TELNET 就可在其所在地通過 TCP 連接注冊(即登錄)到遠地的另一個主機上(使用主機名或 IP 地址)。
TELNET 能將用戶的擊鍵傳到遠地主機,同時也能將遠地主機的輸出通過 TCP 連接返回到用戶屏幕,這種服務(wù)是透明的,因為用戶感覺到好像鍵盤和顯示器是直接連在遠地主機上。因此,TELNET 又稱為 終端仿真協(xié)議 。
TELNET的主要特點和工作原理:
基于文本:
TELNET是基于文本的協(xié)議,它傳輸?shù)氖亲址鞫皇嵌M制數(shù)據(jù)。用戶在遠程主機上的操作以及主機返回的輸出都是文本形式的。
端口號:
TELNET默認使用TCP協(xié)議,其端口號是23。
明文傳輸:
最初的 TELNET 版本是以明文形式傳輸數(shù)據(jù)的,即用戶的登錄信息和傳輸?shù)拿疃际且约兾谋拘问絺魉偷?。因?#xff0c;它是不安全的,容易受到竊聽和中間人攻擊。
加密協(xié)議:
為了提高安全性,后續(xù)出現(xiàn)了使用加密的TELNET協(xié)議,如Secure Shell(SSH)取代了TELNET在安全性上的應(yīng)用。
會話控制:
TELNET 維護一個會話,使用戶能夠在遠程主機上執(zhí)行命令,查看輸出,并與遠程系統(tǒng)進行交互。
終端類型:
TELNET 支持不同的終端類型,以便適應(yīng)各種不同的終端設(shè)備和用戶界面。
環(huán)境變量:
TELNET 允許用戶在遠程主機上設(shè)置和修改環(huán)境變量,以影響其遠程會話的行為。
萬維網(wǎng) WWW
萬維網(wǎng)www (World Wide Web) 并非某種特殊的計算機網(wǎng)絡(luò)。萬維網(wǎng)是一個大規(guī)模的、聯(lián)機式的信息儲藏所 ,英文簡稱為Web。
萬維網(wǎng)用鏈接的方法能非常方便地從因特網(wǎng)上的一個站點訪問另一個站點(也就是所謂的“鏈接到另一個站點"),從而主動地按需獲取豐富的信息。
萬維網(wǎng)是一個分布式的 超媒體(hypermedia) 系統(tǒng),它是 超文本(hypertext) 系統(tǒng)的擴充。
所謂超文本是包含指向其他文檔的鏈接的文本。也就是說,一個超文本由多個信息源鏈接成,而這些信息源的數(shù)目實際上是不受限制的。利用一個鏈接可使用戶找到另一個文檔,而這又可鏈接到其他的文檔(依次類推)。這些文檔可以位于世界上任何一個接在因特網(wǎng)上的超文本系統(tǒng)中。超文本是萬維網(wǎng)的基礎(chǔ) 。
超媒體與超文本的區(qū)別是文檔內(nèi)容不同:超文本文檔僅包含文本信息;而超媒體文檔還包含其他表示方式的信息,如圖形、圖像、聲音、動畫,甚至活動視頻圖像。
分布式的和非分布式的超媒體系統(tǒng)有很大區(qū)別。
在非分布式系統(tǒng)中,各種信息都駐留在單個計算機的磁盤中。由于各種文檔都可從本地獲得,因此這些文檔之間的鏈接可進行一致性檢查。所以,一個非分布式超媒體系統(tǒng)能夠保證所有的鏈接都是有效的和一致的。
萬維網(wǎng)以客戶服務(wù)器方式工作。
萬維網(wǎng)文檔所駐留的主機運行服務(wù)器程序,因此這個主機也稱為萬維網(wǎng)服務(wù)器??蛻舫绦蛳蚍?wù)器程序發(fā)出請求,服務(wù)器程序向客戶程序送回客戶所要的萬維網(wǎng)文檔。在一個客戶程序主窗口上顯示出的萬維網(wǎng)文檔稱為 頁面(page) 。
萬維網(wǎng)必須解決以下幾個問題:
(1)怎樣標志分布在整個因特網(wǎng)上的萬維網(wǎng)文檔?
萬維網(wǎng)使用 統(tǒng)一資源定位符URL(Uniform Resource Locator) 來標志萬維網(wǎng)上的各種文檔,并使每一個文檔在整個因特網(wǎng)的范圍內(nèi)具有唯一的標識符 URL。
(2)用什么樣的協(xié)議來實現(xiàn)萬維網(wǎng)上各種鏈接?
要使萬維網(wǎng)客戶程序與萬維網(wǎng)服務(wù)器程序之間的交互遵守嚴格的協(xié)議,這就是 超文本傳送協(xié)議HTTP (HyperText Transfer Protocol) 。HTTP 是一個應(yīng)用層協(xié)議,它使用 TCP 連接進行可靠的傳送。為
(3)怎樣使不同作者創(chuàng)作的不同風(fēng)格的萬維網(wǎng)文檔都能在因特網(wǎng)上的各種主機上顯示出來,同時使用戶清楚地知道在什么地方存在著鏈接?
萬維網(wǎng)使用超文本標記語言HTML (HyperText Markup Language),使得萬維網(wǎng)頁面的設(shè)計者可以很方便地用鏈接從本頁面的某處鏈接到因特網(wǎng)上的任何一個萬維網(wǎng)頁面,并且能夠在自己的主機屏幕上顯示出來。
(4)怎樣使用戶能夠很方便地找到所需的信息?
用戶可使用搜索工具在萬維網(wǎng)上方便地查找所需的信息。
統(tǒng)一資源定位符 URL
統(tǒng)一資源定位符 URL 是用來表示從因特網(wǎng)上得到的資源位置和訪問這些資源的方法。
URL 給資源的位置提供一種抽象的識別方法,并用這種方法給資源定位。只要能夠?qū)Y源定位,系統(tǒng)就可以對資源進行各種操作,如存取、更新、替換和查找其屬性。
“資源” 是指在因特網(wǎng)上可以被訪問的任何對象,包括文件目錄、文件、文檔、圖像、聲音等,以及與因特網(wǎng)相連的任何形式的數(shù)據(jù)。“資源”還包括電子郵件的地址和 USENET 新聞組,或 USENET 新聞組中的報文。
URL 相當于一個文件名在網(wǎng)絡(luò)范圍的擴展。 因此,URL 是與因特網(wǎng)相連的機器上的任何可訪問對象的一個指針。由于訪問不同對象所使用的協(xié)議不同,所以URL還指出讀取某個對象時所使用的協(xié)議。URL的一般形式由以下四個部分組成:
< 協(xié)議 > : / / < 主機 > : < 端口 > / < 路徑 > <協(xié)議>://<主機>:<端口>/<路徑> <協(xié)議>://<主機>:<端口>/<路徑>
URL 的第一部分是最左邊的<協(xié)議>:指出使用什么協(xié)議來獲取該萬維網(wǎng)文檔?,F(xiàn)在最常用的協(xié)議就是http(超文本傳送協(xié)議HTTP),其次是ftp (文件傳送協(xié)議FTP)。在<協(xié)議>后面是規(guī)定必須寫上的格式“😕/”,不能省略。
右邊是第二部分<主機>,指出這個萬維網(wǎng)文檔是在哪一個主機上。這里的<主機>就是指該主機在因特網(wǎng)上的域名。
再后面是第三和第四部分<端口>和<路徑>,有時可省略。
使用 HTTP 的 URL
對于萬維網(wǎng)的網(wǎng)點的訪問要使用 HTTP 協(xié)議。HTTP的URL的一般形式是:
h t t p : / / < 主機 > : < 端口 > / < 路徑 > http://<主機>:<端口>/<路徑> http://<主機>:<端口>/<路徑>
HTTP 的默認端口號是 80,通??墒÷?。若再省略文件的<路徑>項,則URL就指到因特網(wǎng)上的某個 主頁(home page) 。
主頁可以是以下幾種情況之一:
(1)一個 WWW 服務(wù)器的最高級別的頁面。
(2)某一個組織或部門的一個定制的頁面或目錄。從這樣的頁面可鏈接到因特網(wǎng)上的與本組織或部門有關(guān)的其他站點。
(3)由某一個人自己設(shè)計的描述他本人情況的WWW頁面。
URL 里面的字母不分大小寫
超文本傳送協(xié)議 HTTP
HTTP 協(xié)議定義了瀏覽器(即萬維網(wǎng)客戶進程)怎樣向萬維網(wǎng)服務(wù)器請求萬維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。
從層次的角度看,HTTP是面向事務(wù)的(transaction-oriented)應(yīng)用層協(xié)議,它是萬維網(wǎng)上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎(chǔ)。
每個萬維網(wǎng)網(wǎng)點都有一個服務(wù)器進程,它不斷地監(jiān)聽 TCP 的端口 80,以便發(fā)現(xiàn)是否有瀏覽器(即萬維網(wǎng)客戶,瀏覽器和萬維網(wǎng)客戶是同義詞)向它發(fā)出連接建立請求。一旦監(jiān)聽到連接建立請求并建立了 TCP 連接之后,瀏覽器就向萬維網(wǎng)服務(wù)器發(fā)出瀏覽某個頁面的請求,服務(wù)器接著就返回所請求的頁面作為響應(yīng)。最后,TCP連接就被釋放了。在瀏覽器和服務(wù)器之間的請求和響應(yīng)的交互,必須按照規(guī)定的格式和遵循一定的規(guī)則。這些格式和規(guī)則就是超文本傳送協(xié)議 HTTP。
HTTP 規(guī)定在 HTTP 客戶與 HTTP 服務(wù)器之間的每次交互,都由一個 ASCII 碼串構(gòu)成的請求和一個“類MIME (MIME-like)”的響應(yīng)組成。HTTP 報文通常都使用 TCP 連接傳送。
用戶瀏覽頁面的方法有兩種:1.在瀏覽器的地址窗口中鍵入所要找的頁面的URL;2.在某一個頁面中用鼠標點擊一個可選部分,這時瀏覽器會自動在因特網(wǎng)上找到所要鏈接的頁面。
HTTP 使用了面向連接的 TCP 作為運輸層協(xié)議,保證了數(shù)據(jù)的可靠傳輸。HTTP不必考慮數(shù)據(jù)在傳輸過程中被丟棄后又怎樣被重傳。但是,HTTP協(xié)議本身是無連接的。這就是說,雖然 HTTP 使用了 TCP 連接,但通信的雙方在交換 HTTP 報文之前不需要先建立 HTTP 連接。
HTTP 協(xié)議是無狀態(tài)的(stateless)。也就是說,同一個客戶第二次訪問同一個服務(wù)器上的頁面時,服務(wù)器的響應(yīng)與第一次被訪問時的相同(假定現(xiàn)在服務(wù)器還沒有把該頁面更新),因為服務(wù)器并不記得曾經(jīng)訪問過的這個客戶,也不記得為該客戶曾經(jīng)服務(wù)過多少次。
用戶在點擊鼠標鏈接某個萬維網(wǎng)文檔時,HTTP 協(xié)議首先要和服務(wù)器建立 TCP 連接。這需要使用三次握手。當三次握手的前兩部分完成后(即經(jīng)過了一個 RTT 時間后),萬維網(wǎng)客戶就把 HTTP 請求報文作為三次握手的第三個報文的數(shù)據(jù)發(fā)送給萬維網(wǎng)服務(wù)器。服務(wù)器收到 HTTP 請求報文后,就把所請求的文檔作為響應(yīng)報文返回給客戶。
請求一個萬維網(wǎng)文檔所需的時間是該文檔的傳輸時間(與文檔大小成正比)加上兩倍往返時間 RTT(一個 RTT 用于連接 TCP 連接,另一個 RTT 用于請求和接收萬維網(wǎng)文檔。這里 TCP 建立連接的三次握手的第三個報文段中捎帶了客戶對萬維網(wǎng)文檔的請求)。
HTTP/1.0 的主要缺點,就是每請求一個文檔就要有兩倍RTT的開銷。若一個主頁上有很多鏈接的對象(如圖片等)需要依次進行鏈接,那么每一次鏈接下載都導(dǎo)致2×RTT 的開銷。另一種開銷就是萬維網(wǎng)客戶和服務(wù)器為每一次建立新的 TCP 連接都要分配緩存和變量。特別是萬維網(wǎng)服務(wù)器往往要同時服務(wù)于大量客戶的請求,這樣會使萬維網(wǎng)服務(wù)器的負擔很重。使用并行TCP連接可以縮短響應(yīng)時間。
HTTP/1.1協(xié)議較好地解決了這個問題,它使用了持續(xù)連接(persistent connection)。所謂持續(xù)連接就是萬維網(wǎng)服務(wù)器在發(fā)送響應(yīng)后仍然在一段時間內(nèi)保持這條連接,使同一個客戶(瀏覽器)和該服務(wù)器可以繼續(xù)在這條連接上傳送后續(xù)的 HTTP 請求報文和響應(yīng)報文。這并不局限于傳送同一個頁面上鏈接的文檔,而是只要這些文檔都在同一個服務(wù)器上就行。
HTTP/1.1 協(xié)議的持續(xù)連接有兩種工作方式,即 非流水線方式(without pipelining) 和 流水線方式(with pipelining) 。
非流水線方式的特點,是客戶在收到前一個響應(yīng)后才能發(fā)出下一個請求。
流水線方式的特點,是客戶在收到 HTTP的響應(yīng)報文之前就能夠接著發(fā)送新的請求報文。于是一個接-個的請求報文到達服務(wù)器后,服務(wù)器就可連續(xù)發(fā)回響應(yīng)報文。因此,使用流水線方式時,客戶訪問所有的對象只需花費一-個RTT 時間。流水線工作方式使TCP連接中的空困時間減少,提高了下載文檔效率。
代理服務(wù)器
代理服務(wù)器(proxy server)是一種網(wǎng)絡(luò)實體,它又稱為萬維網(wǎng)高速緩存(Web cache)。
代理服務(wù)器把最近的一些請求和響應(yīng)暫存在本地磁盤中。當新請求到達時,若代理服務(wù)器發(fā)現(xiàn)這個請求與暫時存放的請求相同,就返回暫存的響應(yīng),而不需要按 URL 的地址再次去因特網(wǎng)訪問該資源。代理服務(wù)器可在客戶端或服務(wù)器端工作,也可在中間系統(tǒng)上工作。下
代理服務(wù)器有時是作為服務(wù)器(當接受瀏覽器的HTTP請求時),但有時卻作為客戶(當向因特網(wǎng)上的源點服務(wù)器發(fā)送HTTP請求時)。
HTTP 的報文結(jié)構(gòu)
HTTP有兩類報文:
(1)請求報文:從客戶向服務(wù)器發(fā)送請求報文,圖(a)。
(2)響應(yīng)報文:從服務(wù)器到客戶的回答,圖(b)。
由于 HTTP 是 面向文本的(text-oriented),因此在報文中的每一個字段都是一些 ASCII 碼串,因而各個字段的長度都是不確定的。
HTTP 請求報文和響應(yīng)報文都是由三個部分組成,這兩種報文格式的區(qū)別就是開始行不同。
(1)開始行 ,用于區(qū)分是請求報文還是響應(yīng)報文。在請求報文中的開始行叫做請求行(Request-Line),而在響應(yīng)報文中的開始行叫做狀態(tài)行(Status-Line)。在開始行的三個字段之間都以空格分隔開,最后的“CR”和“LF”分別代表“回車”和“換行”。請求報文的第一行請求行只有三個內(nèi)容,即方法,請求資源的 URL,以及 HTTP 的版本。
(2)首部行 ,用來說明瀏覽器、服務(wù)器或報文主體的一些信息。首部可以有好幾行,但也可以不使用。在每一個首部行中都有首部字段名和它的值,每一行在結(jié)束的地方都要有“回車”和“換行”。整個首部行結(jié)束時,還有-空行將首部行和后面的實體主體分開。
(3)實體主體(entity body) ,在請求報文中一般都不用這個字段,而在響應(yīng)報文中也可能沒有這個字段。
在服務(wù)器上存放用戶的信息
HTTP是無狀態(tài)的。在實際工作中,一些萬維網(wǎng)站點卻常常希望能夠識別用戶。
可以在 HTTP 中使用 Cookie。萬維網(wǎng)站點可以使用 Cookie 來跟蹤用戶。Cookie表示在 HTTP服務(wù)器和客戶之間傳遞的狀態(tài)信息。
Cookie就是一些數(shù)據(jù),用于存儲服務(wù)器返回給客服端的信息,客戶端進行保存。在下一次訪問該網(wǎng)站時,客戶端會將保存的cookie一同發(fā)給服務(wù)器,服務(wù)器再利用cookie進行一些操作。利用cookie我們就可以實現(xiàn)自動登錄,保存游覽歷史,身份驗證等功能。
這里有詳細的介紹:cookie是什么?有什么用?cookie詳解,一篇文章徹底搞懂cookie
萬維網(wǎng)的文檔
超文本標記語言 HTML
超文本標記語言 HTML(HyperText Markup Language) 是一種制作萬維網(wǎng)頁面的標準語言,它消除了不同計算機之間信息交流的障礙。
HTML 定義了許多用于排版的命令,即“標簽”(tag)。例如,表示后面開始用斜體字排版,而則表示斜體字排版到此結(jié)束。
HTML就把各種標簽嵌入到萬維網(wǎng)的頁面中,這樣就構(gòu)成了所謂的 HTML 文檔。HTML 文檔是一種可以用任何文本編輯器創(chuàng)建的ASCII 碼文件。但僅當HTML文檔是以.html或.htm為后綴時,瀏覽器才對這樣的HTML 文檔的各種標簽進行解釋。如果HTML文檔改換以.txt為其后綴,則HTML解釋程序就不對標簽進行解釋,而瀏覽器只能看見原來的文本文件。
并非所有的瀏覽器都支持所有的 HTML 標簽。若某一個瀏覽器不支持某一個 HTML 標簽,則瀏覽器將忽略此標簽,但在一對不能識別的標簽之間的文本仍然會被顯示出來。
HTML 允許在萬維網(wǎng)頁面中插入圖像。一個頁面本身帶有的圖像稱為內(nèi)含圖像(inlineimage)。HTML標準并沒有規(guī)定該圖像的格式。實際上,大多數(shù)瀏覽器都支持GIF和JPEG文件。很多種格式的圖像占據(jù)的存儲空間太大,因而這種圖像在因特網(wǎng)傳送時就很浪費時間。
HTML 還規(guī)定了鏈接的設(shè)置方法。每個鏈接都有一個起點和終點。鏈接的起點說明在萬維網(wǎng)頁面中的什么地方可引出一個鏈接。鏈接的終點可以是其他網(wǎng)站上的頁面。這種鏈接方式叫做遠程鏈接。這時必須在 HTML 文檔中指明鏈接到的網(wǎng)站的 URL。有時鏈接可以指向本計算機中的某一個文件或本文件中的某處。這叫做本地鏈接。這時必須在 HTML 文檔中指明鏈接的路徑。
動態(tài)萬維網(wǎng)文檔
靜態(tài)文檔是指在文檔創(chuàng)作完畢后就存放在萬維網(wǎng)服務(wù)器中,在被用戶瀏覽的過程中,內(nèi)容不會改變。由于這種文檔的內(nèi)容不會改變,因此用戶對靜態(tài)文檔的每次讀取所得到的返回結(jié)果都是相同的。
靜態(tài)文檔的最大優(yōu)點是簡單。由于HTML是一種排版語言,因此靜態(tài)文檔可以由不懂程序設(shè)計的人員來創(chuàng)建。但靜態(tài)文檔的缺點是不夠靈活。當信息變化時就要由文檔的作者手工對文檔進行修改??梢?#xff0c;變化頻繁的文檔不適于作成靜態(tài)文檔。
動態(tài)文檔(dynamic document)是指文檔的內(nèi)容是在瀏覽器訪問萬維網(wǎng)服務(wù)器時才由應(yīng)用程序動態(tài)創(chuàng)建。當瀏覽器請求到達時,萬維網(wǎng)服務(wù)器要運行另一個應(yīng)用程序,并把控制轉(zhuǎn)移到此應(yīng)用程序。接著,該應(yīng)用程序?qū)g覽器發(fā)來的數(shù)據(jù)進行處理,并輸出 HTTP 格式的文檔,萬維網(wǎng)服務(wù)器把應(yīng)用程序的輸出作為對瀏覽器的響應(yīng)。
由于對瀏覽器每次請求的響應(yīng)都是臨時生成的,因此用戶通過動態(tài)文檔所看到的內(nèi)容是不斷變化的。動態(tài)文檔的主要優(yōu)點是具有報告當前最新信息的能力。但動態(tài)文檔的創(chuàng)建難度比靜態(tài)文檔的高,因為動態(tài)文檔的開發(fā)不是直接編寫文檔本身,而是編寫用于生成文檔的應(yīng)用程序,這就要求動態(tài)文檔的開發(fā)人員必須會編程,而所編寫的程序還要通過大范圍的測試,以保證輸入的有效性。
動態(tài)文檔和靜態(tài)文檔之間的主要差別體現(xiàn)在服務(wù)器一端。這主要是文檔內(nèi)容的生成方法不同。而從瀏覽器的角度看,這兩種文檔并沒有區(qū)別。動態(tài)文檔和靜態(tài)文檔的內(nèi)容都遵循HTML所規(guī)定的格式,瀏覽器僅根據(jù)在屏幕上看到的內(nèi)容并無法判定服務(wù)器送來的是哪一種文檔,只有文檔的開發(fā)者才知道。
動態(tài)主機配置協(xié)議 DHCP
為了把協(xié)議軟件做成通用的和便于移植,把協(xié)議軟件參數(shù)化。這就使得在很多臺計算機上有可能使用同一個經(jīng)過編譯的二進制代碼。一臺計算機和另一臺計算機的許多區(qū)別,都可以通過一些不同的參數(shù)來體現(xiàn)。在協(xié)議軟件運行之前,必須給每一個參數(shù)賦值。
在協(xié)議軟件中給這些參數(shù)賦值的動作叫做協(xié)議配置。一個協(xié)議軟件在使用之前必須是已正確配置的。具體的配置信息有哪些則取決于協(xié)議棧。
**動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol,簡稱DHCP)**是一種網(wǎng)絡(luò)協(xié)議,通過自動分配IP地址和其他網(wǎng)絡(luò)配置參數(shù),為計算機網(wǎng)絡(luò)提供了高效的管理和配置手段。
工作原理:
1.DHCP服務(wù)器的角色:
DHCP的核心在于DHCP服務(wù)器,它負責(zé)管理IP地址池、分配IP地址和配置其他網(wǎng)絡(luò)參數(shù)。DHCP服務(wù)器通常在網(wǎng)絡(luò)中的中央位置,能夠響應(yīng)來自客戶端設(shè)備的DHCP請求。
2.DHCP客戶端的角色:
DHCP客戶端是網(wǎng)絡(luò)中的設(shè)備,它們在連接到網(wǎng)絡(luò)時會發(fā)送DHCP請求以獲取配置信息。這些設(shè)備可以是計算機、移動設(shè)備、網(wǎng)絡(luò)打印機等。
3.廣播通信:
當一個DHCP客戶端連接到網(wǎng)絡(luò)或者重新連接時,它會發(fā)送一個DHCP發(fā)現(xiàn)(Discover)廣播消息到網(wǎng)絡(luò)上的所有設(shè)備。這個廣播消息是一個特殊的UDP包,目的是找到可用的DHCP服務(wù)器。
4. DHCP服務(wù)器的響應(yīng):
DHCP服務(wù)器收到DHCP發(fā)現(xiàn)消息后,會以廣播形式回復(fù)一個DHCP提供(Offer)消息,其中包含可用的IP地址、子網(wǎng)掩碼、默認網(wǎng)關(guān)、DNS服務(wù)器等網(wǎng)絡(luò)配置信息。服務(wù)器可能收到多個發(fā)現(xiàn)請求,但只為一個客戶端提供一個唯一的IP地址。
5. 租約分配:
客戶端收到DHCP提供消息后,會選擇其中一個提供的配置,并向DHCP服務(wù)器發(fā)送DHCP請求(Request)消息,表示接受該配置。服務(wù)器在接收到請求后,為客戶端分配IP地址,并提供租約時間,即該IP地址在網(wǎng)絡(luò)上的使用有效期。
6. 配置應(yīng)用:
客戶端收到DHCP確認(Acknowledge)消息后,會將配置信息應(yīng)用到自身網(wǎng)絡(luò)接口?,F(xiàn)在,設(shè)備擁有了有效的IP地址和其他網(wǎng)絡(luò)參數(shù),可以正常參與網(wǎng)絡(luò)通信。
7. 租約更新:
在租約到期之前,客戶端可以選擇續(xù)租,向DHCP服務(wù)器發(fā)送DHCP請求消息,以延長租約時間。如果客戶端不再需要IP地址,它可以發(fā)送DHCP釋放(Release)消息通知服務(wù)器釋放分配的地址。
簡單網(wǎng)絡(luò)管理協(xié)議 SNMP
簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol,SNMP)是一種用于管理和監(jiān)控網(wǎng)絡(luò)設(shè)備的協(xié)議。SNMP允許網(wǎng)絡(luò)管理員通過網(wǎng)絡(luò)監(jiān)控、配置和收集信息,以確保網(wǎng)絡(luò)的穩(wěn)定性和性能。
簡單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol)中的管理程序和代理程序按客戶服務(wù)器方式工作。管理程序運行 SNMP 客戶程序,而代理程序運行 SNMP 服務(wù)器程序。在被管對象上運行的SNMP 服務(wù)器程序不停地監(jiān)聽來自管理站的 SNMP 客戶程序的請求(或命令)。一旦發(fā)現(xiàn),就立即返回管理站所需的信息,或執(zhí)行某個動作(例如,把某個參數(shù)的設(shè)置進行更新)。在網(wǎng)管系統(tǒng)中往往是一個(或少數(shù)幾個)客戶程序與很多的服務(wù)器程序進行交互。
若要管理某個對象,就必然會給該對象添加一些軟件或硬件,但這種“添加”必須對原有對象的影響盡量小些。
若網(wǎng)絡(luò)元素使用的不是 SNMP 協(xié)議而是另一種網(wǎng)絡(luò)管理協(xié)議,那么吧 SNMP 協(xié)議就無法控制該網(wǎng)絡(luò)元素。這時可使用委托代理(proxy agent)。
委托代理能提供如協(xié)議轉(zhuǎn)換和過濾操作等功能對被管對象進行管理。
SNMP 的網(wǎng)絡(luò)管理由三個部分組成,即 SNMP本身、管理信息結(jié)構(gòu)SMI (Structure of Management Information)和管理信息庫MIB (Management Information Base)。下面簡述這三部分的作用。
SNMP 定義了管理站和代理之間所交換的分組格式。所交換的分組包含各代理中的對象(變量)名及其狀態(tài)(值)。SNMP負責(zé)讀取和改變這些數(shù)值。
SMI定義了命名對象和定義對象類型(包括范圍和長度)的通用規(guī)則,以及把對象和對象的值進行編碼的規(guī)則。這樣做是為了確保網(wǎng)絡(luò)管理數(shù)據(jù)的語法和語義的無二義性。但從SMI的名稱并不能看出它的功能。請注意,SMI并不定義一個實體應(yīng)管理的對象數(shù)目,也不定義被管對象名以及對象名及其值之間的關(guān)聯(lián)。
MIB在被管理的實體中創(chuàng)建了命名對象,并規(guī)定了其類型。
SNMP操作:
SNMP定義了一組標準的操作,包括:
GET: 從設(shè)備中獲取特定OID的信息。
SET: 修改設(shè)備中特定OID的值。
GET-NEXT: 獲取MIB中下一個OID的信息。
GET-BULK: 一次獲取大量數(shù)據(jù)的操作。
SNMP支持事件通知,當設(shè)備狀態(tài)發(fā)生變化時,代理可以向管理站點發(fā)送通知。這種機制使得管理者能夠?qū)崟r了解網(wǎng)絡(luò)設(shè)備的狀態(tài)。
應(yīng)用進程跨越網(wǎng)絡(luò)的通信
應(yīng)用進程跨越網(wǎng)絡(luò)進行通信是通過網(wǎng)絡(luò)協(xié)議實現(xiàn)的。網(wǎng)絡(luò)協(xié)議定義了應(yīng)用進程之間的通信規(guī)則和數(shù)據(jù)傳輸方式,確保數(shù)據(jù)在網(wǎng)絡(luò)中可靠、有序地傳遞。
以下是一些常見的用于應(yīng)用進程通信的網(wǎng)絡(luò)協(xié)議:
HTTP(Hypertext Transfer Protocol):
HTTP是用于在Web瀏覽器和Web服務(wù)器之間傳輸超文本的協(xié)議。它是一個無狀態(tài)的協(xié)議,基于請求-響應(yīng)模型,常用于獲取和發(fā)送網(wǎng)頁內(nèi)容。
HTTPS(Hypertext Transfer Protocol Secure):
HTTPS是HTTP的安全版本,使用SSL/TLS協(xié)議進行數(shù)據(jù)加密和身份驗證。它提供了更安全的通信通道,廣泛用于敏感數(shù)據(jù)的傳輸,如在線支付和登錄。
FTP(File Transfer Protocol):
FTP用于在客戶端和服務(wù)器之間傳輸文件。它支持文件上傳、下載、刪除和重命名等操作,通常用于網(wǎng)站維護和文件共享。
SMTP(Simple Mail Transfer Protocol):
SMTP是用于在郵件客戶端和郵件服務(wù)器之間傳輸電子郵件的協(xié)議。它定義了郵件的傳輸規(guī)則,確保郵件能夠正確地從發(fā)件人發(fā)送到收件人。
POP3(Post Office Protocol 3):
POP3用于從郵件服務(wù)器下載郵件到本地設(shè)備。它是一種應(yīng)用于電子郵件接收的協(xié)議,允許用戶通過郵件客戶端訪問服務(wù)器上的電子郵件。
IMAP(Internet Message Access Protocol):
IMAP也是一種用于電子郵件的協(xié)議,與POP3類似,但它允許用戶在郵件服務(wù)器上管理郵件,而不僅僅是下載。
DNS(Domain Name System):
DNS用于將域名轉(zhuǎn)換為IP地址,使應(yīng)用能夠通過易記的域名訪問網(wǎng)絡(luò)資源。它在應(yīng)用進程中提供域名解析服務(wù)。
RPC(Remote Procedure Call):
RPC是一種用于實現(xiàn)分布式計算的協(xié)議,允許一個進程調(diào)用另一個進程的過程。它在應(yīng)用程序之間提供遠程通信的機制。
WebSocket:
WebSocket是一種在客戶端和服務(wù)器之間實現(xiàn)全雙工通信的協(xié)議。它允許應(yīng)用程序建立持久的連接,實時地推送數(shù)據(jù)而不需要客戶端發(fā)起請求。
TCP(傳輸控制協(xié)議)是一種可靠的、面向連接的協(xié)議,常用于實現(xiàn)可靠的數(shù)據(jù)傳輸。在使用TCP的過程中,應(yīng)用程序可以通過系統(tǒng)調(diào)用與操作系統(tǒng)內(nèi)核進行交互。實現(xiàn)TCP服務(wù)為例:
socket(創(chuàng)建套接字):
int socket(int domain, int type, int protocol);
該系統(tǒng)調(diào)用用于創(chuàng)建一個套接字,套接字是通信的端點。參數(shù)domain指定協(xié)議族(如AF_INET表示IPv4),type指定套接字類型(如SOCK_STREAM表示流式套接字,即TCP),protocol指定具體的協(xié)議。
bind(綁定套接字地址):
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
該系統(tǒng)調(diào)用用于將一個本地地址(IP地址和端口號)綁定到套接字。sockfd是套接字描述符,addr是一個指向sockaddr結(jié)構(gòu)的指針,描述了要綁定的地址信息。
listen(監(jiān)聽連接請求):
int listen(int sockfd, int backlog);
該系統(tǒng)調(diào)用用于使套接字處于監(jiān)聽狀態(tài),等待客戶端的連接請求。sockfd是套接字描述符,backlog指定等待連接隊列的最大長度。
accept(接受連接):
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
該系統(tǒng)調(diào)用用于接受客戶端的連接請求,創(chuàng)建一個新的套接字用于與客戶端進行通信。sockfd是監(jiān)聽套接字的描述符,addr是一個指向sockaddr結(jié)構(gòu)的指針,用于存儲客戶端的地址信息。
connect(發(fā)起連接):
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
該系統(tǒng)調(diào)用用于發(fā)起與遠程服務(wù)器的連接請求。sockfd是套接字描述符,addr是一個指向sockaddr結(jié)構(gòu)的指針,描述了遠程服務(wù)器的地址信息。
send(發(fā)送數(shù)據(jù))和 recv(接收數(shù)據(jù)):
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
這兩個系統(tǒng)調(diào)用用于在已建立的連接上發(fā)送和接收數(shù)據(jù)。sockfd是套接字描述符,buf是數(shù)據(jù)緩沖區(qū),len是數(shù)據(jù)長度,flags是操作標志。
close(關(guān)閉套接字):
int close(int sockfd);
該系統(tǒng)調(diào)用用于關(guān)閉套接字連接。應(yīng)用程序在完成數(shù)據(jù)傳輸后通常會調(diào)用close來釋放資源。
有些東西沒有去學(xué)習(xí),比如電子郵件。。。需要用的時候再看吧
謝希仁第五版《計算機網(wǎng)絡(luò)》學(xué)習(xí)筆記