描述一下DNS的決議程序:
- 假設在瀏覽器中輸入www.baidu.com ,作業系統回先檢查自己本地的hosts中是否有網址映射關系,如果有就進行本地域名決議,,
- 如果hosts檔案中不會存在映射關系,則查找本地的DNS解釋器快取,是否有這個網址的映射關系,如果有進直接進行域名決議,
- 如果hosts與本地的DNS解釋器快取都沒有映射關系,首先會找到TCP/IP引數中設定的首選DNS服務器,服務器接收到查詢后,如果查詢的域名,包含在本地配置的區域資源中,則回傳決議結果給客戶機,完成域名決議,如果要查詢的域名,不由本地DNS 服務器區域決議,但該服務器已經快取了此網址的映射關系,則呼叫這個ip地址映射進行地址決議,
- 如果DNS服務器本地區域檔案和快取決議都失敗,則根據本地的DNS服務器的設定(是否設定轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會回傳一個負責該頂級域名服務器的一個IP,本地DNS服務器收到IP資訊后,將會聯系負責.com域的這臺服務器,這臺負責.com域的服務器收到請求后,如果自己無法決議,它就會找一個管理.com域的下一級DNS服務器地址(http://qq.com)給本地DNS服務器,當本地DNS服務器收到這個地址后,就會找http://qq.com域服務器,重復上面的動作,進行查詢,直至找到www . qq .com主機,
- 如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行決議,上一級服務器如果不能決議,或找根DNS或把轉請求轉至上上級,以此回圈,不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果回傳給本地DNS服務器,由此DNS服務器再回傳給客戶機,
簡單來說就是先進行瀏覽器快取,系統快取,路由器快取,DNS快取(運營商),根域名快取,頂級域名服務器,主域名服務器
DHCP的作用是:
就是會動態的分配給ip地址以及其他的網路引數,這避免了手動分配帶來的地址沖突等情況的發生,
說一下OS有哪七層?
第一層:物理層,第二層:資料鏈路層,第三層:網路層,第四層:傳輸層,第五層:會話層,第六層:表示層,第七層:應用層,
說一下nfs,ftp,samba三者的區別:
**NFS:**是SUN公司指定的一種用于分布式訪問的檔案系統,它的本質是檔案系統,主要用于unix作業系統上使用的,基于TCP/IP協議層,可以將遠程的計算機磁盤掛載到本地,像本地磁盤一樣操作,
FTP: ftp 的目的是在internet 上共享檔案而發明的一種協議,基于TCP/IP,世界上絕大多系統都會有支持FTP工具的存在,通用性比較強,
**Samba:**是unix系統下實作windows檔案共享的協議-CIFS,由于Wing共享的基于NetBios協議,是基于Etherbet的廣播協議,在沒有透明網橋的情況下(vpn)是不能夠跨網段使用的,它主要用于linx和windows系統進行檔案和列印機共享,也可以通過samba套件中的程式掛載到本地使用,
說一下防火墻的作業原理:
防火墻最初是針對internet網路不安全因素所采取的一種保護措施,
怎么實作防火墻對指定ip對指定服務可以訪問?
Mysql相關
說一下資料庫的主從復制原理:
主從復制原理就是master 開啟bin-log二進制日志,從庫通過change master 得到主庫的相關同步資訊,然后連接主庫進行驗證,主庫的IO執行緒根據從庫slave執行緒的請求,從master.info 開始記錄的位置點向下開始取資訊,同時把取到的位置點和最新的位置與binlog資訊一同發給從庫IO執行緒,從庫將相關的sql陳述句存放到relay-log里面,最終從庫的sql執行緒將relay-log里面的sql陳述句應用到從庫上,至此整個同步程序完成,之后則將無限重復上述的程序,
完整的步驟如下:
- 主庫開啟binlog功能,并進行全備,將全備檔案推送到從庫服務器上
- Show master status;記錄下當前的位置資訊,以及二進制檔案名
- 登陸到從庫恢復全備檔案
- 執行change master to 陳述句
- 執行start slave and show slave status\G
- 查看io和sql狀態是否為yes,
資料庫索引的優點和缺點
1、索引的概念
索引就是為了提高資料的檢索速度,資料庫的索引類似于書籍的索引,
在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的資訊,在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃描整個資料庫.
2、索引的優點
1.創建唯一性索引,保證資料庫表中每一行資料的唯一性
2.大大加快資料的檢索速度,這也是創建索引的最主要的原因
3.減少磁盤IO(向字典一樣可以直接定位)
3、索引的缺點
1.創建索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加
2.索引需要占用額外的物理空間
3.當對表中的資料進行增加、洗掉和修改的時候,
索引也要動態的維護,降低了資料的維護速度
4、索引的分類
1.普通索引和唯一性索引
普通索引:CREATE INDEX mycolumn_index(索引名) ON mytable (表名)
唯一性索引:保證在索引列中的全部資料是唯一的
CREATE unique INDEX mycolumn_index ON mytable (myclumn)
2. 單個索引和復合索引
單個索引:對單個欄位建立索引
復合索引:又叫組合索引,在索引建立陳述句中同時包含多個欄位名,
最多16個欄位
CREATE INDEX name_index ON userInfo(firstname,lastname)
3.順序索引,散列索引,位圖索引
資料庫事務的特性,詳細介紹一下ACID?
原子性(Atomicity) 一致性(Consistency) 隔離性(Isolation) 持久性(Durability)
資料庫事物特性
1, 什么是資料庫事務?
資料庫管理系統執行程序中的一個邏輯單位,由一個有限的資料庫操作序列構成,
意思就是一連串的資料庫操作,即一串增刪查改的集合,
2, 資料庫事務做了什么?
它把資料庫從一個一致的狀態轉換到另一個一致的狀態,比如資料庫操作前是一個點,資料庫操作后是一個點,
我們只管這兩個點的狀態,而兩點之間的連線上的狀態我們不管因為他們可能對我們想要的結果產生影響,
3, 第一個特性 原子性(Atomicity)
假如我們有個方法中對一個屬性進行了N次的更新,但是執行到一半的時候有一個陳述句有問題出現了例外,這樣就可能使得我們上面所說的操作后的點與我們預先的點不同,這不是我們想要的,所以原子性要求你這個方法要么全部執行成功,要么你就別執行,
4, 第二個特性 一致性(Consistency)
原子性中規定方法中的操作都執行或者都不執行,但并沒有說要所有操作一起執行(一起更新那就亂套了,要哪個結果?),所以操作的執行也是有先后順序的,那我們要是在執行一半時查詢了資料庫,那我們會得到中間的更新的屬性?答案是不會的,一致性規定事務提交前后只存在兩個狀態,提交前的狀態和提交后的狀態,絕對不會出現中間的狀態,
5, 第三個特性 隔離性(Isolation)
事務的隔離性基于原子性和一致性,每一個事務可以并發執行,但是他們互不干擾,但是也有可能不同的事務會操作同一個資源,這個時候為了保持隔離性會用到鎖方案,
6, 第四個特性 持久性(Durability)
當一個事務提交了之后那這個資料庫狀態就發生了改變,哪怕是提交后剛寫入一半資料到資料庫中,資料庫宕機(死機)了,那當你下次重啟的時候資料庫也會根據提交日志進行回滾,最終將全部的資料寫入,
講述一下你對LVS的理解:
LVS 目前已經被集成到linux內核模塊中了,也就是linux服務器,該專案在linux內核中實作了基于IP的資料請求負載均衡的調度方案,終端互聯網用戶從外部訪問公司的外部負載均衡器,終端用戶的web請求會發送到LVS調度器,調度器會根據自己預設的演算法決定將請求發送給后端的 某臺WEB服務器,比如輪詢的話會將外部請求平均發送給后端的所有服務器,終端用戶訪問LVS 調度器雖然會被轉發到后端的真實服務器,但如果真實服務器連接的是相同的存盤,提供的服務也是相同的服務,最終用戶不管是訪問哪臺真實服務器,得到的服務內容都是一樣的,整個集群對用戶來說的是透明的,最后根據LVS作業模式的不同,真實服務器會選擇不同的方式將用戶需要的資料發送到終端用戶,LVS作業模式分為NAT模式,TUN模式以及DR模式,
DR模式和NAT模式的區別:
NAT模式要求:
- LVS服務器需要有不同的網段
- 服務器的網關必須是LVS的IP地址,
優點:1.安全,2.可以實作不同網段的資料請求
缺點:因為在VS/NAT中請求和回應報文都需要通過負載調度器,伸縮能力有限,當服務器節點數目升到20時,調度器本身,有可能會成為系統的新瓶頸,
DR模式 - 客戶端將訪問vip報文發送給LVS服務器;
- LVS服務器將請求報文的mac地址改為后端真是服務器的mac地址;
優點:1.LVS服務器知識修改了mac地址,所以非常快速,并且LVS 不會成為瓶頸,
缺點:1.要求較高,LVS服務器必須和后端真實服務器處于同一VLAN下;
2.后端真實服務器直接影響客戶端,對于后端真實服務器來說,并不安全,
什么是LAMP架構?
LAMP架構是Linux Apache Mysql PHP 的縮寫,即把Apache Mysql PHP 安裝在linux系統上,組成一個環境來運行PHP網站,這里的Apache是httpd服務,這些可以安裝到一個機器上,但是httpd 和PHP安裝在一臺機器上(php作為httpd的一個模塊存在的,他們兩者必須要在一起,才能實作效果),
Apache主要實作如下功能:
第一:處理http的請求、構建回應報文等自身服務
第二:配置讓apache 支持PHP程式的回應(通過php模塊或者fpm)
第三:配置Apache具體處理php程式的方法,如通過反向代理將php程式交給fcgi處理
Mysql主要實作如下功能:
第一:提供PhP程式對資料的存盤
第二:提供php程式對資料的讀取(通常情況下從性能)
php主要實作如下功能:
第一:提供apache的訪問介面,即CGI或者Fast CGI(fpm)
第二:提供php程式的解釋器
第三:提供mysql資料庫的連接函式的基本函式,
python
一句話解釋一下什么樣的語言能夠用裝飾器?
函式可以作為引數傳遞的語言可以使用裝飾器,
python內建的資料型別有哪些?
整型–int,布爾型–bool,字串–str,串列–list,元組–tuple,字典–dict,
裝飾器: 給函式增加新功能,不修改被裝飾物件的源代碼和呼叫方法
生成器: 生成器其實是一種特殊的迭代器,它不需要__iter__() 和__next__() 方法,只需要一個yiled 關鍵字
迭代器: 任何實作了__iter__() 和__next__() 方法的物件都是迭代器,iter() 回傳迭代器自身, next() 回傳容器中的下一個值
簡述面向物件中__new__和__init__區別?
簡述Django的生命周期?
第一步:瀏覽器發起請求
- 第二步:WSGI創建socket服務端,接收請求(Httprequest)
- 第三步:中間件處理請求
- 第四步:url路由,根據當前請求的URL找到視圖函式
- 第五步:view視圖,進行業務處理(ORM處理資料,從資料庫取到資料回傳給view視圖;view視圖將資料渲染到template模板;將資料回傳)
- 第六步:中間件處理回應
- 第七步:WSGI回傳回應(HttpResponse)
- 第八步:瀏覽器渲染
python中的深拷貝和淺拷貝區別?
time datetime、random、os、sys
深拷貝和淺拷貝最根本的區別在于是否真正獲取一個物件的復制物體,而不是參考,
假設B復制了A,修改A的時候,看B是否發生變化:
如果B跟著也變了,說明是淺拷貝,拿人手短!(修改堆記憶體中的同一個值)
如果B沒有改變,說明是深拷貝,自食其力!(修改堆記憶體中的不同的值)
核心: 如果串列的元素包含可變資料型別, 一定要使用深拷貝,
zabbix監控
zabbix 是怎么實施監控的?
一個監控系統運行的流程是:
agent 需要安裝到被監控的主機上,它負責定期收集各項資料,并發送到Zabbix server 端,zabbix server 將資料存盤到資料庫中,zabbix web根據資料在前端進行展示和繪圖,這里agent收集資料分為主動和被動兩種模式:
主動:agent 請求server獲取主動的監控項串列,并主動將監控項內需要檢測的資料提交給server/proxy
被動:server向agent請求獲取監控項的資料,agent回傳資料,
zabbix自定義發現怎么設定?
- 首先需要在模塊中創建一個自動發現規則,這里需要一個名稱個一個鍵值
- 過濾器中間要添加你需要用到的值,
- 然后創建一個監控項原型,也是一個名稱個一個鍵值
- 然后需要去寫一個這樣的鍵值的收集
自動發現實際上就是需要首先去獲得需要監控得值,然后將這個值做為一個新的引數傳遞到另外一個收集資料得item中,
zabbix怎么實作微信電話短信報警得?
我當時做zabbix監控的時候使用的是睿象云實作的
- 首先需要注冊睿象云,創建監控工具
- 在zabbix server端安裝CA探針
- 在睿象云添加策略,選擇以什么樣的方式進行通知,以及通知人等資訊
- 做測驗的話可以down掉某臺主機,然后等待告警,然后認領解決問題,
使用zabbix 監控過那些服務?
行程cpu查看負載和使用率
單機記憶體查看
單機磁盤查看
單機查看網路
nginx mysql
Shell
grep 的使用:
grep是全面搜索正則運算式并把行列印出來,它是一種強大的文本搜索工具,與正則運算式結合使用,
如何在腳本中使用引數?
第一個引數:$1,第二個引數$2
[root@Suns ~]# sh show.sh file.txt /mnt
[root@Suns ~]# cat show.sh
#!/bin/bash
cp $1 $2
ansible 與 saltstack 自動化運維工具

熟悉主流的高可用架構(nginx、Haproxy、LVS)
nginx和apache的區別??
1、二者最核心的區別在于apache是同步多行程模型,一個連接對應一個行程;nginx是異步的,多個連接(萬級別)可以對應一個行程 ,nginx處理靜態檔案好,耗費記憶體少.但無疑apache仍然是目前的主流,有很多豐富的特性.所以還需要搭配著來.當然如果能確定nginx就適合需求,那么使用nginx會是更經濟的方式,
2、nginx的負載能力比apache高很多,最新的服務器也改用nginx了,而且nginx改完配置能-t測驗一下配置有沒 有問題,
3、apache重啟的時候發現配置出錯了,會很崩潰,改的時候都會非常小心翼翼現在看有好多集群站,前端nginx抗并發,后端apache集群, 配合的也不錯,
4、nginx處理動態請求是雞肋,一般動態請求要apache去做,nginx只適合靜態和反向,
5、從經驗來看,nginx是很不錯的前端服務器,負載性能很好,nginx,用webbench模擬10000個靜態檔案請求毫不吃力, apache對php等語言的支持很好,此外apache有強大的支持網路,發展時間相對nginx更久,bug少但是apache有先天不支持多核心處理負載雞肋的缺點,建議使用nginx做前端,后端用apache,大型網站建議用nginx自代的集群功能,
6、大部分情況下nginx都優于APACHE,比如說靜態檔案處理、PHP-CGI的支持、反向代理功能、前端 Cache、維持連接等等,在Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現Apache行程數 飆升,從而拒絕服務的現象,
7、Apache在處理動態有優勢,Nginx并發性比較好,CPU記憶體占用低,如果rewrite頻繁,那還是Apache吧!
8、一般來說,需要性能的web 服務,用nginx ,如果不需要性能只求穩定,那就apache 吧,
Nginx、HAProxy、LVS三者的優缺點**
nginx 的優點:
- 作業在網路7層之上,可針對http應用做一些分流的策略,如針對域名、目錄結構,它的正規規則比HAproxy 更為強大和靈活,所以目前為止廣泛流行,
- nginx 對網路穩定性的依賴小,理論上能ping 通就能夠進行負載均衡
- nginx安裝與配置比較簡單,測驗也比較方便,基本能把錯誤日志列印出來
- 可以承擔高負載壓力且穩定,硬體條件不差的情況也能支撐幾萬的并發量,負載度比LVS小,
- nginx 可以通過埠檢測到服務器內部的故障,如根據服務器處理網也回傳的狀態碼、超時等,并會把回傳的錯誤請求重新提交到另一個節點,
- 不僅僅是優秀的負載均衡器/反向代理軟體,同時也是強大的WEB應用服務器,LNMP也是近些年非常流行的web架構,在高可用環境中穩定性也很好,
nginx 的缺點: - 適應范圍較小,僅能支持http、https、Ema協議
- 對后端服務器的健康檢查,只支持通過埠檢測,不支持url檢測,比如用戶正在上傳一個檔案,而處理該上傳的節點剛好在上傳程序中出現故障,nginx會上傳切到另外一臺服務器進行重新處理,而LVS就直接斷掉了,如果是上傳一個很大的檔案或者很重要的檔案或者重要的檔案的話,用戶可能會因此而不滿,
LVS的優點:
- 抗負載能力強,是作業在網路4層之上僅做分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟體中性能最強的,對記憶體和cpu資源消耗比較低,
- 配置性比較低,這是一個優點也是一個缺點,因為沒有太多可以配置的能洗,所以并不需要太對的接觸,大大的減少了人為配置出錯的概率,
- 作業穩定,因為本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在專案實施中用的最多的還是LVS/DR+keepalived.
- 無流量,LVS只分發請求,而流量并不從它本身出去,這點保證了均衡器IO性能不會收到大流量的影響
- 應用范圍廣,因為LVS作業在4層,所以它幾乎可以對所有應用做負載均衡,包括HTTP、資料庫等
LVS缺點:
1、軟體本身不支持正則運算式處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在,
2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了,特別后面有Windows Server的機器的話,如果實施及配置還有維護程序就比較復雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了,
HAProxy優點:
- HAproxy 是支持虛擬主機的,可以作業在4.7層(支持多網段)
- Haproy 的優點可以補充nginx的一些缺點,比如支持session的保持,cookie的引導,同時支持通過獲取指定的url來檢測后端服務器的狀態
- Haproxy跟lvs類似,本身就是一種負載均衡的軟體,單純從效率上將會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的,
- HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡,
- HAProxy負載均衡策略非常多,HAProxy的負載均衡演算法現在具體有如下8種
輪詢,最小連接數 根據請求源IP進行哈希 權重 uri
/etc/passwd里的內容 :每段代表的意思
用戶名 密碼 用戶id 用戶組id 用戶說明 用戶家目錄 用戶的默認腳本
**shell寫過什么腳本 實作什么功能 **
*iostat
用于輸出cpu和磁盤的I/O相關的統計資訊,
[root@Suns ~]# iostat
Linux 3.10.0-957.21.3.el7.x86_64 (Suns) 03/31/2021 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.35 0.00 0.35 0.00 0.00 99.29
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.37 0.37 4.03 369195 4030672
第一行:系統版本、主機名 當前時間
avg-cpu 總體的cpu使用情況統計資訊,對于多核cpu,這里指得是cpu得平均值
Device 各磁盤設備的IO統計資訊,
也可以指定采樣時間間隔與采樣次數
vmstat
可以展現給定時間間隔的服務器的狀態,包括服務器的CPU使用率,記憶體使用,虛擬記憶體交換情況,io讀寫情況,
[root@Suns ~]# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 305824 179676 1106552 0 0 0 2 2 5 0 0 99 0 0
表示每兩秒采集一次服務器狀態,1表示只采集1次
行程 記憶體 swap IO system cpu
linux系統相關
crontab 中 * * * * * 代表什么意思
前面五個*號代表五個數字,數字的取值范圍和含義如下:
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
top
第一行:當前時間、系統啟動時間、當前系統登錄用戶數目、平均負載(1分鐘,10分鐘,15分鐘),
第二行:行程總數、運行行程數、休眠行程數、終止行程數、僵死行程數,
第三行:%us用戶空間占用cpu百分比;
%sy內核空間占用cpu百分比;
%ni用戶行程空間內改變過優先級的行程占用cpu百分比;
%id空閑cpu百分比,反映一個系統cpu的閑忙程度,越大越空閑;
%wa等待輸入輸出(I/O)的cpu百分比;
%hi指的是cpu處理硬體中斷的時間;
%si值的是cpu處理軟體中斷的時間;
%st用于有虛擬cpu的情況,用來指示被虛擬機偷掉的cpu時間,
第四行:total總的物理記憶體;used使用物理記憶體大小;free空閑物理記憶體;buffers用于內核快取的記憶體大小
第五行:交換磁區
buffers于cached區別:
buffers指的是塊設備的讀寫緩沖區,cached指的是檔案系統本身的頁面快取,他們都是Linux系統底層的機制,為了加速對磁盤的訪問,
top - 14:34:13 up 11 days, 14:01, 2 users, load average: 0.01, 0.02, 0.05
Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1776404 total, 305400 free, 184680 used, 1286324 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1388744 avail Mem
netstat
這個命令用來查看當前建立的網路連接
Netstat 是一款命令列工具,可用于列出系統上所有的網路套接字連接情況,包括 tcp, udp 以及 unix 套接字,另外它還能列出處于監聽狀態(即等待接入請求)的套接字,如果你想確認系統上的 Web 服務有沒有起來,你可以查看80埠有沒有打開,以上功能使 netstat 成為網管和系統管理員的必備利器,
buffer(緩沖)是為了提高記憶體和硬碟(或其他I/O設備)之間的資料交換的速度而設計的,
cache(快取)從CPU角度考慮,是為了提高cpu和記憶體之間的資料交換速度而設計的 從記憶體讀取與磁盤讀取角度考慮,cache可以理解為作業系統為了更高的讀取效率,更多的使用記憶體來快取可能被再次訪問的資料,
描述Linux系統從開機到登陸界面的啟動程序
⑴開機BIOS自檢,加載硬碟,
⑵讀取MBR,MBR引導,
⑶grub引導選單(Boot Loader),
⑷加載內核kernel,
⑸啟動init行程,依據inittab檔案設定運行級別
⑹init行程,執行rc.sysinit檔案,
⑺啟動內核模塊,執行不同級別的腳本程式,
⑻執行/etc/rc.d/rc.local
⑼啟動mingetty,進入系統登陸界面,
行程和執行緒的區別
1、行程是資源分配的最小單位,執行緒是程式執行的最小單位(資源調度的最小單位)
2、行程有自己的獨立地址空間,每啟動一個行程,系統就會為它分配地址空間,建立資料表來維護代碼段、堆疊段和資料段,這種操作非常昂貴,
而執行緒是共享行程中的資料的,使用相同的地址空間,因此CPU切換一個執行緒的花費遠比行程要小很多,同時創建一個執行緒的開銷也比行程要小很多,
Docker
在容器的基礎上,進行了進一步的封裝,從檔案系統、網路互聯到行程隔離等等,極大的簡化了容器的創建和維護,使得 Docker 技術比虛擬機技術更為輕便、快捷,
Docker 和傳統虛擬化方式的不同之處,傳統虛擬機技術是虛擬出一套硬體后,在其上運行一個完整作業系統,在該系統上再運行所需應用行程;而容器內的應用行程直接運行于宿主的內核,容器內沒有自己的內核,而且也沒有進行硬體虛擬,因此容器要比傳統虛擬機更為輕便,
DDoS攻擊
就是分布式拒絕服務攻擊,指借助于客戶/服務器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,可使目標服務器進入癱瘓狀態,
防御:
1、盡可能對系統加載最新補丁,并采取有效的合規性配置,降低漏洞利用風險;
2、采取合適的安全域劃分,配置防火墻、入侵檢測和防范系統,級訓攻擊,
3、采用分布式組網、負載均衡、提升系統容量等可靠性措施,增強總體服務能力,
RAID
可以充分發 揮出多塊硬碟的優勢,可以提升硬碟速度,增大容量,提供容錯功能夠確保資料安全性,易于管理的優點,在任何一塊硬碟出現問題的情況下都可以繼續作業,不會 受到損壞硬碟的影響,
以下為RAID 1的特點:
最少需要2塊磁盤
提供資料塊冗余
性能好
RAID 5特點:
最少3塊磁盤
資料條帶形式分布
以奇偶校驗作冗余
適合多讀少寫的情景,是性能與資料冗余最佳的折中方案
RAID 10(又叫RAID 1+0)特點:
最少需要4塊磁盤
先按RAID 0分成兩組,再分別對兩組按RAID 1方式鏡像
兼顧冗余(提供鏡像存盤)和性能(資料條帶形分布)
在實際應用中較為常用
運維
是指大型組織已經建立好的網路軟硬體的維護,就是要保證業務的上線與運作的正常,在他運轉的程序中,對他進行維護,他集合了網路、系統、資料庫、開發、安全、監控于一身的技術運維又包括很多種,
計算機網路相關的知識
計算機網路相關面試知識
closedwait第二次揮手服務端發送ACK確認請求時的狀態
timewait第四次揮手時客戶端的狀態
tcp和udp之間的區別?
TCP和UDP的區別
1、TCP與UDP區別總結:
1、 TCP面向連接 (如打電話要先撥號建立連接); UDP是無連接 的,即發送資料之前不需要建立連接
2、TCP提供可靠的服務,也就是說,通過TCP連接傳送的資料,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付,Tcp通過校驗和,重傳控制,序號標識,滑動視窗、確認應答實作可靠傳輸,如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制,
3、UDP具有較好的實時性,作業效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信,
4.每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的互動通信
5、TCP對系統資源要求較多,UDP對系統資源要求較少,

ping 用到的是ICMP協議
- ping 127.0.0.1
127.0.0.1是本地回圈地址,如果本地址無法Ping通,則表明本地機TCP/IP協議不能正常作業, - Ping本機的IP地址
用IPConfig查看本機IP,然后Ping該IP,通則表明網路配接器(網卡或MODEM)作業正常,不通則是網路配接器出現故障, - Ping同網段計算機的IP
Ping一臺同網段計算機的IP,不通則表明網路線路出現故障;若網路中還包含有路由器,則應先Ping路由器在本網段埠的IP,不通則此段線路有問題;通則再PING路由器在目標計算機所在網段的埠IP,不通則是路由出現故障;通則再Ping目的機IP地址, - ping 網址
若要檢測一個帶DNS服務的網路,在上一步Ping通了目標計算機的IP地址后,仍無法連接到該機,則可PING該機的網路名,比如 Ping sina.com.cn,正常情況下會出現該網址所指向的IP,這表明本機的DNS設定正確而且DNS服務器作業正常,反之就可能是其中之一出 現了故障;同樣也可通過Ping計算機名檢測WINS決議的故障(WINS是將計算機名決議到IP地址的服務),
HTTP協議的認識
HTTP協議就是客戶端和服務端之間資料傳輸的格式規范,格式簡稱為“超文本傳輸協議”,
基于TCP/IP
(1)HTTP是一個屬于應用層的面向物件的協議
(2)HTTP協議作業于客戶端-服務端架構上,
MTV 模式
M 代表模型(Model): 負責業務物件和資料庫的關系映射( ORM ),
T 代表模板 (Template):負責如何把頁面展示給用戶( html ),
V 代表視圖(View): 負責業務邏輯,并在適當時候呼叫Model和Template,
簡述TCP三次握手的程序?
答:在TCP/IP協議中,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狀態,完成三次握手,完成三次握手,客戶端與服務器開始傳送資料簡版:首先A向B發SYN(同步請求),然后B回復SYN+ACK(同步請求應答),最后A回復ACK確認,這樣TCP的一次連接(三次握手)的程序就建立了,
為什么連接的時候是三次握手,關閉的時候卻是四次握手?
這是因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文,其中ACK報文是用來應答的,SYN報文是用來同步的,
但是關閉連接時,當Client端發送FIN報文僅僅表示它不再發送資料了但是還能接收資料,Server端收到FIN報文時,很可能并不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,“你發的FIN報文我收到了”,只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送,故需要四步握手,

我自己的理解,tcp/ip協議是傳輸層面向連接的安全可靠的傳輸協議,三次握手的話就是為了能夠建立一個安全可靠的連接,第一次握手是由客戶端發起的,客戶端向服務端發送一個報文,在報文里面SYN位 置1,當服務端收到報文之后就知道客戶端要向我發起一個新的連接,也是服務端就向客戶端發送一個確認訊息報文,ACK置1,以上兩次握手之后對于客戶端而言,知道了自己發送和接收的能力,但是服務端只知道了自己的接收能力,卻不知道自己的發送能力,進而進行第三次握手,就是客戶端回復一個ACK置1的訊息給服務端,到這里三次握手結束,不管客戶端還是服務端都彼此知道了自己的接收和發送能力是完好的,這個連接就可以被安全建立了,
四次揮手的話就是,客戶端首先發送一個FIN報文置1,當服務端收到報文之后,我就知道客戶端想要斷開連接,但是此時服務端不一定準備好了,此時服務端可能還有未發送完的訊息,所以此時對于服務端而言,只能進行訊息確認,就是說我已經知道你要和我斷開連接了,我這里還沒有準備好,你需要等我一下,于是發送完訊息確認報文之后,然后待會會繼續發送一個斷開連接的報文,FIN位置1,之后客戶端發送給服務端一個確認報文,ACK置1,四次之后服務端和客戶端都做好斷開的準備,于是就斷開連接了,
三次握手,四次揮手中間都有那些狀態?
**CLOSED:**起始點,不在連接狀態,可以主動打開連接,或者等待對端的連接,
–>收到“被動打開”報文,進入LISTEN狀態,
–>收到“主動打開”報文,進入SYN_SENT狀態,
–>收到任何報文段,發送RST報文段,
–>收到其它任何報文段,發出差錯報文,
**LISTEN:**被動打開,TCP正在等待對端的連接請求,
–>收到“發送資料”報文,發送SYN報文段,進入SYN_SENT狀態,
–>收到任何SYN報文段,發送SYN+ACK報文段,進入SYN_RECEIVED狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**SYN_SENT:**主動打開,發送完一個連接請求后等待回復,
–>超時,進入CLOSED狀態,
–>收到SYN報文段,發送SYN+ACK報文段,進入SYN_RECEIVED狀態,
–>收到SYN+ACK報文段,發送ACK報文段,進入ESTABLISHED狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**SYN_RECEIVED:**被動打開,接受連接請求以后進行確認同時也向對端發送連接請求發送,等待對方的回復,
–>超時,發送RST報文段,進入CLOSED狀態,
–>收到ACK報文段,進入ESTABLISHED狀態,
–>收到"關閉"報文,發送FIN報文段,進入FIN_WAIT_1狀態,
–>收到RST報文段,進入LISTEN狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**ESTABLISHED:**三次握手完畢,TCP連接建立完成,可以傳輸資料,
–>收到FIN報文段,進入CLOSED_WAIT狀態,
–>收到“關閉”報文,發送FIN報文段,進入FIN_WAIT_1狀態,
–>收到RST或SYN報文段,發出差錯報文,
–>收到資料或ACK報文段,呼叫輸入模塊,
–>收到“發送”報文,呼叫輸出模塊,
**FIN_WAIT_1:**四次揮手開始,主動關閉,發送斷開連接請求,等待對端確認,
–>收到FIN報文段,發送ACK報文段,進入CLOSING狀態(同時關閉),
–>收到FIN+ACK報文段,發送ACK報文段,進入FIN_WAIT狀態(?),
–>收到ACK報文段,進入FIN_WAIT_2狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**FIN_WAIT_2:**接收對方確認,但未接受對方的斷開連接請求,
–>收到FIN報文段,發送ACK報文段,進入TIME_WAIT狀態,
**CLOSING:**主動關閉的一方本希望收到對方的ACK卻收到了對方的斷開連接請求,
–>收到ACK報文段,進入TIME_WAIT狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**TIME_WAIT:**對方確認后發起斷開連接請求,需要等待2MSL保證正常關閉,
–>超時,進入CLOSED狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**CLOSE_WAIT:**被動關閉,確認對端的連接終止請求,但是未向對端發送連接終止請求(可能資料沒傳完),
–>收到"關閉"報文,發送FIN報文段,進入LAST_ACK狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**LAST_ACK:**資料傳完,向對端發起斷開連接請求后等待確認,
–>收到ACK報文段,進入CLOSED狀態,
–>收到任何其它報文段或者報文,發送差錯報文,
**CLOSED:**終點,不在連接狀態,可以主動打開連接,或者等待對端的連接,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272858.html
標籤:其他
