『壹』 怎樣算得上熟悉 TCP/IP 協議編程
抓包
先從熟悉的下手,HTTP,FTP。
封裝包
自己封裝包,和現有協議通信。TCP/IP協議作為一個底層協議,不僅可以編寫聊天程序,很多高層協議都是基於TCP/IP編寫的。
自己造輪子,這樣也有助於理解其它協議,比如連接、查詢MySQL(用Socekt函數而不是庫函數),自己封裝一個memched函數庫…
以前我大學時用perl發送「飛鴿傳書」包,經常上課的時候同學們集體收到彈出信息,卻不知道發送者是誰,很有成就感。如果你做已經事沒有成就感,就很快會失去動力。
他山之石
經常去github。
源碼
讀讀TCP/IP協議的實現代碼,去翻翻 Linux 1.0 源碼。
能進行網路編程
1.如果你說你會select,epoll,iocp模型,那會讓對方覺得更靠譜
2.如果你說出你做過im,下載之類那會讓對方來興趣.
3.如果你說設計了通訊協議,會讓對方覺得更貼切
4.如果你說做過,熟悉, ftp http snmp smtp 這些簡單的老古董協議,會加分,但不大.
5.如果你說熟悉bt,emule,udt等協議,那會對你很有好感.
6.如果你說你破解過某大牌 qq,360內某通訊協議,那會對你加分很大.
目測樓主在0.5的位置,嘿嘿
我對熟悉的定義是:閉著眼能想起原理和實現,能和其他人侃侃而談,能在搜索的幫助下,不慢的整出來.
精通的定義是:觀點一針見血,實現一揮而就.
1)熟悉TCP/IP協議族的基本原理
IP地址的分類,定義,獲得,大概的管理方法
TCP、UDP等主要協議的特點,主要格式,以及重要欄位在協議交互中起到的作用。
2)對於簡單的TCP/IP協議導致的問題,有基本的判斷
熟悉網路問題的解決方法,一個問題,應該是由上而下(top-button),還是由下而上(button-top)來分析?
3)基本的編程知識。
在系統內,構建簡單通信。
在系統間,構建簡單的通信。
熟悉系統內的API,知道在什麼時候,改使用哪些API協調工作。
能夠熟練使用這些API,在系統間傳遞信息,文件。
能夠熟練使用這些API,實現自己的簡單的私有協議。
4)進階編程知識
知道一兩個已經封裝好的框架(framwork),它們之間的差別。
使用一個框架,寫過能正常工作的程序。
知道網路協議處理也是要講究性能的,知道性能的瓶頸會在什麼地方產生。
能有較好的設計技巧,將私有協議設計得更加具有彈性,優雅。
熟悉系統間協議處理的細微的差異,以及將會對業務造成的影響,時延、狀態不一致、自定義欄位、、、、、
5)熟練階段的知識
針對業務的需求,快速選型,定框架。
不再認為多線程是萬能的。
知道穩定性比性能更加重要。
數據包去了哪兒,不用看代碼,也能預估出來。
6)源代碼是最好的老師,永遠都是。
『貳』 網路方案設計過程主要分哪幾個步驟
步驟如下:
1,需求調研
2,需求分析
3,概要設計
4,詳細設計
設計方案內容包括:網路拓撲、IP地址規劃、網路設備選型等等。
(2)網路編程與分層協議設計擴展閱讀:
網路工程設計原則
網路信息工程建設目標關繫到現在和今後的幾年內用戶方網路信息化水平和網上應用系統的成敗。在工程設計前對主要設計原則進行選擇和平衡,並排定其在方案設計中的優先順序,對網路工程設計和實施將具有指導意義。
1,實用、好用與夠用性原則
計算機與外設、伺服器和網路通信等設備在技術性能逐步提升的同時,其價格卻在逐年或逐季下降,不可能也沒必要實現所謂「一步到位」。所以,網路方案設計中應採用成熟可靠的技術和設備,充分體現「夠用」、「好用」、「實用」建網原則,切不可用「今天」的錢,買「明、後天」才可用得上的設備。
2,開放性原則
網路系統應採用開放的標准和技術,資源系統建設要採用國家標准,有些還要遵循國際標准(如:財務管理系統、電子商務系統)。其目的包括兩個方面:第一,有利於網路工程系統的後期擴充;第二,有利於與外部網路互連互通,切不可「閉門造車」形成信息化孤島。
3,可靠性原則
無論是企業還是事業,也無論網路規模大小,網路系統的可靠性是一個工程的生命線。比如,一個網路系統中的關鍵設備和應用系統,偶爾出現的死鎖,對於政府、教育、企業、稅務、證券、金融、鐵路、民航等行業產生的將是災難性的事故。因此,應確保網路系統很高的平均無故障時間和盡可能低的平均無故障率。
4, 安全性原則
網路的安全主要是指網路系統防病毒、防黑客等破壞系統、數據可用性、一致性、高效性、可信賴性及可靠性等安全問題。為了網路系統安全,在方案設計時,應考慮用戶方在網路安全方面可投入的資金,建議用戶方選用網路防火牆、網路防殺毒系統等網路安全設施;網路信息中心對外的伺服器要與對內的伺服器隔離。
5, 先進性原則
網路系統應採用國際先進、主流、成熟的技術。比如,區域網可採用千兆乙太網和全交換乙太網技術。視網路規模的大小(比如網路中連接機器的台數在250台以上時),選用多層交換技術,支持多層幹道傳輸、生成樹等協議。
6,易用性原則
網路系統的硬體設備和軟體程序應易於安裝、管理和維護。各種主要網路設備,比如核心交換機、匯聚交換機、接入交換機、伺服器、大功率長延時UPS等設備均要支持流行的網管系統,以方便用戶管理、配置網路系統。
7,可擴展性原則
網路總體設計不僅要考慮到近期目標,也要為網路的進一步發展留有擴展的餘地,因此要選用主流產品和技術。若有可能,最好選用同一品牌的產品,或兼容性好的產品。在一個系統中切不可選用技術和性能不兼容的產品。
『叄』 網路編程和協議問題,答得好再追300分啊!騙人我死!
UDP僅僅是幫助你把客戶端和服務端之間需要通信的內容盡可能的傳輸到對方。而這通信內容隨便你怎麼設定,你可以設定為一個字元串,或者設定為遵循一定協議的數據。
就你上面提的問題「你要涉及協議」,那麼需要做的工作就是通信前按照協議封裝協議,通信後解析協議。
『肆』 怎麼系統的自學網路編程(底層協議)
用java來實現網路編程是很容易的,可以作為網路編程的入門。使用C++和winsock相對復雜一些。
總之看實際需要了。
你好初學網路編程者可以從以下幾個步驟開展:
1)下載一個可以互動的學習工具,通過這個與這個工具互動,我們可以及時的學到每個api的結果如果。
對於有c/c++或java基礎的朋友通過一兩個禮拜的時間就可以上手了,另外個人建議初學者可以學習dive into python。
2)掌握網路編程中會用到的幾個基本概念和內涵,比如IP地址,port號,socket等
3)記住和消化網路編程C/S模型,把server和client端編程的常用模式理解和消化
4)花幾天時間學習socket api集,api集可以分為下面幾大類:創建 socket bind listen accept收發 read/recv/recvfrom write/send/sendto關閉 close shutdown參數 getsockopt/setsockopt地址 gethostbyaddr getaddrbyhost,...在學習這些api時候,可以先關注在函數功能,參數意義上
5)結合python互動平台,實踐socket api的用法,比如socket函數怎麼使用,bind怎麼使用等等。在互動過程中,我們可以變換參數,看看調用結果如何。比如,創建一個tcp socket的語法如下:socket(AF_INET,SOCK_STREAM)創建一個udp socket的語法如下:socket(AF_INET,SOCK_DGRAM)
6)學習socket server端編程實現簡單規約比如echo,time等,然後通過cmd中的telnet來測試。
7)學習I/O模型,比如阻塞、非阻塞和反應式(select,poll,WaitForMultipleObject)等
8)學習Richard Stevens的《Unix網路編程》,深入學習其中的api原理以及服務端設計原理,並通過代碼編寫。
9)下載高性能網路編程框架twisted,筆者強烈推薦,它將使你的網路編程效率提高10倍以上。
10)學習設計模式、操作系統知識比如線程、進程、同步等。
『伍』 老師的作業,網路協議包含哪些等
1. 關於計算機網路的定義。
答:廣義的觀點:計算機技術與通信技術相結合,實現遠程信息處理或進一步達到資源共享的系統;資源共享的觀點:以能夠相互共享資源的方式連接起來,並且各自具有獨立功能的計算機系統的集合;對用戶透明的觀點:存在一個能為用戶自動管理資源的網路操作系統,由它來調用完成用戶任務所需要的資源,而整個網路像一個大的計算機系統一樣對用戶是透明的,實際上這種觀點描述的是一個分布式系統。
2. 計算機網路的拓樸結構。
答:計算機網路採用拓樸學的研究方法,將網路中的設備定義為結點,把兩個設備之間的連接線路定義為鏈路。計算機網路也是由一組結點和鏈路組成的的幾何圖形,這就是拓樸結構。
分類:按信道類型分,分為點---點線路通信子網和廣播信道的通信子網。採用點——點連線的通信子網的基本結構有四類:星狀、環狀、樹狀和網狀;廣播信道通子網有匯流排狀、環狀和無線狀。
3. 計算機網路的體系結構
答:將計算機網路的層次結構模型和分層協議的集合定義為計算機網路體系結構。
4.計算機網路的協議三要素
答:三要素是:1,語法:關於諸如數據格式及信號電平等的規定;2,語義:關於協議動作和差錯處理等控制信息;3,定時:包含速率匹配和排序等。
5.OSI七層協議體系結構和各級的主要作用
答:七層指:由低到高,依次是物理層,數據鏈路層,網路層,傳輸層,會話層,表示層和應用層。各層作用分別是:
物理層:向上與數據鏈路層相連,向下直接連接傳輸介質。提供一些建立、維持和釋放物理連接的方法,以便能在兩個或多個數據鏈路實體間進行數據位流的傳輸。
數據鏈路層:通過差錯控制、流量控制等,將不可靠的物理傳輸信道變成無差錯的可靠的數據鏈路。將數據組成適合正確傳輸的幀形式的數據單元,對網路層屏蔽物理層的特性和差異,使高層協議不必考慮物理傳輸介質的可靠性問題。
網路層:決定數據在通信子網中的傳送路徑,控制通信子網中的數據流量並防止擁塞等,提供建立、維護和終止網路連接的手段。網路層是通信子網的最高層。
傳輸層:為源主機到目的主機提供可靠的、有效的數據傳輸,這種傳輸與網路無關,傳輸層是獨立於物理網路的。其上層協議不必了解實際網路,就可將數據安全可靠地傳送到目的地。
會話層:建立、維護和同步進行通信的高層之間的對話。服務主要是:協調應用程序之間的連接建立和中斷;為數據交互提供同步點;協調通信雙方誰可在何時發送數據;確保數據交換在會話關閉之前完成等。
表示層:把源端機器的數據編碼成適合於傳輸的比特序列,傳送到目的端後再進行解碼,在保持數據含義不變的條件下,轉換成用戶所理解的形式。
應用層:為用戶的應用進程訪問OSI環境提供服務。
6.TCP/IP協議體系結構
答:TCP/IP是一個協議系列,目前已飲食了100多個協議,用於將各種計算機和數據通信設備組成計算機網路。
TCP/IP協議具有如下特點:1,協議標准具有開放性,其獨立於特定的計算機硬體與操作系統,可以免費使用;2,統一分配網路地址,使得整個TCP/IP設備在網路中都具有惟一的IP地址。
分層:應用層(SMTP, DNS, NFS, FTP, Telnet, Others)、傳輸層(TCP,UDP)、互聯層(IP,ICMP, ARP, RARP)、主機——網路層(Ethernet, ARPANET, PDN ,Others)。
傳輸控制協議TCP:定義了兩台計算機之間進行可靠數據傳輸所交換的數據和確認信息的格式,以及計算機為了確保數據的正確到達而採取的措施。
『陸』 計算機網路中七層協議如何掌握並理解.
OSI七層模型介紹
OSI是一個開放性的通行系統互連參考模型,他是一個定義的非常好的協議規范。OSI模型有7層結構,每層都可以有幾個子層。下面我簡單的介紹一下這7層及其功能。
OSI的7層從上到下分別是
7 應用層
6 表示層
5 會話層
4 傳輸層
3 網路層
2 數據鏈路層
1 物理層
其中高層,既7、6、5、4層定義了應用程序的功能,下面3層,既3、2、1層主要面向通過網路的端到端的數據流。下面我給大家介紹一下這7層的功能:
(1)應用層:與其他計算機進行通訊的一個應用,它是對應應用程序的通信服務的。例如,一個沒有通信功能的字處理程序就不能執行通信的代碼,從事字處理工作的程序員也不關心OSI的第7層。但是,如果添加了一個傳輸文件的選項,那麼字處理器的程序員就需要實現OSI的第7層。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。
(2)表示層:這一層的主要功能是定義數據格式及加密。例如,FTP允許你選擇以二進制或ASII格式傳輸。如果選擇二進制,那麼發送方和接收方不改變文件的內容。如果選擇ASII格式,發送方將把文本從發送方的字元集轉換成標準的ASII後發送數據。在接收方將標準的ASII轉換成接收方計算機的字元集。示例:加密,ASII等。
(3)會話層:他定義了如何開始、控制和結束一個會話,包括對多個雙向小時的控制和管理,以便在只完成連續消息的一部分時可以通知應用,從而使表示層看到的數據是連續的,在某些情況下,如果表示層收到了所有的數據,則用數據代表表示層。示例:RPC,SQL等。
(4)傳輸層:這層的功能包括是否選擇差錯恢復協議還是無差錯恢復協議,及在同一主機上對不同應用的數據流的輸入進行復用,還包括對收到的順序不對的數據包的重新排序功能。示例:TCP,UDP,SPX。
(5)網路層:這層對端到端的包傳輸進行定義,他定義了能夠標識所有結點的邏輯地址,還定義了路由實現的方式和學習的方式。為了適應最大傳輸單元長度小於包長度的傳輸介質,網路層還定義了如何將一個包分解成更小的包的分段方法。示例:IP,IPX等。
(6)數據鏈路層:他定義了在單個鏈路上如何傳輸數據。這些協議與被討論的歌種介質有關。示例:ATM,FDDI等。
(7)物理層:OSI的物理層規范是有關傳輸介質的特性標准,這些規范通常也參考了其他組織制定的標准。連接頭、針、針的使用、電流、電流、編碼及光調制等都屬於各種物理層規范中的內容。物理層常用多個規范完成對所有細節的定義。示例:Rj45,802.3等。
OSI分層的優點:
(1)人們可以很容易的討論和學習協議的規范細節。
(2)層間的標准介面方便了工程模塊化。
(3)創建了一個更好的互連環境。
(4)降低了復雜度,使程序更容易修改,產品開發的速度更快。
(5)每層利用緊鄰的下層服務,更容易記住個層的功能。
大多數的計算機網路都採用層次式結構,即將一個計算機網路分為若干層次,處在高層次的系統僅是利用較低層次的系統提供的介面和功能,不需了解低層實現該功能所採用的演算法和協議;較低層次也僅是使用從高層系統傳送來的參數,這就是層次間的無關性。因為有了這種無關性,層次間的每個模塊可以用一個新的模塊取代,只要新的模塊與舊的模塊具有相同的功能和介面,即使它們使用的演算法和協議都不一樣。
網路中的計算機與終端間要想正確的傳送信息和數據,必須在數據傳輸的順序、數據的格式及內容等方面有一個約定或規則,這種約定或規則稱做協議。網路協議主要有三個組成部分:
1、語義:
是對協議元素的含義進行解釋,不同類型的協議元素所規定的語義是不同的。例如需要發出何種控制信息、完成何種動作及得到的響應等。
2、語法:
將若干個協議元素和數據組合在一起用來表達一個完整的內容所應遵循的格式,也就是對信息的數據結構做一種規定。例如用戶數據與控制信息的結構與格式等。
3、時序:
對事件實現順序的詳細說明。例如在雙方進行通信時,發送點發出一個數據報文,如果目標點正確收到,則回答源點接收正確;若接收到錯誤的信息,則要求源點重發一次。
70年代以來,國外一些主要計算機生產廠家先後推出了各自的網路體系結構,但它們都屬於專用的。
為使不同計算機廠家的計算機能夠互相通信,以便在更大的范圍內建立計算機網路,有必要建立一個國際范圍的網路體系結構標准。
國際標准化組織ISO 於1981年正式推薦了一個網路系統結構----七層參考模型,叫做開放系統互連模型(Open System Interconnection,OSI)。由於這個標准模型的建立,使得各種計算機網路向它靠攏, 大大推動了網路通信的發展。
OSI 參考模型將整個網路通信的功能劃分為七個層次,見圖1。它們由低到高分別是物理層(PH)、鏈路層(DL)、網路層(N)、傳輸層(T)、會議層(S)、表示層(P)、應用層(A)。每層完成一定的功能,每層都直接為其上層提供服務,並且所有層次都互相支持。第四層到第七層主要負責互操作性,而一層到三層則用於創造兩個網路設備間的物理連接.
1.物理層
物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎。物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境。
1.1媒體和互連設備
物理層的媒體包括架空明線、平衡電纜、光纖、無線信道等。通信用的互連設備指DTE和DCE間的互連設備。DTE既數據終端設備,又稱物理設備,如計算機、終端等都包括在內。而DCE則是數據通信設備或電路連接設備,如數據機等。數據傳輸通常是經過DTE——DCE,再經過DCE——DTE的路徑。互連設備指將DTE、DCE連接起來的裝置,如各種插頭、插座。LAN中的各種粗、細同軸電纜、T型接、插頭,接收器,發送器,中繼器等都屬物理層的媒體和連接器。
1.2物理層的主要功能
1.2.1為數據端設備提供傳送數據的通路,數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成.一次完整的數據傳輸,包括激活物理連接,傳送數據,終止物理連接.所謂激活,就是不管有多少物理媒體參與,都要在通信的兩個數據終端設備間連接起來,形成一條通路.
1.2.2傳輸數據.物理層要形成適合數據傳輸需要的實體,為數據傳送服務.一是要保證數據能在其上正確通過,二是要提供足夠的帶寬(帶寬是指每秒鍾內能通過的比特(BIT)數),以減少信道上的擁塞.傳輸數據的方式能滿足點到點,一點到多點,串列或並行,半雙工或全雙工,同步或非同步傳輸的需要.
1.3物理層的一些重要標准
物理層的一些標准和協議早在OSI/TC97/C16 分技術委員會成立之前就已制定並在應用了,OSI也制定了一些標准並採用了一些已有的成果.下面將一些重要的標准列出,以便讀者查閱.ISO2110:稱為"數據通信----25芯DTE/DCE介面連接器和插針分配".它與EIA(美國電子工
業協會)的"RS-232-C"基本兼容。ISO2593:稱為"數據通信----34芯DTE/DCE----介面連接器和插針分配"。ISO4092:稱為"數據通信----37芯DTE/DEC----介面連接器和插針分配".與EIARS-449兼容。CCITT V.24:稱為"數據終端設備(DTE)和數據電路終接設備之間的介面電路定義表".其功能與EIARS-232-C及RS-449兼容於100序列線上.
2.數據鏈路層
數據鏈路可以粗略地理解為數據通道。物理層要為終端設備間的數據通信提供傳輸媒體及其連接.媒體是長期的,連接是有生存期的.在連接生存期內,收發兩端可以進行不等的一次或多次數據通信.每次通信都要經過建立通信聯絡和拆除通信聯絡兩過程.這種建立起來的數據收發關系就叫作數據鏈路.而在物理媒體上傳輸的數據難免受到各種不可靠因素的影響而產生差錯,為了彌補物理層上的不足,為上層提供無差錯的數據傳輸,就要能對數據進行檢錯和糾錯.數據鏈路的建立,拆除,對數據的檢錯,糾錯是數據鏈路層的基本任務。
2.1鏈路層的主要功能
鏈路層是為網路層提供數據傳送服務的,這種服務要依靠本層具備的功能來實現。鏈路層應具備如下功能:
2.1.1鏈路連接的建立,拆除,分離。
2.1.2幀定界和幀同步。鏈路層的數據傳輸單元是幀,協議不同,幀的長短和界面也有差別,但無論如何必須對幀進行定界。
2.1.3順序控制,指對幀的收發順序的控制。
2.1.4差錯檢測和恢復。還有鏈路標識,流量控制等等.差錯檢測多用方陣碼校驗和循環碼校驗來檢測信道上數據的誤碼,而幀丟失等用序號檢測.各種錯誤的恢復則常靠反饋重發技術來完成。
2.2數據鏈路層的主要協議
數據鏈路層協議是為發對等實體間保持一致而制定的,也為了順利完成對網路層的服務。主要協議如下:
2.2.1ISO1745--1975:"數據通信系統的基本型控制規程".這是一種面向字元的標准,利用10個控制字元完成鏈路的建立,拆除及數據交換.對幀的收發情況及差錯恢復也是靠這些字元來完成.ISO1155, ISO1177, ISO2626, ISO2629等標準的配合使用可形成多種鏈路控制和數據傳輸方式.
2.2.2ISO3309--1984:稱為"HDLC 幀結構".ISO4335--1984:稱為"HDLC 規程要素 ".ISO7809--1984:稱為"HDLC 規程類型匯編".這3個標准都是為面向比特的數據傳輸控制而制定的.有人習慣上把這3個標准組合稱為高級鏈路控制規程.
2.2.3ISO7776:稱為"DTE數據鏈路層規程".與CCITT X.25LAB"平衡型鏈路訪問規程"相兼容.
2.3鏈路層產品
獨立的鏈路產品中最常見的當屬網卡,網橋也是鏈路產品。MODEM的某些功能有人認為屬於鏈路層,對些還有爭議.數據鏈路層將本質上不可靠的傳輸媒體變成可靠的傳輸通路提供給網路層。在IEEE802.3情況下,數據鏈路層分成了兩個子層,一個是邏輯鏈路控制,另一個是媒體訪問控制。下圖所示為IEEE802.3LAN體系結構。
AUI=連接單元介面 PMA=物理媒體連接
MAU=媒體連接單元 PLS=物理信令
MDI=媒體相關介面
3.網路層
網路層的產生也是網路發展的結果.在聯機系統和線路交換的環境中,網路層的功能沒有太大意義.當數據終端增多時.它們之間有中繼設備相連.此時會出現一台終端要求不只是與唯一的一台而是能和多台終端通信的情況,這就是產生了把任意兩台數據終端設備的數據鏈接起來的問題,也就是路由或者叫尋徑.另外,當一條物理信道建立之後,被一對用戶使用,往往有許多空閑時間被浪費掉.人們自然會希望讓多對用戶共用一條鏈路,為解決這一問題就出現了邏輯信道技術和虛擬電路技術.
3.1網路層主要功能
網路層為建立網路連接和為上層提供服務,應具備以下主要功能:
3.1.1路由選擇和中繼.
3.1.2激活,終止網路連接.
3.1.3在一條數據鏈路上復用多條網路連接,多採取分時復用技術 .
3.1.4差錯檢測與恢復.
3.1.5排序,流量控制.
3.1.6服務選擇.
3.1.7網路管理.
3.2網路層標准簡介
網路層的一些主要標准如下:
3.2.1 ISO.DIS8208:稱為"DTE用的X.25分組級協議"
3.2.2 ISO.DIS8348:稱為"CO 網路服務定義"(面向連接)
3.2.3 ISO.DIS8349:稱為"CL 網路服務定義"(面向無連接)
3.2.4 ISO.DIS8473:稱為"CL 網路協議"
3.2.5 ISO.DIS8348:稱為"網路層定址"
3.2.6 除上述標准外,還有許多標准。這些標准都只是解決網路層的部分功能,所以往往需要在網路層中同時使用幾個標准才能完成整個網路層的功能.由於面對的網路不同,網路層將會採用不同的標准組合.
在具有開放特性的網路中的數據終端設備,都要配置網路層的功能.現在市場上銷售的網路硬設備主要有網關和路由器.
4.傳輸層
傳輸層是兩台計算機經過網路進行數據通信時,第一個端到端的層次,具有緩沖作用。當網路層服務質量不能滿足要求時,它將服務加以提高,以滿足高層的要求;當網路層服務質量較好時,它只用很少的工作。傳輸層還可進行復用,即在一個網路連接上創建多個邏輯連接。 傳輸層也稱為運輸層.傳輸層只存在於端開放系統中,是介於低3層通信子網系統和高3層之間的一層,但是很重要的一層.因為它是源端到目的端對數據傳送進行控制從低到高的最後一層.
有一個既存事實,即世界上各種通信子網在性能上存在著很大差異.例如電話交換網,分組交換網,公用數據交換網,區域網等通信子網都可互連,但它們提供的吞吐量,傳輸速率,數據延遲通信費用各不相同.對於會話層來說,卻要求有一性能恆定的界面.傳輸層就承擔了這一功能.它採用分流/合流,復用/介復用技術來調節上述通信子網的差異,使會話層感受不到.
此外傳輸層還要具備差錯恢復,流量控制等功能,以此對會話層屏蔽通信子網在這些方面的細節與差異.傳輸層面對的數據對象已不是網路地址和主機地址,而是和會話層的界面埠.上述功能的最終目的是為會話提供可靠的,無誤的數據傳輸.傳輸層的服務一般要經歷傳輸連接建立階段,數據傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務過程.而在數據傳送階段又分為一般數據傳送和加速數據傳送兩種。傳輸層服務分成5種類型.基本可以滿足對傳送質量,傳送速度,傳送費用的各種不同需要.傳輸層的協議標准有以下幾種:
4.1 ISO8072:稱為"面向連接的傳輸服務定義"
4.2 ISO8072:稱為"面向連接的傳輸協議規范"
5.會話層
會話層提供的服務可使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極為重要。會話層,表示層,應用層構成開放系統的高3層,面對應用進程提供分布處理,對話管理,信息表示,恢復最後的差錯等.
會話層同樣要擔負應用進程服務要求,而運輸層不能完成的那部分工作,給運輸層功能差距以彌補.主要的功能是對話管理,數據流同步和重新同步。要完成這些功能,需要由大量的服務單元功能組合,已經制定的功能單元已有幾十種.現將會話層主要功能介紹如下.
5.1為會話實體間建立連接。為給兩個對等會話服務用戶建立一個會話連接,應該做如下幾項工作:
5.1.1將會話地址映射為運輸地址
5.1.2選擇需要的運輸服務質量參數(QOS)
5.1.3對會話參數進行協商
5.1.3識別各個會話連接
5.1.4傳送有限的透明用戶數據
5.2數據傳輸階段
這個階段是在兩個會話用戶之間實現有組織的,同步的數據傳輸.用戶數據單元為SSDU,而協議數據單元為SPDU.會話用戶之間的數據傳送過程是將SSDU轉變成SPDU進行的.
5.3連接釋放
連接釋放是通過"有序釋放","廢棄","有限量透明用戶數據傳送"等功能單元來釋放會話連接的.會話層標准為了使會話連接建立階段能進行功能協商,也為了便於其它國際標准參考和引用,定義了12種功能單元.各個系統可根據自身情況和需要,以核心功能服務單元為基礎,選配其他功能單元組成合理的會話服務子集.會話層的主要標准有"DIS8236:會話服務定義"和"DIS8237:會話協議規范".
6.表示層
表示層的作用之一是為異種機通信提供一種公共語言,以便能進行互操作。這種類型的服務之所以需要,是因為不同的計算機體系結構使用的數據表示法不同。例如,IBM主機使用EBCDIC編碼,而大部分PC機使用的是ASCII碼。在這種情況下,便需要會話層來完成這種轉換。
通過前面的介紹,我們可以看出,會話層以下5層完成了端到端的數據傳送,並且是可靠,無差錯的傳送.但是數據傳送只是手段而不是目的,最終是要實現對數據的使用.由於各種系統對數據的定義並不完全相同,最易明白的例子是鍵盤,其上的某些鍵的含義在許多系統中都有差異.這自然給利用其它系統的數據造成了障礙.表示層和應用層就擔負了消除這種障礙的任務.
對於用戶數據來說,可以從兩個側面來分析,一個是數據含義被稱為語義,另一個是數據的表示形式,稱做語法.像文字,圖形,聲音,文種,壓縮,加密等都屬於語法范疇.表示層設計了3類15種功能單位,其中上下文管理功能單位就是溝通用戶間的數據編碼規則,以便雙方有一致的數據形式,能夠互相認識.ISO表示層為服務,協議,文本通信符制定了DP8822,DP8823,DIS6937/2等一系列標准.
7.應用層
應用層向應用程序提供服務,這些服務按其向應用程序提供的特性分成組,並稱為服務元素。有些可為多種應用程序共同使用,有些則為較少的一類應用程序使用。應用層是開放系統的最高層,是直接為應用進程提供服務的。其作用是在實現多個系統應用進程相互通信的同時,完成一系列業務處理所需的服務.其服務元素分為兩類:公共應用服務元素CASE和特定應用服務元素SASE.CASE提供最基本的服務,它成為應用層中任何用戶和任何服務元素的用戶,主要為應用進程通信,分布系統實現提供基本的控制機制.特定服務SASE則要滿足一些特定服務,如文卷傳送,訪問管理,作業傳送,銀行事務,訂單輸入等.
這些將涉及到虛擬終端,作業傳送與操作,文卷傳送及訪問管理,遠程資料庫訪問,圖形核心系統,開放系統互連管理等等.應用層的標准有DP8649"公共應用服務元素",DP8650"公共應用服務元素用協議",文件傳送,訪問和管理服務及協議.
討論:OSI七層模型是一個理論模型,實際應用則千變萬化,因此更多把它作為分析、評判各種網路技術的依據;對大多數應用來說,只將它的協議族(即協議堆棧)與七層模型作大致的對應,看看實際用到的特定協議是屬於七層中某個子層,還是包括了上下多層的功能。
這樣分層的好處有:
1.使人們容易探討和理解協議的許多細節。
2.在各層間標准化介面,允許不同的產品只提供各層功能的一部分,(如路由器在一到三層),或者只提供協議功能的一部分。(如Win95中的Microsoft TCP/IP)
3. 創建更好集成的環境。
4. 減少復雜性,允許更容易編程改變或快速評估。
5. 用各層的headers和trailers排錯。
6.較低的層為較高的層提供服務。
7. 把復雜的網路劃分成為更容易管理的層。
『柒』 OSI參考模型對學習網路編程有何指導意義
摘要 TCP/IP協議共有四層:應用層、傳輸層、網路層、鏈路層。應用層實際就是我們的應用程序,對於非具體應用而言這一層的協議是未定義的,需要我們自己根據我們具體的業務模型來制定。傳輸層橋接應用層和網路層,向下為我們的應用層數據填入埠標識,向上根據埠標識往各個應用分發數據包。網路層主要的功能是邏輯選路,確保我們的數據包能到達指定的目的地。鏈路層負責往/從有直接物理鏈路相連的主機或路由器發包/收包。
『捌』 什麼是分層網路體系結構分層的含義是什麼
指的是將系統的組件分隔到不同的層中,每一層中的組件應保持內聚性,並且應大致在同一抽象級別;每一層都應與它下面的各層保持鬆散耦合。
分層架構的優點
1、開發人員的專業分工,專注理解某一層。由於某一層僅僅調用其相鄰下一層所提供的程序介面,只需要本層的介面和相鄰下一層的介面定義清晰完整,開發人員在開發某一層時就可以像關注集中於這一層所用的功能和技術。
2、可以很容易用新的實現來替換原有層次的實現。 只要前後提供的服務(介面)相同,即可替換。系統開發過程中,功能需求不斷變化,我們可以替換現有的層次以滿足新的需求變化。
3、降低了系統間的依賴。 比如業務邏輯層中的業務發生變化, 其他兩層即表現層以及數據訪問層程序也不需要變化。這大大降低了系統各層之間的依賴。
4、有利於復用。充分利用現有的功能程序組件,將已經辨識的具有相對獨立功能的層應用於新系統的開發,保證新系統開發的過程中,能夠將重點集中於辨識和實現應用系統特有的業務功能,最終縮短系統開發周期,提高系統的質量。
分層思想
分層是基於面向對象上的,是更高層次上的設計理念。在軟體開發技術的發展過程中,出現了很多優秀的思想與模式。這些思想和模式凝結了無數程序設計人員的實踐經驗和智慧,是軟體開發領域的精華。這其中有很多思想對分層架構設計有著重要的指導作用。
分層架構的弊端
1、級聯修改問題。一些復雜的業務中,由於業務流程發生變化,為了這個變化所有層都需要修改。
2、性能問題。本來是直接簡單的操作,需要在整個系統中層層傳遞,勢必造成性能的下降,同時也加大的開發的復雜度。
從上面的分析可以看出, 分層架構設計有許多優點同樣存在不足,在實際使用過程中,我們應該權衡利弊關系,選擇一種符合實際項目的最佳方案。
『玖』 TCP/IP協議與網路編程
先搞清楚 ISO/OSI與TCP/IP的關系
1.2 TCP/IP的分層體系結構與協議棧的概念
問題1:什麼叫協議棧(Protocol Stack)?
如上圖所示,網路協議是分層的,在這種層次結構中各層有明確的分工,不同層的協議從上到下形成了一個棧結構的依賴關系,通常將其形象地稱為協議棧.問題2:為什麼協議棧簡稱TCP/IP?
如上圖所示,從該結構中可以看出,在TCP/IP的協議棧中包括很多協議(如FTP,IGMP等),但TCP和IP是該協議棧中兩個最重要的協議,所以人們常常將該協議棧簡稱TCP/IP問題3:為什麼協議棧中TCP與IP是最重要的協議?
先理解一下這4層的基本概念
------>第1層:網路介面層
功能1:發包與收包
(1)發包。它是協議棧的最底層,負責將其之上的網路層要發送出去的數據(即IP數據報)發送到其下面的物理網路
(2)收包。接收由物理網路發送到該目標機的數據幀,並抽出IP數據報交給網路層。要注意,這里所說的物理網路是指各種實際傳輸數據的區域網或廣域網等。功能2:為什麼在TCP/IP協議棧中沒有定義網路介面層呢?
(1)便於實現不同網路之間的互聯。
實現不同網路的互聯是TCP/IP要解決的最主要問題。不同的網路盡管其數據傳輸介質,數據傳輸速率等有很大的差異,但都可以實現網路內數據的傳輸,當然也就可以進行TCP/IP協議棧中網路層IP數據報的傳輸。這樣TCP/IP就可以將重點放在網路之間的互聯上,而不用去糾纏各種物理網路的具體實現細節,這樣就非常巧妙地解決了不同類型物理網路的互聯問題。這也是TCP/IP得以廣泛應用的一個重要原因
(2)為將來物理網路的發展留下了廣闊的空間------>第2層:網際層(也稱互聯網路層)
功能:把源主機上的分組(在網際層傳輸的數據單位叫IP數據報,也稱為IP分組)根據需要發送到互聯網中的任何一台目標主機上.(關於怎樣得到目標主機的IP地址,詳見第3章中的ARP)什麼叫路由選擇?
在一個由很多網路組成的互聯網中,一台主機(即源主機)與不在同一個網路中的另一台主機(目標主機)通信時,可能有多條通路相連,網際層的一個重要功能就是要在這些通路中做出選擇,這就是所謂的路由選擇功能.它是網際層一個非常重要的功能------>第3層:傳輸層
------>第4層:應用層結論:
為什麼IP層非常重要?
IP層重點面向同外界打交道,比如你在廣州,我在北京,IP層就能通過路由選擇一條道路,以及到站後,就開始用ARP廣播,你們誰是這個MAC地址的主人,聽到了請回復,這時對方的IP層收包了,與自己MAC地址(全球唯一地址)一樣,就開始解包(當然上層要有相應處理軟體程序)
為什麼TCP層非常重要?
TCP層重點面向同內部打交道,我的任務是要檢查你發到我電腦裡面的這個數據是不是正確的。
在IP層提供的是一種"盡力而為"的數據報傳輸服務,它不能保證數據總是可靠地從源主機傳輸到目標主機,為什麼TCP能保證數據傳輸正確,因為它每發送一個數據都會要效驗的(詳見第4章傳輸層)
1.3 TCP/IP中數據的封裝與解封過程
1.4 Internet的管理機構
例如,CNNIC(China Internet Network Information Center),中國互聯網路信息中心
1.5 RFC文檔
RFC(Request for Comments),至今已經發表了數千篇文章,幾乎包含了與計算機通信有關的任何內容,全面地反映了Internet的研究和發展過程.==========================================
第2章 網路介面層
所講都是硬體方面,什麼是網卡,網卡是怎麼做出來的,非硬體人員,跳過
==========================================
第3章 互聯網路層
3.1.1 網路互聯概述
internet(注意小寫)---如果利用網路互聯設備將兩個或多個物理網路相互連接,就形成了互聯網路(internetwork)
Internet(注意大寫)---特指全球范圍內的互聯網
Router---------------將多個物理網路互聯的最常用設備是路由器
Intranet----------如果一個企業內部網路,使用了Internet中的TCP/IP及其網路互聯技術,但不能上網,是一個有限的,封閉的網路
Extranet----------如果一個Intranet通過防火牆等技術與外部Internet相連,則該Intranet就是一個開放的,通過外部可以訪問的網路3.1.2 路由器
(1)路由器的工作原理
if(在同一IP子網) 直接發送到網路上,對方就能收到
else(不在同一IP子網) 發送一個能到達子網的路由,不知道如何傳送的IP報文送給"默認網關",一級級地傳送,IP報文最終送到目的地,達不到目的地的IP報文則被網路丟棄(2)路由器的功能(具有轉發報文和路由選擇兩大功能)3.2 IP數據報格式(分報頭區和數據區兩大部分)
大多是理論知識,要摘抄就全摘抄了.書上介紹的才幾頁,也不太全,具體參考網上,此處不摘抄了,介紹幾種常用網路的MTU值
注意:此節是原始套接字模塊,重點.網上有教材專門講解其模塊.可以參考
---------------------------->以下是總結:第1點:集中在一個點上攻,思路全圍繞它轉,天網恢恢,有一個漏的,當把所有注意點集中在它上時,總會找到這個程序突破處。
以上次寫代碼為例:在程序內找了幾天BUG,一直沒果,最後一個思路我嘆了口氣,將思路放在操作系統上,才幾分鍾就從微軟技術支持網站上找到了,原來此問題是要改注冊表問題(此程序是多線程斷點下載的實例)
第2點:微軟技術支持網站是個很不錯的網站,裡面有很多源代碼,可提供一個方向
第3點:很多代碼在網上是搜索不出來的,必須要相信自己,既然認為這是對的,就一定要堅持下去,各個突破
第4點:當遇上大問題時,離開電腦一段時間(例如下班後或放假),給點獨立空間思考應該怎麼做!