主頁 > 軟體設計 > 計算機網路協議

計算機網路協議

2022-01-05 21:14:42 軟體設計

文章目錄

  • 一、從一個HTTP請求來看網路分層原理
    • 1、網路分層
    • 2、一個HTTP請求的分層決議流程
  • 二、HTTP協議
      • 2.1 HTTP報文格式
    • 2.2 請求報文格式
    • 2.3 回應行報文格式
    • 2.4 HTTP頭欄位
    • 2.5 常用頭欄位
  • 三、HTTP請求的完整程序
  • 四、TCP協議
    • 4.1 TCP連接管理
    • 4.2 TCP三次握手詳解
      • 第一次握手
      • 第二次握手
      • 第三次握手
    • 4.3 握手程序中的內核
    • 4.4 TCP四次揮手
    • 4.5 位元組流的協議
    • 4.6 資料可靠性傳輸
      • 4.7 滑動視窗協議與累計確認(延時ack)
  • 五、HTTPS協議
    • 5.1 SSL/TSL
      • 摘要演算法
      • 加密演算法
        • 對稱秘鑰加密演算法
        • 非對稱秘鑰加密演算法
    • 5.2 身份驗證
      • 數字證書組成
      • 數字證書作用
      • 數字證書的申請和驗證
        • 如何申請
        • 瀏覽器如何驗證

一、從一個HTTP請求來看網路分層原理

比如現在要實作這樣一個需求,將一個資料包從A主機傳輸到B主機,

傳輸的中間程序中可能發生以下問題:
在這里插入圖片描述
為了更清楚的解決這些問題,就需要進行分層,

1、網路分層

業內普遍的分層方式有兩種:OSI七層模型TCP/IP四層模型
在這里插入圖片描述

2、一個HTTP請求的分層決議流程

在這里插入圖片描述

二、HTTP協議

超文本傳輸協議(HyperText Transfer Protocol, HTTP):一種無狀態的(不會存盤用戶的資訊),以請求/應答方式的協議,它使用可拓展的語意(頭部添加引數)和字描述訊息格式(文本、音視頻),與基于網路的超文本資訊系統(HTML)靈活的互動,

HTTP中雖然有傳輸,但是真正的傳輸是交由TCP來完成的,

2.1 HTTP報文格式

HTTP協議的請求報文和回應報文的結構基本相同,由三大部分組成:

  • 起始行(start line):描述請求或回應的基本資訊
  • 頭部欄位集合(header):使用key-value形式更詳細的說明報文
  • 訊息正文(entity):實際傳輸的資料,它不一定是純文本,可以是圖片、視頻等二進制資料

在這里插入圖片描述

2.2 請求報文格式

在這里插入圖片描述

  • 請求方法:如GET/HEAD/PUT/POST,表示對資源的操作;
  • 請求目標:通常是一個URI,標記了請求方法要操作的資源;
  • 版本號:表示報文使用的HTTP協議版本,

2.3 回應行報文格式

在這里插入圖片描述

2.4 HTTP頭欄位

頭部欄位是key-value的形式,key和value之間用“:”分隔,最后用CRLF換行表示欄位結束,比如前后端分離是經常遇到要與后端協商傳輸資料的型別“Content-type:application/json”,這里key就是“Content-type”,value就是“:application/json”,HTTP頭欄位非常靈活,不僅可以使用標準的Host、Connection等已有頭,也可以任意添加自定義頭,這就給HTTP協議帶來了無限的拓展可能,

頭欄位注意事項:

  • 欄位名不區分大小寫,欄位里不允許出現空格,可以使用連字符“-”,但不能使用下劃線“” (有的服務器不會決議帶""的頭欄位),欄位名后面必須緊接著:“:”,不能有空格,而“:”后的欄位值可以有多個空格;
  • 欄位的順序是沒有意義的,可以任意排列不影響語意;
  • 欄位原則上不能重復,除非這個欄位本身的語意允許,例如Set-Cookie,

2.5 常用頭欄位

HTTP協議中有非常多的頭欄位,但基本上可以分為四大類:

  • 請求欄位:請求頭中的頭欄位,如Host,Referer;
  • 回應欄位:回應頭中的頭欄位,如Server,Date;
  • 通用欄位:在請求頭和回應頭里都可以出現,如Content-type,Connection,

三、HTTP請求的完整程序

當用戶在瀏覽器輸入網址回車之后,網路協議都做了哪些作業呢?

1、首先干活的是瀏覽器應用程式,它要決議出URL中的域名
2、根據域名獲取對應的IP地址,首先從瀏覽器快取中查看,如下可以查看瀏覽器中域名對應IP的決議

chrome://net-internals/#events

如果沒有從本機域名決議檔案hosts(/etc/hosts)中查看,還沒有則從LDNS(Localdnsserver)、RootServer域名服務器、國際頂級域名服務商的DNS的層層決議

3、拿到IP地址之后,瀏覽器就可以發起與服務器的三次握手
4、握手建立之后,就開始組裝http請求報文,發送報文
5、服務器收到請求報文之后開始,請求報文決議,生成相應資料,發送相應資料
6、瀏覽器收到回應之后,開始渲染頁面
在這里插入圖片描述

四、TCP協議

TCP(Transmission Control Protocol):面向連接的、可靠的、基于位元組流的傳輸層通信協議,

特點:

  • 基于連接的:資料傳輸之前需要建立連接
  • 全雙工的:雙向傳輸
  • 位元組流:不限制資料大小,打包成報文段,保證有序接收,重復報文自動丟棄
  • 流量緩沖:解決雙方處理能力的不匹配
  • 可靠的傳輸服務:保證可達,丟包時通過重發機制實作可靠性
  • 擁塞控制:防止網路出現惡性擁塞

報文:
在這里插入圖片描述

4.1 TCP連接管理

1、TCP連接:四元組【原地址,源埠,目的地址,目的埠】

2、確立連接:TCP三次握手(基于報文實作)

  • 同步通信雙方初始化序號(INS,initial sequence number)
  • 協商TCP通信引數(MESS,視窗資訊,指定校驗和演算法)

4.2 TCP三次握手詳解

TCP是屬于網路分層中的運輸層(有的書也翻譯為傳輸層),因為OSI分為7層,感覺太麻煩了,所以分為四層就好了,簡單,

分層以及每層的協議,TCP是屬于運輸層(有的書也翻譯為傳輸層),
在這里插入圖片描述

要想簡單了解TCP三次握手,我們首先要了解TCP頭部結構,如下:
在這里插入圖片描述
TCP三次握手如圖:
在這里插入圖片描述
在這里插入圖片描述

第一次握手

客戶端給服務器發送一個SYN段(在 TCP 標頭中 SYN 位欄位為 1 的 TCP/IP 資料包), 該段中也包含客戶端的初始序列號(Sequence number = J),

SYN是同步的縮寫,SYN 段是發送到另一臺計算機的 TCP 資料包,請求在它們之間建立連接

第二次握手

服務器回傳客戶端 SYN +ACK 段(在 TCP 標頭中SYN和ACK位欄位都為 1 的 TCP/IP 資料包), 該段中包含服務器的初始序列號(Sequence number = K);同時使 Acknowledgment number = J + 1來表示確認已收到客戶端的 SYN段(Sequence number = J),

ACK 是“確認”的縮寫, ACK 資料包是任何確認收到一條訊息或一系列資料包的 TCP 資料包

第三次握手

客戶端給服務器回應一個ACK段(在 TCP 標頭中 ACK 位欄位為 1 的 TCP/IP 資料包), 該段中使 Acknowledgment number = K + 1來表示確認已收到服務器的 SYN段(Sequence number = K),

參考文章:https://blog.csdn.net/jun2016425/article/details/81506353,里面有更詳細的程序,

4.3 握手程序中的內核

在這里插入圖片描述
在這里插入圖片描述

4.4 TCP四次揮手

在這里插入圖片描述
客戶端:發送FIN資料包,代表客戶端不再發送資料(但是服務端還是可以收資料的)
服務端:收到請求,開始應答,避免了A重新發送FIN重試(應答機制)
服務端:處理完資料之后關閉,關閉連接及發送FIN請求
客戶端:收到請求后發送ACK應答,服務端可以釋放連接

為什么要等到2MSL之后釋放連接?
1、防止報文丟失,導致服務端重復發送FIN
2、防止滯留在網路中的報文,對新建立的連接造成資料擾亂

4.5 位元組流的協議

TCP把應用交付的資料僅僅看成是一連串的無結構的位元組流,TCP并不知道位元組流的含義,TCP并不關心應用程式一次將多大的報文發送到TCP的快取匯總,而是根據對方給出的視窗只和當前網路擁堵的程度來決定一個報文段應該包含多少個位元組,

MSS:Max Segment Size,默認536byte實際資料,
在這里插入圖片描述

以上圖說明,資料并不是一次發過去的,而是被分成了segment在TCP之間進行傳輸,所以傳輸的程序中,可能會出現很多問題:

1、有一部分可能到服務端,有一部分可能還在路由器中傳輸
2、程序中順序也有可能被打亂,所以TCP要根據報文的序列號進行排序
3、如果由于傳輸慢,可能需要重復發送報文
4、如果TCP判斷收到了重復報文,還需要去重

4.6 資料可靠性傳輸

停止等待協議:
在這里插入圖片描述
重傳機制:
在這里插入圖片描述

在這里插入圖片描述

4.7 滑動視窗協議與累計確認(延時ack)

滑動視窗大小通過tcp三次握手和對端協商,而且受網路影響:
在這里插入圖片描述
這樣只需要重新傳丟失的報文,對于已經ack的就不需要再傳輸了,

五、HTTPS協議

由于HTTP天生“明文”的特點,整個傳輸程序完全透明,任何人多能夠在鏈路中截獲、修改或者偽造請求/相應報文,資料不具有可信性,

因此就誕生了為安全而生的HTTPS協議,

使用HTTPS時,所有的HTTP請求和相應在發送到網路之前,都要進行加密,
在這里插入圖片描述
HTTPS沒有對HTTP進行直接修改,而是提供了一些API,使得HTTP不再直接與TCP進行互動,而是與SSL/TSL(安全層)先互動(進行資料加密),而SSL/TSL再與TCP層進行互動,反過來,服務端到客戶端也是一樣,到達之前要先經過SSL/TSL進行解密,

5.1 SSL/TSL

SSL即安全套接層(Secure Sockets Layer),有網景公司與1994年發明,IEFT在1999年把它改名為TLS(傳輸層安全,Transport Layer Security),正式標準化,到今天TSL已經發展出了主流的三個版本,分別是2006年的1.1、2008年的1.2、2018年的1.3,每個新版本都緊跟著密碼學的發展和互聯網的現狀,持續強化安全和性能,已經成為了資訊安全領域中的權威標準,

摘要演算法

摘要演算法能夠把任意長度的資料壓縮成固定長度、而且獨一無二的“摘要”字串,就好像是給這段資料生成了一個數字“指紋”,任意微小的資料差異,都可以生成完全不同的摘要,所以可以通過把明文資訊的摘要和明文一起加密進行傳輸,資料傳輸到對方之后再進行解密,重新對資料進行摘要,再比對就能發現資料有沒有被篡改,這樣就保證了資料的完整性,
在這里插入圖片描述

加密演算法

對稱秘鑰加密演算法

編、解碼使用相同秘鑰的演算法,如(AES,RC4,ChaCha20),

比如對原密碼進行一些亦或運算,需要有一個秘鑰,然后用原密碼和秘鑰進行亦或運算進行加密和解密,
在這里插入圖片描述

非對稱秘鑰加密演算法

他有兩個秘鑰,一個叫“公鑰”,一個叫“私鑰”,兩個秘鑰是不同的,公鑰可以公開給任何人使用,而私鑰必須要嚴格保密,非對稱加密可以解決“秘鑰交換”的問題,網站秘密保管私鑰,在網上任意分發公鑰,你想要登錄網站只要用公鑰加密就行了,密文只能有私鑰持有者才能解密,而黑客因為沒有私鑰,所以就無法破解密文,非對稱秘鑰加密系統通常需要大量的數學運算,比較慢,如DH、DSA、RSA、ECC,

使用公鑰加密,就需要使用私鑰解密,
使用私鑰加密,就需要使用公鑰解密,

在這里插入圖片描述
TLS里使用的是混合加密方式,即把對稱加密和非對稱加密結合起來,兩者互相取長補短,即能高效的加密解密,又能安全地進行秘鑰交換,大致流程如下:

1、通信開始的時候使用非對稱演算法如RSA,ECDHE先解決秘鑰交換的問題;
在這里插入圖片描述
2、用亂數產生對稱演算法使用的“會話秘鑰”,再使用公鑰加密,會話秘鑰很短,所以即便使用非對稱加密演算法也可以很快的完成加解密,
在這里插入圖片描述
3、對方拿到密文后用私鑰解密,取出會話秘鑰,完成對稱秘鑰的安全交換,后續就使用對稱演算法完成資料交換,
在這里插入圖片描述

5.2 身份驗證

數字證書組成

CA資訊,公鑰用戶資訊,公鑰,權威機構的簽名,有效期,

數字證書作用

1、通過數字證書向瀏覽器證明身份
2、數字證書里包含了公鑰

建立TCP三次握手的前提是客戶端要拿到服務器的IP地址,如果在獲取的程序中被別人截獲了DNS的資訊,然后故意將DNS的IP地址故意指向到黑客自己的服務器,這樣就會偽裝成你客戶端要訪問的那臺服務器,這時候客戶端就會將資料直接發送到黑客的服務器上,而不是目標DNS服務器,所以一定要驗證目標服務器是準確的,而不是被人偽裝的服務器,

沒有數字證書,黑客會攔截TCP三次握手,讓服務器直接將資料發送到黑客自己的服務器上,

數字證書的申請和驗證

如何申請

1、生成自己的公鑰和私鑰,服務器自己保留私鑰
2、向CA機構提交公鑰,公司,域名資訊等認證
3、CA機構通過線上,線下等多種途徑驗證你提交資訊的真實性、合法性
4、資訊審核通過,CA機構則會向你簽發認證的數字證書,包含了公鑰、組織資訊、CA資訊、有效時間、證書序列號,同時生成一個簽名;

簽名步驟:hash(你用戶申請證書鎖提交的明文資訊)= 資訊摘要;CA再使用私鑰對資訊摘要進行加密,密文就是證書的數字簽名,

瀏覽器如何驗證

有了CA簽名過的數字證書,當瀏覽器訪問服務器時,服務器會回傳數字證書給瀏覽器,瀏覽器收到證書后會對數字證書進行驗證,

首先瀏覽器讀取證書中相關的明文資訊,采用CA簽名時相同的hash函式計算得到資訊摘要A,再利用對應的CA公鑰解密數字簽名資料得到資訊摘要B,如果摘要A和只要B一致,則可以確認證書是合法的,

在這里插入圖片描述

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

標籤:其他

上一篇:Nginx組態檔nginx.conf的基本配置

下一篇:進一線互聯網大廠擔任架構師,需要掌握哪些核心技能?

標籤雲
其他(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