freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

tcp協(xié)議和udp協(xié)議-全文預(yù)覽

2025-11-21 11:04 上一頁面

下一頁面
  

【正文】 立給定類型的 TSAP。(如果連接類型為 SOCK_DGRAM,那么套接字將被馬上關(guān)閉)。因此始終需要檢查 read 或 recv 的返回值,并做相應(yīng)的處理。 6 關(guān)閉連接: 套接字是一種雙向通信機(jī)制,因此通信一方不可能預(yù)先知道當(dāng)通信發(fā)生中斷時(shí),對(duì)方進(jìn)程是在進(jìn)行讀操作還是寫操作。與 recv 類似, flags 參數(shù)影響消息發(fā)送的方式。 MSG_OOB 普通數(shù)據(jù)被忽略,進(jìn)程只接收“帶外數(shù)據(jù)”,例如中斷信號(hào)。 recv 調(diào)用從指定的文件描述符讀取數(shù)據(jù),存放到 buffer 中, buffer 的長度是 length。 send 和 recv 可以簡單地用作 read 和 write。 5 數(shù)據(jù)的發(fā)送和接收: 如果上述工作成功完成,那么在客戶機(jī)和服務(wù)器之間就建立了一個(gè)通信通路。 4 連接: 為了向服務(wù)器請(qǐng)求連接,客戶端使用 connect 系統(tǒng)調(diào)用。 address 參數(shù)將被客戶端的信息填充。第二個(gè)套接字是由 accept 來完成的。服務(wù)器最多可以將 queue_size 個(gè)進(jìn)入的連接請(qǐng)求排入隊(duì)列。 2 監(jiān)聽: 綁定之后,在任何客戶端系統(tǒng)可以連接到新建立的服務(wù)器端點(diǎn)之前,服務(wù)器必須設(shè)定為等待連接。第二個(gè)參數(shù)在這里使用一個(gè)包含服務(wù)器地址信息的 struct sockaddr_in 類型地址。 面向連接編程模型 面向連接編程模型使用的主要系統(tǒng)調(diào)用 在面向連接編程模型中,下列系統(tǒng)調(diào)用是必要的。參數(shù)值SOCK_STREAM 為面向連接模型, SOCK_DGRAM 為面向無連接類型。 其中, domain 參數(shù)告訴系統(tǒng)這個(gè)套接字用于何處。 對(duì)于 UNIX 域,在 sys/中定義結(jié)構(gòu): struct sockaddr_un{ short sun_family; /*AF_UNIX*/ char sun_path[108]; /*pathname*/ }。 對(duì)許多網(wǎng)絡(luò)程序例子中幾乎開頭都有一行 includesys/ 這個(gè)標(biāo)題文件提供了整個(gè)系統(tǒng)使用的 C 定義和數(shù)據(jù)類型定義。 /*inter address family*/ in_port_t sin_port。 /* address family */ char sa_data[]。 49151上限是新的,因?yàn)?RFC1700 所列的上限為 65535。這些端口不受 IANA 控制。這些端口由 IANA 分配和控制。所有眾所周知的端口都是保留端口,因此分配這些端口的服務(wù)器啟動(dòng)時(shí)必須具有超級(jí)用戶的權(quán)限。 某些號(hào)碼是眾所周知的端口號(hào),而且根據(jù)約定被認(rèn)為是提供特定的服務(wù),例如 tel 服務(wù)。 如果一個(gè)進(jìn)程希望在以后的調(diào)用中引用自己機(jī)器的地址,那么可以通過使用頭文件i/,以 in_addr_t 的格式將常量 INADDR_ANY 定義為本地主機(jī)地址的縮寫。 i_addr 函數(shù)將類似“ ”格式的字符串作為參數(shù),返回適當(dāng)類型的互連網(wǎng)地址。 UNIX 網(wǎng)絡(luò)系統(tǒng)調(diào)用不能識(shí)別 4 個(gè)十進(jìn)制數(shù)字格式的 IP 地址。地址一般是分層的,描述了網(wǎng)絡(luò)的不同級(jí)別。針對(duì)面向連接的模型使用傳輸控制協(xié)議( TCP);針對(duì)面向無連接的模型使用用戶數(shù)據(jù)報(bào)協(xié)議( UDP)。本節(jié)主要討論套接字接口。 80 年代初期, Berkeley UNIX 系統(tǒng)開發(fā)人員提出了著名的套接字接口概念,并在后來被廣泛使用;而系統(tǒng) V 的開發(fā)人員在 1986年發(fā)布了傳輸層接口( TLI)。該地址實(shí)際給出了機(jī)器在網(wǎng)絡(luò)中的物理位置。 傳輸層端口號(hào) 在現(xiàn)代計(jì)算環(huán)境中,用戶和開發(fā)人員面對(duì)的是基于客戶機(jī) /服務(wù)器原理的網(wǎng)絡(luò)環(huán)境。 3. 客戶到服務(wù)員的報(bào)文段:對(duì)服務(wù)員的 FIN 的 ACK,它也確認(rèn)了服務(wù)員的 SYN、數(shù) 據(jù)和 FIN。 通過使用上述這些特征,最小的事務(wù)序列是交換三個(gè)報(bào)文段: 1. 由一個(gè)主動(dòng)打開引起的從客 戶到服務(wù)員的報(bào)文段:客戶的 SYN、客戶的請(qǐng)求、客戶的 FIN 和客戶的 CC。 這種“加速打開”避免了使用三次握手的要求,除非客戶或者服務(wù)員已經(jīng)崩潰并重新啟動(dòng)。這個(gè)連接稱為半同步。這個(gè)選項(xiàng)的長度為 6 個(gè)字節(jié),包含發(fā)送方在該連接 上的 32bit 的 CC 值。 TCP 為處理事務(wù)而需要進(jìn)行的兩個(gè)改動(dòng)是為了避免三次握手和縮短 WAIT_TIME 狀態(tài)。 TCP 提供了過多的事務(wù)特征,而 UDP 則不夠。 1. 應(yīng)該避免連接建立和連接釋放的開銷,在可能的時(shí)候,發(fā)送一個(gè)請(qǐng)求分組并接收一個(gè)應(yīng)答分組。一個(gè)連接的生存時(shí)間包括三個(gè)不同的階段:建立連接、數(shù)據(jù)傳輸和釋放連接。這個(gè)序號(hào)就是接收方期望的序號(hào)。只有在它從另一方的 SYN 報(bào)文中收到了這個(gè)選項(xiàng)之后,該選項(xiàng)才會(huì)在以后的報(bào)文段中進(jìn)行設(shè)置。 RFC1323 中推薦在 1 毫秒和 1 秒之間將時(shí)間戳的值加 1。然而,較大的窗口大小需要進(jìn)行更好的 RTT 計(jì)算。緩存的大小由系統(tǒng)設(shè)置,但是通常向應(yīng)用進(jìn)程提供了修改途徑。 假定正在使用窗口擴(kuò)大選項(xiàng),發(fā)送移位計(jì)數(shù)為 S,而接收移位計(jì)數(shù)為 R。 TCP 連接的發(fā)起方在其 SYN 報(bào)文中發(fā)送這個(gè)選項(xiàng),但是 TCP 連接的接收方只能夠在收到帶有這個(gè)選項(xiàng)的 SYN 之后才可以發(fā)送這個(gè)選項(xiàng)。這種擴(kuò)展不是通過修改 TCP 首部來實(shí)現(xiàn)的, TCP 的首部仍然使用 16bit,而是通過定義一個(gè)選項(xiàng)實(shí)現(xiàn)對(duì) 16bit 的擴(kuò)大操作( Scaling Operation)來完成的。 ? TCP 對(duì)每個(gè)字節(jié)數(shù)據(jù)使用一個(gè) 32bit 無符號(hào)的序號(hào)進(jìn)行標(biāo)識(shí)。 ? 許多 TCP 實(shí)現(xiàn)對(duì)每個(gè)窗口的 RTT 僅進(jìn)行一次測(cè)量 。 ? 在一個(gè)長肥網(wǎng)絡(luò) LFN 內(nèi)的分組丟失會(huì)使網(wǎng)絡(luò)吞吐量急劇減少。表 22 列出了一些典型網(wǎng)絡(luò)的某些數(shù)值。這些開銷的減少與網(wǎng)絡(luò)(分組首部負(fù)荷)、路由器(選路的決定)和主機(jī)(協(xié)議處理和設(shè)備中斷)等諸多因素有關(guān)。對(duì)于本地目的主機(jī),也可以避免在中間鏈路(如以太網(wǎng))的 MTU 小于端點(diǎn)網(wǎng)絡(luò)(如令牌環(huán))的情況下進(jìn)行分片。 由于路由經(jīng)常動(dòng)態(tài)變化,因此在最后一次減少路徑 MTU 的一段時(shí)間以后,可以嘗試使用一個(gè)較大的值(直到等于對(duì)端聲明的 MSS 或輸出接口 MTU 的最小值)。 如果收到一個(gè)“不能分片”的 ICMP 差錯(cuò), TCP 就減少段大小并進(jìn)行重傳。路徑 MTU 的發(fā)現(xiàn)不允許 TCP 超過對(duì)端聲明的MSS。 路徑 MTU 發(fā)現(xiàn)在 IP 首部中繼承并設(shè)置“不要分片( DF)”比特,來發(fā)現(xiàn)當(dāng)前路徑上的路由器是否需要對(duì)正在發(fā)送的 IP 數(shù)據(jù)報(bào)進(jìn)行分片。 兩臺(tái)主機(jī)之間的路徑 MTU 不一定 是一個(gè)常數(shù),它取決于當(dāng)時(shí)路由算法所選擇的路由。 當(dāng)在同一個(gè)網(wǎng)絡(luò)上的兩臺(tái)主機(jī)互相進(jìn)行通信時(shí),該網(wǎng)絡(luò)的 MTU 是十分重要的。盡管 TCP 在比以太網(wǎng)速率高的環(huán)境(如 T2 電話線、 FDDI 等)下也能夠正常運(yùn)行,但在這些高速網(wǎng)絡(luò)環(huán)境下, TCP 的某些限制就會(huì)暴露出來。其它 kind 值為 6 和 7 的四個(gè)選項(xiàng)稱為 ACK 及回顯選項(xiàng)。 每個(gè) TCP 選項(xiàng)的開始是 1 字節(jié)的 kind 字段,該字段說明選項(xiàng)的類型。 同時(shí)關(guān)閉與正常關(guān)閉使用的報(bào)文段交換數(shù)目相同。 當(dāng)應(yīng)用層發(fā)出關(guān)閉命令時(shí),兩端均從 ESTABLISHED 變?yōu)?FIN_WAIT_1。當(dāng)收到半關(guān)閉的一端在完 成它的數(shù)據(jù)傳送后,將發(fā)送一個(gè) FIN 報(bào)文段以關(guān)閉這個(gè)方向的連接。 圖 27 描述了一個(gè)半關(guān)閉的典型例子。 TCP 的半關(guān)閉 TCP 提供了連接的一端在結(jié)束它的發(fā)送后還能接收來自另一端數(shù)據(jù)的能力。而區(qū)分地址是本地的還是非本地的是很簡單的,如果目的 IP 地址的網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)都和源 IP 地址的網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)相同,則是本地的;否則是非本地的。 由于許多 BSD 的實(shí)現(xiàn)版本需要 MSS 的值是 512 的倍數(shù),對(duì)于 BSD/386和 SVR4的 MSS 值為 1024。報(bào)文段越大允許每個(gè)報(bào)文段傳送的數(shù)據(jù)就越多,相對(duì) IP 和 TCP 首部有更高的網(wǎng)絡(luò)利用率。但它并不是在任何條件下都可以協(xié)商。然而,一般由客戶端決定何時(shí)終止連接,因?yàn)榭蛻暨M(jìn)程通常由用戶交互控制。 圖 26 顯示了釋放一個(gè) TCP 連接的典型握手 順序。這種情況對(duì)于利用半關(guān)閉的應(yīng)用是可以的,盡管在實(shí)際的應(yīng)用中只有很少的TCP 應(yīng)用程序這樣做。即當(dāng) TCP 連接的一方完成它的數(shù)據(jù)發(fā)送后就能發(fā)送一個(gè) FIN 來終止這個(gè)方向的連接;當(dāng) TCP 連接的另一端收到一個(gè) FIN,它必須通知應(yīng)用層 對(duì)方已經(jīng)終止了那個(gè)方向上的數(shù)據(jù)傳送。 在 中,系統(tǒng)初始化時(shí)初始的發(fā)送序號(hào)被初始化為 1。 ISN 隨時(shí)間變化,因此每個(gè) TCP 連接都將具有不同的 ISN。 這三個(gè)報(bào)文段的傳遞完成了一個(gè) TCP 連接的建立,如圖 25 所示,這個(gè)過程也稱為三次握手( threeway handshake)。 2. 服務(wù)器發(fā)回包含服務(wù)器的初始序號(hào)的 SYN 報(bào)文段(報(bào)文段 2)作為應(yīng)答。在處理超時(shí)的許多情況下,也會(huì)發(fā)送不帶任何數(shù)據(jù)的報(bào)文段。它 指明本端所能接收的最大長度的報(bào)文段。緊急指針是一個(gè)正的偏移量,和序號(hào)字段中的值相加表示緊急數(shù)據(jù)最后一個(gè)字節(jié)的序號(hào)。 檢查和覆蓋了整個(gè)的 TCP 報(bào)文段,包括 TCP 首部和 TCP 數(shù)據(jù)。 在 TCP 首部中有 6 個(gè)標(biāo)志比特,它們中的多個(gè)可以被同時(shí)置 1。 首部長度給出首部中 32bit 字的數(shù)目。當(dāng)前還無法對(duì)數(shù)據(jù)流中選定的部分進(jìn)行確認(rèn)。 TCP 連接為應(yīng)用層提供全雙工服務(wù),數(shù)據(jù)能在兩個(gè)方向上獨(dú)立地進(jìn)行傳輸。因此,確認(rèn)序號(hào)應(yīng)當(dāng)是上次已經(jīng)成功收到數(shù)據(jù)字節(jié)序號(hào)加 1。 當(dāng)建立一個(gè) TCP 連接時(shí), SYN 標(biāo)志置 1。一個(gè)插座對(duì)( socket pair) (包括客戶 IP 地址、客戶端口號(hào)、服務(wù)器 IP 地址和服務(wù)器端口號(hào)的四元組 )可以唯一確定互連網(wǎng)絡(luò)中每個(gè) TCP 連接的雙方。 每個(gè) TCP 段都包含源端和目的端的端口號(hào),用于定位接收和發(fā)送應(yīng)用進(jìn)程,端口號(hào)是由本地操作系統(tǒng)分配的,在單機(jī)內(nèi)部是唯一的;而一個(gè)主機(jī)的 IP 地址唯一地標(biāo)識(shí)了網(wǎng)絡(luò)中的主機(jī)。Unix 的內(nèi)核對(duì)一個(gè)應(yīng)用讀或?qū)懙膬?nèi)容不作任何解釋,而是交給應(yīng)用程序處理。 另外, TCP 對(duì)字節(jié)流的內(nèi)容不作任何解釋。 TCP 不在字節(jié)流中插入標(biāo)識(shí)符,通常稱為字節(jié)流服務(wù)( byte stream service)。 TCP 連接的每一方都有固定大小的緩沖空間。 ? TCP 報(bào)文段作為 IP 數(shù)據(jù)報(bào)中的數(shù)據(jù)來傳送,而 IP 數(shù)據(jù)報(bào)的到達(dá)可能亂序,因此TCP 報(bào)文段的到達(dá)也可能亂序。通常這個(gè)確認(rèn)不是立即發(fā)送,將延遲幾分之一秒。 ? 當(dāng) TCP 發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。 在一個(gè) TCP 連接中,只能是雙方進(jìn)行通信,而廣播和多播不能用于 TCP。 TCP 提供的服務(wù) 盡管 TCP 和 UDP 都使用相同的網(wǎng)絡(luò)層( IP), TCP 卻向應(yīng)用層提供與 UDP 完全不同的服務(wù)。 16 位源端口號(hào) 16 位目的端口號(hào) 16 位 UDP 長度 16 位 UDP 檢查和 數(shù)據(jù) (如果有) 0 15 16 31 8 字節(jié) TCP 校驗(yàn)錯(cuò)誤率比 UDP 要高,這可能是因?yàn)橄到y(tǒng)的 TCP 連接傾向于“長距離”,而 UDP主要用于本地。盡管這在單一的 LAN 上可能是可接受的, 因?yàn)樵跀?shù)據(jù)鏈路幀上的循環(huán) 冗余檢查能夠檢測(cè)到該幀的大多數(shù)錯(cuò)誤,當(dāng)這些數(shù)據(jù)報(bào)穿越路由器時(shí),所有位都關(guān)閉。 UDP 校驗(yàn)和是端對(duì)端校驗(yàn)和。解決辦法是在尾部追加 0 的填充字節(jié), 而這填充字節(jié)僅為計(jì)算校驗(yàn)和所需。而 IP 報(bào)頭中的校驗(yàn)和僅覆蓋該 IP 報(bào)頭,它不涉及 IP數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。盡管二者無關(guān),但若一個(gè)眾所周和的服務(wù) TCP 和 UDP 都提供,端口號(hào)通常取同一個(gè)值。 UDP 報(bào)頭 圖 22 列出了 UDP 報(bào)頭的各個(gè)域。鑒于這種不可靠性,我們或許認(rèn)為應(yīng)避免 UDP 而總使用一個(gè)可靠的協(xié)議。 UDP:用戶數(shù)據(jù)報(bào)協(xié)議 UDP 是一個(gè)簡單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議:進(jìn)程的每個(gè)輸出操作剛好產(chǎn)生一個(gè) UDP 數(shù)據(jù)報(bào),該數(shù)據(jù)報(bào)導(dǎo)致一個(gè) IP 數(shù)據(jù)報(bào)的發(fā)送。首先, TCP 提供客戶與服務(wù)器的連接;其次, TCP 提供可靠性;第三, TCP 通過給所發(fā)送數(shù)據(jù)的每一個(gè)字節(jié)關(guān)聯(lián)一個(gè)序列號(hào)進(jìn)行排序;第四, TCP 提供流量控制。 每個(gè) UDP 數(shù)據(jù)報(bào)都有一定的長度,可以把一個(gè)數(shù)據(jù)報(bào)看作一個(gè)記錄。 UDP是一個(gè)簡單的傳輸層協(xié)議,應(yīng)用程序?qū)懸粋€(gè)數(shù)據(jù)報(bào)到 UDP套接口,由它封裝成 IPv4或 IPv6 數(shù)據(jù)報(bào),然后發(fā)送到目的地址。 本章的焦點(diǎn)是計(jì)算機(jī)網(wǎng)絡(luò)傳輸層服務(wù),即面向連接服務(wù)和面向無連接服務(wù),它們所使用的相關(guān)協(xié)議分別是 TCP 協(xié)議和 UDP 協(xié)議。同時(shí)提供這些協(xié)議的實(shí)際設(shè)計(jì)、具體實(shí)現(xiàn)和相關(guān)的注意事項(xiàng)。盡管應(yīng)用程序可以繞過傳輸層直接使用 IPv4 或 IPv6,但這種方法(稱為原始套接口)使用較少。如果要確保一個(gè)數(shù)據(jù)報(bào)能夠到達(dá)目的地,必須在應(yīng)用程序中建立相應(yīng)的特性,主要包括:來自另一端的確認(rèn)、超時(shí)、重傳等等 。 向應(yīng)用程序提供的 TCP 服務(wù)與 UDP 服務(wù)不同。 只有深入理解 TCP 協(xié)議和 UDP 協(xié)議的某些特征,才能更容易編寫健壯的、高效的客戶服務(wù)器程
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1