我們通常使用的網(wǎng)絡是在TCP/IP協(xié)議族的基礎上運作的裆甩,HTTP屬于它內部的一個子集。
HTTP是一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)医吊。(HTML 文件, 圖片文件, 查詢結果等)
網(wǎng)絡基礎TCP/IP
通常使用的網(wǎng)絡(包括互聯(lián)網(wǎng))是在TCP/IP協(xié)議族的基礎上運作的设哗。HTTP屬于它內部的一個子集诵棵。
TCP/IP協(xié)議族
計算機與網(wǎng)路設備要相互通信,雙方就必須基于相同的方法赊堪。比如面殖,如何探測到通信目標,由哪一邊先發(fā)起通信,使用哪種語言進行通信哭廉,怎樣結束通信等規(guī)則都需事先確定脊僚。不同的硬件,操作系統(tǒng)之間的通信遵绰,等都需要一種規(guī)則辽幌,我們把這種規(guī)則稱之為協(xié)議(protocol)
TCP/IP的分層管理
TCP/IP協(xié)議族里最重要的一點是分層。TCP/IP協(xié)議族按層次分可分為4層:應用層街立,傳輸層舶衬,網(wǎng)絡層和數(shù)據(jù)鏈路層。
分層的好處是什么呢赎离?如果互聯(lián)網(wǎng)只有一個協(xié)議統(tǒng)籌逛犹,某個地方需要改變設計時,就必須把所有部分整體替換掉。分層之后虽画,只需要把變動的層次替換掉舞蔽。把各層之間的接口部分規(guī)劃好之后,每個層次內部的設計可自由改動码撰。
應用層
應用層決定了向用戶提供應用服務時通信的活動渗柿。
TCP/IP協(xié)議族內預存了各類通用的應用服務。如:FTP(File Transfer Protocol,文件傳輸協(xié)議)和DNS(Domain Name System,域名系統(tǒng))脖岛,HTTP協(xié)議也屬于網(wǎng)絡層朵栖。
表示層
表示層:將應用處理的信息轉換為適合網(wǎng)絡傳輸?shù)母袷剑驅碜韵乱粚拥臄?shù)據(jù)轉換為上層能夠處理的格式柴梆;主要負責數(shù)據(jù)格式的轉換陨溅,確保一個系統(tǒng)的應用層信息可被另一個系統(tǒng)應用層讀取
會話層
會話層:負責建立和斷開通信連接(數(shù)據(jù)流動的邏輯通路),記憶數(shù)據(jù)的分隔等數(shù)據(jù)傳輸相關的管理
傳輸層
傳輸層對上層應用層绍在,提供處于網(wǎng)絡連接中的兩臺計算機直接的數(shù)據(jù)傳輸门扇。
這一層有兩個不同性質的協(xié)議:TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)。
網(wǎng)絡層(網(wǎng)絡互連層)
網(wǎng)絡層用來處理在網(wǎng)絡上流動的數(shù)據(jù)包偿渡。數(shù)據(jù)包是網(wǎng)絡傳輸?shù)淖钚?shù)據(jù)單位臼寄。這層規(guī)定了通過怎樣的路徑(即傳輸路線)到達對方計算機,并把數(shù)據(jù)包傳給對方溜宽。
如果與對方計算機之間通過多臺計算機或網(wǎng)絡設備進行傳輸時吉拳,網(wǎng)絡層的作用就是在多個選項內選擇一條傳輸路線。網(wǎng)絡層的協(xié)議有IP坑质,
ICMP(Internet Control Message Protocol,Internet控制報文協(xié)議合武,用于在IP主機、路由器之間傳遞控制消息涡扼。),
IGMP(互聯(lián)網(wǎng)組管理協(xié)議,用于IP主機向任一個直接相鄰的路由器報告他們的組成員情況)
鏈路層(數(shù)據(jù)鏈路層盟庞,網(wǎng)絡接口層)
數(shù)據(jù)鏈路層用來處理連接網(wǎng)絡的硬件部分吃沪。包括控制操作系統(tǒng),硬件的設備驅動什猖,NIC(Network INterface Card,網(wǎng)絡適配器票彪,即網(wǎng)卡),及光纖等物理可見部分不狮。硬件上的范疇均在鏈路層的作用范圍內降铸。
利用TCP/IP協(xié)議族網(wǎng)絡通信時,會通過分層順序與對方進行通信摇零。發(fā)送端從應用層往下走推掸,接收端則從鏈路層往上走。
物理層
物理層:負責0、1 比特流(0/1序列)與電壓的高低谅畅、逛的閃滅之間的轉換
規(guī)定了激活登渣、維持、關閉通信端點之間的機械特性毡泻、電氣特性、功能特性以及過程特性;該層為上層協(xié)議提供了一個傳輸數(shù)據(jù)的物理媒體卵佛。只是說明標準
在這一層蛇受,數(shù)據(jù)的單位稱為比特(bit)
用http舉個栗子:
- 發(fā)送端的客戶端在應用層(Http協(xié)議)發(fā)出一個想看某個Web頁面的http請求;
- 為了傳輸方便丹墨,在傳輸層(TCP協(xié)議)把從應用層收到的數(shù)據(jù)(HTTP請求報文)進行分割廊遍,并在各個報文上打上標記序號及端口號后轉發(fā)給網(wǎng)絡層。
- 在網(wǎng)絡層(IP協(xié)議)带到,增加作為通信目的的MAC地址后轉發(fā)給數(shù)據(jù)鏈路層昧碉。這樣整個發(fā)往網(wǎng)絡的通信請求準備齊全。
- 接收端的服務器在數(shù)據(jù)鏈路層接收到數(shù)據(jù)揽惹,按照往上層發(fā)送被饿,一直到應用層。直到傳輸?shù)綉脤犹虏潘阏嬲邮盏娇蛻舳税l(fā)送過來的Http請求狭握。
與HTTP關系密切的協(xié)議:IP、TCP疯溺、DNS
負責傳輸?shù)腎P協(xié)議
按照層次分论颅,IP(Internet Protocol)網(wǎng)際協(xié)議位于網(wǎng)絡層。
IP協(xié)議的作用:把各種數(shù)據(jù)包傳送給對方囱嫩。若要保證確實傳送到對方那里恃疯,則需要滿足割裂條件。其中兩個重要的條件是IP地址和MAC地址(Media Access Control Address).
IP地址指明了節(jié)點被分配到的地址墨闲,MAC地址是指網(wǎng)卡所屬的固定地址今妄。IP地址可以和MAC地址進行配對。IP地址可變化鸳碧,但MAC地址基本上不會改變盾鳞。
使用ARP協(xié)議憑借MAC地址進行通信
IP間的通信依賴MAC地址。在網(wǎng)絡上瞻离,通信的雙方在同一局域網(wǎng)(LAN)內的情況是很少的腾仅,通常是通過多臺計算機和網(wǎng)路設備中轉才能連接到對方。那么在進行中轉時套利,會利用下一站中轉設備的MAC地址來搜索下一個中轉目標推励。此時鹤耍,會采用ARP協(xié)議(Address Resolution Protocol)。
**ARP是一種用來解析地址的協(xié)議吹艇,根據(jù)通信方的IP地址就可以反查出對應得MAC地址惰蜜。
TCP協(xié)議確保可靠性
TCP位于傳輸層受神,提供可靠的字節(jié)流服務抛猖。
字節(jié)流服務(Byte Stream Service):為了便于傳輸,將大塊數(shù)據(jù)分割成以報文段(segment)為單位的數(shù)據(jù)包進行管理鼻听。
可靠的傳輸服務:能夠吧數(shù)據(jù)準確可靠的傳給對方财著。
TCP協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,且TCP協(xié)議能夠確認數(shù)據(jù)最終是否送達到對方撑碴。
為了準確無誤的將數(shù)據(jù)送達目標處撑教,TCP協(xié)議采用了三次握手(three-way handshaking)策略。
用TCP協(xié)議把數(shù)據(jù)包送出去后醉拓,TCP不會對傳送后的情況置之不理伟姐,它一定會向對方確認是否成功送達。握手過程中使用了TCP的標志——SYN(synchronize)和ACK(acknowledgement).
發(fā)送端首先發(fā)送一個帶SYN標志的數(shù)據(jù)包給對方亿卤。接收端收到后愤兵,回傳一個帶有SYN/ACK標志的數(shù)據(jù)包以示傳達確認信息。最后排吴,發(fā)送端再回傳一個帶有ACK標志的數(shù)據(jù)包秆乳,代表'握手'結束。
(若在握手過程中某個階段莫名中斷钻哩,TCP協(xié)議會再次以相同的順序發(fā)送相同的數(shù)據(jù)包)
第一次握手
客戶主動(active open)去connect服務器屹堰,并且發(fā)送SYN 假設序列號為J,
服務器是被動打開(passive open)
第二次握手
服務器在收到SYN后,它會發(fā)送一個SYN以及一個ACK(應答)給客戶街氢,
ACK的序列號是 J+1表示是給SYN J的應答扯键,新發(fā)送的SYN K 序列號是K
第三次握手
客戶在收到新SYN K, ACK J+1 后,也回應ACK K+1 以表示收到了珊肃,
然后兩邊就可以開始數(shù)據(jù)發(fā)送數(shù)據(jù)了
負責域名解析的DNS服務
DNS(Domain Name System)服務是和HTTP協(xié)議一個位于應用層的協(xié)議忧陪。
它提供域名到IP地址之間的解析服務。
(我們通常使用主機名或域名來訪問某個網(wǎng)站近范,如www.baidu.com,而不是之間通過IP地址來訪問)
DNS協(xié)議提供通過域名查找IP地址延蟹,或逆向從IP地址反查域名的服務评矩。
下圖為IP協(xié)議,TCP協(xié)議阱飘,DNS服務在使用HTTP協(xié)議通信過程中各自發(fā)揮的作用