物理層(RS-23二、V.35)和 數據鏈路層(HDLC、X.25)涉及到在通訊信道上傳輸的原始比特流,它實現傳輸數據所須要的機械、電氣、功能性及過程等手段,提供檢錯、糾錯、同步等措施,使之對網絡層顯現一條無錯線路;而且進行流量調控。Bits、Frameswindows
網絡層檢查網絡拓撲,以決定傳輸報文的最佳路由,執行數據轉發。其關鍵問題是肯定數據包從源端到目的端如何選擇路由。網絡層的主要協議有IP、ICMP(Internet Control Message Protocol,互聯網控制報文協議)、IGMP(Internet Group Management Protocol,互聯網組管理協議)、ARP(Address Resolution Protocol,地址解析協議)和RARP(Reverse Address Resolution Protocol,反向地址解析協議)等。Packets緩存
傳輸層的基本功能是爲兩臺主機間的應用程序提供端到端的通訊。傳輸層從應用層接受數據,而且在必要的時候把它分紅較小的單元,傳遞給網絡層,並確保到達對方的各段信息正確無誤。傳輸層的主要協議有TCP、UDP(User Datagraph Protocol,用戶數據報協議)。Segments安全
應用層負責處理特定的應用程序細節。應用層顯示接收到的信息,把用戶的數據發送到低層,爲應用軟件提供網絡接口。應用層 包含大量經常使用的應用程序,例如HTTP(HyperText Transfer Protocol文本傳輸協議)、Telnet(遠程登陸)、FTP(File Transfer Protocol)等。服務器
發送方,加封裝的操做是逐層進行的。各個應用程序將要發送的數據送給傳輸層;傳輸層(TCP/UDP)對數據分段爲大小必定的數據段,加上本層的報文頭。發送給網絡層。在傳輸層報文頭中,包含接收它所攜帶的數據的上層協議或應用程序的端口號,例如,Telnet 的端口號是 23。傳輸層協議利用端口號來調用和區別應用層各類應用程序。網絡
網絡層對來自傳輸層的數據段進行必定的處理(利用協議號區分傳輸層協議、尋找下一跳地址、解析數據鏈路層物理地址等),加上本層的IP報文頭後,轉換爲數據包,再發送給鏈路層(以太網、幀中繼、PPP、HDLC 等);socket
鏈路層依據不一樣的數據鏈路層協議加上本層的幀頭,發送給物理層以比特流的形式將報文發送出去。ide
在接收方,這種去封裝的操做也是逐層進行的。從物理層到數據鏈路層,逐層去掉各層的報文頭部,將數據傳遞給應用程序執行。工具
FTP(文件傳輸協議、File Transfer Protocol)是用於文件傳輸的Internet標準。FTP支持一些文本文件(例如ASCII、二進制等等)和麪向字節流的文件結構。FTP使用傳輸層協議TCP在支持FTP的終端系統間執行文件傳輸,所以,FTP被認爲提供了可靠的面向鏈接的服務,適合於遠距離、可靠性較差線路上的文件傳輸。性能
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)也是用於文件傳輸,但TFTP使用UDP提供服務,被認爲是不可靠的,無鏈接的。TFTP一般用於可靠的局域網內部的文件傳輸。測試
SMTP(Simple Mail Transfer Protocol。簡單郵件傳輸協議)支持文本郵件的Internet傳輸。
POP3(Post Office Protocol)是一個流行的Internet郵件標準。
SNMP(Simple Network Management Protocol。簡單網絡管理協議)負責網絡設備監控和維護,支持安全管理、性能管理等。
Telnet是客戶機使用的與遠端服務器創建鏈接的標準終端仿真協議。
Ping命令是一個診斷網絡設備是否正確鏈接的有效工具。
Tracert命令和Ping命令相似,能夠顯示數據包通過的每一臺網絡設備信息,是一個很好的診斷命令。
HTTP協議支持WWW(World Wide Web,萬維網)和內部網信息交互,支持包括視頻在內的多種文件類型。HTTP是當今流行的Internet標準。
DNS(Domain Name System,域名系統)把網絡節點的易於記憶的名字轉化爲網絡地址。
WINS(Windows Internet Name Server,Windows Internet命名服務器),此服務能夠將NetBIOS 名稱註冊並解析爲網絡上使用的IP地址。
BootP(Bootstrap Protocol,引導協議)是使用傳輸層UDP協議動態得到IP地址的協議。
傳輸層位於應用層和網絡層之間,爲終端主機提供端到端的鏈接,以及流量控制(由窗口機制實現)、可靠性(由序列號和確認技術實現)、支持全雙工傳輸等等。傳輸層協議有兩種:TCP和UDP。雖然TCP和UDP都使用相同的網絡層協議IP,可是TCP和UDP卻爲應用層提供徹底不一樣的服務。
傳輸控制協議TCP:爲應用程序提供可靠的面向鏈接的通訊服務,適用於要求獲得響應的應用程序。目前,許多流行的應用程序都使用TCP。
用戶數據報協議UDP:提供了無鏈接通訊,且不對傳送數據包進行可靠的保證。適合於一次傳輸小量數據,可靠性則由應用層來負責。
TCP協議經過如下過程來保證端到端數據通訊的可靠性:
一、TCP實體把應用程序劃分爲合適的數據塊,加上TCP報文頭,生成數據段;
二、當TCP實體發出數據段後,當即啓動計時器,若是源設備在計時器清零後仍然沒有收到目的設備的確認報文,重發數據段;
三、當對端TCP實體收到數據,發回一個確認。
四、TCP包含一個端到端的校驗和字段,檢測數據傳輸過程的任何變化。若是目的設備收到的數據校驗和計算結果有誤,TCP將丟棄數據段,源設備在前面所述的計時器清零後重發數據段。
五、因爲TCP數據承載在IP數據包內,而IP提供了無鏈接的、不可靠的服務,數據包有可能會失序。TCP提供了從新排序機制,目的設備將收到的數據從新排序,交給應用程序。
六、TCP提供流量控制。TCP鏈接的每一端都有緩衝窗口。目的設備只容許源設備發送本身能夠接收的數據,防止緩衝區溢出。
七、TCP支持全雙工數據傳輸。
TCP協議爲終端設備提供了面向鏈接的、可靠的網絡服務,UDP協議爲終端設備提供了無鏈接的、不可靠的數據報服務。從上圖咱們能夠看出,TCP協議爲了保證數據傳輸的可靠性,相對於UDP報文,TCP報文頭部有更多的字段選項。
首先讓咱們來看一下TCP的報文頭部主要字段:
每一個TCP報文頭部都包含源端口號(source port)和目的端口號(destination port),用於標識和區分源端設備和目的端設備的應用進程。在TCP/IP協議棧中,源端口號和目的端口號分別與源IP地址和目的IP地址組成套接字(socket),惟一的肯定一條TCP鏈接。
序列號(Sequence number)字段用來標識TCP源端設備向目的端設備發送的字節流,它表示在這個報文段中的第一個數據字節。若是將字節流看做在兩個應用程序間的單向流動,則TCP用序列號對每一個字節進行計數。序列號是一個32bits的數。
既然每一個傳輸的字節都被計數,確認序號(Acknowledgement number,32bits)包含發送確認的一端所指望接收到的下一個序號。所以,確認序號應該是上次已成功收到的數據字節序列號加1。
TCP的流量控制由鏈接的每一端經過聲明的窗口大小(windows size)來提供。窗口大小用數據包來表示,例如Windows size=3, 表示一次能夠發送三個數據包。窗口大小起始於確認字段指明的值,是一個16bits字段。窗口大小能夠調節。
校驗和(checksum)字段用於校驗TCP報頭部分和數據部分的正確性。
最多見的可選字段是MSS(Maximum Segment Size,最大報文大小)。MSS指明本端所可以接收的最大長度的報文段。當一個TCP鏈接創建時,鏈接的雙方都要通告各自的MSS協商能夠傳輸的最大報文長度。咱們常見的MSS有1024(以太網可達1460字節)字節。
相對於TCP報文,UDP報文只有少許的字段:源端口號、目的端口號、長度、校驗和等,各個字段功能和TCP報文相應字段同樣。
UDP報文沒有可靠性保證和順序保證字段,流量控制字段等,可靠性較差。固然,使用傳輸層UDP服務的應用程序也有優點。正由於UDP協議較少的控制選項,在數據傳輸過程當中,延遲較小,數據傳輸效率較高,適合於對可靠性要求並不高的應用程序,或者能夠保障可靠性的應用程序像DNS、TFTP、SNMP等;UDP協議也能夠用於傳輸鏈路可靠的網絡
TCP協議和UDP協議使用16bits端口號(或者socket)來表示和區別網絡中的不一樣應用程序,網絡層協議IP使用特定的協議號(TCP 6,UDP 17)來表示和區別傳輸層協議。
任何TCP/IP實現所提供的服務都是1~1023之間的端口號,這些端口號由IANA(Internet Assigned Numbers Authority,Internet號碼分配機構)分配管理。其中,低於255的端口號保留用於公共應用;255到1023的端口號分配給各個公司,用於特殊應用;對於高於1023的端口號,稱爲臨時端口號,IANA未作規定。
經常使用的TCP端口號有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;經常使用的保留UDP端口號有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。
套接字(socket)分爲源套接字和目的套接字:
源套接字:源端口號+源IP地址;
目的套接字:目的端口號+目的IP地址;
源套接字和目的套接字用於惟一的肯定一條TCP鏈接。關於IP地址,將在後面講述。
爲了在上圖所示的主機和服務器之間創建一個鏈接,首先須要兩端設備進行同步。同步(synchronization)是經過各個攜帶有初始序列號的數據段交換過程實現的。
主機發送一個序列號爲a的報文段1;
服務器發回包含序列號爲b的報文段2,並用確認號a+1對主機的報文段1進行確認;
主機接收服務器發回的報文段2,發送報文段3,用確認號b+1對報文段2進行確認。
這樣在主機和服務器之間創建了一條TCP鏈接,這個過程被稱爲三步握手(three-way handshake)。接下來,數據傳輸開始。
數據傳輸結束後,應該終止鏈接。終止TCP鏈接須要4次握手。
TCP滑動窗口技術經過動態改變窗口大小來調節兩臺主機間數據傳輸。每一個TCP/IP主機支持全雙工數據傳輸,所以TCP有兩個滑動窗口:一個用於接收數據,另外一個用於發送數據。TCP使用確定確認技術,其確認號指的是下一個所期待的字節。
下面咱們以數據單方向發送爲例,介紹滑動窗口如何實現流量控制。
假定發送方設備以每一次三個數據包的方式發送數據,也就是說,窗口大小爲3。發送方發送序列號爲一、二、3的三個數據包,接收方設備成功接收數據包,用序列號4確認。發送方設備收到確認,繼續以窗口大小3發送數據。當接收方設備要求下降或者增大網絡流量時,能夠對窗口大小進行減少或者增長,本例下降窗口大小爲2,每一次發送兩個數據包。當接收方設備要求窗口大小爲0,代表接收方已經接收了所有數據,或者接收方應用程序沒有時間讀取數據,要求暫停發送。發送方接收到攜帶窗口號爲0的確認,中止這一方向的數據傳輸。
滑動窗口機制爲端到端設備間的數據傳輸提供了可靠的流量控制機制。然而,它只能在源端設備和目的端設備起做用,當網絡中間設備(例如路由器等)發生擁塞時,滑動窗口機制將不起做用。咱們能夠利用ICMP的源抑制機制進行擁塞管理。關於ICMP,咱們將在後面介紹。
網絡層位於TCP/IP協議棧數據鏈路層和傳輸層中間,網絡層接收傳輸層的數據報文,分段爲合適的大小,用IP報文頭部封裝,交給數據鏈路層。網絡層爲了保證數據包的成功轉發,主要定義瞭如下協議:
IP(Internet Protocol)協議:IP協議和路由協議協同工做, 尋找可以將數據包傳送到目的端的最優路徑。IP協議不關心數據報文的內容,提供無鏈接的、不可靠的服務。
ARP協議(Address Resolution Protocol,地址解析協議):把已知的IP地址解析爲MAC地址;
RARP(Reverse Address Resolution Protocol,反向地址解析):用於數據鏈路層地址已知時,解析IP地址;
ICMP(Internet Control Message Protocol,網際控制消息協議)定義了網絡層控制和傳遞消息的功能。
IGMP(Internet Group Management Protocol,網際組管理協議),一種組播應用協議。
普通的IP頭部長度爲20個字節,不包含IP選項字段。
版本號(Version)字段標明瞭IP協議的版本號,目前的協議版本號爲4。下一代IP協議的版本號爲6。
報文長度指IP包頭部長度,佔4位。
8位的服務類型(TOS,Type of Service)字段包括一個3位的優先權字段(COS,Class of Service),4位TOS字段和1位未用位。4位TOS分別表明最小時延、最大吞吐量、最高可靠性和最小費用。
總長度(Total length)是整個IP數據報長度,包括數據部分。
標識符(Identification)字段惟一地標識主機發送的每一份數據報。一般每發送一份報文它的值就會加1。
生存時間(TTL,Time to Live)字段設置了數據包能夠通過的路由器數目。一旦通過一個路由器,TTL值就會減1,當該字段值爲0時,數據包將被丟棄。
協議字段肯定在數據包內傳送的上層協議,和端口號相似,IP協議用協議號區分上層協議。TCP協議的協議號爲6,UDP協議的協議號爲17。
報頭校驗和(Head checksum)字段計算IP頭部的校驗和,檢查報文頭部的完整性。源IP地址和目的IP地址字段標識數據包的源端設備和目的端設備。
關於IP地址,後面會有詳述。
地址解析協議ARP是一種廣播協議,主機經過它能夠動態地發現對應於一個IP 地址的MAC層地址。
假定主機A須要知道主機B的MAC地址,主機A發送稱爲ARP請求的以太網數據幀給網段上的每一臺主機,這個過程稱爲廣播。發送的ARP請求報文中,帶有本身的IP地址到MAC地址的映射,同時還帶有須要解析的目的主機的IP地址。目的主機B收到請求報文後,將其中的主機A的IP地址與MAC地址的映射存到本身的ARP高速緩存中,並把本身的IP地址到MAC地址的映射做爲響應發回主機A。主機A收到ARP應答,就獲得了主機B的MAC地址,同時,主機A緩存主機B的IP地址到MAC地址映射。
RARP經常使用於X終端和無盤工做站等,這些設備知道本身MAC地址,須要得到IP地址。
以上圖爲例,無盤工做站須要得到本身的IP地址,向網絡中廣播RARP請求,RARP服務器接收廣播請求,發送應答報文,無盤工做站得到IP地址。
對應於ARP、RARP請求以廣播方式發送,ARP、RARP應答通常以單播方式發送,以節省網絡資源。
網際控制消息協議ICMP是一個網絡層的協議,它提供了錯誤報告和其它回送給源點的關於 IP 數據包處理狀況的消息。ICMP一般爲IP層或者更高層協議使用,一些ICMP報文把差錯報文返回給用戶進程。ICMP報文一般被封裝在IP數據包內傳輸。RFC 792 中有關於ICMP的詳細說明。
ICMP包含幾種不一樣的消息,其中ping程序藉助於echo request消息,主機可經過它來測試網絡的可達性,ICMP Echo Reply 消息表示該節點是可達的。ICMP還定義了源抑制(source quench)報文。當路由器的緩衝區滿後,送入的報文被丟棄,此時路由器向發送報文的主機發送源抑制報文,要求下降發送速率。
本文轉載自http://blog.csdn.net/cws1214/article/details/8078629