序
我計劃開發一個系列專欄,将自己在網絡方面的積累完善成一個系列知識,讓讀者的監督和拍磚督促自己并提高自己。如果在讀本人的系列文章得到些許收獲,那對我來說是更大的收獲。 本系列的閱讀應該不分先後,找自己感興趣的話題閱讀即可。我盡量加入實際案例,并結合網絡知識進行闡述,希望能夠更加易于閱讀。本系列的核心工作是講述TCP/IP四層協定,是以重中之重是闡述TCP協定。
網絡協定基礎
如果大學開設《計算機網絡》課程的同學,一定聽說過OSI 7層網絡模型。底層協定為上層協定提供基礎服務,底層協定封裝醜陋的細節,以優雅的接口展示出來。 這就是典型的程式設計思路,抽象。也是協定需要分層次的主要目的之一,我想另一個目的是降低實作的複雜度,讓每一層隻關心該層次的問題。如果一個簡單1+1算法恐怕無需勞師動衆,可想而知,網絡通訊需要設計OSI 7層模型,一定是複雜無比的工程。 首先必須認識到網絡的複雜,其次應該懷有一定目的了解網絡協定,是以在戰略上藐視對方,戰術上重視對方,可以說我們需要打赢一場局部戰争。讓你了解的知識為你所用即可。
OSI七層網絡模型
OSI(Open System Interconnection)全稱開放式系統互聯參考模型。 ISO(International Organization for Standardization)全稱國際标準化組織 也有人說ISO七層次網絡模型,都是說一回事,了解為ISO這個組織制定了OSI這樣的七層網絡模型。
OSI七層模型從下至上依次為:實體層、資料鍊路層、網絡層、傳輸層、會話層、表示層、應用層。
OSI是标準委員會推選的網絡模型,但是由于層次過于複雜目前卻未被實作,典型的作業系統BSD實作了TCP/IP四層網絡模型。之後越來越多的作業系統廠商都是以TCP/IP四層網絡模型為藍本進行實作,是以工業界的标準就是TCP/IP四層網絡模型。
TCP/IP四層網絡模型
TCP/IP模型并不是自立門戶,推翻OSI的七層網絡模型另起鍋竈,而是将OSI的七層模型進行簡化至四層。我們看下兩種模型的對照圖。
TCP/IP模型從下至上依次為:鍊路層、網絡層、傳輸層、應用層。
簡單描述兩者的差別,OSI模型的網絡層、傳輸層和TCP/IP模型一緻。OSI模型的實體層、鍊路層對應TCP/IP模型的鍊路層。OSI模型的會話層、表示層、應用層對應TCP/IP模型的應用層。
可以說TCP/IP簡化的實體層和應用層,譬如HTTP協定屬于應用層協定,但是HTTP協定裡定義了會話的概念,是以是TCP/IP協定應用層有實作OSI定義的會話層。而作業系統提供者無需實作應用層,是以作業系統網絡協定棧隻需要關心鍊路層、網絡層、傳輸層的實作即可。如此TCP/IP協定大大降低作業系統協定棧的實作複雜度。是以也受到各個作業系統廠家的認同。
至此,後續我們所描述的各個層次和各種協定都是基于TCP/IP四層模型,因為它是實際工業标準,也在真實發揮着作用。
TCP/IP協定族
鍊路層
資料機關: Frame (幀) 典型協定: 以太網協定(RFC 894) 這個不用說,大家天天在用的以太網的協定。
ARP/RARP (Address Resolution Protocol)/ (Reverse Address Resolution Protocol) 位址解析協定與逆位址解析協定。
SLIP協定(Serial Line Internet Protocol)
串行線路國家标準。
PPP協定 (Port to Port Protocol) 點對點協定,常用PPPoe(PPP over Ethernet),撥号上網使用者會用到。
LO(Loopback Interface) 環回接口,支援一台實體機上的程序通過Socket通信。常用程序通信方式。
PPTP/L2TP協定 (Point to Point Tunneling Protocol)/ (Layer 2 Tunneling Protocol)
使用VPN時候會經常用到。
不常見的協定: X.25,LAP-B,IEEE 802(RFC 1042)
重要概念: MTU(最大傳輸單元) 可以認為每個Frame的最大Bit資料,協定邏輯限制而非實體限制,限制是為了提高傳輸效率。
網絡層
資料機關:Packet (包) 典型協定: IP協定(Internet Protocol) 網際協定/網際網路協定。基礎協定。
ICMP協定 (Internet Control Message Protocol) Internet控制封包協定。常用的ping,traceroute指令就是基于該協定。
IGMP協定 (Internet Group Management Protocol) Internet組管理協定。多點傳播場景會使用到。
重要概念: 子網:網絡組網的基礎,路由的基礎。 IP路由:網絡傳輸的路由機制。 NAT: 區域網路基礎。
傳輸層
資料機關: Segment (段) 典型協定: UDP (User Datagram Protocol) 使用者資料報協定。基礎協定。
TCP(Transmission Control Protocol ) 傳輸控制協定。基礎協定。
SCTP(Stream Control Transmission Protocol)
流控制傳輸協定。
應用層
資料機關: Data(資料)
典型協定:
HTTP、FTP、DNS、SMTP、TELNET、NTP等等。
我所接觸的其他協定:
SIP、RTP、RTCP、RTSP、DDNS、UPNP等等。
小結
計算機網絡是一個生态系統,不僅需要硬體和軟體的結合,還需要各種配套。如果從程式員角度來看,需要硬體工程師設計網絡硬體,驅動工程師開發網絡驅動,作業系統工程師開發網絡協定棧、上層軟體工程師開發出應用層服務。 我本着知識為我所有的态度,盡可能的将自己的些許了解闡述出來。以計算機網絡協定為半徑,直指網絡核心TCP/IP圓心,并不涉獵整個計算機網絡體系,而側重計算機網絡協定。
參考
《TCP/IP詳解-協定》卷一 W.Richard Stevens
修訂
初稿 2014-10-12 Simon