主頁 > 軟體設計 > Java 網路編程,Http 協議,Https 協議,Tcp/Ip 協議,三次握手以及四次揮手, Http 長鏈接和短連接概念以及區別,對稱加密,非對稱加密原理等

Java 網路編程,Http 協議,Https 協議,Tcp/Ip 協議,三次握手以及四次揮手, Http 長鏈接和短連接概念以及區別,對稱加密,非對稱加密原理等

2021-08-06 07:25:32 軟體設計

  • Http協議與Https協議

    • HTTP:是互聯網上應用最為廣泛的一種網路協議,是一個客戶端和服務器端請求和應答的標準(TCP),用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少,

    • HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL,

    • HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊安全通道,來保證資料傳輸的安全;另一種就是確認網站的真實性,

    • HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的資料進行加密,從而就誕生了HTTPS,

    • HTTPS和HTTP的區別主要如下:

      1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用,

        2、http是超文本傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議,

        3、http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,后者是443,

        4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全,

    • Https的優點:

      • 使用HTTPS協議可認證用戶和服務器,確保資料發送到正確的客戶機和服務器;

        (2)HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸程序中不被竊取、改變,確保資料的完整性,

          (3)HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本,

          (4)谷歌曾在2014年8月份調整搜索引擎演算法,并稱“比起同等HTTP網站,采用HTTPS加密的網站在搜索結果中的排名將會更高”,

      • 缺點:

        • (1)HTTPS協議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;

          (2)HTTPS連接快取不如HTTP高效,會增加資料開銷和功耗,甚至已有的安全措施也會因此而受到影響;

            (3)SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用,

            (4)SSL證書通常需要系結IP,不能在同一IP上系結多個域名,IPv4資源不可能支撐這個消耗,

            (5)HTTPS協議的加密范圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什么作用,最關鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行,

Tcp/IP協議

  • 它只是利用 IP 進行通信時所必須用到的協議群的統稱,具體來說,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都屬于 TCP/IP 協議,他們與 TCP 或 IP 的關系緊密,是互聯網必不可少的組成部分,TCP/IP 一詞泛指這些協議,因此,有時也稱 TCP/IP 為網際協議群,

    互聯網進行通信時,需要相應的網路協議,TCP/IP 原本就是為使用互聯網而開發制定的協議族,因此,互聯網的協議就是 TCP/IP,TCP/IP 就是互聯網的協議,

  • image-20210804002430387

三握四揮

    • 認位ACK:當ACK=1時,確認號ack才生效,

    • 確認號ack:期望收到的下一個報文段的第一個資料位元組的序號,

    • 同時選擇一個初始序列號seq=x;

    • image-20210801231521590

  • 四次揮手

    • 段首部的終止控制位FIN=1,序號seq=u

    • image-20210801231725929

    • :為什么A要等待2MSL的時間?

  • 為了保證A發送的最后一個報文段能夠到達B,因為這個 ACK 有可能丟失,從而導致處在 LAST-ACK 狀態的服務器收不到對 FIN-ACK 的確認報文,服務器會超時重傳這個 FIN-ACK,接著客戶端再重傳一次確認,重新啟動時間等待計時器,最后客戶端和服務器都能正常的關閉,假設客戶端不等待 2MSL,而是在發送完 ACK 之后直接釋放關閉,一旦這個 ACK 丟失的話,服務器就無法正常的進入關閉連接狀態,

  • 可以防止已失效的報文段,客戶端在發送最后一個 ACK 之后,再經過經過 2MSL,就可以使本連接持續時間內所產生的所有報文段都從網路中消失,從保證在關閉連接后,不會有仍在網路中滯留的報文段去騷擾服務器,

  • 為什么建立連接三次,斷開連接四次?

    • 因為建立連接時,服務器的確認 ACK 和請求同步 SYN 可以放在一個報文里,而斷開連接時,服務器可能還有資料要傳送,因此,必須先發一個客戶端斷開連接請求的確認 ACK,以免客戶端超時重傳,待服務器的資料傳送完畢后,再發送一個請求斷開連接的報文段,

    • 斷開時次數比連接多一次,是因為連接程序,通信只需要處理「連接」,而斷開程序,通信需要處理「資料+連接」,

    • 為什么要四次揮手?

        注:TCP 是全雙工通信,因此必須兩個方向分別斷開連接

      • A 向 B 發送一個連接釋放請求報文,代表 A 的資料傳送完了,請求釋放連接;

      • B 收到后,B 立即向 A 發送一個確認報文,代表 B 已經知道 A 沒有資料要傳送了,但是 B 可能還有資料要向 A 傳送;

      • B 的資料傳送完后,向 A 發送一個連接釋放請求報文,代表 B 的資料也傳送完了,請求釋放連接;

      • A 收到后,也立即向 B 發送一個確認報文,同時等待 2MSL 后,連接斷開,

長短連接

  • 實質上是TCP協議的長連接和短連接

  • HTTP屬于應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議,

  • IP協議主要解決網路路由和尋址問題,TCP協議主要解決如何在IP層之上可靠的傳遞資料包,使在網路上的另一端收到發端發出的所有包,并且順序與發出順序一致,

  • TCP有可靠,面向連接的特點,

  • 在HTTP/1.0中,默認使用的是短連接,

    • 也就是說,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接,

      如果客戶端訪問的某個HTML或其他型別的Web資源,如JavaScript檔案、影像檔案、CSS檔案等,

      當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話,

  • 但從HTTP/1.1起,默認使用長連接,用以保持連接特性,

    • 在使用長連接的情況下,當一個網頁打開完成后,客戶端和服務器之間用于傳輸HTTP資料的 TCP連接不會關閉,

      如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接,

  • 長連接短連接區別:

    • 1.服務器端空間管理上:

      Keep-Alive不會永久保持連接,因為TCP連接將會越來越多,直到把服務器的TCP連接數量撐爆到上限為止,它有一個保持時間,可以在不同的服務器軟體(如Apache)中設定這個時間;

      短連接對于服務器來說管理較為簡單,存在的連接都是有用的連接,不需要額外的控制手段,

    • 2.時間上:

      • 在客戶請求頻繁的情況下:若使用短連接,將在TCP的建立和關閉操作上浪費時間和帶寬;

        若使用長連接,就可以節省很多這樣的消耗;

  • 長連接有兩個問題:

    a.HTTP 1.1 基于串行檔案傳輸資料,因此這些請求必須是有序的,所以實際上我們只是節省了建立連接的時間,而獲取資料的時間并沒有減少

    b.最大并發數問題,假設我們在 Apache 中設定了最大并發數 300,而因為瀏覽器本身的限制,最大請求數為 6,那么服務器能承載的最高并發數是 50

對稱加密和非對稱加密

  • 非對稱加密

    • 用公鑰加密用私鑰解密

    • b.加密、解密相對于對稱加密效率更低,但是比對稱加密更安全,

    • 公鑰可能被中間人偽造,造成資料不安全,

    • image-20210802023259549

  • Https

    • image-20210802023332208

  • 總結:

    • 對稱加密的效率最高

    • 數字證書、對稱加密由于效率比較低適合做身份驗證

    • https底層用的還是對稱加密傳輸資料,所謂的數字證書、非對稱加密都是為了驗證對方的身份,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/292000.html

標籤:其他

上一篇:nginx--自定義shell腳本+crond定時服務實作nginx日志自動清理及壓縮備份

下一篇:Linux-- 定時服務crond VS anacron和 crontab VS anacrontab區別對比

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more