<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TCP/IP協(xié)議族

          共 7008字,需瀏覽 15分鐘

           ·

          2024-05-18 19:23

          1、體系結(jié)構(gòu)

          tcp/ip協(xié)議族是一個(gè)四層協(xié)議系統(tǒng)。

          圖1 TCP/IP體系結(jié)構(gòu) 

          • 數(shù)據(jù)鏈路層:實(shí)現(xiàn)網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,處理數(shù)據(jù)在物理媒介(以太網(wǎng)、令牌環(huán))上的傳輸。網(wǎng)絡(luò)驅(qū)動(dòng)程序屏蔽不同物理網(wǎng)絡(luò)的電器特性。數(shù)據(jù)鏈路層使用ARP和RARP協(xié)議實(shí)現(xiàn)IP地址與MAC地址之間的相互轉(zhuǎn)換(網(wǎng)絡(luò)層使用IP地址尋址網(wǎng)絡(luò)計(jì)算機(jī),而數(shù)據(jù)鏈路層使用物理地址尋址網(wǎng)絡(luò)中的計(jì)算機(jī))。

          • 網(wǎng)絡(luò)層:使用IP協(xié)議實(shí)現(xiàn)數(shù)據(jù)包在計(jì)算機(jī)網(wǎng)絡(luò)、主機(jī)之間路由和轉(zhuǎn)發(fā),使用ICMP協(xié)議檢測(cè)網(wǎng)絡(luò)連接。IP協(xié)議使用逐跳(hop by hop)方式確定通信路徑,數(shù)據(jù)包通過目標(biāo)IP尋址目標(biāo)主機(jī),如果不能直接尋址主機(jī)時(shí),則由IP協(xié)議為其尋址合適的下一跳路由器。ICMP協(xié)議服務(wù)基于同層的IP協(xié)議實(shí)現(xiàn),因此并非嚴(yán)格意義上的網(wǎng)絡(luò)層協(xié)議。

          • 傳輸層:使用TCP、UDP、SCTP協(xié)議為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端(end to end)的通信。與網(wǎng)絡(luò)層使用逐跳的通信方式不同,傳輸層只關(guān)系通信的起始端和目的端,不在乎數(shù)據(jù)的中轉(zhuǎn)過程。

          • 應(yīng)用層:數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層在內(nèi)核空間中實(shí)現(xiàn),應(yīng)用層在用戶空間實(shí)現(xiàn)。負(fù)責(zé)眾多應(yīng)用程序邏輯。應(yīng)用層協(xié)議包括http,dns,telnet,ospf等協(xié)議。

          2、封裝

          上層協(xié)議通過封裝技術(shù)使用下層協(xié)議提供的服務(wù)。應(yīng)用程序數(shù)據(jù)在發(fā)送到物理網(wǎng)絡(luò)上之前,將沿著協(xié)議棧從上往下逐層封裝。每層協(xié)議均在上層協(xié)議的基礎(chǔ)上添加自己的頭部(有時(shí)含尾部)信息。

          圖2 封裝過程

          2.1 TCP報(bào)文段

          經(jīng)過TCP封裝后的數(shù)據(jù)稱為TCP報(bào)文段,存儲(chǔ)在內(nèi)核空間中,簡(jiǎn)稱TCP段。TCP報(bào)文段包括:TCP頭部信息和TCP內(nèi)核緩沖區(qū)(包括發(fā)送緩沖區(qū)和接收緩沖區(qū))。

          圖3 TCP報(bào)文段封裝過程

           數(shù)據(jù)發(fā)送流程:發(fā)送端應(yīng)用程序使用write函數(shù)向一個(gè)TCP連接寫數(shù)據(jù)時(shí),內(nèi)核TCP模塊首先把數(shù)據(jù)從應(yīng)用程序發(fā)送緩沖區(qū)復(fù)制到與其連接對(duì)應(yīng)的TCP內(nèi)核發(fā)送緩沖區(qū),然后TCP模塊調(diào)用IP模塊服務(wù),將TCP報(bào)文段傳送給網(wǎng)絡(luò)層供進(jìn)一步封裝為IP數(shù)據(jù)報(bào)。

          2.2 UDP數(shù)據(jù)報(bào)

          經(jīng)過UDP封裝后的數(shù)據(jù)稱為UDP數(shù)據(jù)報(bào)。封裝過程與TCP報(bào)文段封裝過程類似。區(qū)別:UDP無需為應(yīng)用程序保存副本。當(dāng)UDP數(shù)據(jù)報(bào)發(fā)送成功之后,UDP內(nèi)核緩沖區(qū)中的數(shù)據(jù)報(bào)就會(huì)被丟棄。如果應(yīng)用程序檢測(cè)到該數(shù)據(jù)報(bào)未能被接收端正確接收,并需要重新發(fā)送這個(gè)數(shù)據(jù)報(bào),則需要重新從用戶空間將數(shù)據(jù)拷貝到UDP內(nèi)核發(fā)送緩沖區(qū)。

          2.3 IP數(shù)據(jù)報(bào)

          經(jīng)過IP封裝后的數(shù)據(jù)稱為IP數(shù)據(jù)報(bào)。IP數(shù)據(jù)報(bào)包括頭部信息和數(shù)據(jù)部分,其數(shù)據(jù)部分可以是TCP報(bào)文段、UDP數(shù)據(jù)報(bào)或者ICMP報(bào)文。IP數(shù)據(jù)報(bào)封裝完畢后,傳給數(shù)據(jù)鏈路層進(jìn)一步封裝。

          2.4 幀

          經(jīng)過數(shù)據(jù)鏈路層封裝的數(shù)據(jù)稱為幀。傳輸媒介不同,幀類型也不同。比如:以太網(wǎng)幀,令牌環(huán)幀。

          2.5 以太網(wǎng)幀

          以太網(wǎng)幀使用6字節(jié)的目的物理地址和6字節(jié)源物理地址表示通信雙方。幀最大傳輸單元(Max Transmit Unit,MTU)表示幀最多能攜帶多少上層協(xié)議數(shù)據(jù)(如IP數(shù)據(jù)報(bào)),通常受網(wǎng)絡(luò)類型限制。以太網(wǎng)幀MTU=1500字節(jié)。因此,過長(zhǎng)的IP數(shù)據(jù)報(bào)可能需要被分片(fragment)傳輸。

          圖4 以太網(wǎng)幀結(jié)構(gòu)

          幀是最終在物理網(wǎng)絡(luò)上傳輸?shù)淖止?jié)序列。至此,封裝過程完成。

          3、分用

          分用為封裝的逆過程。當(dāng)幀到達(dá)目的主機(jī)時(shí),將沿著協(xié)議棧自底向上依次傳遞。各層協(xié)議依次處理幀中本層的頭部信息,并將處理后的數(shù)據(jù)交給目標(biāo)應(yīng)用程序。分用依靠頭部信息中類型字段實(shí)現(xiàn),標(biāo)準(zhǔn)文檔RFC 1700定義了所有標(biāo)識(shí)上層協(xié)議的類型字段以及每個(gè)上層協(xié)議對(duì)應(yīng)的值。

          圖5 以太網(wǎng)分用過程

          網(wǎng)絡(luò)層中的IP協(xié)議、ARP協(xié)議和RARP協(xié)議都使用數(shù)據(jù)鏈路層提供的幀服務(wù)傳輸數(shù)據(jù),因此在數(shù)據(jù)鏈路層的幀頭部使用一個(gè)字段來區(qū)分它們。而在以太網(wǎng)中,鏈路層使用2個(gè)字節(jié)的類型字段來標(biāo)志上層(即網(wǎng)絡(luò)層)協(xié)議。主機(jī)接收到的以太網(wǎng)幀類型字段取值說明如下:

          • 0x800:表示幀的數(shù)據(jù)部分為IP數(shù)據(jù)報(bào),以太網(wǎng)驅(qū)動(dòng)程序?qū)唤oIP模塊。

          • 0x806:表示幀的數(shù)據(jù)部分為ARP請(qǐng)求或應(yīng)答報(bào)文,以太網(wǎng)驅(qū)動(dòng)程序?qū)唤oARP模塊。

          • 0x835:表示幀的數(shù)據(jù)部分為RARP請(qǐng)求或應(yīng)答報(bào)文,以太網(wǎng)驅(qū)動(dòng)程序?qū)唤oRARP模塊。

          同理,傳輸層中的ICMP協(xié)議、TCP協(xié)議和UDP協(xié)議都使用IP協(xié)議,所以網(wǎng)絡(luò)層的IP數(shù)據(jù)報(bào)的頭部采用2個(gè)字節(jié)的協(xié)議(protocol)字段來進(jìn)行區(qū)分。

          而傳輸層中的TCP報(bào)文段和UDP數(shù)據(jù)報(bào)則通過頭部信息中的16位斷開號(hào)字段來區(qū)分應(yīng)用程序。比如DNS協(xié)議對(duì)應(yīng)的端口號(hào)為53,HTTP協(xié)議對(duì)應(yīng)的端口號(hào)為80。其中,所有知名應(yīng)用程序應(yīng)用層協(xié)議端口號(hào)均可以在/etc/services文件中找到。

          4、ARP協(xié)議工作原理

          ARP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)地址到物理地址的轉(zhuǎn)換。工作原理是:主機(jī)向自己所在的網(wǎng)絡(luò)廣播一個(gè)ARP請(qǐng)求,該請(qǐng)求包括目標(biāo)機(jī)器的網(wǎng)絡(luò)地址。網(wǎng)絡(luò)上其它主機(jī)都將收到這個(gè)請(qǐng)求,但只有被請(qǐng)求的目標(biāo)機(jī)器會(huì)回應(yīng)這個(gè)ARP請(qǐng)求,其中包含自己的物理地址。

          4.1 以太網(wǎng)ARP請(qǐng)求/響應(yīng)報(bào)文

          圖6 以太網(wǎng)ARP請(qǐng)求/響應(yīng)報(bào)文

          以太網(wǎng)ARP請(qǐng)求/響應(yīng)報(bào)文字段說明:

          • 硬件類型:定義物理地址類型,1表示MAC地址。

          • 協(xié)議類型:表示要映射的協(xié)議地址類型,0x800表示IP地址。

          • 硬件地址長(zhǎng)度:?jiǎn)挝粸樽止?jié),對(duì)MAC地址來說,其長(zhǎng)度為6。

          • 協(xié)議地址長(zhǎng)度:?jiǎn)挝粸樽止?jié),對(duì)IP(v4)地址來說,其長(zhǎng)度為4。

          • 操作字段:為4種操作類型。1=ARP請(qǐng)求,2=ARP響應(yīng),3=RARP請(qǐng)求,4=RARP響應(yīng)。

          • 最后四個(gè)字段指定通信雙方的以太網(wǎng)地址和IP地址。發(fā)送端填寫除目的以太網(wǎng)地址外的其它3個(gè)字段,以構(gòu)建ARP請(qǐng)求。接收端填充自己的以太網(wǎng)地址,并交換兩個(gè)目的端地址和發(fā)送端地址,同時(shí)修改操作類型(設(shè)置為2)。

          以太網(wǎng)ARP請(qǐng)求/響應(yīng)報(bào)文長(zhǎng)度為28字節(jié),加上以太網(wǎng)幀頭部和尾部18個(gè)字節(jié)(如圖4),則一個(gè)攜帶ARP請(qǐng)求/響應(yīng)報(bào)文的以太網(wǎng)幀長(zhǎng)度為46字節(jié)。

          不過,有的實(shí)現(xiàn)要求以太網(wǎng)幀數(shù)據(jù)部分長(zhǎng)度至少46字節(jié),則此時(shí)ARP請(qǐng)求/響應(yīng)報(bào)文將增加一些填充字節(jié),以滿足要求。此時(shí)一個(gè)攜帶ARP請(qǐng)求/響應(yīng)報(bào)文的以太網(wǎng)幀長(zhǎng)度為64字節(jié)。

          4.2 ARP 高速緩存

          ARP維護(hù)一個(gè)高速緩存,存放其經(jīng)常訪問網(wǎng)關(guān)或最近訪問機(jī)器的IP地址到物理地址的映射,避免重復(fù)ARP請(qǐng)求,提高發(fā)送數(shù)據(jù)包速度。

          查詢命令:

          arp -a

          用戶可以往ARP緩存中添加或刪除緩存項(xiàng)。

           4.3 ARP通信過程

          通過108遠(yuǎn)程登錄109實(shí)驗(yàn),說明ARP通信過程:

          1)清除ARP緩存中目標(biāo)地址(否則ARP通信不被執(zhí)行)

          sudo arp -d 192.168.1.109

          2)使用tcpdump抓ARP包。

          sudo tcpdum -i eth0 -ent '(dst 192.168.1.109 and src 192.168.1.108) or (dst 192.168.1.108 adn 192.168.1.109)'

          3)在測(cè)試機(jī)器執(zhí)行telnet命令,遠(yuǎn)程登錄192.168.1.109機(jī)器。

          telnet 192.168.1.109 echo

          當(dāng)執(zhí)行telnet命令并在兩臺(tái)通信主機(jī)之間建立TCP連接后(telnet輸出"Connected to 192.168.1.109"),輸入Ctrl+]調(diào)出telnet程序命令提示符,然后再telnet命令提示符后輸入quit,退出telnet客戶端程序(因?yàn)锳PR通信在TCP連接建立之前就已經(jīng)完成,故不需要關(guān)心后續(xù)內(nèi)容)。tcpdump抓到的眾多數(shù)據(jù)包中,只有最靠前的兩個(gè)和ARP通信有關(guān)系。顯示如下:

          圖7 首次遠(yuǎn)程登錄以太網(wǎng)幀

           由tcpdump抓起的數(shù)據(jù)包本質(zhì)上是以太網(wǎng)幀,通過該命令的眾多選項(xiàng)來控制幀的過濾(比如用dst和src指定通信的目的端IP地址和源端IP地址)和顯示(比如用-e選項(xiàng)開啟以太網(wǎng)幀頭部信息的顯示)。

          第一個(gè)數(shù)據(jù)包中,ARP通信源端物理地址是00:16:d3:5c:b9:e3,目的端物理地址是ff:ff:ff:ff:ff:ff,為以太網(wǎng)廣播地址,表示整個(gè)局域網(wǎng)。該局域網(wǎng)上所有的機(jī)器都會(huì)收到并處理這樣的幀。數(shù)值0x0806是以太網(wǎng)幀頭部的類型字段的值,表示分用的目標(biāo)是ARP模塊。該以太網(wǎng)幀長(zhǎng)度為42字節(jié)(實(shí)際上是46字節(jié),tcpdump為統(tǒng)計(jì)以太網(wǎng)幀尾部4個(gè)字節(jié)的CRC字段),其中數(shù)據(jù)部分長(zhǎng)度為28字節(jié)。“Request”表示這是一個(gè)ARP請(qǐng)求,“who-has 192.168.1.109 tell 192.168.1.108”則表示108機(jī)器要查詢的109機(jī)器的IP地址。

          第二個(gè)數(shù)據(jù)包中,ARP通信的源端物理地址是08:00:27:53:10:67,目標(biāo)端的物理地址是00:16:d3:5c:b9:e3。“Reply”表示這是一個(gè)請(qǐng)求應(yīng)答,“192.168.1.109 is at 08:00:27:53:10:67”則表示目標(biāo)機(jī)器109報(bào)告其物理地址。該以太網(wǎng)幀長(zhǎng)度為60字節(jié)(實(shí)際上是64字節(jié)),可見它使用了填充字節(jié)來滿足最小幀長(zhǎng)度。

          圖8 ARP通信過程

           

          5、DNS工作原理

           通過域名查詢服務(wù)將機(jī)器域名轉(zhuǎn)換成IP地址,實(shí)現(xiàn)方式有NIS(Network Information Service,網(wǎng)絡(luò)信息服務(wù))、DNS和本地靜態(tài)文件。

          5.1 DNS查詢和應(yīng)答報(bào)文

           DNS是一套分布式的域名服務(wù)系統(tǒng)。每個(gè)DNS服務(wù)器上都存放著大量的機(jī)器名和IP地址的映射,并且是動(dòng)態(tài)更新的。網(wǎng)絡(luò)客戶端程序都使用DNS協(xié)議來向DNS服務(wù)器查詢目標(biāo)主機(jī)的IP地址。

          DNS查詢和應(yīng)答報(bào)文格式:

          16位標(biāo)識(shí)字段用于標(biāo)記一對(duì)DNS查詢和應(yīng)答,以此區(qū)分一個(gè)DNS應(yīng)答是哪個(gè)DNS查詢的響應(yīng)。

          16位標(biāo)志段用于協(xié)商具體的通信方式和反饋通信狀態(tài)。DNS報(bào)文頭部的16位標(biāo)志段如下圖所示:

          • QR,查詢/應(yīng)答標(biāo)志。0=查詢報(bào)文,1=應(yīng)答報(bào)文。

          • opcode,定義查詢和應(yīng)答類型。0=標(biāo)準(zhǔn)查詢,1=反向查詢(由IP地址獲得主機(jī)域名),2=請(qǐng)求服務(wù)器狀態(tài)。

          • AA,授權(quán)應(yīng)答標(biāo)志,僅由應(yīng)答報(bào)文使用。1=域名服務(wù)器是授權(quán)服務(wù)器。

          • TC,截?cái)鄻?biāo)志,僅當(dāng)DNS報(bào)文使用UDP服務(wù)時(shí)使用。因?yàn)閁DP數(shù)據(jù)報(bào)有長(zhǎng)度限制,所有過長(zhǎng)的DNS報(bào)文將被截?cái)啵?表示DNS報(bào)文超過512字節(jié),并被截?cái)唷?/p>

          • RD,遞歸查詢標(biāo)志。1=執(zhí)行遞歸查詢,即如果目標(biāo)DNS服務(wù)器無法解析某個(gè)主機(jī)名,則它將向其他DNS服務(wù)器繼續(xù)查詢,如此遞歸,直到獲得結(jié)果并把該結(jié)果返回給客戶端。0=執(zhí)行迭代查詢,即如目標(biāo)DNS服務(wù)器無法解析某個(gè)主機(jī)名,則它將自己知道的其他DNS服務(wù)器的IP地址返回給客戶端,以供客戶端參考。

          • RA,允許遞歸標(biāo)志。僅由應(yīng)答報(bào)文使用,1表示DNS服務(wù)器支持遞歸查詢。

          • zero,這3位未用,必須都設(shè)置為0。

          • rcode,5位返回碼,表示應(yīng)答狀態(tài)。0=無錯(cuò)誤,3=域名不存在。

          接下來的4個(gè)字段則分別指出DNS報(bào)文的最后4個(gè)字段的資源記錄數(shù)目。對(duì)查詢報(bào)文而言,它一般包含1個(gè)查詢問題,而應(yīng)答資源記錄數(shù)、授權(quán)資源記錄數(shù)和額外資源記錄上則為0。應(yīng)答報(bào)文的應(yīng)答資源記錄數(shù)則至少為1,而授權(quán)資源記錄數(shù)和額外資源記錄數(shù)可為0或非0。

          查詢問題格式如下圖:

          查詢名以一定的格式封裝要查詢的主機(jī)域名。16位查詢類型表示如何執(zhí)行查詢操作,常見的類型有如下幾種:

          • 類型A,值=1,表示獲取目標(biāo)主機(jī)的IP地址。

          • 類型CNAME,值=5,表示獲取目標(biāo)主機(jī)的別名。

          • 類型PTR,值=12,表示反向查詢。

          16位查詢類通常位1,表示獲取因特網(wǎng)地址(IP地址)。

          應(yīng)答字段、授權(quán)字段和額外信息字段都使用資源記錄(Resource Record,RR)格式。資源記錄格式如下圖:

          上圖中,32位域名是該記錄中與資源對(duì)應(yīng)的名字,其格式和查詢問題中的查詢名字段相同。16位類型和16位類字段的含有也與DNS查詢問題的對(duì)應(yīng)字段相同。

          32位生存時(shí)間表示該查詢記錄結(jié)果可被本地客戶端程序緩存多上時(shí)間,單位是秒。

          16位資源數(shù)據(jù)長(zhǎng)度字段與資源數(shù)據(jù)字段的內(nèi)容取決于類型字段。對(duì)類型A而言,資源數(shù)據(jù)是32位的IPv4地址,而資源數(shù)據(jù)長(zhǎng)度則為4字節(jié)。

          5.2 Linux下訪問DNS服務(wù)

          訪問DNS服務(wù),必須知道DNS服務(wù)器的IP地址。Linux使用/etc/resolv.conf文件來存放DNS服務(wù)器IP地址。

          其中,兩個(gè)IP地址分別是首選DNS服務(wù)器地址和備選DNS服務(wù)器地址。

          Linux下常用訪問DNS服務(wù)器的客戶端程序是host,比如下列命令是向首選DNS服務(wù)器219.239.26.42查詢機(jī)器www.baidu.com的IP地址:

          host命令輸出顯示,機(jī)器名www.baidu.com是www.a.shifen.com的別名。且該機(jī)器名對(duì)應(yīng)兩個(gè)IP地址。host命令使用DNS協(xié)議和DNS服務(wù)器通信,其-t選項(xiàng)表示DNS協(xié)議使用哪種各類型查詢。此處使用A類型,即通過機(jī)器的域名獲取其IP地址。

          5.3 使用tcpdump觀察DNS通信過程

          通過使用如下命令抓起LAN網(wǎng)上傳輸?shù)囊蕴W(wǎng)幀。

          sudo tcpdump -i enp2s0 -nt -s 500 port domain
          host
          -t A www.baidu.com

          使用tcpdump抓包時(shí),使用“port domain”來過濾數(shù)據(jù)包,表示只抓取使用domain(域名)服務(wù)的數(shù)據(jù)包,即DNS查詢和應(yīng)答報(bào)文。tcpdump輸出如下:

          這兩個(gè)數(shù)據(jù)包開始的“IP”指出,它們后面的內(nèi)容描述的是IP數(shù)據(jù)報(bào)。tcpdump以“IP地址.端口號(hào)”的形式來描述通信的某一端:以“>”表示數(shù)據(jù)傳輸?shù)姆较颍?gt;”前面是源端,后面是目的端。所以:

          • 第一個(gè)數(shù)據(jù)報(bào)是測(cè)試機(jī)器(IP地址:192.168.6.16)向其首先DNS服務(wù)器(192.168.6.1)發(fā)送DNS查詢報(bào)文(目的端口53是DNS服務(wù)使用的端口號(hào)),數(shù)值51930是DNS查詢報(bào)文標(biāo)志,因此也出現(xiàn)在DNS應(yīng)答報(bào)文中。"+"表示啟用遞歸查詢標(biāo)志,"A?"表示使用A類型查詢方式,"www.baidu.com"則是DNS查詢問題中的查詢名。括號(hào)中的數(shù)值31表示DNS查詢報(bào)文的長(zhǎng)度(以字節(jié)文單位);

          • 第二個(gè)數(shù)據(jù)報(bào)是服務(wù)器反饋的DNS應(yīng)答報(bào)文。數(shù)據(jù)包中,"3/0/0"表示該報(bào)文中包含3個(gè)應(yīng)答資源記錄,0個(gè)授權(quán)資源記錄和0個(gè)額外信息記錄。" CNAME www.a.shifen.com., A 180.101.49.12, A 180.101.49.11 "表示3個(gè)應(yīng)答資源記錄的內(nèi)容。其中CNAME表示緊隨其后的記錄是機(jī)器的別名,A表示緊隨其后的記錄是IP地址。應(yīng)答報(bào)文的長(zhǎng)度為90字節(jié)。

          注:

          開啟tcpdump -X選項(xiàng),可以看到DNS報(bào)文的每一個(gè)字節(jié)。也就明白上面31字節(jié)查詢報(bào)文和90字節(jié)應(yīng)答報(bào)文的具體含義,如下圖所示:

          5.4 Socket與TCP/IP協(xié)議族的關(guān)系

          因?yàn)閿?shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層協(xié)議是在內(nèi)核中實(shí)現(xiàn)的。因此操作系統(tǒng)需要實(shí)現(xiàn)一組系統(tǒng)調(diào)用,使得應(yīng)用程序能夠訪問這些協(xié)議提供的服務(wù)。實(shí)現(xiàn)這組系統(tǒng)調(diào)用的API(Application Programming Interface,應(yīng)用程序編程接口)主要有兩套:socket和XTI,其中XTI已基本棄用。

          由socket定義的這組API提供如下兩點(diǎn)功能:一是將應(yīng)用程序數(shù)據(jù)從用戶緩沖區(qū)中復(fù)制到TCP/UDP內(nèi)核發(fā)送緩沖區(qū),以較復(fù)內(nèi)核來發(fā)送數(shù)據(jù)(比如send函數(shù)),或者是從內(nèi)核TCP/UDP接收緩沖區(qū)中復(fù)制數(shù)據(jù)到用戶緩沖區(qū),以讀取數(shù)據(jù);二是應(yīng)用程序可以通過它們來修改內(nèi)核中各層協(xié)議的某些頭部信息或其他數(shù)據(jù)結(jié)構(gòu),從而精細(xì)地控制底層通信行為。比如可通過setsockopt函數(shù)來設(shè)置IP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)上的存活時(shí)間。

          另外,socket是一套通用網(wǎng)絡(luò)編程接口,不但可以訪問內(nèi)核中TCP/IP協(xié)議棧,而且可以訪問其他網(wǎng)絡(luò)協(xié)議棧(如:X.25協(xié)議棧、UNIX本地域協(xié)議棧等)。

          鏈接:https://www.cnblogs.com/zhongqifeng/p/14555474.html

          (版權(quán)歸原作者所有,侵刪)


          瀏覽 142
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色情A片视频 | 国产夜夜叉 | 国产精品无码激情视频 | 欧美成人高清 | 日韩一级a |