網絡協議簡介(借鑑大神,僅做爲筆記用)

1、網絡分層編程

 網絡上的計算機之因此能夠互相通訊,是由於它們之間都遵照互相均可以「認識」的互聯網協議(就如同人交流同樣,兩我的可以交流,互相必須知道對象的語言),互聯網上的計算機互相通訊又歸根於網絡中層與層之間的通訊,OSI模型把網絡通訊分紅七層:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層,對於開發網絡應用人員來講,通常把網絡分紅五層,這樣比較容易理解。這五層爲:物理層、數據鏈路層、網絡層、傳輸層和應用層(最頂層),下面是一張網絡分層的圖片(來源於網絡):瀏覽器

 

 

2、各層的協議服務器

網絡中的計算機互相通訊就是實現了層與層之間的通訊,要實現層與層之間的通訊,則各層都要遵照規則,這樣才能完成更好的通訊, 咱們就把它們之間遵照的規則就叫個「協議」,然而網絡上的五層之間遵照的協議不同,每層都有各自的協議。下面就由下至上的講述每層的協議網絡

2.1 物理層協議app

物理層是五層模型中的最底層,物理層爲計算機之間的數據通訊提供了傳輸媒體和互連設備,爲數據傳輸提供了可靠的環境,媒體包括電纜、光纖、無線信道等,互連設備指是計算機和調制解調器之間的互連設備,如各類插頭、插座等。該層的做用是透明的傳輸比特流(即二進制流),爲數據鏈路層提供一個傳輸原始比特流的物理鏈接ide

2.2 數據鏈路層.net

數據鏈路層是模型中的第2層,該層對接受到物理層傳輸過來的比特流進行分組,一組電信號構成的數據包,就叫作"幀",數據鏈鏈路層就是來傳輸以"幀"爲單位的數據包,把數據傳遞給上一層(網絡層),幀數據由兩部分組成:幀頭和幀數據,幀頭包括接受方物理地址(就是網卡的地址)和其餘的網絡信息,幀數據就是要傳輸的數據體。數據幀的最長爲1500字節,若是數據很長,就必須分割成多個幀進行發送。3d

 

2.3 網絡層excel

該層經過尋址(尋址地址)來創建兩個節點之間的鏈接,你們都知道咱們的電腦鏈接上網絡後都一個IP地址,咱們能夠經過IP地址來肯定不一樣的計算機是否在同一個子網路。若是咱們的電腦鏈接上網絡後就有兩種地址:物理地址和網絡地址(IP地址),網絡上的計算機要通訊,必需要知道通訊的計算機「在哪裏」, 首先經過網絡地址來判斷是否處於同一個子網絡,而後再對物理地址(MAC)地址進行處理,從而準確肯定要通訊計算機的位置。xml

在網絡層中有咱們熟悉的IP協議(即規定網絡地址的協議),目前普遍採用的是IP協議第四版(IPv4),這個版本規定,網絡地址由32位二進制位組成。咱們能夠本身配置IP地址也能夠自動得到的方式獲得IP地址,Ip地址分紅兩部分,前24位表明網絡,後8位表明主機號, 如192.168.254.1和192.168.254.2就處於同一個子網絡裏,由於這兩個IP地址的前24位相同。

網絡層中以IP數據包的形式來傳遞數據,IP數據包也包括兩部分:頭(Head)和數據(Data),IP數據包放進數據幀中的數據部分進行傳輸。

2.4 傳輸層

經過MAC和IP地址,咱們能夠找到互聯網上任意兩臺主機來創建通訊。然而這裏有一個問題,找到主機後,主機上有不少程序都須要用到網絡,好比說你在一邊聽歌和好用QQ聊天, 當網絡上發送來一個數據包時, 是怎麼知道它是表示聊天的內容仍是歌曲的內容的, 這時候就須要一個參數來表示這個數據包是發送給那個程序(進程)來使用的,這個參數咱們就叫作端口號,主機上用端口號來標識不一樣的程序(進程),端口是0到65535之間的一個整數,0到1023的端口被系統佔用,用戶只能選擇大於1023的端口。

傳輸層的功能就是創建端口到端口的通訊,網絡層就是創建主機與主機的通訊,這樣若是咱們肯定了主機和端口,這樣就能夠實現程序之間的通訊了。咱們所說的Socket編程就是經過代碼來實現傳輸層之間的通訊。由於初始化Socket類對象要指定IP地址和端口號。

在傳輸層有兩個很是重要的協議:UDP 協議和TCP協議

採用UDP協議話傳輸的就是UDP數據包,一樣UDP數據包也由頭和數據兩部分組成,頭部分主要標識了發送端口和接受端口,數據部分就是具體的內容信息。一樣UDP數據包是放入IP數據包中的"數據"部分,IP數據包再放入數據幀中在網絡上傳輸。

因爲UDP協議的可靠性差(數據發送後沒法肯定對方是否收到),因此又定義了一個可靠性高的協議——TCP協議,TCP協議採起了握手的方式要確保對方收到了數據。

 

2.5 應用層

應用層是模型中的最頂層,是用戶與網絡的接口,該層經過應用程序來完成網絡用戶的應用需求。該層的數據放在TCP數據包的數據部分,該層定義了一個很重要的協議——Http協議,咱們通常的Web開發都是基於應用層的開發, 因此後面專題將會和你們介紹下Http協議。理解Http協議能夠幫助咱們理解Asp.Net的請求響應模型以及幫助咱們自定義發出請求和自定義服務器。

 

3、總結

如今經過一個簡單的訪問網頁的例子來講明網絡中的通訊。

當咱們在瀏覽器中輸入www.baidu.com時,這意味着瀏覽器要向百度發送一個網頁數據包,要發送數據包,須要知道對方的IP地址,這裏咱們只知道網址爲www.baidu.com,殊不知道IP地址,此時應用層協議DNS協議會幫咱們把網址解析爲IP地址,此時會發送一個DNS數據包給DNS服務器,DNS服務器再作出響應來告訴咱們百度的IP地址爲220.181.111.147,這樣咱們就知道百度(咱們須要通訊的主機)的IP地址。

應用層:

 瀏覽網頁採用的是HTTP 協議,HTTP數據包會嵌入在TCP數據包中,此時咱們發送的HTTP數據包內容爲:

GET http://www.baidu.com/ HTTP/1.1  

Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*  

Accept-Language: en-US  

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7; InfoPath.3; MS-RTC LM 8)  

Accept-Encoding: gzip, deflate, peerdist  

Proxy-Connection: Keep-Alive  

Host: www.baidu.com  

Cookie: BDSFRCVID=H1K_JgC2l434o0a3SlYrhIyDwFLxPM7C3J; H_BDCLCKID_SF=tJAt_C8htDv5HTuRj63D5JcH-UnLqMkDWaOZ0h8-aI-5MbAx-jb6hhFXM-r80nblBTbT2C3nthF0HPonHj8Bej5L3J; BAIDUID=C0E879D1A40237E70E9FA559D40EE0AC:FG=1; BDUT=w5n3C0E879D1A40237E70E9FA559D40EE0AC13914a661370; BDUSS=FEQVdNdjllMTYyYlRxY3ZZbW1hM2htemdqZFVJcWRLWmFBaEtqd1FoTDNXeE5SQUFBQUFBJCQAAAAAAAAAAAoqyysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwLjI2LjE5Ny43NwAAAADAxFInAAAAAPcNJlD3DSZQYV; BDRCVFR[eYjbPwSqvSs]=2g3v5sBI-NCpv4EILPoXi4WUvY; Hm_lvt_9f14aaa038bbba8b12ec2a4a3e51d254=1344671219756; Hm_lpvt_9f14aaa038bbba8b12ec2a4a3e51d254=1344671219756  

X-P2P-PeerDist: Version=1.0  

傳輸層:TCP數據包須要設置端口,接收方(百度)的Http端口默認是80,本機的端口是一個1024-65535之間的隨機整數,這裏假設爲1025,這樣TCP數據包由標頭(標識着發方和接收方的端口信息)+HTTP數據包,這樣TCP數據包再嵌入IP數據包中在網絡上傳送

網絡層:IP數據包須要知道雙方的IP地址,本機IP地址假定爲192.168.1.5,接受方IP地址爲220.181.111.147(百度),這樣IP數據包由頭部(IP地址信息)+TCP數據包,

數據鏈路層:IP數據包嵌入到數據幀(以太網數據包)中,以太網數據包須要知道雙方的MAC(物理地址),發送方爲本機的網卡地址,接受方爲網關192.168.1.1的MAC地址(經過ARP地址解析協議獲得的)。這樣數據幀由頭部(MAC地址)+IP數據包組成。

通過多個網關的轉發到百度服務器220.181.111.147,服務器接受到發送過來的以太網數據包,而後再從以太網數據包中提取IP數據包——>TCP數據包——>HTTP數據包,最後服務器作出"HTTP響應",再用TCP協議發回給客戶端(瀏覽器),瀏覽器一樣的過程讀取到HTTP響應的內容(HTTP響應數據包),而後瀏覽器對接受到的HTML頁面進行解析,把網頁顯示出來呈現給用戶,這樣就完成了一次網絡通訊了。

相關文章
相關標籤/搜索