操做系統:(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在「裸機」上的最基本的系統軟件,任何其餘軟件都必須在操做系統的支持下才能運行。html
注:計算機(硬件)->操做系統->應用軟件
具體連接以下:http://www.cnblogs.com/wj-1314/p/8302269.htmlpython
一臺硬設有了操做系統,而後裝上軟件你就能夠正常使用了,然而你也只能本身使用, 每一個人都擁有一臺本身的機器,然而彼此孤立,那麼如何把每一個人都聯繫在一塊兒呢? 若是把計算機當作分佈於世界各地的人,那麼鏈接兩臺計算機之間的internet實際上 就是一系列統一的標準,這些標準稱之爲互聯網協議,互聯網的本質就是一系列的協議, 總稱爲‘互聯網協議’(Internet Protocol Suite). 互聯網協議的功能:定義計算機如何接入internet,以及接入internet的計算機通訊的標準。
爲了使不一樣計算機廠家生產的計算機可以相互通訊,以便在更大的範圍內創建計算機網絡, 國際標準化組織(ISO)在1978年提出了「開放系統互聯參考模型」,即著名的OSI/RM模型 (Open System Interconnection/Reference Model)。它將計算機網絡體系結構的通訊 協議劃分爲七層,自下而上依次爲:物理層(Physics Layer)、數據鏈路層(Data Link Layer)、 網絡層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、 表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成數據傳送服務, 上面三層面向用戶。
TCP/IP協議毫無疑問是互聯網的基礎協議,沒有它就根本不可能上網,任何和互聯網有關的操做都離不開TCP/IP協議。無論是OSI七層模型仍是TCP/IP的四層、五層模型,每一層中都要本身的專屬協議,完成本身相應的工做以及與上下層級之間進行溝通。因爲OSI七層模型爲網絡的標準層次劃分,因此咱們以OSI七層模型爲例從下向上進行一一介紹。程序員
咱們將應用層,表示層,會話層並做應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能, 搞清楚了每層的主要協議就理解了整個互聯網通訊的原理。 首先,用戶感知到的只是最上面一層應用層,自上而下每層都依賴於下一層, 因此咱們從最下一層開始切入,比較好理解每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件。
物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0算法
激活、維持、關閉通訊端點之間的機械特性、電氣特性、功能特性以及過程特性。 該層爲上層協議提供了一個傳輸數據的可靠的物理媒體。 簡單的說,物理層確保原始的數據可在各類物理媒體上傳輸。 物理層記住兩個重要的設備名稱,中繼器(Repeater,也叫放大器)和集線器。
數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什麼意思 數據鏈路層的功能:定義了電信號的分組方式 數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層 來的數據可靠地傳輸到相鄰節點的目標機網絡層。爲達到這一目的,數據鏈路必須具有一系列相應 的功能,主要有:如何將數據組合成數據塊,在數據鏈路層中稱這種數據塊爲幀(frame),幀是 數據鏈路層的傳送單位;如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯,如何調節發送 速率以使與接收方相匹配;以及在兩個網絡實體之間提供數據鏈路通路的創建、維持和釋放的管理。 數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的做用包括:物理地址尋址、數據的成幀 、流量控制、數據的檢錯、重發等。
有關數據鏈路層的重要知識點:數據庫
1> 數據鏈路層爲網絡層提供可靠的數據傳輸; 2> 基本數據單位爲幀; 3> 主要的協議:以太網協議; 4> 兩個重要設備名稱:網橋和交換機。
以太網協議:編程
早期的時候各個公司都有本身的分組方式,後來造成了贊成的標準,即以太網協議ethernet瀏覽器
ethernet規定 一組電信號構成一個數據包,叫作幀 每一數據幀分紅:報頭head和數據data兩部分
head包括(固定18個字節)緩存
data包括(最短46字節,最長1500字節)安全
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送服務器
mac地址:
head中包括的源和目標地址由來:ethernet規定接入internet的設備都必須具有網卡,發送端和接收端的地址即是指網卡的地址,即mac地址
mac地址:每塊網卡出廠時都被燒製上一個世界惟一的mac地址,長度爲48位2進制,一般由12位16進制數表示(前六位是廠商編號,後六位是流水線號)
廣播:
有了mac地址,同一網絡內的兩臺主機就能夠通訊了(一臺主機經過arp協議獲取另一臺主機的mac地址)
ethernet採用最原始的方式,廣播的方式進行通訊,即計算機通訊基本靠吼
網絡層的目的是實現兩個端系統之間的數據透明傳送,具體功能包括尋址和路由選擇、鏈接的創建、保持和終止等。它提供的服務使傳輸層不須要了解網絡中的數據傳輸和交換技術。若是您想用盡可能少的詞來記住網絡層,那就是「路徑選擇、路由及邏輯尋址」。
網絡層中涉及衆多的協議,其中包括最重要的協議,也是TCP/IP的核心協議——IP協議。IP協議很是簡單,僅僅提供不可靠、無鏈接的傳送服務。IP協議的主要功能有:無鏈接數據報傳輸、數據報路由選擇和差錯控制。與IP協議配套使用實現其功能的還有地址解析協議ARP、逆地址解析協議RARP、因特網報文協議ICMP、因特網組管理協議IGMP。具體的協議咱們會在接下來的部分進行總結,有關網絡層的重點爲:
1> 網絡層負責對子網間的數據包進行路由選擇。此外,網絡層還能夠實現擁塞控制、網際互連等功能; 2> 基本數據單位爲IP數據報; 3> 包含的主要協議: IP協議(Internet Protocol,因特網互聯協議); ICMP協議(Internet Control Message Protocol,因特網控制報文協議); ARP協議(Address Resolution Protocol,地址解析協議); RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)。 4> 重要的設備:路由器。
第一個端到端,即主機到主機的層次。傳輸層負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。
1> 傳輸層負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸以及端到端的 差錯控制和流量控制問題; 2> 包含的主要協議:TCP協議(Transmission Control Protocol,傳輸控制協議)、 UDP協議(User Datagram Protocol,用戶數據報協議); 3> 重要設備:網關。
會話層管理主機之間的會話進程,即負責創建、管理、終止進程之間的會話。 會話層還利用在數據中插入校驗點來實現數據的同步。
表示層對上層數據或信息進行變換以保證一個主機應用層信息能夠被另外一個主機的應用程序理解。 表示層的數據轉換包括數據的加密、壓縮、格式轉換等。
應用層由來:用戶使用的都是應用程序,均工做於應用層,互聯網是開發的, 你們均可以開發本身的應用程序,數據多種多樣,必須規定好數據的組織形式 應用層功能:規定應用程序的數據格式。
例:TCP協議能夠爲各類各樣的程序傳遞數據,好比Email、WWW、FTP等等。那麼,必須有不一樣協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了」應用層」。
會話層、表示層和應用層重點:
1> 數據傳輸基本單位爲報文; 2> 包含的主要協議:FTP(文件傳送協議)、Telnet(遠程登陸協議)、DNS(域名解析協議)、 SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議(Hyper Text Transfer Protocol)。
本機的IP地址 子網掩碼 網關的IP地址 DNS的IP地址
1.靜態獲取 即手動配置 2.動態獲取 經過dhcp獲取
以太網頭 | ip頭 | udp頭 | dhcp數據包 |
(1)最前面的」以太網標頭」,設置發出方(本機)的MAC地址和接收方(DHCP服務器)的MAC地址。前者就是本機網卡的MAC地址,後者這時不知道,就填入一個廣播地址:FF-FF-FF-FF-FF-FF。
(2)後面的」IP標頭」,設置發出方的IP地址和接收方的IP地址。這時,對於這二者,本機都不知道。因而,發出方的IP地址就設爲0.0.0.0,接收方的IP地址設爲255.255.255.255。
(3)最後的」UDP標頭」,設置發出方的端口和接收方的端口。這一部分是DHCP協議規定好的,發出方是68端口,接收方是67端口。
這個數據包構造完成後,就能夠發出了。以太網是廣播發送,同一個子網絡的每臺計算機都收到了這個包。由於接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是發給誰的,因此每臺收到這個包的計算機,還必須分析這個包的IP地址,才能肯定是否是發給本身的。當看到發出方IP地址是0.0.0.0,接收方是255.255.255.255,因而DHCP服務器知道」這個包是發給個人」,而其餘計算機就能夠丟棄這個包。
接下來,DHCP服務器讀出這個包的數據內容,分配好IP地址,發送回去一個」DHCP響應」數據包。這個響應包的結構也是相似的,以太網標頭的MAC地址是雙方的網卡地址,IP標頭的IP地址是DHCP服務器的IP地址(發出方)和255.255.255.255(接收方),UDP標頭的端口是67(發出方)和68(接收方),分配給請求端的IP地址和本網絡的具體參數則包含在Data部分。
新加入的計算機收到這個響應包,因而就知道了本身的IP地址、子網掩碼、網關地址、DNS服務器等等參數
本機的IP地址:192.168.1.100 子網掩碼:255.255.255.0 網關的IP地址:192.168.1.1 DNS的IP地址:8.8.8.8
NAT網絡地址轉換(Network Address Translation)屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化爲合法IP地址的轉換技術,它被普遍應用於各類類型Internet接入方式和各類類型的網絡中。緣由很簡單,NAT不只完美地解決了lP地址不足的問題,並且還可以有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。
DNS是域名系統(DomainNameSystem)的縮寫,該系統用於命名組織到域層次結構中的計算機和網絡服務,能夠簡單地理解爲將URL轉換爲IP地址。域名是由圓點分開一串單詞或縮寫組成的,每個域名都對應一個唯一的IP地址,在Internet上域名與IP地址之間是一一對應的,DNS就是進行域名解析的服務器。DNS命名用於Internet等TCP/IP網絡中,經過用戶友好的名稱查找計算機和服務。
13臺根dns:
A.root-servers.net198.41.0.4美國 B.root-servers.net192.228.79.201美國(另支持IPv6) C.root-servers.net192.33.4.12法國 D.root-servers.net128.8.10.90美國 E.root-servers.net192.203.230.10美國 F.root-servers.net192.5.5.241美國(另支持IPv6) G.root-servers.net192.112.36.4美國 H.root-servers.net128.63.2.53美國(另支持IPv6) I.root-servers.net192.36.148.17瑞典 J.root-servers.net192.58.128.30美國 K.root-servers.net193.0.14.129英國(另支持IPv6) L.root-servers.net198.32.64.12美國 M.root-servers.net202.12.27.33日本(另支持IPv6)
域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html
頂級域名:以.com,.net,.org,.cn等等屬於國際頂級域名,根據目前的國際互聯網域名體系,國際頂級域名分爲兩類:類別頂級域名(gTLD)和地理頂級域名(ccTLD)兩種。類別頂級域名是 以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結尾的域名,均由國外公司負責管理。地理頂級域名是以國家或地區代碼爲結尾的域名,如"CN"表明中國,"UK"表明英國。地理頂級域名通常由各個國家或地區負責管理。
二級域名:二級域名是以頂級域名爲基礎的地理域名,比喻中國的二級域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
通常來講,二級域名是域名的一條記錄,好比alidiedie.com是一個域名,www.alidiedie.com是其中比較經常使用的記錄,通常默認是用這個,可是相似*.alidiedie.com的域名所有稱做是alidiedie.com的二級
GET / HTTP/1.1 Host: www.google.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1) …… Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: … …
咱們假定這個部分的長度爲4960字節,它會被嵌在TCP數據包之中。
超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲普遍的一種網絡協議。全部的WWW文件都必須遵照這個標準。
HTTP 協議包括哪些請求?
GET:請求讀取由URL所標誌的信息。 POST:給服務器添加信息(如註釋)。 PUT:在給定的URL下存儲一個文檔。 DELETE:刪除給定的URL所標誌的資源。
HTTP 中, POST 與 GET 的區別
1)Get是從服務器上獲取數據,Post是向服務器傳送數據。 2)Get是把參數數據隊列加到提交表單的Action屬性所指向的URL中, 值和表單內各個字段一一對應,在URL中能夠看到。 3)Get傳送的數據量小,不能大於2KB;Post傳送的數據量較大,通常被默認爲不受限制。 4)根據HTTP規範,GET用於信息獲取,並且應該是安全的和冪等的。 I. 所謂 安全的 意味着該操做用於獲取信息而非修改信息。換句話說, GET請求通常不該產生反作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢同樣, 不會修改,增長數據,不會影響資源的狀態。 II. 冪等 的意味着對同一URL的多個請求應該返回一樣的結果。
TCP數據包須要設置端口,接收方(Google)的HTTP端口默認是80,發送方(本機)的端口是一個隨機生成的1024-65535之間的整數,假定爲51775。
TCP數據包的標頭長度爲20字節,加上嵌入HTTP的數據包,總長度變爲4980字節。
TCP/IP協議是Internet最基本的協議、Internet國際互聯網絡的基礎,由網絡層的IP協議和傳輸層的TCP協議組成。通俗而言:TCP負責發現傳輸的問題,一有問題就發出信號,要求從新傳輸,直到全部數據安全正確地傳輸到目的地。而IP是給因特網的每一臺聯網設備規定一個地址。
TCP是面向鏈接的通訊協議,經過三次握手創建鏈接,通信完成時要拆除鏈接,因爲TCP是面向鏈接的因此只能用於端到端的通信。TCP提供的是一種可靠的數據流服務,採用「帶重傳的確定確認」技術來實現傳輸的可靠性。TCP還採用一種稱爲「滑動窗口」的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。
TCP報文首部格式:
TCP協議的三次握手和四次揮手:
三次握手: client發送請求創建通道; server收到請求並贊成,同時也發送請求建通道; client收到請求並贊成,創建完成 四次揮手: client發送請求斷開通道; server收到請求並贊成,同時還回復client上一條消息; server也發送請求斷開通道; client受到消息結束
注:seq:"sequance"序列號;ack:"acknowledge"確認號;SYN:"synchronize"請求同步標誌;;ACK:"acknowledge"確認標誌";FIN:"Finally"結束標誌。
TCP鏈接創建過程:首先Client端發送鏈接請求報文,Server段接受鏈接後回覆ACK報文,併爲此次鏈接分配資源。Client端接收到ACK報文後也向Server段發生ACK報文,並分配資源,這樣TCP鏈接就創建了。
TCP鏈接斷開過程:假設Client端發起中斷鏈接請求,也就是發送FIN報文。Server端接到FIN報文後,意思是說"我Client端沒有數據要發給你了",可是若是你還有數據沒有發送完成,則沒必要急着關閉Socket,能夠繼續發送數據。因此你先發送ACK,"告訴Client端,你的請求我收到了,可是我還沒準備好,請繼續你等個人消息"。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端肯定數據已發送完成,則向Client端發送FIN報文,"告訴Client端,好了,我這邊數據發完了,準備好關閉鏈接了"。Client端收到FIN報文後,"就知道能夠關閉鏈接了,可是他仍是不相信網絡,怕Server端不知道要關閉,因此發送ACK後進入TIME_WAIT狀態,若是Server端沒有收到ACK則能夠重傳。「,Server端收到ACK後,"就知道能夠斷開鏈接了"。Client端等待了2MSL後依然沒有收到回覆,則證實Server端已正常關閉,那好,我Client端也能夠關閉鏈接了。Ok,TCP鏈接就這樣關閉了!
爲何要三次揮手?
舉個打電話的例子: A:你好,我是A,你能聽得見我說話嗎 A->SYN_SEND B:聽到了,我是B,你能聽到我說話嗎? 應答與請求同時發出 B->SYN_RCVD | A->ESTABLISHED A:嗯,聽到了 B->ESTABLISHED 創建鏈接就ok了,三次聯繫
在只有兩次「握手」的情形下,假設Client想跟Server創建鏈接,可是卻由於中途鏈接請求的數據報丟失了,故Client端不得不從新發送一遍;這個時候Server端僅收到一個鏈接請求,所以能夠正常的創建鏈接。可是,有時候Client端從新發送請求不是由於數據報丟失了,而是有可能數據傳輸過程由於網絡併發量很大在某結點被阻塞了,這種情形下Server端將前後收到2次請求,並持續等待兩個Client請求向他發送數據...問題就在這裏,Cient端實際上只有一次請求,而Server端卻有2個響應,極端的狀況可能因爲Client端屢次從新發送請求數據而致使Server端最後創建了N多個響應在等待,於是形成極大的資源浪費!因此,「三次握手」頗有必要!
爲何要四次揮手?
A:「喂,我不說了。」A->FIN_WAIT1 B:「我知道了。等下,上一句還沒說完。Balabala…..」B->CLOSE_WAIT | A->FIN_WAIT2 B:」好了,說完了,我也不說了。」B->LAST_ACK A:」我知道了。」A->TIME_WAIT | B->CLOSED A等待2MSL,保證B收到了消息,不然重說一次」我知道了」,A->CLOSED
試想一下,假如如今你是客戶端你想斷開跟Server的全部鏈接該怎麼作?第一步,你本身先中止向Server端發送數據,並等待Server的回覆。但事情尚未完,雖然你自身不往Server發送數據了,可是由於大家以前已經創建好平等的鏈接了,因此此時他也有主動權向你發送數據;故Server端還得終止主動向你發送數據,並等待你的確認。其實,說白了就是保證雙方的一個合約的完整執行!
使用TCP的協議:FTP(文件傳輸協議)、Telnet(遠程登陸協議)、SMTP(簡單郵件傳輸協議)、POP3(和SMTP相對,用於接收郵件)、HTTP協議等。
而後,TCP數據包再嵌入IP數據包。IP數據包須要設置雙方的IP地址,這是已知的,發送方是192.168.1.100(本機),接收方是172.194.72.105(Google)。
IP數據包的標頭長度爲20字節,加上嵌入的TCP數據包,總長度變爲5000字節。
最後,IP數據包嵌入以太網數據包。以太網數據包須要設置雙方的MAC地址,發送方爲本機的網卡MAC地址,接收方爲網關192.168.1.1的MAC地址(經過ARP協議獲得)。
以太網數據包的數據部分,最大長度爲1500字節,而如今的IP數據包長度爲5000字節。所以,IP數據包必須分割成四個包。由於每一個包都有本身的IP標頭(20字節),因此四個包的IP數據包的長度分別爲1500、1500、1500、560。
DHCP動態主機設置協議(Dynamic Host Configuration Protocol)是一個局域網的網絡協議,使用UDP協議工做,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員做爲對全部計算機做中央管理的手段。
UDP用戶數據報協議,是面向無鏈接的通信協議,UDP數據包括目的端口號和源端口號信息,因爲通信不須要鏈接,因此能夠實現廣播發送。UDP通信時不須要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程序員編程驗證。
RIP協議 :底層是貝爾曼福特算法,它選擇路由的度量標準(metric)是跳數,最大跳數是15跳,若是大於15跳,它就會丟棄數據包。
OSPF 協議 :Open Shortest Path First開放式最短路徑優先,底層是迪傑斯特拉算法,是鏈路狀態路由選擇協議,它選擇路由的度量標準是帶寬,延遲。ARP工做流程舉例:
逆地址解析協議,即RARP,功能和ARP協議相對,其將局域網中某個主機的物理地址轉換爲IP地址,好比局域網中有一臺主機只知道物理地址而不知道IP地址,那麼能夠經過RARP協議發出徵求自身IP地址的廣播請求,而後由RARP服務器負責回答。
RARP協議工做流程:
(1)給主機發送一個本地的RARP廣播,在此廣播包中,聲明本身的MAC地址而且請求任何收到 此請求的RARP服務器分配一個IP地址; (2)本地網段上的RARP服務器收到此請求後,檢查其RARP列表,查找該MAC地址對應的IP地址; (3)若是存在,RARP服務器就給源主機發送一個響應數據包並將此IP地址提供給對方主機使用; (4)若是不存在,RARP服務器對此不作任何的響應; (5)源主機收到從RARP服務器的響應信息,就利用獲得的IP地址進行通信;若是一直沒有收到 RARP服務器的響應信息,表示初始化失敗。
通過多個網關的轉發,Google的服務器172.194.72.105,收到了這四個以太網數據包。
根據IP標頭的序號,Google將四個包拼起來,取出完整的TCP數據包,而後讀出裏面的」HTTP請求」,接着作出」HTTP響應」,再用TCP協議發回來。
本機收到HTTP響應之後,就能夠將網頁顯示出來,完成一次網絡通訊。
如今假設若是咱們在客戶端(客戶端)瀏覽器中輸入http://www.baidu.com,而baidu.com爲要訪問的服務器(服務器),下面詳細分析客戶端爲了訪問服務器而執行的一系列關於協議的操做:
1)客戶端瀏覽器經過DNS解析到www.baidu.com的IP地址220.181.27.48,經過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,而後經過TCP進行封裝數據包,輸入到網絡層。
2)在客戶端的傳輸層,把HTTP會話請求分紅報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。而後使用IP層的IP地址查找目的端。
3)客戶端的網絡層不用關係應用層或者傳輸層的東西,主要作的是經過查找路由表肯定如何到達服務器,期間可能通過多個路由器,這些都是由路由器來完成的工做,不做過多的描述,無非就是經過查找路由表決定經過那個路徑到達服務器。
4)客戶端的鏈路層,包經過鏈路層發送到路由器,經過鄰居協議查找給定IP地址的MAC地址,而後發送ARP請求查找目的地址,若是獲得迴應後就可使用ARP的請求應答交換的IP數據包如今就能夠傳輸了,而後發送IP數據包到達服務器的地址。
此處參考http://www.cnblogs.com/maybe2030/p/4781555.html#_labelTop
在這裏只做爲學習,複習的資料,謝謝