① 網線接觸不好會引起什麼後果會不會引起數據錯誤或丟失
不會的,只會有的時候影響網速。要連接區域網,網線是必不可少的。在區域網中常見的網線主要有雙絞線、同軸電纜、光纜三種。 雙絞線,是由許多對線組成的數據傳輸線。它的特點就是價格便宜,所以被廣泛應用,如常見的電話線等。它是用來和RJ45水晶頭相連的。它又有STP和UTP兩種,我們常用的是UTP。雙絞線採用了一對互相絕緣的金屬導線互相絞合的方式來抵禦一部分外界電磁波干擾。把兩根絕緣的銅導線按一定密度互相絞在一起,可以降低信號干擾的程度,每一根導線在傳輸中輻射的電波會被另一根線上發出的電波抵消。「雙絞線」的名字也是由此而來。雙絞線一般由兩根22-26號絕緣銅導線相互纏繞而成,實際使用時,雙絞線是由多對雙絞線一起包在一個絕緣電纜套管里的。典型的雙絞線有四對的,也有更多對雙絞線放在一個電纜套管里的。這些我們稱之為雙絞線電纜。在雙絞線電纜(也稱雙扭線電纜)內,不同線對具有不同的扭絞長度,一般地說,扭絞長度在38.1cm至14cm內,按逆時針方向扭絞。相臨線對的扭絞長度在12.7cm以上,一般扭線的越密其抗干擾能力就越強,與其他傳輸介質相比,雙絞線在傳輸距離,信道寬度和數據傳輸速度等方面均受到一定限制,但價格較為低廉。② 互聯網傳輸數據時為什麼要把數據封裝成幀呢
很簡單,規定,就像為什麼開車要靠右行一樣
這是因為互聯網建立之初時,有很多鍾網路出現,難以互聯,為了把多種網路互聯,就出台了一個統一的規范 就是現在的tcp/ip,其中規定要把數據封裝成幀
就是這樣滴
③ 計算機在乙太網中發送數據的流程是怎樣的
在 tcp/ip 模型下是這樣的:
首先數據由應用層(application)先把數據流(data stream)發往 傳輸層(transport)傳輸層再把數據流封裝成 段(data segment)再往下發往 網路層(internet) 網路層把段封裝成 包(packet)再往下發往網路訪問層(network access)網路訪問層把 包封裝成幀 以比特流的形式 在物理鏈路上傳輸
然後到達另一台計算機 另一台計算機把 幀解封裝成 包 然後包解封成 段數據 然後解封成數據流 最後發往你應用成的軟體 比如QQ 由應用層的軟體處理這些數據
下面是什麼是 封裝 和解封裝的具體概念
封裝:
以用戶要發送email為例,講解網路如何封裝數據:
步驟1:創建數據----當用戶發送email時,其中的字母和數字字元被轉換成可
以在網路上傳輸的數據。
步驟2:為端到端的傳輸將數據打包----對數據打包來實現互連網的傳輸。通
過使用分段(segment),傳輸功能確保email系統兩端的主機之間能可靠的通信。
步驟3:在報頭上添加網路地址----數據放置在一個分組或數據報中,其中包
含了帶有源和目的邏輯地址的網路報頭。這些地址有助於網路設備沿著已選定的路
徑發送這些分組。
步驟4:在數據鏈路報頭上添加本地地址----每一台網路設備都必須將分組放
入幀中。該幀使得可以傳送到該鏈路上下一台直接相連的網路設備。在選定的路徑
上的每一個網路設備都必須把幀傳遞到下一台設備。
步驟5:為進行傳輸而轉換為比特
解封裝:
步驟1:檢驗該MAC目的地址是否與工作站的地址相匹配或者是否為一個乙太網
廣播地址。如果這兩種情況都沒有,就丟棄該幀。
步驟2:如果數據已經出錯了,那麼將它丟棄,而且數據鏈路層可能會要求重傳數
據。否則,數據鏈路層就讀取並解釋數據鏈路報頭上的控制信息。
步驟3:數據鏈路層剝離數據鏈路報頭和報尾,然後根據數據鏈路報頭上的控制信
息把剩下的數據向上傳送到網路層。
④ 電腦怎樣通過互聯網傳輸數據
網路中數據傳輸過程
我們每天都在使用互聯網,我們電腦上的數據是怎麼樣通過互聯網傳輸到到另外的一台電腦上的呢?
我們知道現在的互聯網中使用的TCP/IP協議是基於,OSI(開放系統互聯)的七層參考模型的,(雖然不是完全符合)從上到下分別為 應用層 表示層 會話層 傳輸層 網路層 數據鏈路層和物理層。其中數據鏈路層又可是分為兩個子層分別為邏輯鏈路控制層(Logic Link Control,LLC )和介質訪問控制層((Media Access Control,MAC )也就是平常說的MAC層。LLC對兩個節點中的鏈路進行初始化,防止連接中斷,保持可靠的通信。MAC層用來檢驗包含在每個楨中的地址信息。在下面會分析到。還要明白一點路由器是在網路層的,而網卡在數據鏈路層。
我們知道,ARP(Address Resolution Protocol,地址轉換協議)被當作底層協議,用於IP地址到物理地址的轉換。在乙太網中,所有對IP的訪問最終都轉化為對網卡MAC地址的訪問。如果主機A的ARP列表中,到主機B的IP地址與MAC地址對應不正確,由A發往B數據包就會發向錯誤的MAC地址,當然無法順利到達B,結 果是A與B根本不能進行通信。
首先我們分析一下在同一個網段的情況。假設有兩台電腦分別命名為A和B,A需要相B發送數據的話,A主機首先把目標設備B的IP地址與自己的子網掩碼進行「與」操作,以判斷目標設備與自己是否位於同一網段內。如果目標設備在同一網段內,並且A沒有獲得與目標設備B的IP地址相對應的MAC地址信息,則源設備(A)以第二層廣播的形式(目標MAC地址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備(A)與目標設備(B)的IP地址。同一網段中的所有其他設備都可以收到並分析這個ARP請求報文,如果某設備發現報文中的目標IP地址與自己的IP地址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC地址信息。為了減少廣播量,網路設備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次 ARP的請求與響應過程中,通信雙方都把對方的MAC地址與IP地址的對應關系保存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的映射關系。一個最基本的網路拓撲結構:
PC-A並不需要獲取遠程主機(PC-C)的MAC地址,而是把IP分組發向預設網關,由網關IP分組的完成轉發過程。如果源主機(PC-A)沒有預設網關MAC地址的緩存記錄,則它會通過ARP協議獲取網關的MAC地址,因此在A的ARP表中只觀察到網關的MAC地址記錄,而觀察不到遠程主機的 MAC地址。在乙太網(Ethernet)中,一個網路設備要和另一個網路設備進行直接通信,
除了知道目標設備的網路層邏輯地址(如IP地址)外,還要知道目標設備的第二層物理地址(MAC地址)。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。 數據包在網路中的發送是一個及其復雜的過程,上圖只是一種很簡單的情況,中間沒有過多的中間節點,其實現實中只會比這個更復雜,但是大致的原理是一致的。
(1)PC-A要發送數據包到PC-C的話,如果PC-A沒有PC-C的IP地址,則PC-A首先要發出一個dns的請求,路由器A或者dns解析伺服器會給PC-A回應PC-C的ip地址,這樣PC-A關於數據包第三層的IP地址信息就全了:源IP地址:PC-A,目的ip地址:PC-C。
(2)接下來PC-A要知道如何到達PC-C,然後,PC-A會發送一個arp的地址解析請求,發送這個地址解析請求,不是為了獲得目標主機PC-C的MAC地址,而是把請求發送到了路由器A中,然後路由器A中的MAC地址會發送給源主機PC-A,這樣PC-A的數據包的第二層信息也全了,源MAC地址:PC-A的MAC地址,目的MAC地址:路由器A的MAC地址,
(3)然後數據會到達交換機A,交換機A看到數據包的第二層目的MAC地址,是去往路由器A的,就把數據包發送到路由器A,路由器A收到數據包,首先查看數據包的第三層ip目的地址,如果在自己的路由表中有去往PC-C的路由,說明這是一個可路由的數據包。 (4)然後路由器進行IP重組和分組的過程。首先更換此數據包的第二層包頭信息,路由器PC-A到達PC—C要經過一個廣域網,在這里會封裝很多廣域網相關的協議。其作用也是為了找下一階段的信息。同時對第二層和第三層的數據包重校驗。把數據經過Internet發送出去。最後經過很多的節點發送到目標主機PC_C中。
現在我們想一個問題,PC-A和PC-C的MAC地址如果是相同的話,會不會影響正常的通訊呢!答案是不會影響的,因為這兩個主機所處的區域網被廣域網分隔開了,通過對發包過程的分析可以看出來,不會有任何的問題。而如果在同一個區域網中的話,那麼就會產生通訊的混亂。當數據發送到交換機是,這是的埠信息會有兩個相同的MAC地址,而這時數據會發送到兩個主機上,這樣信息就會混亂。因此這也是保證MAC地址唯一性的一個理由。
我暫且按我的理解說說吧。
先看一下計算機網路OSI模型的七個層次:
┌—————┐
│ 應用層 │←第七層
├—————┤
│ 表示層 │
├—————┤
│ 會話層 │
├—————┤
│ 傳輸層 │
├—————┤
│ 網路層 │
├—————┤
│數據鏈路層│
├—————┤
│ 物理層 │←第一層
└—————┘
而我們現在用的網路通信協議TCP/IP協議者只劃分了四成:
┌—————┐
│ 應用層 │ ←包括OSI的上三層
├—————┤
│ 傳輸層 │
├—————┤
│ 網路層 │
├—————┤
│網路介面層 │←包括OSI模型的下兩層,也就是各種不同區域網。
└—————┘
兩台計算機通信所必須需要的東西:IP地址(網路層)+埠號(傳送層)。
兩台計算機通信(TCP/IP協議)的最精簡模型大致如下:
主機A---->路由器(零個或多個)---->主機B
舉個例子:主機A上的應用程序a想要和主機B上面的應用程序b通信,大致如下
程序a將要通信的數據發到傳送層,在傳送層上加上與該應用程序對應的通信埠號(主機A上不同的應用程序有不同的埠號),如果是用的TCP的話就加上TCP頭部,UDP就加上UDP頭部。
在傳送成加上頭部之後繼續嚮往下傳到網路層,然後加上IP頭部(標識主機地址以及一些其他的數據,這里就不詳細說了)。
然後傳給下層到數據鏈路層封裝成幀,最後到物理層變成二進制數據經過編碼之後向外傳輸。
在這個過程中可能會經過許多各種各樣的區域網,舉個例子:
主機A--->(區域網1--->路由器--->區域網2)--->主機B
這個模型比上面一個稍微詳細點,其中括弧裡面的可以沒有也可能有一個或多個,這個取決於你和誰通信,也就是主機B的位置。
主機A的數據已經到了具體的物理介質了,然後經過區域網1到了路由器,路由器接受主機A來的數據先經過解碼,還原成數據幀,然後變成網路層數據,這個過程也就是主機A的數據經過網路層、數據鏈路層、物理層在路由器上面的一個反過程。
然後路由器分析主機A來的數據的IP頭部(也就是在主機A的網路層加上的數據),並且修改頭部中的一些內容之後繼續把數據傳送出去。
一直到主機B收到數據為止,主機B就按照主機A處理數據的反過程處理數據,直到把數據交付給主機B的應用程序b。完成主機A到主機B的單方向通信。
這里的主機A、B只是為了書寫方便而已,可能通信的雙方不一定就是個人PC,伺服器與主機,主機與主機,伺服器與伺服器之間的通信大致都是這樣的。
再舉個例子,我們開網頁上網路:
就是我們的主機瀏覽器的這個應用程序和網路的伺服器之間的通信。應用成所用的協議就是HTTP,而伺服器的埠號就是熟知埠號80.
大致過程就是上面所說,其中的細節很復雜,任何一個細節都可以寫成一本書,對於非專業人員也沒有必要深究。
⑤ 在網路傳輸中,為什麼要把數據分成報文
①報文交換不需要為通信雙方預先建立一條專用的通信線路,不存在連接建立時延,用戶可隨時發送報文。 ②由於採用存儲轉發的傳輸方式,使之具有下列優點:a.在報文交換中便於設置代碼檢驗和數據重發設施,加之交換結點還具有路徑選擇,就可以做到某條傳輸路徑發生故障時,重新選擇另一條路徑傳輸數據,提高了傳輸的可靠性;b.在存儲轉發中容易實現代碼轉換和速率匹配,甚至收發雙方可以不同時處於可用狀態。這樣就便於類型、規格和速度不同的計算機之間進行通信;c.提供多目標服務,即一個報文可以同時發送到多個目的地址,這在電路交換中是很難實現的;d.允許建立數據傳輸的優先順序,使優先順序高的報文優先轉換。 ③通信雙方不是固定佔有一條通信線路,而是在不同的時間一段一段地部分佔有這條物理通路,因而大大提高了通信線路的利用率。
⑥ 網路通信
我們要理解網路中進程如何通信,得解決兩個問題:
a、我們要如何標識一台主機,即怎樣確定我們將要通信的進程是在那一台主機上運行。
b、我們要如何標識唯一進程,本地通過pid標識,網路中應該怎樣標識?
解決辦法:
a、TCP/IP協議族已經幫我們解決了這個問題,網路層的「ip地址」可以唯一標識網路中的主機
b、傳輸層的「協議+埠」可以唯一標識主機中的應用程序(進程),因此,我們利用三元組(ip地址,協議,埠)就可以標識網路的進程了,網路中的進程通信就可以利用這個標志與其它進程進行交互
以UDP傳輸為例:
1、物理層:
解決兩個硬體之間怎麼通信的問題,常見的物理媒介有光纖、電纜、中繼器等。它主要定義物理設備標准,如網線的介面類型、光纖的介面類型、各種傳輸介質的傳輸速率等。
它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地後在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。
2、數據鏈路層:
在計算機網路中由於各種干擾的存在,物理鏈路是不可靠的。該層的主要功能就是:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。
它的具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層。這一層的數據叫做幀。
3、網路層:
計算機網路中如果有多台計算機,怎麼找到要發的那台?如果中間有多個節點,怎麼選擇路徑?這就是路由要做的事。
該層的主要任務就是:通過路由選擇演算法,為報文(該層的數據單位,由上一層數據打包而來)通過通信子網選擇最適當的路徑。這一層定義的是IP地址,通過IP地址定址,所以產生了IP協議。
4、傳輸層:
當發送大量數據時,很可能會出現丟包的情況,另一台電腦要告訴是否完整接收到全部的包。如果缺了,就告訴丟了哪些包,然後再發一次,直至全部接收為止。
簡單來說,傳輸層的主要功能就是:監控數據傳輸服務的質量,保證報文的正確傳輸。
5、會話層:
雖然已經可以實現給正確的計算機,發送正確的封裝過後的信息了。但我們總不可能每次都要調用傳輸層協議去打包,然後再調用IP協議去找路由,所以我們要建立一個自動收發包,自動定址的功能。於是會話層出現了:它的作用就是建立和管理應用程序之間的通信。
6、表示層:
表示層負責數據格式的轉換,將應用處理的信息轉換為適合網路傳輸的格式,或者將來自下一層的數據轉換為上層能處理的格式。
7、應用層:
應用層是計算機用戶,以及各種應用程序和網路之間的介面,其功能是直接向用戶提供服務,完成用戶希望在網路上完成的各種工作。前端同學對應用層肯定是最熟悉的。
應用層(應用,表示,會話):TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
傳輸層:TCP,UDP
網路層:IP,ICMP,OSPF,EIGRP,IGMP
數據鏈路層:SLIP,CSLIP,PPP,MTU
重要的 協議族介紹:
IP 定義了 TCP/IP 的地址,定址方法,以及路由規則。現在廣泛使用的 IP 協議有 IPv4 和 IPv6 兩種:IPv4 使用 32 位二進制整數做地址,一般使用點分十進制方式表示,比如 192.168.0.1。
IP 地址由兩部分組成,即網路號和主機號。故一個完整的 IPv4 地址往往表示 為 192.168.0.1/24 或192.168.0.1/255.255.255.0 這種形式。
IPv6 是為了解決 IPv4 地址耗盡和其它一些問題而研發的最新版本的 IP。使用 128 位 整數表示地址,通常使用冒號分隔的十六進制來表示,並且可以省略其中一串連續的 0,如:fe80::200:1ff:fe00:1。
目前使用並不多!
http協議對應於應用層,tcp協議對應於傳輸層,ip協議對應於網路層。
TPC/IP【TCP(傳輸控制協議)和IP(網際協議)】,主要解決數據如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。關於TCP/IP和HTTP協議的關系,網路有一段比較容易理解的介紹:「我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP 文本信息,然後使用TCP/IP做傳輸層協議將它發到網路上。」
術語TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。「IP」代表網際協議,TCP和UDP使用該協議從一個網路傳送數據包到另一個網路。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的「卡車」,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等。
你應該能理解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的數據傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保數據安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。
URL的全稱是Uniform Resource Locator(統一資源定位符)
通過1個URL,能找到互聯網上唯一的1個資源。
URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的URL。
URL的基本格式 =協議://主機地址/路徑
協議:不同的協議,代表著不同的資源查找方式、資源傳輸方式
主機地址:存放資源的主機(伺服器)的IP地址(域名)
資源在主機(伺服器)中的具體位置
1、HTTP協議的幾個重要概念
1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。
2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。
3.請求(Request):一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號
4.響應(Response):一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。
5.資源(Resource):由URI標識的網路數據對象或服務。
6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。
7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。
8.用戶代理(Useragent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。
9.伺服器(Server):一個接受連接並對請求返回信息的應用程序。
10.源伺服器(Originserver):是一個給定資源可以在其上駐留或被創建的伺服器。
11.代理(Proxy):一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。
代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。
網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
14.緩存(Cache):反應信息的局域存儲。
TCP(Transmission Control Protocol) 傳輸控制協議。TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握確認建立一個連接。位碼即tcp標志位,有6種 標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)。
手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連接。TCP協議可以對上層網路提供介面,使上層網路數據的傳輸建立在「無差別」的網路之上。建立起一個TCP連接需要經過「三次握手」:
第一次握手:客戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。握手完成後,兩台主機開始傳輸數據了。
為什麼要三次握手?
如果只有一次握手,Client不能確定與Server的單向連接,更加不能確定Server與Client的單向連接;
如果只有兩次握手,Client確定與Server的單向連接,但是Server不能確定與Client的單向連接;
只有三次握手,Client與Server才能相互確認雙向連接,實現雙工數據傳輸。
握手過程中傳送的包里不包含數據,三次握手完畢後,客戶端與伺服器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。斷開連接時伺服器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過「四次揮手」。
第一次揮手:
Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
第二次揮手:
Server收到FIN後,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
第三次揮手:
Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
第四次揮手:
Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。
為什麼要四次揮手?
「三次握手」的第二次握手發送SYN+ACK回應第一次握手的SYN,但是「四次揮手」的第二次揮手只能發送ACK回應第一次揮手的FIN,因為此時Server可能還有數據傳輸給Client,所以Server傳輸數據完成後才能發起第三次揮手發送FIN給Client,等待Client的第四次揮手ACK。
http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。HTTPS其實是有兩部分組成:HTTP +SSL/ TLS,也就是在HTTP上又加了一層處理加密信息的模塊。採用HTTPS協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。SSL介於應用層和TCP層之間。應用層數據不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對從應用層收到的數據進行加密,並增加自己的SSL頭。
1.怎麼解決tcp拆包和黏包的問題
粘包、拆包發生原因
發生TCP粘包或拆包有很多原因,現列出常見的幾點,可能不全面,歡迎補充,
1、要發送的數據大於TCP發送緩沖區剩餘空間大小,將會發生拆包。
2、待發送數據大於MSS(最大報文長度),TCP在傳輸前將進行拆包。
3、要發送的數據小於TCP發送緩沖區的大小,TCP將多次寫入緩沖區的數據一次發送出去,將會發生粘包。
4、接收數據端的應用層沒有及時讀取接收緩沖區中的數據,將發生粘包。
等等。
粘包、拆包解決辦法
解決問題的關鍵在於如何給每個數據包添加邊界信息,常用的方法有如下幾個:
1、發送端給每個數據包添加包首部,首部中應該至少包含數據包的長度,這樣接收端在接收到數據後,通過讀取包首部的長度欄位,便知道每一個數據包的實際長度了。
2、發送端將每個數據包封裝為固定長度(不夠的可以通過補0填充),這樣接收端每次從接收緩沖區中讀取固定長度的數據就自然而然的把每個數據包拆分開來。
3、可以在數據包之間設置邊界,如添加特殊符號,這樣,接收端通過這個邊界就可以將不同的數據包拆分開。
等等。
2.upd丟包
1、接收端處理時間過長導致丟包:調用recv方法接收端收到數據後,處理數據花了一些時間,處理完後再次調用recv方法,在這二次調用間隔里,發過來的包可能丟失。對於這種情況可以修改接收端,將包接收後存入一個緩沖區,然後迅速返回繼續recv。
2、發送的包巨大丟包:雖然send方法會幫你做大包切割成小包發送的事情,但包太大也不行。例如超過50K的一個udp包,不切割直接通過send方法發送也會導致這個包丟失。這種情況需要切割成小包再逐個send。
3、發送的包較大,超過接受者緩存導致丟包:包超過mtu size數倍,幾個大的udp包可能會超過接收者的緩沖,導致丟包。這種情況可以設置socket接收緩沖。以前遇到過這種問題,我把接收緩沖設置成64K就解決了。
int nRecvBuf=32*1024;//設置為32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
4、發送的包頻率太快:雖然每個包的大小都小於mtu size 但是頻率太快,例如40多個mut size的包連續發送中間不sleep,也有可能導致丟包。這種情況也有時可以通過設置socket接收緩沖解決,但有時解決不了。所以在發送頻率過快的時候還是考慮sleep一下吧。
5、區域網內不丟包,公網上丟包。這個問題我也是通過切割小包並sleep發送解決的。如果流量太大,這個辦法也不靈了。總之udp丟包總是會有的,如果出現了用我的方法解決不了,還有這個幾個方法: 要麼減小流量,要麼換tcp協議傳輸,要麼做丟包重傳的工作。
一個是客戶端發送過快,網路狀況不好或者超過伺服器接收速度,就會丟包。
第二個原因是伺服器收到包後,還要進行一些處理,而這段時間客戶端發送的包沒有去收,造成丟包。
那麼需要做的是
客戶端降低發送速度,可以等待回包,或者加一些延遲。伺服器部分單獨開一個線程,去接收UDP數據,存放在一個緩沖區中,又另外的線程去處理收到的數據,盡量減少因為處理數據延時造成的丟包。
有兩種方法解決UDP 丟包的問題:
方法一:重新設計一下協議,增加接收確認超時重發。(推薦)
方法二:在接收方,將通信和處理分開,增加個應用緩沖區;如果有需要增加接收socket的系統緩沖區。(本方法不能從根本解決問題,只能改善)
https://jiahao..com/s?id=1654225744653405133&wfr=spider&for=pc
https://www.jianshu.com/p/066d99da7cbd
https://jiahao..com/s?id=1654225744653405133&wfr=spider&for=pc
https://blog.csdn.net/qq_31337311/article/details/80781273
https://www.cnblogs.com/jiangzhaowei/p/8996810.html
http://blog.sina.com.cn/s/blog_d2bb5eff0102wbq2.html
⑦ 數據在網路上傳輸為什麼要加密現在常用的數據加密演算法主要有哪些
數據傳輸加密技術的目的是對傳輸中的數據流加密,通常有線路加密與端—端加密兩種。線路加密側重在線路上而不考慮信源與信宿,是對保密信息通過各線路採用不同的加密密鑰提供安全保護。
端—端加密指信息由發送端自動加密,並且由TCP/IP進行數據包封裝,然後作為不可閱讀和不可識別的數據穿過互聯網,當這些信息到達目的地,將被自動重組、解密,而成為可讀的數據。
數據存儲加密技術的目的是防止在存儲環節上的數據失密,數據存儲加密技術可分為密文存儲和存取控制兩種。前者一般是通過加密演算法轉換、附加密碼、加密模塊等方法實現;後者則是對用戶資格、許可權加以審查和限制,防止非法用戶存取數據或合法用戶越權存取數據。
常見加密演算法
1、DES(Data Encryption Standard):對稱演算法,數據加密標准,速度較快,適用於加密大量數據的場合;
2、3DES(Triple DES):是基於DES的對稱演算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高;
3、RC2和RC4:對稱演算法,用變長密鑰對大量數據進行加密,比 DES 快;
4、IDEA(International Data Encryption Algorithm)國際數據加密演算法,使用 128 位密鑰提供非常強的安全性;
5、RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的,非對稱演算法; 演算法如下:
首先, 找出三個數,p,q,r,其中 p,q 是兩個不相同的質數,r 是與 (p-1)(q-1) 互為質數的數。
p,q,r這三個數便是 private key。接著,找出 m,使得 rm == 1 mod (p-1)(q-1).....這個 m 一定存在,因為 r 與 (p-1)(q-1) 互質,用輾轉相除法就可以得到了。再來,計算 n = pq.......m,n 這兩個數便是 public key。
6、DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准),嚴格來說不算加密演算法;
7、AES(Advanced Encryption Standard):高級加密標准,對稱演算法,是下一代的加密演算法標准,速度快,安全級別高,在21世紀AES 標準的一個實現是 Rijndael 演算法。
8、BLOWFISH,它使用變長的密鑰,長度可達448位,運行速度很快;
9、MD5:嚴格來說不算加密演算法,只能說是摘要演算法;
對MD5演算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
(7)數據傳輸為什麼要打包擴展閱讀
數據加密標准
傳統加密方法有兩種,替換和置換。上面的例子採用的就是替換的方法:使用密鑰將明文中的每一個字元轉換為密文中的一個字元。而置換僅將明文的字元按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。
數據加密標准(Data Encryption Standard,簡稱DES)就採用了這種結合演算法,它由IBM制定,並在1977年成為美國官方加密標准。
DES的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位密鑰進行加密,實際上,密鑰由56位數據位和8位奇偶校驗位組成,因此只有56個可能的密碼而不是64個。
每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最後再對其施用初始置換的逆。第i步的替換並不是直接利用原始的密鑰K,而是由K與i計算出的密鑰Ki。
DES具有這樣的特性,其解密演算法與加密演算法相同,除了密鑰Ki的施加順序相反以外。
參考資料來源:網路-加密演算法
參考資料來源:網路-數據加密