網絡基礎
http介紹
在web browser(網頁瀏覽器)的地址欄中輸入URL後,web browser會去從web服務器獲取文件資源等信息,然後顯示web頁面。像這種通過獲取服務器資源的web browser都可以稱爲client(客戶端)。
HTTP(HyperText Transfer Protocol,超文本傳輸協議)。web是建立在HTTP協議上通信的。
WWW(World Wide Web,萬維網),三項構建技術:把SGML(Standard Generalized Markup Language,標準通用標記語言)作爲頁面的文本標記語言的HTML(HyperText Markup Language,超文本標記語言);作爲文檔傳遞協議的HTTP;作爲文檔所在地址的URL(Uniform Resource Locator,統一資源定位符)。
TCP/IP基礎
通常使用的網絡是在TCP/IP協議族的基礎上運作的,HTTP是其內部一個子集。
TCP/IP協議族
計算機與網絡設備相互通信需基於相同的方法。不同的硬件,操作系統之間的通信,所有的一切都需要一種規則。這種規則被稱爲protocol(協議)。
把與互聯網相關聯的協議集合起來的總稱就是TCP/IP。
TCP/IP的分層管理
TCP/IP協議按層次分爲4層:應用層,傳輸層,網絡層,數據鏈路層。
TCP/IP層次化後,每當修改後只需要改變相應的層即可。
各層次作用:
- 應用層
決定了向用戶提供應用服務時通信的活動
TCP/IP協議族內預存了各類通用的應用服務。如FTP(File Transfer Protocol,文件傳輸協議)和DNS(Domain Name System 域名系統)
HTTP協議也屬於該層
- 傳輸層
傳輸層對上層應用層,提供處於網絡連接中的兩臺計算機之間的數據傳輸。
在傳輸層有兩個性質不同的協議:TCP(Transmission Control Protocol, 傳輸控制協議)和UDP(User Data protocol,用戶數據報協議)
- 網絡層(網絡互連層)
網絡層處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了傳輸路徑。
與對方計算機之間通過多臺計算機或網絡設備進行傳輸時,網絡層所起作用:在衆多的選項內選擇一條傳輸路線。
- 鏈路層(數據鏈路層/網絡接口層)
用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡)、光纖等物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的範疇都在鏈路層的作用範圍內
TCP/IP通信傳輸流
利用TCP/IP協議族進行網絡通信時,會通過分層順序與對方進行通信。發送端從應用層往下走,接收端則往應用層上走。
HTTP爲例:作爲發送端的客戶端在應用層(HTTP協議)發出一個想看某個Web頁面的HTTP請求,在傳輸層(TCP協議)把應用層處收到的數據(HTTP請求報文)進行分割,並在各個報文上打上標記序號及端口號後轉發給網絡層。在網絡層(IP協議)增加作爲通信目的地的MAC地址後轉發給鏈路層。接受端的服務器在鏈路層接收到數據,按序往上層發送直到應用層。當傳輸到應用層,才能算接收到由客戶端發送過來的HTTP請求。
發送端在層與層之間傳輸數據時,每經過一層會被打上一個該層所屬的首部信息。反之接受時,消去。
這種把數據信息包裝起來的做法稱爲封裝(encapsulate)。
IP、TCP、DNS
負責傳輸的IP協議
按層次分,IP(Internet Protocol)網際協議位於網絡層。幾乎所有使用網絡的系統都會用到IP協議。TCP/IP協議族中的IP指的就是網際協議。
IP協議的作用是把各種數據包傳送給對方。爲保證確實傳送到對方那裏,則需要滿足各類條件。最重要的條件是IP地址和MAC地址(Media Access Control Address).
IP地址指明瞭節點被分配到的地址,MAC地址是指網卡所屬的固定地址。IP地址可以和MAC地址配對,IP地址可以變化,MAC地址基本上不會更改。
使用ARP協議憑藉MAC地址進行通信
IP間的通信依賴MAC地址。不在同一局域網中(LAN),通信通常是通過多臺計算機和網絡設備中專才能連接到對方。進行中轉時,會利用下一站中轉設備的MAC的地址來搜索下一個中轉目標。這裏會採用ARP協議(Address Resolution Protocol).ARP是一種用以解析地址的協議,根據通信方的IP地址就可以反查出對應的MAC地址。
沒有人可以全面掌握互聯網中的傳輸狀況
在到達通信目標前的中轉過程中,哪些計算機和路由器等網絡設備只能獲悉很初略的傳輸路線。
這種機制成爲路由選擇(routing)。
確保可靠性的TCP協議
按層次分,TCP位於傳輸層,提供可靠的字節流服務。
字節流服務(Byte Stream Service)是指,爲傳輸方便,將大塊數據分割成以報文段(segment)爲單位的數據包進行管理。而可靠的傳輸服務是指,把數據準確可靠地傳給對方。
確保數據能到達目標
爲準確將數據傳送到目標,TCP協議採用了三次握手策略(three-way handshaking).用TCP協議把數據包送出去後,TCP一定會向對方確認是否成功送達。握手過程中使用了TCP的標誌(flag)——SYN(synchronize)和ACK(acknowledgement)
發送端首先發送一個帶SYN標誌的數據包給對方。接收到後回傳一個帶有SYN/ACK標誌的數據包已示傳達確認信息,發送端再回傳一個帶ACK標誌的數據包,代表結束。
若在握手過程中某個截斷中斷,TCP寫一個會再次以相同的數序發送相同的數據包。
除上述,TCP還有其他手段來保證通信的可靠性。
負責域名解析的DNS服務
DNS(Domain Name System)服務是和HTTP協議一樣位於應用層的協議。它提供域名到IP地址之間的解析服務。
計算機既可以被賦予地址,也可以被賦予主機名和域名。
通常使用主機名或域名來訪問對方的計算機,而不是直接使用IP地址訪問。前者更容易記憶。
DNS協議提供通過域名查找IP地址,或逆向從IP地址反查域名的服務。
各種協議與HTTP協議的關係
URI和URL
URI(統一資源標識符),URL(Uniform Resource Locator,統一資源定位符)。URL正是使用web瀏覽器風訪問Web頁面時需要輸入的網頁地址。如http://www.baidu.com/
URI
URI(Uniform Resource Identifier)。RFC2396的定義
- Uniform
規定統一的格式可方便處理多種不同類型的資源,而不是根據上下文環境來識別資源指定訪問方式。
加入新增的協議方式(
http:
或ftp:
)也更容易
- Resource
資源定義是“可標識的任何東西”。除了文檔文件、圖像或服務(如天氣預報)等能夠區別於其他類型的,全都可作爲資源。另外,資源不僅可以是單一的,也可以是多數的集合體。
- Identifier
表示可標識的對象,也稱爲標識符。。
URI就是由某個協議方案表示的定位標識符。協議方案是指訪問資源所使用的協議類型名稱。
採用HTTP協議時,協議方案就是http,除此之外還有ftp,mailto,telnet,file等等。
URI用字符串標識某一互聯網資源,URL表示資源的地址(互聯網上所處的位置)。
URI格式
表示指定的URI,要使用涵蓋全部必要信息的絕對URI、絕對URL以及相對URL。(相對URL指從瀏覽器中基本URI處指定的URL,形如/image/logo.gif)
絕對URI格式:
- 協議方案名
使用http:和https:等協議方案名獲取資源是要指定協議類型。不區分大小寫,最後付一個冒號(:)。
也可以使用data:或javascript:這類指定數據或腳本程序的方案名。
- 登錄信息(認證)
指定用戶名和密碼作爲從服務器端獲取資源時必要的登錄信息(身份認證),可選
- 服務器地址
使用絕對URI必須指定帶訪問的服務器。地址可以是DNS可解析的名稱,也可以是IPv4地址名,或者是IPv6地址名(如[0:0:0:0:0:0:0:1]
)
- 服務器端口號
指定服務器連接的網絡端口號。可選,省略則使用默認端口號
- 帶層次的文件路徑
指定服務器上的文件路徑來定位特指的資源。與UNIX系統的文件目錄結構相似。
- 查詢字符串
針對已指定的文件路徑內的資源,可以任意參數使用查詢字符串傳入。可選
- 片段標識符
使用片段標識符通常可標記已獲取資源中的子資源(文檔內的某個位置)。RFC中未給出明確使用方法。可選
並不是所有方法都符合RFC
RFC(Request for Comments,徵求修正意見書),用來制定HTTP協議技術標準
不按照RFC標準執行,有可能無法通信。
但也存在某些應用程序應客戶端或服務器不同,將自成一套的標準進行了擴展的情況。