java面試知識點(1)

2021-08-08 10:56:40 字數 3802 閱讀 6159

一直對tcp http 和socket稀里糊塗的,今天專門的查了下:

tcp/ip是個協議組,它分為網路層,傳輸層和應用層,

網路層:

ip協議、icmp協議、arp協議、rarp協議和bootp協議。

傳輸層:

中有tcp協議與udp協議。

應用層:

ftp、http、telnet、smtp、dns等協議。

tcp 是

傳輸層協議,主要解決資料如何在網路中傳輸的,

tcp

連線是長連線

第一次握手:客戶端傳送請求包到伺服器,等待伺服器確認

第二次握手:伺服器響應客戶端請求,同時也傳送乙個回應包給客戶端

第三次握手:客戶端收到伺服器的回應包後,向伺服器傳送確認包

1.握手過程中傳送的包裡,不包含資料,三次握手完畢後,客戶端與服務端才正式的開始傳遞資料。

tcp一旦連線起來,在客戶端和服務端任何一方主動關閉連線之前,tcp連線都將被一直保持下去。

斷開連線時,伺服器和客戶端都可以主動發起斷開tcp連線的請求。

http(超文字傳輸協議)

應用層協議

主要解決怎麼包裝資料

http連線是短連線,它是

無狀態的

瀏覽器和伺服器每進行一次http操作,就建立一次連線

但任務結束就斷開連線

,http是利用tcp在兩台電腦(通常是web伺服器和客戶端)之間傳輸資訊的協議,

socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api)。

實際上,

傳輸層的tcp是基於網路層的ip協議的,而應用層的http協議又是基於傳輸層的tcp協議的,而

socket本身不算是協議,就像上面所說,它只是提供了乙個針對

tcp或者udp程式設計的介面

https是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層

一.https的工作原理

https在傳輸資料前

需要客服端(瀏覽器)與伺服器(**)之間進行一次握手

,在握手過程中將確立雙方加密傳輸資料的密碼資訊

.tls/ssl協議是一套加密傳輸協議,使用了非對稱加密,對稱加密,以及

hash演算法.握手過程如下:

1.客服端將自己支援的一套加密規則

傳送給**.

2.**從中選擇一組加密演算法與雜湊演算法

,並將自己的身份資訊以證書(ssl證書)的形式發回給瀏覽器.證書裡面包含了**位址,加密公鑰,以及證書的頒發機構等資訊.

3,客服端

獲得**證書之後瀏覽器要做以下幾件事情:

a) 驗證證書的合法性(頒發機構是否合法,證書中包含的**位址是否與正在訪問的位址一致等,驗證方法見附1),如果證書受信任,則瀏覽器欄裡面會顯示乙個小鎖頭,否則給出證書不受信任的提示.

b)如果證書受信,或者使用者選擇接受不受信任的證書.瀏覽器生成一串隨機數的密碼,並用證書中提供的公鑰加密.

)使用約定好的雜湊演算法計算握手訊息,並使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊傳送給**.

4.**接受瀏覽器發來的資料之後要做一下的操作:

a)使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的的握手訊息,並驗證hash值是否與瀏覽器發來的一直.

b)使用密碼加密一段握手訊息,傳送給瀏覽器.

5.瀏覽器解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密.

瀏覽器與**互相傳送加密的握手訊息並驗證,目的是為了保證雙方都獲得一致的密碼,並且可以正常的加密解密資料,為後續真正的資料傳輸做一次測試.

二:https協議和http協議的區別:

1.https協議需要到

ca申請

2.http傳輸的資訊是

明文

的,https傳輸的資訊是經過

ssl加密

3.http和https使用的是完全不同的

連線方式

,埠不一樣,http埠號80,h

ttps埠為443.

4.http連線簡單,是無狀態的.

5.https協議是有ssl+http協議構建的

可進行加密傳輸//身份認證的網路協議,比http協議安全.

三.tcp協議3次握手,4次揮手

傳輸層建立連線和斷開連線,乙個完整的過程.中間可能出現許多例外,都需要有相應的處理方法.

1. 建立連線協議,三次握手

(1).報文1,客服端傳送乙個帶syn標誌的tcp報文到伺服器.syn(synchronous)是tcp/ip建立連線時使用的握手訊號

。syn攻擊是個比較有意思的事情.

(2).報文2,伺服器端回應客服端,報文帶ack和syn編制.

(3).報文3,客服端在回應乙個ack報文.伺服器端接受到此ack訊號好才啟動連線,此時連線才算成立.

為什麼需要三次握手:由於各個網路的情況不同,可能會產生報文傳輸延時,從而變成失效的連線請求.防止失效的連線請求報文段突然

友傳到了服務端,從而產生錯誤.解決網路中存在重複分組的問題.

只是傳輸層為了防止失效的連線請求而設立的機制.

2.連線終止協議,四次揮手

tcp連線是全雙工,因此每個方向都必須單獨進行關閉.每個方向,當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線.

(1). tcp客服端傳送乙個fin,用來關閉客服到伺服器的資料傳送.

(2).伺服器端接收到fin,響應乙個ack,確認序號,為接收到的序號加1.

(3).伺服器關閉客服端的連線,傳送乙個fin給客服端.

(4).客服端發回ack報文確認,並將確認序號設定為序號加1.

4次揮手,為了斷開連線.

C 面試知識點1

c 指標和引用的區別 相同點 1 都是對位址的概念 指標指向一塊記憶體,而引用是某塊記憶體的別名。不同點 1 指標本身就是乙個物件,允許對指標賦值和拷貝。引用僅是個別名 2 指標不需要在定義的時候賦初值,即可以為空,而且指標生命週期內可以先後指向幾個不同的物件。但是引用必須要初始化 不但不能為空而且...

C C 面試知識點1

由於記憶體對齊的原則,在32位機器上,記憶體是4位元組對齊,也就是說,不夠4個位元組的按 4位元組來算。同理,在64位機器上,記憶體是8位元組對齊。struct test1 test int length 1 sizeof test 12 4 4 4 sizeof 是運算子不是函式 struct t...

JAVA知識點之類(1)

一.繼承extends 父類 class base 子類 class child extends base 二.修飾符public protected private public protected 成員被自動繼承 private成員不被繼承 三.重寫 父類base有 print print in...