• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Fork me on GitHub
            隨筆 - 215  文章 - 13  trackbacks - 0
            <2017年5月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910


            專注即時通訊及網游服務端編程
            ------------------------------------
            Openresty 官方模塊
            Openresty 標準模塊(Opm)
            Openresty 三方模塊
            ------------------------------------
            本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            相冊

            Awesome

            Blog

            Book

            GitHub

            Link

            搜索

            •  

            積分與排名

            • 積分 - 215511
            • 排名 - 118

            最新評論

            閱讀排行榜

            http://blog.csdn.net/galdys/article/details/6620620
            TCP/IP的通訊協議 

            這部分簡要介紹一下TCP/IP的內部結構,為討論與互聯網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協議(例如T1和X.25、以太網以及RS-232串行接口)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP(User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。 

            TCP/IP整體構架概述 

            TCP/IP協議并不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這4層分別為: 

            應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。 

            傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據并把它傳輸到下一層中,這一層負責傳送數據,并且確定數據已被送達并接收。 

            互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。 

            網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。 

            TCP/IP中的協議 

            以下簡單介紹TCP/IP中的協議都具備什么樣的功能,都是如何工作的: 

            1. IP 

            網際協議IP是TCP/IP的心臟,也是網絡層中最重要的協議。 

            IP層接收由更低層(網絡接口層例如以太網設備驅動程序)發來的數據包,并把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP并沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。 

            高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對于一些TCP和UDP的服務來說,使用了該選項的IP包好象是從路徑上的最后一個系統傳遞過來的,而不是來自于它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那么,許多依靠IP源地址做確認的服務將產生問題并且會被非法入侵。 

            2. TCP 

            如果IP數據包中有已經封好的TCP數據包,那么IP將把它們向‘上’傳送到TCP層。TCP將包排序并進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。 

            TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最后到接收方。 

            面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名數據庫),但使用UDP傳送有關單個主機的信息。 

            3.UDP 

            UDP與TCP位于同一層,但對于數據包的順序錯誤或重發。因此,UDP不被應用于那些使用虛電路的面向連接的服務,UDP主要用于那些面向查詢---應答的服務,例如NFS。相對于FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網落時間協議)和DNS(DNS也使用TCP)。 

            欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。 

            4.ICMP 

            ICMP與IP位于同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機通向其他系統的更準確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基于ICMP的服務。 

            5. TCP和UDP的端口結構 

            TCP和UDP服務通常有一個客戶/服務器的關系,例如,一個Telnet服務進程開始在系統上處于空閑狀態,等待著連接。用戶使用Telnet客戶程序與服務進程建立一個連接。客戶程序向服務進程寫入信息,服務進程讀出信息并發出響應,客戶程序讀出響應并向用戶報告。因而,這個連接是雙工的,可以用來進行讀寫。 

            兩個系統間的多重Telnet連接是如何相互確認并協調一致呢?TCP或UDP連接唯一地使用每個信息中的如下四項進行確認: 

            源IP地址 發送包的IP地址。 

            目的IP地址 接收包的IP地址。 

            源端口 源系統上的連接的端口。 

            目的端口 目的系統上的連接的端口。 

            端口是一個軟件結構,被客戶程序或服務進程用來發送和接收信息。一個端口對應一個16比特的數。服務進程通常使用一個固定的端口,例如,SMTP使用25、Xwindows使用6000。這些端口號是‘廣為人知’的,因為在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊。


            http://blog.sina.com.cn/s/blog_60e96a410100mz6o.html
                在掌握計算機網絡時,學的時候應該從最底層開始結束于應用層,但等學完之后,融會貫通的時候,應該從最高層向最底層開始
                1 現代計算機網絡中,都采用存儲轉發分組交換技術,分組交換又采用數據報和虛電路兩種形式,實際上數據報方式就是我們通常所說的面向無連接的,也就是UDP方式,而虛電路實際上就是我們通常所說的面向連接的,也就是TCP采用的方式
                采用存儲轉發的優點
            1. 通信子網中的路由器可以存儲報文,所以多個報文可以共享通信信道,線路的利用率高。
            2. 路由器具有路由選擇功能,可以動態選擇報文通過通信子網的最佳路徑。
                采用分組的優點
            1.     由于分組的長度比較短,在傳輸出錯時發現錯誤容易,并且重發需要花費的時間少,這樣就有利于提高存儲轉發節點的存儲空間利用率與傳輸效率。
            •     數據報方式特點是,每個分組可能經過的路由不一樣,而且到達目的節點的次序也不一定,而且每個 分組都必須帶有目的地址和源地址信息。
            •     虛電路方式特點是,每個分組經過相同的路由,而且不加任何目的地址和源地址的信息,到達目的節點時是有序到達
                2.無論TCP還是UDP傳遞給網絡層的時候都要進行分組。
                3.ICMP協議時網絡層非常重要的一個協議。它負責網絡層的差錯和控制,
                  ICMP的差錯控制功能表現如下:
            •    目的站不可達,當路由器不能為數據包找到路由器或者主機交付時,就丟棄該數據報,然后該路由器會向源主機發出ICMP差錯報告報文。
            1. 不能交付數據報,有可能是,目的主機沒有開機或者機器故障,
            2. 或者是目的主機號不存在,
            3. 還有可能是路由器找不到去往目的主機的路徑。 
            4. 路由器知道目的網絡存在,但是無法到達。
            5. 如果找到了目的網絡和目的主機,但是到達目的主機后發現自己IP數據報攜帶的是TCP協議而對方采用的UDP協議。
            6. 如果目的網絡,目的主機,協議,都相同,但是目的主機的端口號不對。
            •    源站抑制,每個發送端都向路由器和目的節點發送數據分組,這樣導致路由器和目的節點緩沖區隊列溢出,或者路由器和目的節點的處理速度遠遠小于源節點的發送速度。這樣路由器和目的節點就會丟棄數據報,而且給源節點發送ICMP數據。
            •    超時,路由表出現問題,整個網絡的轉發會出現錯誤,極端的情況是造成數據包在某些路由器之間循環,使得數據包在網絡中無休止的傳輸。為了對付這些問題,IP協議會在數據包頭中設置生存時間(TTL),二是設置定時時間,只對這兩種情況ICMP這是了超時報文。針對第一種情況,當路由器轉發數據報時,講TTL-1后等于0時,就丟掉數據報,而且向源主機發送超時報文。第二種情況,當組成一個數據報的所有分組未能在某一限定時間內到達目的主機,目的主機就不能將接受的分片重新組裝成數據報,而一個數據的部分分片將長期占用主機的緩沖區,如果多個數據包都出現這種情況,就會造成目的主機既不能接受新的數據報,又已接受的數據分片不能組裝成數據報而出現死鎖。因此當某一個數據包的第一個數據分片到達時,目的主機就啟動計時器,當計時器時間到了,目的主機還沒有接收到一個數據包的所有分片,他會將接受的分片丟棄,并向源主機發送超時報文
            • 改變路由,發送數據包的源主機和路由器都有一張路由表。主機的路由表采用靜態的,主機通過ICMP獲得正確的路由信息(例如A向B通信,正確的是路由器2但卻發給了路由器1,路由器1知道正確的路由應當是路由器2,于是路由器1將正確的路信息),當網絡的拓撲結構發生變化時,各個路由器間通過ICMP交換動態路由信息。
            1. 傳輸層中的兩個重要協議TCP和UDP
            • QoS,服務質量,衡量傳輸層QoS的參數有:(1)建立連接的延遲(2)建立連接失敗的概率(3)吞吐率(吞吐率是指每秒鐘傳輸的用戶數據的字節數,他是在某個時間間隔內測量的到的數據)(4)傳輸延遲(5)恢復功能
            • UDP,UDP采用面向無連接的,并且只提供有限的差錯控制,因此協議簡單,在一些特定的應用中協議運行效率高。如:IP電話,視頻會議,FTP,DNS,SNMP,他們要求源主機以恒定的速度發送數據,而且在網絡出現擁塞時,可以丟棄一些數據,但是希望延遲不大。
            • TCP,TCP,采用面向連接的,高可靠,全雙工(因此釋放鏈接的時候,要四次揮手),提供流量控制與擁塞控制。
            1. 窗口(用來實現流量控制),大小可變的窗口是TCP協議進行流量與擁塞控制的重要方法,當一個傳輸鏈接建立時,連接的每段都要分配一塊緩沖區來存儲接收到的數據,并將緩沖區的大小發送給另外一段,窗口大小的單位是BYTE(這樣編程起來是很方便的),發送窗口在連接建立時由雙方商定,TCP報文頭部的窗口域寫入的數值就是當前雙方設置的窗口數值,但是在通信的過程中,接受端可以根據自己的資源情況,隨時動態調整對方發送窗口的增大或減小,這種有接收端控制發送端的做法在網絡經常使用,當數據到達時,接收端發送確認,其中包括自己剩余的緩沖區大小,接收端發送的每個確認都包含一個窗口通告。實現流量控制并非僅僅為了使接收端來的及接受,如果發送端發出的報文過多,會使網絡通信負荷過重,由此引起報文段的延時增大,報文延時增大,將使主機不能及時的收到確認,就會重傳更多的報文,而這又會進一步加劇網絡的擁塞,為了避免發生擁塞,主機應當降低發送速率。因此發送端的主機在發送數據時,既要考慮到接收端的接收能力,又要使網絡不要發生擁塞。通知窗口由接收端根據其接受能力確定的窗口值,是來自接收端的流量控制,擁塞窗口是發送端根據網絡擁塞情況確定的窗口值,它由發送端的流量控制算法決定(如果發送端在重傳計時器到期前,沒有收到對報文段的確認,就可以認為出現擁塞)。在沒有發生擁塞的穩定工作狀態下,接收端的通知窗口和發送方的擁塞窗口應該保持一致。如果網絡中出現傳輸錯誤,報文丟失的可能性比傳輸過程中誤碼的可能性大(目前的通信信道質量已經明顯改善,由于通信線路帶來的的誤碼,而造成分組丟失的概率很低)。  
            2. TCP差錯控制,
              • 傳輸出錯報文段(TCP通過報頭的檢驗和來判斷是否發生傳輸錯誤,傳輸錯誤也叫受損報文段,TCP接受端采用丟棄不給予確認的機制),
              • 丟失的報文段(被中間某一個節點丟失的),
              • 重復報文段(TCP接收端將重復的分組丟棄一個即可),
              • 確認丟失(TCP發送端發了3個報文段,TCP接受方成功接收后,發送確認,發送確認報文1,2,3,但是確認報文2沒有收到,但是確認報文段3收到了,發送發TCP就忽略沒有收到確認報文2,后面的收到了前面的你肯定也受到了)。由于TCP采用全雙工通信,也就是說發送方給接收方發送數據的同時,接收方也可能給發送方發送數據,但是無論誰給誰發,都要有確認信息。TCP采用捎帶技術發送確認信息,就是說,接收方成功接受數據后,這時候接收方也有數據發給發送方,那么接收方就把確認信息附加在發送給發送方的數據里面。
            3. TCP計時器,
              • 重傳計時器(由于全雙工,收發雙發都有計時器),
              • 堅持計時器(當接收端的處理速度小于發送端的發送速率時,接收端TCP發送一個0窗口,于是發送端TCP就停止發送,等待一個非0窗口的到來,但是接受方TCP發送一個非0窗口確認,然而這個確認丟失。接收端TCP發送完確認數據報后,就等待發送端發送數據,但是他不知道確認數據報已經丟失了。發送端TCP由于沒有收到確認,就等待接收方發送確認來通知窗口大小,這樣雙方TCP處于死鎖。為了避免出現死鎖,TCP為每個連接使用一個堅持計時器,當發送端收到一個窗口大小為0的確認時,就需要啟動堅持計時器。當時間到,發送端的TCP就發送一個特殊的探測報文,該報文只有1B大小,探測數據報提醒接受方的TCP:確認窗口報文已丟失,必須重傳),
              • 保持計時器(如果客戶建立到服務器的連接,發送一些數據,然后停止傳送,可能這個客戶端出現故障,這種情況下,這個連接將永遠處于打開狀態。為了避免此類事件,服務器端設置一個激活計時器。服務器已接受到客戶的信息后就將計時器復位,如果服務器超過激活計時器規定的時間還沒有收到客戶的信息,就每隔一個時間發送一個探測報文,如果發送10個探測報文后還沒有響應,就判斷客戶端出現故障,服務器終止連接),
              • 時間等待計時器(當TCP釋放一次連接時,例如四次揮手中,第四次的報文丟失,TCP規定被動釋放鏈接的一方,在同意釋放鏈接報文發出后,啟動時間等待計時器,如果時間到達前收到了應答,則釋放鏈接,如果規定時間內沒有收到應答,則重新傳送允許釋放鏈接的報文)
            4. TCP,誰發送數據在誰的一方就有個重發定時器等待確認。
            posted on 2017-01-14 10:11 思月行云 閱讀(419) 評論(0)  編輯 收藏 引用 所屬分類: C\C++
            久久精品视频网| 国产毛片欧美毛片久久久| 亚洲国产另类久久久精品| 久久激情五月丁香伊人| 久久综合久久综合久久| 久久777国产线看观看精品| 久久精品毛片免费观看| 色欲综合久久躁天天躁蜜桃| 伊色综合久久之综合久久| 四虎影视久久久免费| 欧美伊人久久大香线蕉综合69| 久久久久国产日韩精品网站| 久久香蕉综合色一综合色88| 亚洲午夜久久影院| 久久久黄片| 狠狠色婷婷久久一区二区| 亚洲午夜久久久影院| 精品国产乱码久久久久软件| 亚洲精品乱码久久久久久自慰 | 伊人丁香狠狠色综合久久| 久久亚洲AV无码精品色午夜| 精品国产乱码久久久久久呢| 欧美噜噜久久久XXX| 久久精品这里热有精品| 国产综合精品久久亚洲| 久久人妻无码中文字幕| 无码国产69精品久久久久网站| 久久99这里只有精品国产| 久久这里只有精品18| 国产精品免费福利久久| 久久久久久毛片免费看| 亚洲午夜无码久久久久| 久久国产精品免费| 日本五月天婷久久网站| 91精品国产91热久久久久福利| 性高湖久久久久久久久AAAAA| 97久久国产综合精品女不卡| 国产产无码乱码精品久久鸭| 国内精品久久久久久不卡影院 | 精品伊人久久大线蕉色首页| 午夜精品久久久久久久久|