【Java基础】网络编程-计算机网络基本概念(一)
文章目錄
- 什么是計算機網絡
- 什么是互聯網
- 什么網絡通信協議
- 網絡分類
- 按規模分類
- 按傳輸介質分類
- 按拓撲結構分類
- 軟件架構
- IP
- 端口
- IP/子網掩碼/網關關系
- 域名
- DNS概念
- DDNS概念
- 主機解析域名順序
- 主機解析域名詳細過程
- 瀏覽器如何通過域名去查詢URL對應的IP(對應服務器地址)呢
- 在網上查到某個網站的IP地址,在自己的瀏覽器上輸入,卻為什么連接不上?
- 網絡模型
- 網絡通信協議的分層
- 數據的封裝與拆封
- TCP/IP與UDP協議區別
- IP協議概念
- TCP協議概念
- HTTP協議
- 網站通信粗略過程
- HTTP協議概述
- HTTP協議客戶端到服務器步驟
- HTTP首部
- HTTP請求報文
- HTTP響應報文
- HTTPS和HTTP的區別
網絡編程的目的就 是直接或間接地通過網絡協議與其他計算機進行通信。在Java中包含網絡編程地各種API,通過創建這些類的對象,就可以進行網絡應用程序的編寫。調用相應的方法
什么是計算機網絡
- 計算機網絡是指兩臺或更多的計算機組成的網絡,由于同一個網絡中并遵循同一種網絡協議,所以任意兩臺計算機都可以直接通信。
什么是互聯網
- 互聯網是連接網絡的網絡(internet),即把很多計算機網絡連接起來,形成一個全球統一的互聯網。
什么網絡通信協議
-
為了把計算機網絡接入互聯網,就必須使用網絡通信協議,如果計算機網絡各自的通訊協議不統一,就沒法把不同的網絡連接起來形成互聯網。。
-
通過計算機網絡可以使多臺計算機實現連接,位于同一個網絡中的計算機在進行連接和通信時需要遵守一定的規則,這就好比在道路中行駛的汽車一定要遵守交通規則一樣。在計算機網絡中,這些連接和通信的規則被稱為網絡通信協議,它對數據的傳輸格式、傳輸速率、傳輸步驟等做了統一規定,通信雙方必須同時遵守才能完成數據交換。
網絡分類
- 計算機網絡是指將有多臺計算機通過通信設備線路連接起來,在網絡連接的支持下,實現彼此之間資源共享和數據通信的整個系統。
按規模分類
按照規模主要將網絡分為局域網、城域網、廣域網和因特網。
| 局域網 | (LocalArea Network) 簡稱 LAN,是一種在小范圍內實現的計算機網絡,一般在一個建筑物內或者一個工廠、一個事業單位內部獨有,范圍較小。=>局域網可以實現文件管理、應用軟件共享、打印機共享、掃描儀共享、工作組內的日程安排、電子郵件和傳真通信服務等功能。局域網是封閉型的,可以由辦公室內的兩臺計算機組成,也可以由一個公司內的上千臺計算機組成。 |
| 城域網 | (Metropolitan Area Network)簡稱為MAN,一般是一個城市內部組建的計算機信息網絡,提供全市的信息服務。 |
| 廣域網 | (Wide Area Network)簡稱為 WAN,它的范圍很廣,可以分布在市,省、一個國家或者幾個國家。廣域網包括大大小小不同的子網,子網可以是局域網,也可以是小型的廣域網。 |
| 因特網 | (Internet)則是由無數的LAN(局域網)和 WAN(廣域網)組成的。 |
按傳輸介質分類
按照使用的傳輸介質可分為有線網和無線網
網絡傳輸介質是網絡中發送方與接收方之間的物理通路,它對網絡的數據通信具有一定的影響。常用的傳輸介質分為有線傳輸介質和無線傳輸介質兩大類,不同的傳輸介質,其特性也各不相同。
| 有線傳輸介質 | 指在兩個通信設備之間實現的物理連接部分,它能將信號從一方傳輸到另一方,有線傳輸介質主要有雙絞線、同軸電纜和光纖。雙絞線和同軸電纜傳輸電信號,光纖傳輸光信號。 |
| 無線傳輸介質 | 1.指利用無線電波在自由空間的傳播可以實現多種無線通信。 2.根據電磁波頻譜可將其分為無線電波、微波、紅外線、激光等,信息被加載在電磁波上進行傳輸。 3.無線傳輸的介質有:無線電波、紅外線、微波、衛星和激光。 4.在局域網中,通常只使用無線電波和紅外線作為傳輸介質。 5.無線傳輸介質通常用于廣域互聯網的廣域鏈路的連接。 6.無線傳輸的優點在于安裝、移動以及變更都較容易,不會受到環境的限制。但信號在傳輸過程中容易受到干擾和被竊取,且初期的安裝費用較高。 |
按拓撲結構分類
按照使用的拓撲結構可分為星形網絡,總線網絡,環狀網絡
總線型
- 優點: 費用低、數據端用戶入網靈活、站點或某個端用戶失效不影響其它站點或端用戶通信,布線要求簡單,擴充容易,端用戶失效、增刪不影響全網工作。
- 缺點: 一次僅能一個端用戶發送數據,其它端用戶必須等待到獲得發送權;媒體訪問獲取機制較復雜;維護難,分支結點故障查找難。
- 優點: 信息流在網中是沿著固定方向流動的,兩個節點僅有一條道路,簡化了路徑選擇的控制;環路上各節點都是自舉控制,控制軟件簡單。
- 缺點: 信息源在環路中是串行地穿過各個節點,當環中節點過多時,勢必影響信息傳輸速率,使網絡的響應時間延長;環路是封閉的,不便于擴充;可靠性低,一個節點故障,將會造成全網癱瘓;維護難,對分支節點故障定位較難。
- 優點: 信息流在網中是沿著固定方向流動的,兩個節點僅有一條道路,簡化了路徑選擇的控制;環路上各節點都是自舉控制,控制軟件簡單。
- 缺點: 需要耗費大量的電纜,安裝、維護的工作量也驟增;中央節點負擔重,形成“瓶頸”,一旦發生故障,則全網受影響;各站點的分布處理能力較低。
軟件架構
在網絡通信中主要有兩種模式的通信方式:一種是客戶機/服務器(Client/Server)模式,簡稱C/S模式;另一種是瀏覽器/服務器(Browser/Server)模式,簡稱B/S模式
-
C/S結構:全稱為Client/Server結構,是指客戶端和服務器結構。常見程序有QQ、迅雷等軟件。
使用 C/S 模式的程序,在開發時需要分別針對客戶端和服務器端進行專門開發。這種開發模式的優勢在于由于客戶端是專門開發的,表現力會更強。缺點就是通用性差,也就是說一種程序的客戶端只能和對應的服務器端進行通信,不能和其他的服務器端進行通信,在實際維護中,也需要維護專門的客戶端和服務器端,維護的壓力較大。 -
B/S結構:全稱為Browser/Server結構,是指瀏覽器和服務器結構。常見瀏覽器有谷歌、火狐等。
對于很多程序,運行時不需要專門的客戶端,而是使用通用的客戶端,例如使用瀏覽器。用戶使用瀏覽器作為客戶端的這種模式叫作瀏覽器/服務器模式。使用這種模式開發程序時只需開發服務器端即可,開發的壓力較小,不需要維護客戶端。但是對瀏覽器的限制比較大,表現力不強。
兩種架構各有優勢,但是無論哪種架構,都離不開網絡的支持。網絡編程就是在一定的協議下,實現兩臺計算機的通信的程序。
IP
-
IP地址
指互聯網協議地址(Internet Protocol Address),俗稱IP。用來給一個網絡中的計算機設備(通常是網卡)做唯一的編號。假如我們把“個人電腦”比作“一臺電話”的話,那么“IP地址”就相當于“電話號碼”。計算機設備可以是計算機,路由器等。(注意:一臺聯入互聯網的計算機肯定有一個IP地址,但也可能有多個IP地址) -
IP地址分類
IPv4
- 是一個32位的二進制數,通常被分為4個字節,表示成a.b.c.d的形式,例如101.202.99.12。其中a、b、c、d都是0~255之間的十進制整數,那么最多可以表示 $232^2$個(大約42億)。IPv4的地址目前已耗盡
IPv4地址實際上是一個32位整數。例如:
106717964 = 0x65ca630c
= 65 ca 63 0c
= 101.202.99.12IPV6
- 由于互聯網的蓬勃發展,IP地址的需求量愈來愈大,但是網絡地址資源有限,使得IP的分配越發緊張。
為了擴大地址空間,擬通過IPv6重新定義地址空間,采用128位地址長度,每16個字節一組,分成8組十六進制數,數之間用冒號(:)分開,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,號稱可以為全世界的每一粒沙子編上一個網址,這樣就解決了網絡地址資源數量不夠的問題。
-
特殊的IP地址
- 本機IP地址:127.0.0.1、localhost
-
公網地址.內網地址
- IP地址又分為公網IP地址和內網IP地址。公網IP地址可以直接被訪問,內網IP地址只能在內網訪問。內網IP地址類似于:
- 192.168.0.0——192.168.255.255屬于內網地址,屬于非注冊地址,專門為組織機構內部使用。
端口
- IP地址用來標志一臺計算機,但是一臺計算機上可能提供多種應用程序,使用端口來區分這些應用程序。
- 端口是虛擬的概念,并不是說在主機上真的有若干個端口。通過端口可以在一個主機上運行多個網絡應用 程序。
- 如果說IP地址可以唯一標識網絡中的設備,那么端口號就可以唯一標識設備中的進程(應用程序)了。加粗樣式
端口分類
| 公認端口 | 0—1023 比如80端口分配給WWW,21端口分配給FTP ,用于一些知名的網絡服務和應用 |
| 注冊端口 | 1024—49151 分配給用戶進程或應用程序 |
| 動態/私有端口 | 49152–65535 |
端口號:用兩個字節表示的整數,它的取值范圍是0-65535。其中,0-1023之間的端口號用于一些知名的網絡服務和應用,普通的應用程序需要使用1024以上的端口號。如果端口號被另外一個服務或應用所占用,會導致當前程序啟動失敗。
理解IP和端口的關系
- IP地址好比每個人的地址(門牌號),端口好比是房間號。必須同時指定IP地址和端口號才能夠正確的發送 數據
- IP地址好比為電話號碼,而端口號就好比為分機號
- 利用協議+IP地址+端口 組合,就可以標識網絡中的進程了,那么進程間的通信就可以利用這個標識與其它進程進行交互。
IP/子網掩碼/網關關系
如果一臺計算機只有一個網卡,并且接入了網絡,那么,它有一個本機地址127.0.0.1,還有一個IP地址,例如101.202.99.12,可以通過這個IP地址接入網絡。
如果一臺計算機有兩塊網卡,那么除了本機地址127.0.0.1外,它還可以有兩個IP地址,可以分別接入兩個網絡。通常連接兩個網絡的設備是路由器或者交換機,它至少有兩個IP地址,分別接入不同的網絡,讓網絡之間連接起來。
如果兩臺計算機位于同一網絡,那么他們之間可以直接通信,因為他們的IP地址前段是相同的,也就是網絡號是相同的。網絡號是IP地址通過子網掩碼過濾后得到的。例如:
某臺計算機的IP是101.202.99.2,子網掩碼是255.255.255.0,那么計算該計算機的網絡號是:
IP = 101.202.99.2
Mask = 255.255.255.0
Network = IP & Mask = 101.202.99.0
每臺計算機都需要正確配置IP地址和子網掩碼,根據這兩個就可以計算網絡號,如果兩臺計算機計算出的網絡號相同,說明兩臺計算機在同一個網絡,可以直接通信。
網關
-
如果兩臺計算機計算出的網絡號不同,那么兩臺計算機不在同一個網絡,不能直接通信,它們之間必須通過路由器或者交換機這樣的網絡設備間接通信,我們把這種設備稱為網關。
-
網關的作用就是連接多個網絡,負責把來自一個網絡的數據包發到另一個網絡,`這個過程叫路由。
所以,一臺計算機的一個網卡會有3個關鍵配置:
IP地址,例如:10.0.2.15
子網掩碼,例如:255.255.255.0
網關的IP地址,例如:10.0.2.2
域名
-
直接記憶IP地址非常困難,所以我們通常使用域名訪問某個特定的服務。域名解析服務器DNS負責把域名翻譯成對應的IP,客戶端再根據IP地址訪問服務器。
用nslookup工具可以查看域名對應的IP地址
如:查詢百度的ip地址發現是IPV4的IP地址
如:查詢百度的ip地址發現是IPV6的IP地址
有一個特殊的本機域名localhost,它對應的IP地址總是本機地址127.0.0.1
DNS概念
DNS(Domain Name System,域名系統)是將域名解析成某個IP地址后,訪問所指向的服務器獲取資源
DDNS概念
- 動態域名解析(DDNS):是將固定的域名與動態的IP地址相對應,如花生殼服務就提供動態域名解析服務。為個人和中小型企業提供動態域名解析服務,其網頁資源存儲的電腦,其分配的IP地址是動態的,所以需要花生殼服務,當外網訪問時,會將電腦的IP地址發給花生殼服務器,分配出固定的IP地址給該電腦,達到動態解析的目的,`實現外網訪問內網。適用于個人以及中小型企業,沒有購買靜態域名的人群,需求還是很大的。而面對百度這樣的網站,其解析baidu.com,并不是叫做動態域名解析。
主機解析域名順序
主機解析域名詳細過程
瀏覽器輸入www.qq.com域名,操作系統會先檢查本地hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
在windows系統中,可以通過C:\Windows\System32\drivers\etc下的host文件來修改。可以將任何的域名映射到對應的IP地址中。
如果本地hosts文件沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
如果本地hosts文件與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至“根DNS服務器”,“根DNS服務器”收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
hosts:定義的IP地址是,存有網站資源(圖片、文字)的服務器;
NS記錄:定義的IP地址是,域名解析的服務器地址;
A記錄:定義的IP地址是,存有網站資源的服務器。
取自計算機網絡 | 域名解析過程
瀏覽器如何通過域名去查詢URL對應的IP(對應服務器地址)呢
在網上查到某個網站的IP地址,在自己的瀏覽器上輸入,卻為什么連接不上?
- 大型高并發網站可能不止一個IP地址,根據不同的網絡他們會有很多的IP來做集群。有的是通過DNS來實現負載均衡,有的是用Squid(Squid是一個高性能的代理緩存服務器)來實現的。
網絡模型
- 計算機網絡中實現通信必須有一些約定即通信協議,即對 速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等制定標準 ,好比公路交通規則,學生守則
- 問題:網絡協議太復雜
- 計算機網絡通信涉及內容很多,比如指定源地址和目標地址,加密解密,壓縮解壓縮,差錯 控制,流量控制,路由控制,如何實現如此復雜的網絡協議呢?
- 解決方案:分層
由于結點之間聯系很復雜,在制定協議時,把復雜份分解成 一些簡單的成份,再將它們復合起來。最常用的復合方式是層次方式,即同層間可以通信、上一層可以調用下一層,而與再下一層不發生關系。
網絡通信協議的分層
OSI(Open System Interconnect)網絡模型 是ISO組織定義的一個計算機互聯的標準模型,注意它只是一個定義,目的是為了簡化網絡各層的操作,提供標準接口便于實現和維護。這個模型從上到下依次是:
- 名義上標準:ISO/OSI參考模型
物理層 (負責把數據進行分片并且真正通過物理網絡傳輸,例如,無線網、光纖等)
- 物理層處于OSI的最底層,是整個開放系統的基礎。物理層設計通信信道上傳輸的原始比特流(bits),它的功能主要是為數據段設備提供傳送數據的通路以及傳輸數據。
Bytes和bits的區別
數據鏈路層 (負責把數據進行分片并且真正通過物理網絡傳輸,例如,無線網、光纖等)
- 數據鏈路層的主要任務是實現計算機網絡中相鄰節點之間的可靠傳輸,把原始的、有差錯的物理傳輸線路加上數據鏈路協議之后,構成邏輯上可靠地數據鏈路。需要完成的功能有鏈路管理、成幀、差錯控制以及流量控制等。其中成幀是對物理層的原始比特流進行界定,數據鏈路層也能夠對幀的丟失進行處理。
網絡層 (負責根據目標地址選擇路由來傳輸數據)
- 網絡層涉及源主機節點到目的主機主機節點之間可靠地網絡傳輸,它需要完成的功能主要包括路由選擇、網絡尋址、流量控制、擁塞控制、網絡互連等。
傳輸層 (負責提供端到端的可靠傳輸)
- 傳輸層起著承上啟下的作用,涉及源端節點到目的端節點之間可靠的信息傳輸。傳輸層需要解決跨越網絡連接的建立和釋放,對底層不可靠的網絡,建立連接時需要三次握手,釋放連接時需要四次揮手。
會話層 (負責建立和維護會話)
- 會話層的主要功能負責應用程序之間建立、維持和中斷會話。同時也提供對設備和節點之間的會話控制,協調系統和服務之間的交流,并通過提供單工、半雙工和全雙工3種不同的通信方式,使系統和服務之間有序地進行通信。
單工,半雙工和全雙工有何區別和聯系?
表示層 (處理數據格式,加解密等等)
- 表示層關心所傳輸數據信息的格式定義,其主要功能是把應用層提供的信息變換為能夠共同理解的形式,提供字符代碼、數據格式、控制信息格式、加密等的統一表示。
應用層 (提供應用程序之間的通信)
- 應用層為OSI的最高層,是直接為應用進程提供服務的。其作用是在實現多個系統應用進程相互通信的同時,完成一系列業務處理所需的服務。
- 事實上標準: TCP/IP協議棧(Internet使用的協議)
TCP/IP協議: 傳輸控制協議(Transmission Control Protocol )/因特網互聯協議( /Internet Protocol),是Internet最基本、最廣泛的協議。它定義了計算機如何連入因特網,以及數據如何在它們之間傳輸的標準。它的內部包含一系列的用于處理數據通信的協議,并采用了4層的分層模型,每一層都呼叫它的下一層所提供的協議來完成自己的需求
TCP/IP協議中的四層分別是應用層、傳輸層、網絡層和鏈路層,每層分別負責不同的通信功能。
網絡接口層
- 鏈路層是用于定義物理傳輸通道,通常是對某些網絡連接設備的驅動協議,例如針對光纖、網線提供的驅動。
- TCP/IP協議對網絡接口層沒有給出具體的表述,網絡接口層對應著物理層和數據鏈路層。一般來說,五層TCP/IP模型網絡接口層是分為物理層和數據鏈路層。
網絡層(IP層)
- 網絡層是整個TCP/IP協議的核心,它主要用于將傳輸的數據進行分組,將分組數據發送到目標計算機或者網絡。
- 它的功能是把分組發往目標網絡或主機。同時,為了盡快地發送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發送的順序可能不同,這就需要上層必須對分組進行排序。互聯網層除了需要完成路由的功能外,也可以完成將不同類型的網絡(異構網)互連的任務。除此之外,互聯網層還需要完成擁塞控制的功能。
運輸層(TCP層)
- 主要使網絡程序進行通信,在進行網絡通信時,可以采用TCP協議,也可以采用UDP協議。
- TCP層負責在應用進程之間建立端到端的連接和可靠通信,它只存在與端節點中。TCP層涉及兩個協議,TCP和UDP。其中
- TCP協議提供面向連接的服務,提供按字節流的有序、可靠傳輸,可以實現連接管理、差錯控制、流量控制、擁塞控制等。
- UDP協議提供無連接的服務,用于不需要或無法實現面向連接的網絡應用中。
應用層
- 主要負責應用程序的協議,例如HTTP協議、FTP協議等。
數據的封裝與拆封
TCP/IP協議棧
- 網絡層主要協議IP協議
- 傳輸層主要協議TCP和UDP
TCP/IP與UDP協議區別
| 描述 | 一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(Transport layer)通信協議 | 一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務 |
| 特點 | 1. 面向連接 2.點到點的通信 3.高可靠性:三次握手 4.占用系統資源多、效率低 | 1.非面向連接,傳輸不可靠,可能丟失 2.發送不管對方是否準備好,接收方收到也不確認 3.可以廣播發送 4.非常簡單的協議,開銷小 |
| 生活案例 | 打電話 | 發送短信,發電報 |
| 應用案例 | HTTP FTP TELNET SMTP | DNS SNMP |
IP協議概念
- IP協議的作用在于把各種數據包準備無誤的傳遞給對方,其中兩個重要的條件是IP地址和MAC地址。
- 由于IP地址是稀有資源,不可能每個人都擁有一個IP地址,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器里面會記錄我們的MAC地址。
- 而MAC地址是全球唯一的。舉例,IP地址就如同是我們居住小區的地址,而MAC地址就是我們住的那棟樓那個房間那個人。IP地址采用的IPv4格式,目前正在向IPv6過渡。
TCP協議概念
TCP(傳輸控制協議)是面向連接的傳輸層協議。TCP層是位于IP層之上,應用層之下的中間層。 不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。TCP協議采用字節流傳輸數據。
HTTP協議
上面說了分層可以在使用的時候就可以僅僅關注我們需要關注的層次,而不用理會其他層。HTTP協議是在最上層,也就是應用層。這是最貼近我們的程序員的層次。
網站通信粗略過程
我們知道HTTP是在應用層中的,顯然,我們在Web通信的過程中,不僅僅是需要HTTP協議的,還會涉及到其他的協議的。
-
DNS:負責解析域名
我們訪問一個網頁的時候,往往是通過域名來訪問的www.zhongfucheng.site,而計算機通信只認的是我們的主機地址(192.168.xxx.xxx),因此,當我們輸入域名的時候,需要DNS把域名解析成主機來進行訪問。 -
HTTP:產生請求報文數據
當我們對Web頁面進行操作的時候,就會產生HTTP報文數據,請求對應的服務端進行響應。
-
TCP協議:分割HTTP數據,保證數據運輸
TCP協議采用了三次握手的方式來保證數據的準確運輸,在運輸的數據的時候,發送標識過去給服務器,服務器也返回標識給客戶端,而客戶端收到消息后再次返回標識給服務器。這樣一來就保證了數據運輸是可靠的。 -
IP協議:傳輸數據包,找到通信目的地地址。
IP協議把我們的產生的數據包發送給對方,IP地址指明了節點被分配的地址,但IP地址可能會變換,我們可以使用ARP協議來將IP地址反射為MAC地址。MAC地址是不會更改的,是網卡所屬的固定地址。 -
在找到通信目的地之前,我們是需要不斷的中轉的,這過程我們稱作為:“路由中轉”,我們并不知道路由中轉了多少次的。因此是不能全面了解到互聯網中的傳輸狀況的。
-
接下來就離我們比較遠了,屬于硬件相關的了,也就是鏈路層和物理層。網頁上請求數據大概就是上邊這么一個流程。
HTTP協議概述
-
HTTP,又叫超文本傳輸協議,英文全稱是Hypertext Transfer Protocol,它是互聯網上應用最為廣泛的一種網絡協議。HTTP是一種應用層協議,它是基于TCP協議之上的請求/響應式的協議,即一個客戶端與服務器建立連接后,向服務器發送一個請求;服務器接到請求后,給予相應的響應信息。HTTP協議默認的端口號為80.
對于從客戶端到服務器的每一個請求,都有4個步驟:
- 默認情況下,客戶端在端口80打開與服務器的一個TCP連接,URL中還可以指定其他端口。
- 客戶端向服務器發送消息,請求指定路徑上的資源。這個資源包括一個首部,可選地(取決于請求的性質)還可以有一個空行,后面是這個請求的數據。
- 服務器向客戶端發送響應。響應以響應碼開頭,后面是包含數據的首部、一個空行以及所請求的文檔或錯誤消息。
- 服務器關閉連接。
-
現在使用的HTTP協議是HTTP/1.1版本,1997年之前采用的是HTTP1.0版本。HTTP連接在1.0版本中采用非持續連接工作方式,1.1版本采用的是持續連接工作方式,持續連接是指服務器在發送響應后仍然在一段時間內保持這條由TCP運輸層協議建立起來的連接,使客戶機和服務器可以繼續在這條連接上傳輸HTTP報文。
-
是否采用持續連接工作方式,1.0中默認是關閉的,需要在HTTP頭加入"Connection:Keep-Alive",才能啟用Keep-Alive。HTTP1.1中默認啟用Keep-Alive,如果加入"Connection:close",才關閉。目前大部分瀏覽器都是用HTTP1.1協議,也就是說默認都會發起Keep-Alive的連接請求了,所以是否能完成一個完整的Keep- Alive連接就看服務器設置情況。
HTTP協議客戶端到服務器步驟
HTTP首部
HTTP請求報文
HTTP請求報文:在請求中,HTTP報文由方法、URI、HTTP版本、HTTP首部字段等部分組成。
首部字段例子:
- Accept: text/html,image/* 【瀏覽器告訴服務器,它支持的數據類型】
- Accept-Charset: ISO-8859-1 【瀏覽器告訴服務器,它支持哪種字符集】
- Accept-Encoding: gzip,compress 【瀏覽器告訴服務器,它支持的壓縮格式】
- Accept-Language: en-us,zh-cn 【瀏覽器告訴服務器,它的語言環境】
- Host: www.it315.org:80【瀏覽器告訴服務器,它的想訪問哪臺主機】
- If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務器,緩存數據的時間】
- Referer: http://www.it315.org/index.jsp【瀏覽器告訴服務器,客戶機是從那個頁面來的—防盜鏈】
- .User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)【瀏覽器告訴服務器,瀏覽器的內核是什么】
- Cookie【瀏覽器告訴服務器,帶來的Cookie是什么】
- Connection: close/Keep-Alive 【瀏覽器告訴服務器,請求完后是斷開鏈接還是保持鏈接】
- Date: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務器,請求的時間】
HTTP響應報文
HTTP響應報文:在響應中,HTTP報文由HTTP版本、狀態碼(數字和原因短語)、HTTP首部字段3部分組成。
狀態行
格式: HTTP版本號 狀態碼 原因敘述
狀態行:HTTP/1.1 200 OK
- 狀態碼用于表示服務器對請求的處理結果,它是一個三位的十進制數。響應狀態碼分為5類
首部字段例子:
- Location: http://www.it315.org/index.jsp 【服務器告訴瀏覽器要跳轉到哪個頁面】
- Server:apache tomcat【服務器告訴瀏覽器,服務器的型號是什么】
- Content-Encoding: gzip 【服務器告訴瀏覽器數據壓縮的格式】
- Content-Length: 80 【服務器告訴瀏覽器返回數據的長度】
- Content-Language: zh-cn 【服務器告訴瀏覽器,服務器的語言環境】
- Content-Type: text/html; charset=GB2312 【服務器告訴瀏覽器,返回數據的類型】
- Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT【服務器告訴瀏覽器該資源上次更新時間】
- Refresh: 1;url=http://www.it315.org【服務器告訴瀏覽器要定時刷新】
- Content-Disposition: attachment; filename=aaa.zip【服務器告訴瀏覽器以下載方式打開數據】
- Transfer-Encoding: chunked 【服務器告訴瀏覽器數據以分塊方式回送】
- Set-Cookie:SS=Q0=5Lb_nQ; path=/search【服務器告訴瀏覽器要保存Cookie】
- Expires: -1【服務器告訴瀏覽器不要設置緩存】
- Cache-Control: no-cache 【服務器告訴瀏覽器不要設置緩存】
- Pragma: no-cache 【服務器告訴瀏覽器不要設置緩存】
- Connection: close/Keep-Alive 【服務器告訴瀏覽器連接方式】
- Date: Tue, 11 Jul 2000 18:23:51 GMT【服務器告訴瀏覽器返回數據的時間】
HTTPS和HTTP的區別
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。它是一個URI scheme(抽象標識符體系),句法類同http:體系。用于安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。
超文本傳輸協議HTTP協議被用于在Web瀏覽器和網站服務器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼`等。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。
HTTPS和HTTP的區別主要為以下四點:
取自以下網站
Java—網絡編程總結(整理版)
Java網絡編程:Java網絡編程基礎
java網絡編程入門
Java網絡編程基礎(Netty預備知識)
網絡編程三要素(IP/端口/協議)
總結
以上是生活随笔為你收集整理的【Java基础】网络编程-计算机网络基本概念(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《微积分》的本质笔记
- 下一篇: 软件测试期末考试