天天看點

《UNIX網絡程式設計 卷1:套接字聯網API(第3版)》——第2章 傳輸層:TCP、UDP和SCTP 2.1概述

本節書摘來自異步社群《unix網絡程式設計 卷1:套接字聯網api(第3版)》一書中的第2章,第2.1節,作者:【美】w. richard stevens , bill fenner , andrew m. rudoff著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

本章提供本書示例所用tcp/ip協定的概貌。我們的目的是從網絡程式設計角度提供足夠的細節以了解如何使用這些協定,同時提供有關這些協定的實際設計、實作及曆史的具體描述的參考點。

本章的焦點是傳輸層,包括tcp、udp和sctp(stream control transmission protocol,流控制傳輸協定)。絕大多數客戶/伺服器網絡應用使用tcp或udp。sctp是一個較新的協定,最初設計用于跨網際網路傳輸電話信令。這些傳輸協定都轉而使用網絡層協定ip:或是ipv4,或是ipv6。盡管可以繞過傳輸層直接使用ipv4或ipv6,但這種技術(往往稱為原始套接字)卻極少使用。是以,我們把ipv4和ipv6以及icmpv4和icmpv6的較長的描述安排在附錄a中。

udp是一個簡單的、不可靠的資料報協定,而tcp是一個複雜、可靠的位元組流協定。sctp與tcp類似之處在于它也是一個可靠的傳輸協定,但它還提供消息邊界、傳輸級别多宿(multihoming)支援以及将頭端阻塞(head-of-line blocking)減少到最小的一種方法。我們必須了解由這些傳輸層協定提供給應用程序的服務,這樣才能弄清這些協定處理什麼,應用程序中又需要處理什麼。

tcp的某些特性一旦了解,就很容易編寫健壯的客戶和伺服器程式,也很容易使用諸如netstat等普遍可用的工具來調試客戶和伺服器程式。本章将闡述以下相關主題:tcp的三路握手、tcp的連接配接終止序列和tcp的time_wait狀态,sctp的四路握手和sctp的連接配接終止,加上由套接字層提供的tcp、udp和sctp緩沖機制,等等。

繼續閱讀