Internet History,Technology,and Security -Technology: Application Protocols(Week7)

Week7

Technology: Application Protocols

This week, we’ll be covering application protocols. With reliable 「pipes」 available from the Transport layer, we can build applications like web browsers, file transfer applications, or email clients and servers.前端

時間飛逝,這周咱們將學習技術層次的最後一週,在這周裏,教授講解了最後一層Application Layer的內容,同時也說到了我之前的特別感興趣的」Hacker」,正如每一個男生內心都有一個武俠夢,每個IT男內心都有一個Hacker夢。哈哈哈web

Layer 4: Applications


 

Application Layer

學習了前三週,咱們知道,TCP/IP模型前三層,層層相扣,互相彌補,缺一不可。哪麼你其實也能夠推測出,第四層也是這樣的,依賴於第三層TCP層。TCP層的服務爲應用層提供了可靠、有序的端到端數據流。能夠從一臺電腦中一個應用程序開始,到另外一臺電腦的應用中結束並可提供雙向交流。在咱們獲得了這樣的框架後,咱們應該怎麼去使用它?在平常通訊中,咱們該如何請求數據?瀏覽器

在上圖中,兩側都有Application方框。通常來講,一側表明用戶,另外一側表明服務器。客戶端給咱們信息,而服務器負責給客戶端提供信息,因此客戶端常常要發出請求,而後服務器迴應請求,這之間的消息傳遞就是咱們以前所學習的四個層次。所以,咱們能夠基於這個原理創建郵件系統、萬維網或者咱們能夠觀看流視頻。這時候就要重點提一下萬維網了,它基於上面所說的原理,總體簡潔且優雅,能夠說是最爲人所熟知的一個概念,雖然也有不少其餘的協議存在,可是萬維網協議是最廣泛的協議。服務器

Application Layer有兩個基本問題:網絡

1.Which application gets the data?併發

  • Ports

2.What are the rules for talking with application?app

  • Protocols

Ports

所謂的端口,就好像是門牌號同樣,客戶端能夠經過ip地址找到對應的服務器端,可是服務器端是有不少端口的,每一個應用程序對應一個端口號,經過相似門牌號的端口號,客戶端才能真正的訪問到該服務器。爲了對端口進行區分,將每一個端口進行了編號,這就是端口號框架

IANA(Internet Assigned Number Authority,互聯網地址分配機構)維護了端口分配列表,分三類:學習

第一類:0-1023,衆所周知的端口。由IANA控制和分配,特定的網絡程序使用,例如:TCP協議使用80端口來完成http協議傳輸。優化

第二類:1024-49151,登記端口。不禁IANA控制,但IANA維護了登記表,不該該在程序中使用,若是沒有衝突狀況下也是能夠由用戶程序使用。

第三類:49152-65535,私有端口。能夠由普通用戶程序使用。

經常使用的端口

Application Protocols

服務器有許多端口,分別起着不一樣的做用。而一旦咱們和網絡服務器、郵箱服務器或郵局服務器有了鏈接,咱們就得了解如何和它進行溝通,這就是所謂的應用協議(Application protocols)。這也就是咱們要面對的第二個問題,與應用程序交談的規則是什麼?TCP提供了可靠的鏈接,咱們如今能夠經過端口連向想要的的服務器,而如今的問題是:咱們在整次鏈接中要說些什麼?說什麼?誰先說?須要發送些什麼內容?而這取決於你進行對話的是哪類服務器,例如在視頻中,就是使用萬維網服務器。

HTTP - Hypertext Transport Protocol

HTTP,超文本傳輸協議,是一個簡單的請求-響應協議,它一般運行在TCP之上。它指定了客戶端可能發送給服務器什麼樣的消息以及獲得什麼樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具備一個相似MIME的格式。萬維網服務器和客戶端的交流就是採用了HTTP協議。下面老師給咱們演示了一下HTTP協議響應機制。

當你點擊一個運行在你電腦中的客戶端client的一個link,瀏覽器就會和web server 鏈接併發送一個請求,web server看到了就會返回請求,返回的document就會出如今客戶端的桌面上。

Hacking HTTP

咱們知道,在現實生活中網絡彷佛漸漸變得無所不能。但網絡終究是死的,人是活的。在咱們瞭解協議的內容後,咱們就能夠嘗試去「攻擊」網站,由於HTTP基本上是一個公共協議,它並無被高度保護,因此它也是較爲容易被攻擊的,Windows系統須要下載Telnet,其最終的目的就是欺騙服務器,讓它認爲咱們是瀏覽器,從而向咱們發送數據。若是你看過黑客帝國,你必定會被Hacker這麼名詞所吸引,it is so cool!小的時候,我也想過若是當一名Hacker必定很是精彩。哈哈哈。

Application Layer Summary

應用層,基於底部的三層,不考慮底部技術細節,把它們抽象一個簡單的管子,連通客戶和服務器。

應用層是一個體量豐富的層次,在這一層就有許許多多的應用了。咱們使用端口號,這樣咱們就能夠鏈接到同一服務器上面的不一樣服務。

The Internet: An Amazing Design

介紹完Application Layer,咱們也講完了四層模型。但很是難以想象的是,這些大部分都來自1970年代的研究工做,且如今都還在使用,隨着NSFnet的出現,會有必定的調整,但關鍵性的調整也都是上個世紀八十年代的事了。但另外一方面,計算機的數量則大幅度增加,從1969年的6臺到2011年的幾十億級別,他們仍在使用這最初的六臺所使用的框架。當你看着如今的網絡的時候,你可能會以爲它像一個生物,有着鮮活的生命,它從蹣跚的小孩慢慢成長爲騰飛的巨龍。

俗話說不完美的纔是完美的。互聯網誕生開始就是不完美的。在互聯網誕生之際,咱們並無給它設置一個上限,而是讓它慢慢的成長,給他良好的擴張性,而這樣也使得它慢慢變得無比巨大。這很像在修仙小說裏修道同樣。每一個人的道都是不同的,一味的模仿就像給它設置了一個限制。模仿永遠不會有超越。只有經過本身的成長,纔能有本身的道。

Van Jacobson - Content Centered Networking


當咱們寫到這裏,咱們對互聯網技術層次的介紹就要接近尾聲了。咱們講了互聯網的歷史,互聯網現有的技術,在接近尾聲之際,教授則想要引起咱們對互聯網將來的展望,對互聯網將來的思考。你知道的,過去終究是過去,咱們只有面向將來纔會有更好的發展。在三十年以前,你根本沒法想象,互聯網的的出現會給世界帶來如此大的變化,固然你也沒法想象將來20年世界是怎麼樣的,所以咱們須要不斷的進步,不斷地優化,不斷地推陳出新。這也是教師給咱們看這個視頻的意義所在。你知道的,Van Jacobson 是一個天才,他的想法不少時候都領先於當時的世界,如今就讓咱們來看看他的想法。

Van在當時,提出了一個對將來互聯網的設想——Content Centric Networking(內容中心網絡),Van認爲咱們如今面臨着大量的關於拓展性問題,他想把以信息爲中心的網絡模型,和以主機爲中心的TCP/IP模型整合到一塊兒。

網絡最開始只是電腦的一個電話系統,但隨着需求的增長,ARPnet誕生了,它能夠不須要像電話線路同樣知道全部結點,它只須要知道消息發送的下一個結點,就能把數據發送出去,而到了二十一世紀後,網絡又有了新的發展。

但這些彷佛都和最開始的電話模型沒什麼關係,這給Van帶來了很大的衝擊,這讓他發出疑問:若是咱們放棄18世紀的電話模型,把注意力放在電線裏傳輸的信息,而不是電線自己,會怎麼樣? 咱們能不能把web看成通信的基礎,而不只僅是一個覆蓋在TCP/IP上的一層? 例如,你能夠在你的我的網站上面發佈一個視頻,可是你必須得寄但願於它的點擊量不是特別大,由於若是點擊量過大,你的連接配額將徹底飽和。那麼你的互聯網供應商(ISP)就會立刻關閉它,這就是 Slashdot 效應。現現在,你能夠看到像YouTube、谷歌、亞馬遜、臉書、推特都擁有着龐大的用戶羣,它們都是用一個IP地址代表本身,看起來就像只有一個地點,可是對於一個擁有數億用戶的單一地點來講,在對話模型下,它的通訊量將跟用戶數量同比增加,好比你正在更新推特或者上傳視頻,你想讓數百萬人看到,但你無法把它放到對話模型中。

因此,Van 他們花了許多的時間來讓網絡誤覺得只有一個地點,網絡層的信息在性質上與姓名,身份信息一致,只是它隨機的分散在整個分組裏。這樣他們有了源地址和目的地址,它的前部被網絡層調用,端口做爲更深層次的應用層調用,以及序列號,讓應用從新組裝成一個大的單元,URL的整個分層都要使用它,而不是隻有傳輸的部分。若是你把源地址,端口,序列號,URL均整合到了一塊兒,這些就是信息的特定名稱(the name of the information)。若是每個分組都有一個名字在上面,全部的信息都包含在其中,你隨時能夠查看它,只須要保證數據的前端工做是正常的。

你沒必要關心這些數據是從哪裏得到的,你只須要關心數據自己,而不是它的來源。若是咱們有兩我的同時在看同一個視頻,那麼最靠近咱們的上游網關會把一份拷貝發給我,把另外一份如出一轍的視頻拷貝發給你,它們都要經過那一個網關的內存,由於這個對話的抽象概念的存在,網關並不知道,咱們看的是相同的視頻,它看到的是兩個不一樣的對話,它無法看着它的內存,而後說:「哦!我有這個數據,我能夠直接給你。」它必需要從新拿到一個新的拷貝,並且要從YouTube那裏一路傳下來,致使這種槽糕的拓展性的緣由,是由於負載的拓展性或者說用戶數量嚴格地跟數據有關,並且數據只能有一個源頭。反過來若是你只關心數據自己 那麼你沿着數據的源頭方向去找。只要你在路上找到了這個數據,意味着你已經有了它的拷貝,那麼這個數據的傳送任務也就完成了。

Think after class

  • 化繁爲簡。在Week5中,咱們提到了Packet-switching,它的核心理念就是將一個龐大的數據分解成一個個小的數據,解決了網絡堵塞的問題。其實在生活中咱們也能夠貫徹這樣的想法。好比你要求天天被50個單詞,哪麼你就能夠分紅早上10個,中午10個,旁晚10個,晚上10個,睡覺10個。在生活中,這是一個很適用的方法。
  • 分而化之,專而一之。在TCP/IP的模型中,咱們知道每層都趨於專門化,這層只負責這個功能,哪層只負責哪層功能,這樣極大的提升了效率而且也使得每層更專業,這讓我想到了一句話,術業有專攻。人的精力是有限的,若是咱們想要作出什麼成就,應該專注且堅決不移地堅持下去。若是老是囫圇吞棗,終究上不得檯面。
  • .若是要解決一個問題,就要了解事物的本質。在Hacking HTTP這節中,咱們知道了協議的內容,咱們就能夠根據協議內容而攻擊服務器,正所謂,知彼知己,百戰不殆。

PS:(時間過的好快,轉眼間技術層次就學完了。在這三週裏,學到了不少乾貨。在計算機導論課堂上,老師也提到了TCP/IP模型等內容,但只是說了專有名詞,而在這三週的內容則是加深和擴張了我對網絡的瞭解。還有課後思考,如今的我只能作出哲理型思考,而不能作出技術型思考,你知道的技術須要專業的知識,並且只是一個嗷嗷待哺的小雛鷹,但願我在將來能早日作出對技術的思考,同時將思考轉化爲成果。加油!)

相關文章
相關標籤/搜索