技術面試必備基礎知識_第1頁
技術面試必備基礎知識_第2頁
技術面試必備基礎知識_第3頁
技術面試必備基礎知識_第4頁
技術面試必備基礎知識_第5頁
已閱讀5頁,還剩735頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文來自CyC2018/CS-Notes,版本請?zhí)朇yC2018之后回復“”獲取1帶通CSMA/CD協(xié)議PPP協(xié)議虛擬局域IPIP地址解析協(xié)議網(wǎng)際控制報文協(xié)議ICMP1.2.虛擬網(wǎng)絡地址轉換路由器的結內(nèi)部網(wǎng)關協(xié)議內(nèi)部網(wǎng)關協(xié)議外部網(wǎng)關協(xié)議傳輸UDPTCPUDP首部格式TCP首部格式TCP的三次握手TCP的四次揮手TCP可靠傳輸TCP滑動窗口TCP流量控制TCP擁塞控制WebDHCPARPMACDNS二、HTTP方法三、HTTP1XX信2XX成4XX5XX服務器錯誤四、HTTP首部與SessionCache-HTTPS八、HTTP/1.1新特性參考1.3一、I/O模阻塞式I/OI/O復用信號驅動異步I/O模型比較二、I/O復用selectpoll應用epoll應用參考第2章操作系2.2VIM文件 的權參考3據(jù)原子性一致性性持久性三級協(xié)MySQL四、級 提交讀(READCOMMITTED)可重復讀(REPEATABLEREAD)Undo日志RecordLocksGapLocks第一范式第二范式第三范式八、ER3.2節(jié)3.3Leetcode-Database595.BigCountriesSQLSchemaSQLSchemaSQLSchema596.ClassesMoreThan5StudentsSQLSchema182.DuplicatesSQLSchema196.DeleteDuplicatesSQLSchemabineTwoTablesSQLSchema181.EmployeesEarningMoreThanTheirManagersSQLSchemaSQLSchema184.DepartmentHighestSalarySQLSchemaSecondHighestSalarySQLSchemaNthHighestSalarySQLSchemaRankScoresSQLSchema180.ConsecutiveNumbersSQLSchemaSQL3.4B+Tree與樹的比MySQLB+Tree三、引ShardingID唯一六3.5五、Redis與RDBAOF持久化十一44.1Java基礎二、StringPoolnewString(abc?oat與double五、Object通用方法Java各版本的新特性Java與C++的區(qū)別JREorJDK參考4.2Java容器put操鏈表轉與HashTablesize結LRU緩參考4.3Java新建限期等待(Timed實現(xiàn)Runnable接Callable接口繼承Thread類VSExecutor的中斷操作wait()notify()notifyAll()await()signal()signalAll()七、J.U.C-八、J.U.C-其它組十、Java內(nèi)存模型volatile變量可重入代碼(ReentrantCode)4.4JavaJava虛擬機棧堆二、收強軟弱虛收集算標記-標記-SerialParallelScavengeSerialOld收集ParallelOldCMSG1MinorGCFullGC對象優(yōu)先在EdenFullGC調(diào)用JDK1.7ConcurrentMode主動雙親委派模4.5Java編碼String的編碼方文件NIO實例將通道到選擇器循環(huán)套接NIO實例八、參考第5章系統(tǒng)設第5.2節(jié)分布式數(shù)據(jù)庫的唯一索Redis的SETNX指令ZookeeperZookeeper抽象模器PrepareLearn階段Candidate的競選多個Candidate競選5.3集輪詢(WeightedRound最少連接(least最少連接(WeightedLeast隨機算法源地址哈希法(IPHTTPDNS解反向服務二、集群下的SessionStickySessionSessionReplicationSessionServer第5.4節(jié) 原設 為二、跨站請原檢查Referer首部字添加校驗一、緩存二、反Java內(nèi)部的緩CPU多級緩存參考5.6息隊列二、使用場參考第6章面向對單例ClassDiagram簡單工廠(SimpleFactory)ClassDiagram工廠方法(FactoryMethod)ClassDiagram ClassDiagramClassDiagram原型模式ClassDiagramClassDiagram命令ClassDiagram解釋器ClassDiagram迭代器 ClassDiagram中介者ClassDiagram備忘錄ClassDiagram觀察者ClassDiagram狀態(tài)ClassDiagram策略ClassDiagram模板方法(TemteMethod)ClassDiagram者ClassDiagram空對象ClassDiagram適配器ClassDiagram橋接ClassDiagram組合ClassDiagram裝飾ClassDiagram外觀ClassDiagramClassDiagram(ClassDiagram多實現(xiàn)關系(Realization)聚合關系(Aggregation)組合關系(Composition)關聯(lián)關系(Association)依賴關系(Dependency)迪法參考77.1O?er解題思打印從1到最大的n位數(shù)O(1)時間內(nèi)刪除鏈表節(jié)點解題思K個結點解題min函數(shù)的棧大小為K1n整數(shù)中1出現(xiàn)的K個結點56.數(shù)組中只出現(xiàn)一次的數(shù)字S的兩個數(shù)字S的連續(xù)正數(shù)序列解題思動態(tài)規(guī)劃+參考7.2Leetcode題解有序數(shù)組的TwoKth出現(xiàn)頻率最多的k不的區(qū)間個的最大收益有序數(shù)組的Single

能到達的太平洋和的區(qū)IP1-9N皇

矩陣01需要費用粘貼71626統(tǒng)計階乘尾部有多少個數(shù)組中出現(xiàn)次數(shù)多于n/23n刪除鏈表的倒數(shù)第n樹

尋找二叉查找樹的第k實現(xiàn)一個實現(xiàn)一個Trie棧和10把數(shù)組中的0找出數(shù)組中最長的連續(xù)有序矩陣的Kth一個數(shù)組元素在[1,n]找出數(shù)組中重復的數(shù),數(shù)組值在[1,n]圖判斷一個數(shù)是不是2的n次判斷一個數(shù)是不是4的n次判斷一個數(shù)的位級表示是否不會出現(xiàn)連續(xù)的0和統(tǒng)計從0~n每個數(shù)的二進制表示中1的個7.3倍率堆Java并查QuickFindQuickUnionQuickUnion路徑壓縮的Quick

符號2-3編11.1算機網(wǎng)網(wǎng)絡把主機連接起來,而互聯(lián)網(wǎng)是把多種不同的網(wǎng)絡連接起來,因此互聯(lián)網(wǎng)是網(wǎng)絡的網(wǎng)互聯(lián)網(wǎng)服務提供商ISP可以從互聯(lián)理機構獲得許多IP地址,同時擁有通信線路以及路由器等聯(lián)網(wǎng)設備,個人或機構向ISP繳納一定的費用就可以接入互聯(lián)網(wǎng)。目前的互聯(lián)網(wǎng)是一種多層次ISP結構,ISP根據(jù)覆蓋面積的大小分為第一層ISP、區(qū)域ISP和接入ISP。互聯(lián)網(wǎng)交換點IXP允許兩個ISP直接相連而不用經(jīng)過第三個ISP??蛻?服務器(C/S):客戶是服務的請求方,服務器是服務的提供對等(P2P):不區(qū)分客戶和服務器電路交電路交換用于 通信系統(tǒng),兩個用戶要通信之前需要建立一條的物理鏈路,并且在整個通信過程中始終占用該鏈路。由于通信的過程中不可能一直在使用傳輸線路,因此電路交換對線路的利用率很低,往往不到10%。分組交每個分組都有首部和尾部,包含了源地址和目的地址等控制信息,在同一個傳輸線同時傳輸多個分組互相不會影響,因此在同一條傳輸線允許同時傳輸多個分組,也就是說分組交換不需要占用傳輸線路。在一個郵局通信系統(tǒng)中,郵局收到一份郵件之后,先下來,然后把相同目的地的郵件一起轉發(fā)到下一個目的地,這個過程就是轉發(fā)過程,分組交換也使用了轉發(fā)過程??倳r延=排隊時延+處理時延+傳輸時延+時排隊時分組在路由器的輸入隊列和輸出隊列中排隊等待的時間,取決于網(wǎng)絡當前的通信處理時主機或路由器收到分組時進行處理所需要的時間,例如分析首部、從分組中提取數(shù)據(jù)、進行差錯檢驗或查找適當?shù)穆酚傻?。傳輸時主機或路由器傳輸數(shù)據(jù)幀所需要的時其中l(wèi)表示數(shù)據(jù)幀的長度,v表示傳輸速率時電磁波在信道中所需要花費的時間,電磁波的速度接近光速其中l(wèi)表示信道長度,v表示電磁波在信道上的速度五層協(xié)應用層:為特定應用程序提供數(shù)據(jù)傳輸服務,例如HTTP、DNS等協(xié)議。數(shù)據(jù)單位為報傳輸層:為進程提供通用數(shù)據(jù)傳輸服務。由于應用層協(xié)議很多,定義通用的傳輸層協(xié)議就可以支持不斷增多的應用層協(xié)議。層包括兩種協(xié)議:傳輸控制協(xié)議TCP,提供面向連接、可靠的數(shù)據(jù)傳輸服務,數(shù)據(jù)單位為報文段;用戶數(shù)據(jù)報協(xié)議UDP,提供無連接、盡最大努力的數(shù)據(jù)傳輸服務,數(shù)據(jù)單位為用戶數(shù)據(jù)報。TCP主要提供完整性服務,UDP主要提供及時性服務。網(wǎng)絡層:為主機提供數(shù)據(jù)傳輸服務。而傳輸層協(xié)議是為主機中的進程提供數(shù)據(jù)傳輸服務。網(wǎng)絡層把傳輸層傳遞數(shù)據(jù)鏈路層:網(wǎng)絡層針對的還是主機之間的數(shù)據(jù)傳輸服務,而主機之間可以有很多鏈路,鏈路層協(xié)議就是為同物理層:考慮的是怎樣在傳輸上傳輸數(shù)據(jù)比特流,而不是指具體的傳輸。物理層的作用是盡可能其中表示層和會話層用途如表示層:數(shù)據(jù)壓縮、加密以及數(shù)據(jù)描述,這使得應用程序不必關心在各臺主機中數(shù)據(jù)內(nèi)部格式不同的問題會話層:建立及管理會話五層協(xié)議沒有表示層和會話層,而是將這些功能留給應用程序開發(fā)者處它只有四層,相當于五層協(xié)議中數(shù)據(jù)鏈路層和物理層合并為網(wǎng)絡接口TCP/IP體系結構不嚴格遵循OSI分層概念,應用層可能會直接使用IP層或者網(wǎng)絡接口層數(shù)據(jù)在各層之間的傳遞在向下的過程中,需要添加下層協(xié)議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾路由器只有下面三層協(xié)議,因為路由器位于網(wǎng)絡中,不需要為進程或者應用程序提供服務,因此也就不需要傳輸層和應用層。CyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。全雙工通信:雙向同時模擬信號是連續(xù)的信號,數(shù)字信號是離散的信號。帶通調(diào)制把數(shù)字信號轉換為模擬信CyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。封裝成將網(wǎng)絡層傳下來的分組添加首部和尾部,用于標記幀的開始和結透明傳透明表示一個實際存在的事物看起來好像不存在一幀使用首部和尾部進行定界,如果幀的數(shù)據(jù)部分含有和首部尾部相同的內(nèi)容,那么幀的開始和結束位置就會被錯誤的判定。需要在數(shù)據(jù)部分出現(xiàn)首部尾部相同的內(nèi)容前面插入轉義字符。如果數(shù)據(jù)部分出現(xiàn)轉義字符,那么就在轉義字符前面再加個轉義字符。在接收端進行處理之后可以還原出原始數(shù)據(jù)。這個過程透明傳輸?shù)膬?nèi)容是轉義字符,用戶察覺不到轉義字符的存在。差錯檢目前數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(CRC)來檢查比特差錯廣播信一對多通信,一個節(jié)點發(fā)送的數(shù)據(jù)能夠被廣播信道上所有的節(jié)點接收所有的節(jié)點都在同一個廣播信道上發(fā)送數(shù)據(jù),因此需要有專門的控制方法進行協(xié)調(diào),避免發(fā)生(也叫碰主要有兩種控制方法進行協(xié)調(diào),一個是使用信道復用技術,一是使用CSMA/CD協(xié)議一對一因為不會發(fā)生碰撞,因此也比較簡單,使用PPP協(xié)議進行控制頻分復頻分復用的所有主機在相同的時間占用不同的頻率帶寬資時分復時分復用的所有主機在不同的時間占用相同的頻率帶寬資使用頻分復用和時分復用進行通信,在通信的過程中主機會一直占用一部分信道資源。但是由于計算機數(shù)據(jù)的突發(fā)性質(zhì),通信過程沒必要一直占用信道資源而不讓出給其它用戶使用,因此這兩種方式對信道的利用率都不高。統(tǒng)計時分復是對時分復用的一種改進,不固定每個用戶在時分復用幀中的位置,只要有數(shù)據(jù)就集中起來組成統(tǒng)計時分復用幀然后發(fā)送。波分復光的頻分復用。由于光的頻率很高,因此習慣上用波長而不是頻率來表示所使用的光載碼分復為每個用戶分配mbit的碼片,并且所有的碼片正交,對于任意兩個碼片和為了討論方便,取m=8,設碼 。在擁有該碼片的用戶發(fā)送比特1時就發(fā)送該碼片,發(fā)送比特0時就發(fā)送該碼片的反 在計算時 記作(-1-1-1+1+1-1+1+1),可以得其中為的反碼利用上面的式子我們知道,當接收端使用對接收到的數(shù)據(jù)進行內(nèi)積運算時,結果為0的是其它用戶發(fā)送的數(shù)據(jù),結果為1的是用戶發(fā)送的比特1,結果為-的是用戶發(fā)送的比特0碼分復用需要發(fā)送的數(shù)據(jù)量為原先的m倍CSMA/CDCSMA/CD表示載波多點接入/碰撞檢測多點接入:說明這是總線型網(wǎng)絡,許多主機以多點的方式連接到總線載波:每個主機都必須不停地信道。在發(fā)送前,如果到信道正在使用,就必須等待碰撞檢測:在發(fā)送中,如果到信道已有其它主機正在發(fā)送數(shù)據(jù),就表示發(fā)生了碰撞。雖然每個主機在發(fā)送記端到端的時延為τ,最先發(fā)送的站點最多經(jīng)過2τ就可以知道是否發(fā)生了碰撞,稱2τ為爭用期。只有經(jīng)過爭當發(fā)生碰撞時,站點要停止發(fā)送,等待一段時間再發(fā)送。這個時間采用截斷二進制指數(shù)退避算法來確定。從離散的整數(shù)集合{0,1,..,(2k-1)}中隨機取出一個數(shù),記作r,然后取r倍的爭用期作為重傳等待時間。PPP互聯(lián)網(wǎng)用戶通常需要連接到某個ISP之后才能接入到互聯(lián)網(wǎng),PPP協(xié)議是用戶計算機和ISP進行通信時所使用的數(shù)據(jù)PPP的幀格F字段為幀的定界AC字段暫時沒有意信息部分的長度不超過1500MACMAC地址是鏈路層地址,長度為6字節(jié)(48位),用于唯一標識網(wǎng)絡適配器(網(wǎng)卡)一臺主機擁有多少個網(wǎng)絡適配器就有多少個MAC地址。例如筆記本電腦普遍存在無線網(wǎng)絡適配器和有線網(wǎng)絡適配器,因此就有兩個MAC地址。局域網(wǎng)是一種典型的廣播信道,主要特點是網(wǎng)絡為一個單位所擁有,且地理范圍和站點數(shù)目均有限。主要有以太網(wǎng)、令牌環(huán)網(wǎng)、FDDI和TM等局域網(wǎng)技術,目前以太網(wǎng)占領著有線局域網(wǎng)市場??梢园凑站W(wǎng)絡拓撲結構對局域網(wǎng)進行分以太網(wǎng)是一種星型拓撲結構局域早期使用集線器進行連接,集線器是一種物理層設備,作用于比特而不是幀,當一個比特到達接口時,集線器重新生成這個比特,并將其能量強度放大,從而擴大網(wǎng)絡的傳輸距離,之后再將這個比特發(fā)送到其它所有接口。如果集線器同時收到兩個不同接口的幀,那么就發(fā)生了碰撞。目前以太網(wǎng)使用交換機替代了集線器,交換機是一種鏈路層設備,它不會發(fā)生碰撞,能根據(jù)MAC地址進行轉以太網(wǎng)幀格類型:標記上層使用的協(xié)數(shù)據(jù):長度在46-1500之間,如果太小則需要填充FCS:幀檢驗序列,使用的是CRC檢驗方法交換機具有習能力,學習的是交換表的內(nèi)容,交換表中著MAC地址到接口的映射正是由于這種習能力,因此交換機是一種即插即用設備,不需要網(wǎng)絡管理員手動配置交換表內(nèi)容下圖中,交換機有4個接口,主機A向主機B發(fā)送數(shù)據(jù)幀時,交換機把主機A到接口1的映射寫入交換表中。為了發(fā)送數(shù)據(jù)幀到B,先查交換表,此時沒有主機B的表項,那么主機A就發(fā)送廣播幀,主機C和主機D會丟棄該幀,主機B回應該幀向主機A發(fā)送數(shù)據(jù)包時,交換機查找交換表得到主機A映射的接口為1,就發(fā)送數(shù)據(jù)幀到接口1,同時交換機添加主機B到接口2的映射。虛擬局域網(wǎng)可以建立與物理位置無關的邏輯組,只有在同一個虛擬局域網(wǎng)中的成員才會收到鏈路層廣播例如下圖中(A1,A2,A3,A4)屬于一個虛擬局域網(wǎng),A1發(fā)送的廣播會被A2、A3、A4收到,而其它站點收不到使用VLAN干線連接來建立虛擬局域網(wǎng),每臺交換機上的一個特殊接口被設置為干線接口,以互連VLAN交換機。IEEE定義了一種擴展的以太網(wǎng)幀格式802.1Q,它在標準以太網(wǎng)幀上加進了4字節(jié)首部VLAN,用于表示該幀屬CyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。因為網(wǎng)絡層是整個互聯(lián)網(wǎng)的,因此應當讓網(wǎng)絡層盡可能簡單。網(wǎng)絡層向上只提供簡單靈活的、無連接的、盡最大努力交互的數(shù)據(jù)報服務。使用IP協(xié)議,可以把異構的物理網(wǎng)絡連接起來,使得在網(wǎng)絡層看起來好像是一個統(tǒng)一的網(wǎng)與IP協(xié)議配套使用的還有三個協(xié)地址解析協(xié)議ARP(AddressResolution網(wǎng)際控制報文協(xié)議ICMP(InternetControlMessageProtocol)網(wǎng)際組管理IGMP(InternetGroupManagementProtocol)IP版本:有4(IPv4)和6(IPv6)兩個首部長度:占4位,因此最大值為15。值為1表示的是1個32位字的長度,也就是4字節(jié)。因為固定部分度為20字節(jié),因此該值最小為5。如果可選字段的長度不是4字節(jié)的整數(shù)倍,就用尾部的填充部分來填充區(qū)分服務:用來獲得更好的服務,一般情況下不使用總長度:包括首部長度和數(shù)據(jù)部分長生存時間:TTL,它的存在是為了防止無法交付的數(shù)據(jù)報在互聯(lián)網(wǎng)中不斷兜圈子。以路由器跳數(shù)為單位,當為0時就丟棄數(shù)據(jù)報協(xié)議:攜帶的數(shù)據(jù)應該上交給哪個協(xié)議進行處理,例如ICMP、TCP、UDP等首部檢驗和:因為數(shù)據(jù)報每經(jīng)過一個路由器,都要重新計算檢驗和,因此檢驗和不包含數(shù)據(jù)部分可以減少計算標識:在數(shù)據(jù)報長度過長從而發(fā)生分片的情況下,相同數(shù)據(jù)報的不同分片具有相同的標識符片偏移和標識符一起,用于發(fā)生分片的情況。片偏移的單位為8字節(jié)IPIP地址的編址方式經(jīng)歷了三個歷史階段:子網(wǎng)劃無分分由兩部分組成,網(wǎng)絡號和主機號,其中不同分類具有不同的網(wǎng)絡號長度,并且是固定IP地址網(wǎng)絡號主機號子網(wǎng)劃通過在主機號字段中拿一部分作為子網(wǎng)號,把兩級IP地址劃分為三級IP地址IP地址網(wǎng)絡號子網(wǎng)號主機要使用子網(wǎng),必須配置子網(wǎng)掩碼。一個B類地址的默認子網(wǎng)掩碼為,如果B類地址的子網(wǎng)占兩個比特, ,也就是。注意,外部網(wǎng)絡看不到子網(wǎng)的存無分無分類編址CIDR消除了傳統(tǒng)A類、BC類地址以及劃分子網(wǎng)的概念,使用網(wǎng)絡前綴和主機號來對IP地址進行IP地址網(wǎng)絡前綴號主機號CIDR的記法上采用在IP地址后面加上網(wǎng)絡前綴長度的方法,例如/20表示前20位為網(wǎng)絡前CIDR的地址掩碼可以繼續(xù)稱為子網(wǎng)掩碼,子網(wǎng)掩碼首1長度為網(wǎng)絡前綴的長一個CIDR地址塊中有很多地址,一個CIDR表示的網(wǎng)絡就可以表示原來的很多個網(wǎng)絡,并且在路由表中只需要一個路由就可以代替原來的多個路由,減少了路由表項的數(shù)量。把這種通過使用網(wǎng)絡前綴來減少路由表項的方式稱為路由聚合,也稱為構成超網(wǎng)。在路由表中的項目由“網(wǎng)絡前綴”和“下一跳地址”組成,在查找時可能會得到不止一個匹配結果,應當采用最長前綴匹配來確定應該匹配哪一個。地址解析協(xié)議網(wǎng)絡層實現(xiàn)主機之間的通信,而鏈路層實現(xiàn)具體每段鏈路之間的通信。因此在通信過程中,IP數(shù)據(jù)報的源地址和目的地址始終不變,而MAC地址隨著鏈路的改變而改變。ARP實現(xiàn)由IP地址得到MAC地址每個主機都有一個ARP高速緩存,里面有本局域網(wǎng)上的各主機和路由器的IP地址到MAC地址的映射表如果主機A知道主機BIP地址,但是ARP高速緩存中沒有該IP地址到MAC地址的映射,此時主機A通過廣播的方式發(fā)送ARP請求分組,主機B收到該請求后會發(fā)送ARP響應分組給主機A告知其MAC地址,隨后主機A向其高速緩存中寫入主機B的IP地址到MAC地址的映射。網(wǎng)際控制報文協(xié)議ICMP是為了更有效地轉發(fā)IP數(shù)據(jù)報和提高交付成功的機會。它封裝在IP數(shù)據(jù)報中,但是不屬于協(xié)議ICMP報文分為差錯報告報文和詢問報是ICMP的一個重要應用,主要用來測試兩臺主機之間的連通的原理是通過向目的主機發(fā)送ICMPEcho請求報文,目的主機收到之后會發(fā)送Echo回答報文。會根據(jù)時間和成功響應的次數(shù)估算出數(shù)據(jù)包往返時間以及丟包率Traceroute是ICMP的另一個應用,用來一個分組從源點到終點的路徑Traceroute發(fā)送的IP數(shù)據(jù)報封裝的是無法交付的UDP用戶數(shù)據(jù)報,并由目的主機發(fā)送終點不可達差錯報告報源主機向目的主機發(fā)送一連串的IP數(shù)據(jù)報。第一個數(shù)據(jù)報P1的生存時間TTL設置為1,當P1到達路徑上的第一個路由器R1時,R1收下它并把TTL減1,此時TTL等于0,R1就把P1丟棄,并向源主機發(fā)送一個ICMP源主機接著發(fā)送第二個數(shù)據(jù)報P2TTL設置2。P2先到達R1,R1收下TTL1再轉發(fā)給R2,R2收下后也把TTL減1,由于此時TTL等于0,R2就丟棄P2,并向源主機發(fā)送一個ICMP時間超過差錯報文。不斷執(zhí)行這樣的步驟,直到最后一個數(shù)據(jù)報剛剛到達目的主機,主機不轉發(fā)數(shù)據(jù)報,也不把TTL值減1。但是因為數(shù)據(jù)報封裝的是無法交付的UDP,因此目的主機要向源主機發(fā)送ICMP終點不可達差錯報告報文。之后源主機知道了到達目的主機所經(jīng)過的路由器IP地址以及到達每個路由器的往返時虛擬由于IP地址的緊缺,一個機構能申請到的IP地址數(shù)往往遠小于本機構所擁有的主機數(shù)。并且一個機構并不需要把所有的主機接入到外部的互聯(lián)網(wǎng)中,機構內(nèi)的計算機可以使用僅在本機構有效的IP地址(地址)。有三個地址塊~~~使用公用的互聯(lián)網(wǎng)作為本機構各網(wǎng)之間的通信載體。指機構內(nèi)的主機只與本機構內(nèi)的其它主機通信;下圖中,場所A和B的通信經(jīng)過互聯(lián)網(wǎng),如果場所A的主機X要和另一個場所B的主機Y通信,IP數(shù)據(jù)報的源地址是,目的地址是。數(shù)據(jù)報先發(fā)送到與互聯(lián)網(wǎng)相連的路由器R1,R1對內(nèi)部數(shù)據(jù)進行加密,然后重新加上數(shù)據(jù)報的首部,源地址是路由器R1的全球地址,目的地址是路由器R2的全球地址。路由器R2收到數(shù)據(jù)報后將數(shù)據(jù)部分進行,恢復原來的數(shù)據(jù)報,此時目的地址為,就交付給Y。網(wǎng)絡地址轉換網(wǎng)內(nèi)部的主機使用本地IP地址又想和互聯(lián)網(wǎng)上的主機通信時,可以使用NAT來將本地IP轉換為全球IP在以前,NAT將本地IP和全球IP一一對應,這種方式下?lián)碛衝個全球IP地址的網(wǎng)內(nèi)最多只可以同時有n臺主機接入互聯(lián)網(wǎng)。為了更有效地利用全球IP地址,現(xiàn)在常用的NAT轉換表把傳輸層的端也用上了,使得多個網(wǎng)內(nèi)部的主機共用一個全球IP地址。使用端的NAT也叫做網(wǎng)絡地址與端口轉換NAPT。路由器從功能上可以劃分為:路由選擇和分組轉分組轉發(fā)結構由三個部分組成:交換結構、一組輸入端口和一組輸出端從數(shù)據(jù)報的首部提取目的主機的IP地址D,得到目的網(wǎng)絡地址N。若N就是與此路由器直接相連的某個網(wǎng)絡地址,則進行直接交付;若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給表中所指明的下一跳路由器;若路由表中有到達網(wǎng)絡N的路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;路由選擇協(xié)議都是自適應的,能隨著網(wǎng)絡通信量和拓撲結構的變化而自適應地進行調(diào)互聯(lián)網(wǎng)可以劃分為許多較小的自治系統(tǒng)AS,一個AS可以使用一種和別的AS不同的路由選擇協(xié)議。自治系統(tǒng)內(nèi)部的路由選擇:RIP自治系統(tǒng)間的路由選擇內(nèi)部網(wǎng)關協(xié)議RIP是一種基于距離向量的路由選擇協(xié)議。距離是指跳數(shù),直接相連的路由器跳數(shù)為1。跳數(shù)最多為15,超過15表RIP按固定的時間間隔僅和相鄰路由器交換自己的路由表,經(jīng)過若干次交換之后,所有路由器最終會知道到達本自治距離向量算對地址為X的相鄰路由器發(fā)來的RIP報文,先修改報文中的所有項目,把下一跳字段中的地址改為X,并把所有的距離字段加1;對修改后的RIP報文中的每一個項目,進行以下步若原來的路由表中沒有目的網(wǎng)絡N,則把該項目添加到路由表否則:若下一跳路由器地址是X,則把收到的項目替換原來路由表中的項目;否則:若收到的項目中的距離d小于路由表中的距離,則進行更新(例如原始路由表項為Net2,5,P,新表項為Net2,4,X,則更新);否則什么若3分鐘還沒有收到相鄰路由器的更新路由表,則把該相鄰路由器標為不可達,即把距離置為16RIP協(xié)議實現(xiàn)簡單,開銷小。但是RIP能使用的最大距離為15,限制了網(wǎng)絡的規(guī)模。并且當網(wǎng)絡出現(xiàn)故障時,要經(jīng)內(nèi)部網(wǎng)關協(xié)議開放最短路徑優(yōu)先OSPF,是為了克服RIP的缺點而開發(fā)出來開放表示OSPF不受某一家廠商控制,而是公開的;最短路徑優(yōu)先表示使用了Dijkstra最短路徑算SPFOSPF具有以下特向本自治系統(tǒng)中的所有路由器發(fā)送信息,這種方法是法發(fā)送的信息就是與相鄰路由器的鏈路狀態(tài),鏈路狀態(tài)包括與哪些路由器相連以及鏈路的度量,度量用費用、距離、時延、帶寬等來表示。只有當鏈路狀態(tài)發(fā)生變化時,路由器才會發(fā)送信所有路由器都具有全網(wǎng)的拓撲結構圖,并且是一致的。相比于RIP,OSPF的更新過程收斂的很快外部網(wǎng)關協(xié)議BGP(BorderGatewayProtocol,邊界網(wǎng)關協(xié)議)AS之間的路由選擇很,主要是由于:互聯(lián)網(wǎng)規(guī)模很大各個AS不同的路由選擇協(xié)議,無法準確定義路徑的度量AS之間的路由選擇必須考慮有關的策略,比些AS不愿意讓其它AS經(jīng)過BGP只能尋找一條比較好的路由,而不是最佳路每個AS都必須配置BGP發(fā)言人,通過在兩個相鄰BGP發(fā)言人之間建立TCP連接來交換路由信息CyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。網(wǎng)絡層只把分組發(fā)送到目的主機,但是真正通信的并不是主機而是主機中的進程。傳輸層提供了進程間的邏輯通信,傳輸層向用戶了下面網(wǎng)絡層的細節(jié),使應用程序看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通信信道。UDPTCP用戶數(shù)據(jù)報協(xié)議UDP(UserDatagramProtocol)是無連接的,盡最大可能交付,沒有擁塞控制,面向(對于應用程序傳下來的報文不合并也不拆分,只是添加UDP首部),支持一對一、一對多、多對一和多對多傳輸控制協(xié)議TCP(TransmissionControlProtocol)是面向連接的,提供可靠交付,有流量控制,擁塞控塊),每一條TCP連接只能是點對點的(一對一)。UDP首部字段只有8個字節(jié),包括源端口、目的端口、長度、檢驗和。12字節(jié)的偽首部是為了計算檢驗和臨時添加TCP序號:用于對字節(jié)流進行編號,例如序號為301,表示第一個字節(jié)的編號為301,如果攜帶的數(shù)據(jù)長度為字節(jié),那么下一個報文段的序號應為401確認號:期望收到的下一個報文段的序號。例如B正確收到A發(fā)送來的一個報文段,序號為501,攜帶的數(shù)據(jù)長度為200字節(jié),因此B期望下一個報文段的序號為701,B發(fā)送給A的確認報文段中確認號就為701。數(shù)據(jù)偏移:指的是數(shù)據(jù)部分距離報文段起始處的偏移量,實際上指的是首部的長確認ACKACK=1時確認號字段有效,否則無效。TCP規(guī)定,在連接建立后所有傳送的報文段都必ACK1同步SYN:在連接建立時用來同步序號。當SYN=1,ACK=0時表示這是接請求報文段。若對方同意建立連接,則響應報文中SYN=1,ACK=1。終止FIN:用來釋放接,當FIN=1時,表示此報文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放連接。窗口:窗口值作為接收方讓發(fā)送方設置其發(fā)送窗口的依據(jù)。之所以要有這個限制,是因為接收方的數(shù)據(jù)緩存空間是有限的。TCP的三次假設A為客戶端,B為服務器端首先B處于LISTEN()狀態(tài),等待客戶的連接請求AB發(fā)送連接請求報文,SYN=1,ACK=0,選擇一個初始的序號xB收到連接請求報文,如果同意建立連接,則向A發(fā)送連接確認報文,SYN=1,ACK=1,確認號為x+1,同時也選擇一個初始的序號y。A收到B的連接確認報文后,還要向B發(fā)出確認,確認號為y+1,序號為x+1B收到A的確認后,連接建立三次握手的第三次握手是為了防止失效的連接請求到達服務器,讓服務器錯誤打開連客戶端發(fā)送的連接請求如果在網(wǎng)絡中滯留,那么就會隔很長一段時間才能收到服務器端發(fā)回的連接確認??蛻舳说纫粋€超時重傳時間之后,就會重新請求連接。但是這個滯留的連接請求最后還是會到達服務器,如果不進行三次握手,那么服務器就會打開兩個連接。如果有第三次握手,客戶端會忽略服務器之后發(fā)送的對滯留連接請求的連接確認,不TCP的四次以下描述不討論序號和確認號,因為序號和確認號的規(guī)則比較簡單。并且不討論ACK,因為ACK在連接建立之后都為1。A發(fā)送連接釋放報文,F(xiàn)IN=1B收到之后發(fā)出確認,此時TCP屬于半關閉狀態(tài),BA發(fā)送數(shù)據(jù)但是A不能向B發(fā)送數(shù)據(jù)。當B不再需要連接時,發(fā)送連接釋放報文,F(xiàn)IN=1。A收到后發(fā)出確認,進入TIME-WAIT狀態(tài),等待2MSL(最大報文存活時間)后釋放連B收到A的確認后釋放連四次揮手的客戶端發(fā)送了FIN連接釋放報文之后,服務器收到了這個報文,就進入了CLOSE-WAIT狀態(tài)。這個狀態(tài)是為了讓服務器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后,服務器會發(fā)送FIN連接釋放報文。客戶端接收到服務器端的FIN報文后進入此狀態(tài),此時并不是直接進入CLOSED狀態(tài),還需要等待一個時間計時器設置的時間2MSL。這么做有兩個理由:確保最后一個確認報文能夠到達。如果B沒收到A發(fā)送來的確認報文,那么就會重新發(fā)送連接釋放請求報A等待一段時間就是為了處理這種情況的發(fā)等待一段時間是為了讓本連接持續(xù)時間內(nèi)所產(chǎn)生的所有報從網(wǎng)絡中,使得下一個新的連接不會出現(xiàn)舊的連接請求報文。TCPTCP使用超時重傳來實現(xiàn)可靠傳輸:如果一個已經(jīng)發(fā)送的報文段在超時時間內(nèi)沒有收到確認,那么就重傳這個報文一個報文段從發(fā)送再到接收到確認所經(jīng)過的時間稱為往返時間RTT,平均往返時間RTTs計算如下其中,0≤a<1,RTTs隨著a的增加更容易受到RTT的影響。超時時間RTO應該略大于RTTs,TCP使用的超時時間計算如下其中RTTd為偏差 平均值TCP窗口是緩存的一部分,用來暫時存放字節(jié)流。發(fā)送方和接收方各有一個窗口,接收方通過TCP報文段中的窗口字段發(fā)送窗口內(nèi)的字節(jié)都允許被發(fā)送,接收窗口內(nèi)的字節(jié)都允許被接收。如果發(fā)送窗口左部的字節(jié)已經(jīng)發(fā)送并且收到了認,那么就將發(fā)送窗口向右滑動一定距離,直到左部第一個字節(jié)不是已發(fā)送并且已確認的狀態(tài);接收窗口的滑動類似,接收窗口只會對窗口內(nèi)最后一個按序到達的字節(jié)進行確認,例如接收窗口已經(jīng)收到的字節(jié)為{31,34,35},其中按序到達,而{34,35}就不是,因此只對字節(jié)31進行確認。發(fā)送方得到一個字節(jié)的確認之后,就知道這個字節(jié)之前TCP流量控制是為了控制發(fā)送方發(fā)送速率,保證接收方來得及接接收方發(fā)送的確認報文中的窗口字段可以用來控制發(fā)送方窗口大小,從而影響發(fā)送方的發(fā)送速率。將窗口字段設0,則發(fā)送方不能發(fā)送數(shù)TCP如果網(wǎng)絡出現(xiàn)擁塞,分組將會丟失,此時發(fā)送方會繼續(xù)重傳,從而導致網(wǎng)絡擁塞程度更高。因此當出現(xiàn)擁塞時,應當控制發(fā)送方的速率。這一點和流量控制很像,但是出發(fā)點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網(wǎng)絡的擁塞程度。TCP主要通過四個算法來進行擁塞控制:慢開始、擁塞避免、快重傳、快恢發(fā)送方需要一個叫做擁塞窗口(cnd)的狀態(tài)變量,注意擁塞窗口與發(fā)送方窗口的區(qū)別:擁塞窗口只是一個狀態(tài)變量,實際決定發(fā)送方能發(fā)送多少數(shù)據(jù)的是發(fā)送方窗口。為了便于討論,做如下假接收方有足夠大的接收緩存,因此不會發(fā)生流量控雖然TCP的窗口基于字節(jié),但是這里設窗口的大小單位為報文慢開始與擁塞避發(fā)送的最初執(zhí)行慢開始,令cwnd=1,發(fā)送方只能發(fā)送1個報文段;當收到確認后,將cwnd加倍,因此之后發(fā)送方能夠發(fā)送的報文段數(shù)量為:2、4、8...注意到慢開始每個輪次都將cnd加倍,這樣會讓cwnd增長速度非??欤瑥亩沟冒l(fā)送方發(fā)送的速度增長速度過快,網(wǎng)絡擁塞的可能性也就更高。設置一個慢開始門限ssthrh,當cwnd>=sstrh時,進入擁塞避免,每個輪次只將cwnd加1。如果出現(xiàn)了超時,則令ssthresh=cwnd/2,然后重新執(zhí)行慢開快重傳與快在接收方,要求每次接收到報文段都應該對最后一個已收到的有序報文段進行確認。例如已經(jīng)接收到M1和M2,此時收到M4,應當發(fā)送對M2的確認。在發(fā)送方,如果收到三個重復確認,那么可以知道下一個報文段丟失,此時執(zhí)行快重傳,立即重傳下一個報文段。例如收到三個M2,則3丟失,立即重傳M3。在這種情況下,只是丟失個別報文段,而不是網(wǎng)絡擁塞。因此執(zhí)行快恢復,令ssthresh=cwnd/2,cwnd=慢開始和快恢復的快慢指的是cwnd的設定值,而不是cwnd的增長速率。慢開始cwnd設定為1,而快恢復設定為ssthreshCyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。DNS是一個分布式數(shù)據(jù)庫,提供了主機名和IP地址之間相互轉換的服務。這里的分布式數(shù)據(jù)庫是指,每個站點只保具有層次結構,從上到下依次為:根、頂級、二級DNS可以使用UDP或者TCP進行傳輸,使用的端都為53。大多數(shù)情況下DNS使用UDP進行傳輸,這就要求解析器和服務器都必須自己處理超時和重傳從而保證可靠性。在兩種情況下會使用TCP進行傳輸:如果返回的響應超過的512字節(jié)(UDP最大只支持512字節(jié)的數(shù)據(jù))區(qū)域傳送(區(qū)域傳送是主服務器向輔助服務器傳送變化的那部分數(shù)據(jù))FTP使用TCP進行連接,它需要兩個連接來傳送一個文 21等待客戶端的連接,客戶端主動建立連接后,使用這個連接將客戶端令傳數(shù)據(jù)連接:用來傳送一個文件數(shù)根據(jù)數(shù)據(jù)連接是否是服務器端主動建立,F(xiàn)TP有主動和兩種模式主動模式:服務器端主動建立數(shù)據(jù)連接,其中服務器端的 為20,客戶端的 隨機,但是必須大1024,因為0~1023是熟知 模式:客戶端主動建立數(shù)據(jù)連接,其中客戶端的 由客戶端自己指定,服務器端的 隨機主動模式要求客戶端開放端給服務器端,需要去配置客戶端的。模式只需要服務器端開放端即可,無需客戶端配置。但是模式會導致服務器端的安全性減弱,因為開放了過多的端。DHCP(DynamicHostCon?gurationProtocol)提供了即插即用的連網(wǎng)方式,用戶不再需要手動配置IP地址等信DHCP配置的內(nèi)容不僅是IP地址,還包括子網(wǎng)掩碼、網(wǎng)關IP地址DHCP工作過程如下客戶端發(fā)送Discover報文,該報文的目的地址為55:67,源地址為:68,被放入中,該報文被廣播到同一個子網(wǎng)的所有主機上。如果客戶端和DHCP服務器不在同一個子網(wǎng),就需要使用中。DHCP服務器收到Discover報文之后,發(fā)送O?er報文給客戶端,該報文包含了客戶端所需要的信息。因為客戶端可能收到多個DHCP服務器提供的信息,因此客戶端需要進行選擇。如果客戶端選擇了某個DHCP服務器提供的信息,那么就發(fā)送Request報文給該DHCP服務器DHCP服務器發(fā)送Ack報文,表示客戶端此時可以使用提供給它的信NET用于登錄到主機上,并且主機上的輸出也會返回NET可以適應許多計算機和操作系統(tǒng)的差異,例如不同操作系統(tǒng)系統(tǒng)的換行符定一個電子郵件系統(tǒng)由三部分組成:用戶、郵件服務器以及郵件協(xié)議郵件協(xié)議包含發(fā)送協(xié)議和協(xié)議,發(fā)送協(xié)議常用SMTP,協(xié)議常用POP3和IMAPSMTP只能發(fā)送ASCII碼,而互聯(lián)網(wǎng)郵件擴充MIME可以發(fā)送二進制文件。MIME并沒有改動或者取代SMTP,而是增加郵件主體的結構,定義了非ASCII碼的編碼規(guī)則。POP3的特點是只要用戶從服務器上了郵件,就把該郵件刪除IMAP協(xié)議中客戶端和服務器上的郵件保持同步,如果不手動刪除郵件,那么服務器上的郵件也不會被刪除。IMAP應應用層協(xié)端傳輸層協(xié)備解長度超過512字節(jié)時使用動態(tài)主機配置協(xié)簡單網(wǎng)絡管理協(xié)文件傳送協(xié)控制連接21,數(shù)據(jù)連接終端協(xié)超文本傳送簡單郵件傳送協(xié)郵件協(xié)網(wǎng)際報文存取協(xié)WebDHCP配置主機信假設主機最開始沒有IP地址以及其它信息,那么就需要先使用DHCP來獲取主機生成一個DHCP請求報文,并將這個報文放入具有目的端口67和源端口68UDP報文段中該報文段則被放入在一個具有廣播IP目的地址(55)和源IP地址()的IP數(shù)據(jù)報中。該數(shù)據(jù)報則被放置在MAC幀中,該幀具有目的地址FF:FF:FF:FF:FF:FF,將廣播到與交換機連接的所有設備。連接在交換機的DHCP服務器收到廣播幀之后,不斷地向上分解得到IP數(shù)據(jù)報、UDP報文段、DHCP請求報文,之后生成DHCPACK報文,該報文包含以下信息:IP地址、DNS服務器的IP地址、默認網(wǎng)關路由器的IP地址和子網(wǎng)掩碼。該報文被放入UDP報文段中,UDP報文段有被放入IP數(shù)據(jù)報中,最后放入MAC幀中。該幀的目的地址是請求主機的MAC地址,因為交換機具有習能力,之前主機發(fā)送了廣播幀之后就記錄了MAC地址到其轉發(fā)接口的交換表項,因此現(xiàn)在交換機就可以直接知道應該向哪個接口發(fā)送該幀。主機收到該幀后,不斷分解得到DHCP報文。之后就配置它的IP地址、子網(wǎng)掩碼和DNS服務器的IP地址,并在其IP轉中安裝默認網(wǎng)關。ARPMAC地主機通過瀏覽器生成一個TCP套接字,套接字向HTTP服務器發(fā)送HTTP請求。為了生成該套接字,主機需要知道的對應的IP地址。主機生成一個DNS查詢報文,該報文具有53號端口,因為DNS服務器的端 是53。該DNS查詢報文被放入目的地址為DNS服務器IP地址的IP數(shù)據(jù)報中。該IP數(shù)據(jù)報被放入一個以太網(wǎng)幀中,該幀將發(fā)送到網(wǎng)關路由DHCP過程只知道網(wǎng)關路由器的IP地址,為了獲取網(wǎng)關路由器的MAC地址,需要使用ARP協(xié)議主機生成一個包含目的地址為網(wǎng)關路由器IP地址的ARP查詢報文,將該ARP查詢報文放入一個具有廣播目的網(wǎng)關路由器接收到該幀后,不斷向上分解得到ARP報文,發(fā)現(xiàn)其中的IP地址與其接口的IP地址匹配,因此就發(fā)送一個ARP回答報文,包含了它的MAC地址,發(fā)回給主機。DNS知道了網(wǎng)關路由器的MAC地址之后,就可以繼續(xù)DNS的解析過程了網(wǎng)關路由器接收到包含DNS查詢報文的以太網(wǎng)幀后,抽取出IP數(shù)據(jù)報,并根據(jù)轉決定該IP數(shù)據(jù)該轉經(jīng)配置了網(wǎng)關路由器到達DNS服務器的路由表項。到達DNS服務器之后,DNS服務器抽取出DNS查詢報文,并在DNS數(shù)據(jù)庫中查找待解析的找到DNS記錄之后,發(fā)送DNS回答報文,將該回答報文放入UDP報文段中,然后放入IP數(shù)據(jù)報中,通過路HTTP請求頁有了HTTP服務器的IP地址之后,主機就能夠生成TCP套接字,該套接字將用于向Web服務器發(fā)送HTTPGET報文。在生成TCP套接字之前,必須先與HTTP服務器進行三次握手來建立連接。生成一個具有目的端口80TCPSYN報文段,并向HTTP服務器發(fā)送該報文段。HTTP服務器收到該報文段之后,生成TCPSYNACK報文段,發(fā)回給主機。連接建立之后,瀏覽器生成HTTPGET報文,并交付給HTTP服務器。HTTP服務器從TCP套接字HTTPGET報文,生成一個HTTP響應報文,將Web頁面內(nèi)容放入報文主體瀏覽器收到HTTP響應報文后,抽取出Web頁面內(nèi)容,之后進行渲染,顯示W(wǎng)eb頁面CyC2018提供了該項目的離線閱讀版本,回復""即可領取。也提供了一份技術面試復習大綱,不僅系統(tǒng)整理了面試知識點,而且標注了各個知識點的重要程度,從而幫你理清多而雜的面試知識點,回復"大綱"即可領取。我基本是按照這個大綱來進行復習的,對我拿到了T頭條等O?r起到很大的幫助。完全可以和我一樣根據(jù)大綱上列的知識點來進行復習,就不用看很多不重要的內(nèi)容,也可以知道哪些內(nèi)容很重要從而多安排一些復習時間。計算機網(wǎng)絡,JamesF.Kurose,KeithW.Ross,庫,等.計算機網(wǎng)絡:自頂向下方法[M].機械工業(yè),2014.W.RichardStevens.TCP/IP詳解.卷1,協(xié)議[M].機械工業(yè),2006.ActivevsPassiveFTPMode:WhichOneisMoreSecure?ActiveandPassiveFTPTransfersDe?ned-KBArticle#1138HowDHCPworksandDHCPInterviewQuestionsandWhatisprocessofDORAinDHCP?WhatisDHCPServer?TacklingemissionstargetsinTokyoWhatdoesmyISPknowwhenIuseTor?puterNetworking[1]-ComputerNetworksandtheP2P網(wǎng)絡概述CircuitSwitching(a)Circuitswitching.(b)Packet1.2URI包含URL和URN請求和響應請求報響應報二、HTTP客戶端發(fā)送的請求報文第一行為請求行,包含了方法字獲取資當前網(wǎng)絡請求中,絕大部分使用的是GET方法獲取報文首GET方法類似,但是不返回報文實體主體部主要用于確認URL的有效性以及資源更新的日期時間傳輸實體主POST主要用來傳輸數(shù)據(jù),而GET主要用來獲取資源POSTGET的比較請見第九章。上傳文由于自身不帶驗證機制,任何人都可以上傳文件,因此存在安全性問題,一般不使用該方PUTPUT/new.htmlHTTP/1.1Content-length:16<p>New對資源進行部分修PUT也可以用于修改資源,但是只能完全替代原始資源,PATCH允許部分修改Content-Type:application/exampleIf-Match:"e0023aa4e"Content-Length:[descriptionof刪除文PUT功能相反,并且同樣不帶驗證機DELETEDELETE/file.html查詢支持的查詢指定的URL能夠支持的方法。

這樣的內(nèi)容要求在與服務器通信時建立隧使用SSL(SecureSocketsLayer,接層)和TLS(TransportLayerSecurity,傳輸層安全)協(xié)議把通信內(nèi)容 追蹤路服務器會將通信路徑返回給客戶發(fā)送請求時,在Max-Forwards首部字段中填入數(shù)值,每經(jīng)過一個服務器就會減1,當數(shù)值為0時就停止傳輸。通常不會使用TRACE,并且它容易受到XST(Cross-SiteTracing,跨站追蹤)。三、HTTP服務器返回的響應報文中第一行為狀態(tài)行,包含了狀態(tài)碼以及原因短語,用來告知客戶端請求的結狀態(tài)類含Informational(信息性狀態(tài)碼接收的請求正在處Success(成功狀態(tài)碼請求正常處理完Redirection(重定向狀態(tài)碼需要進行附加操作以完成Error(客戶端錯誤狀態(tài)碼)服務器無法處理請ServerError(服務器錯誤狀態(tài)碼服務器處理請求出1XX信100Continue:表明到目前為止都很正常,客戶端可以繼續(xù)發(fā)送請求或者忽略這個響2XX成200204NoContent:請求已經(jīng)成功處理,但是返回的響應報文不包含實體的主體部分。一般在只需要從客戶端206PartialContent:表示客戶端進行了范圍請求,響應報文包含由Content-Range指定范圍的實體內(nèi)3XX重定301MovedPermanently:永久性重302Found:臨時性重303SeeOther:和302有著相同的功能,但是303明確要求客戶端應該采用GET方法獲取資注:雖然HTTP協(xié)議規(guī)定301、302狀態(tài)下重定向時不允許把POST方法改成GET方法,但是大多數(shù)瀏覽器都會在301、302和303狀態(tài)下的重定向把POST方法改成GET方法。304NotModi?ed:如果請求報文首部包含一些條件,例如:If-Match,If-Modi?ed-Since,If-None-Match,If-Range,If-Unmodi?ed-Since,如果不滿足條件,則服務器會返回304狀態(tài)碼。307TemporaryRedirect:臨時重定向,與302的含義類似,但是307要求瀏覽器不會把重定向請POST方法改成GET方法4XX客戶端400BadRequest:請求報文中存在語法錯誤401Unauthorized:該狀態(tài)碼表示發(fā)送的請求需要有認證信息(BASIC認證、DIGEST認證)。如果之前已進403Forbidden:請求被404Not5XX服務器500InternalServerError503ServiceUnavailable:服務器暫時處于超負載或正在進行停機,現(xiàn)在無法處理請求四、HTTP有4種類型的首部字段:通用首部字段、請求首部字段、響應首部字段和實體首部字段。通用首部字首部字段說Cache-控制緩存的控制不再轉發(fā)給的首部字段、管理持久連創(chuàng)建報文的日期時報文指報文末端的首部一Transfer-指定報文主體的傳輸編碼升級為其他服務器的相關信錯誤通請求首部字首部字段說用戶可處理的類Accept-優(yōu)先的字符Accept-優(yōu)先的內(nèi)容Accept-優(yōu)先的語言(自然語言Web認證信期待服務器的特定行用戶的電子郵箱地請求資源所在服務If-比較實體標記If-Modi?ed-比較資源的更新時If-None-比較實體標記(與If-Match相反If-資源未更新時發(fā)送實體Byte的范圍請If-Unmodi?ed-比較資源的更新時間(與If-Modi?ed-Since相反Max-最大傳輸逐-服務器要求客戶端的認證實體的字節(jié)范圍請對請求中URI的原始獲取傳輸編碼的優(yōu)先User-HTTP客戶端程序的信響應首部字首部字段說Accept-是否接受字節(jié)范圍請推算資源創(chuàng)建經(jīng)過時資源的匹配令客戶端重定向至指定-服務器對客戶端的認證Retry-對再次發(fā)起請求的時機要HTTP服務器的安裝信服務器緩存的管理信WWW-服務器對客戶端的認證信實體首部字首部字段說資源可支持的HTTP方Content-實體主體適用的編碼方Content-實體主體的自然語Content-實體主體的Content-替代對應資源的Content-實體主體的報Content-實體主體的位置范Content-實體主體的類實體主體過期的日期時Last-資源的最后修改日期時連接管短連接與長當瀏覽器一個包含多張的HTML頁面時,除了請求的HTML頁面資源,還會請求資源。如果每進行一次HTTP通信就要新建一個TCP連接,那么開銷會很大。長連接只需要建立一次TCP連接就能進行多次HTTP通信:close從HTTP/1.1開始默認是長連接的,如果要斷開連接,需要由客戶端或者服務器端提出:closeHTTP/1.1之前默認是短連接的,如果需要使用長連接,則使用Connection:Keep-Alive流水默認情況下,HTTP請求是按順序發(fā)出的,下一個請求只有在當前請求收到響應之后才會被發(fā)出。由于受到網(wǎng)絡延遲流水線是在同一條長連接上連續(xù)發(fā)出請求,而不用等待響應返回,這樣可以減少延HTTP協(xié)議是無狀態(tài)的,主要是為了讓HTTP協(xié)議盡可能簡單,使得它能夠處理大量事務。HTTP/1.1引入 是服務器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),它會在瀏覽器之后向同一服務器再次發(fā)起請求時被攜帶上,用于告知服務端兩個請求是否來自同一瀏覽器。由于之后每次請求都會需要攜帶 額外的性能開銷(尤其是在移動環(huán)境下)。曾一度用于客戶端數(shù)據(jù)的,因為當時并沒有其它合適的辦法而作為唯一的,但現(xiàn)在隨著現(xiàn)代瀏覽器開始支持各種各樣的方式, 漸漸被淘汰。新的瀏覽器API經(jīng)允許開發(fā)者直接將數(shù)據(jù)到本地,如使用ebstoageAPI(本地和會話)或IndedDB。用會話狀態(tài)管理(如用戶登錄狀態(tài)、購物車、游戲分數(shù)或其它需要記錄的信息)個性化設置(如用戶自定義設置、等)瀏覽器行為(如分析用戶行為等創(chuàng)建過服務器發(fā)送的響應報文包含 首部字段,客戶端得到響應報文后 內(nèi)容保存到瀏覽器中HTTP/1.0HTTP/1.0200Content-type: : : [page : =choco;分會話 :瀏覽器關閉之后它會被自動刪除,也就是說它僅在會話期內(nèi)有效持久 :指定過期時間(Expires)或有效期(max-age)之后就成為了持久性 :id=a3fWa;Expires=Wed,21Oct201507:28:00作用 Path標識指定了主機下的哪些路徑可以接受 (該URL路徑必須存在于請求URL中)。以字符%x2F("/")作為路徑分隔符,子路徑也會被匹配。例如,設置Path=/docs,則以下地址都會匹配:瀏覽器通 屬性可創(chuàng)建新 ,也可通過該屬性非HttpOnly標記 ...==.標記為HttpOnly 不能被JavaScript調(diào)用??缯?XSS)常常使用JavaScript.API竊取用戶 信息,因此使用HttpOnly標記可以在一定程度上避免XSS. :id=a3fWa;Expires=Wed,21Oct201507:28:00GMT;Secure;標記為Secure的 只能通過被HTTPS協(xié)議加密過的請求發(fā)送給服務端。但即便設置了Secure標記,敏感信 有其固有的不安全性,Secure標記也無法提供確實的安全保障。 在用戶瀏覽器中,也可以利用Session在服務器端,在服務器端的信Session可以在服務器上的文件、數(shù)據(jù)庫或者內(nèi)存中。也可以將Session在Redis這種內(nèi)存型數(shù)據(jù)庫中,效使用Session用戶登錄狀態(tài)的過程如下用戶進行登錄時,用戶提交包含用戶名和的表單,放入HTTP請求報文中服務器驗證該用戶名和,如果正確則把用戶信息到Redis中,它在Redis中的Key稱為SessionID;服務器返回的響應報文的Set- 首部字段包含了這個SessionID,客戶端收到響應報文之后將該值存入瀏覽器 值,服務器收到之后提取出SessionID,從Redis中取應該注意SessionID的安全性問題,不能讓它被者輕易獲取,那么就不能產(chǎn)生一個容易被猜到的SessionID值。此外,還需要經(jīng)常重新生成SessionID。在對安全性要求極高的場景下,例如轉賬等操作,除了使用Session瀏覽器禁 來保存用戶信息,只能使用Session。除此之外,不能再將SessionID存放到 是使用URL重寫技術,將SessionID作為URL的參數(shù)進行傳遞。Session選只能ASCII碼字符串,而Session則可以任何類型的數(shù)據(jù),因此在考慮數(shù)據(jù)復雜性時首 對于大型,如果用戶所有的信息都在Session中,那么開銷是非常大的,因此不建議將所有的用戶信息都到Session中。緩優(yōu)緩解服務器壓力降低客戶端獲取資源的延遲:緩存通常位于內(nèi)存中,緩存的速度更快。并且緩存服務器在地理位置上也有可能比源服務器來得近,例如瀏覽器緩存。實現(xiàn)方Cache-HTTP/1.1通過Cache-Control首部字段來控制緩存進行緩no-store指令規(guī)定不能對請求或響應的任何一部分進行緩Cache-Control:Cache-Control:no-強制確認緩no-cache指令規(guī)定緩存服務器需要先向源服務器驗證緩存資源的有效性,只有當緩存資源有效時才能使用該緩存對Cache-Control:Cache-Control:no-私有緩存和公共緩 指令規(guī)定了將資源作為私有緩存,只能被單獨用戶使用,一般在用戶瀏覽器中Cache-Control:Cache-Control: 指令規(guī)定了將資源作為公共緩存,可以被多個用戶使用,一般在服務器中Cache-Control:Cache-Control:緩存過期機max- 指令出現(xiàn)在請求報文,并且緩存資源的緩存時間小于該指令指定的時間,那么就能接受該緩max-age指令出現(xiàn)在響應報文,表示緩存資源在緩存服務器中保存的時Cache-Control:Cache-Control:max-Expires首部字段也可以用于告知緩存服務器該資源什么時候會過Expires:Expires:Wed,04Jul201208:26:05HTTP/1.1中,會優(yōu)先處理max-age指令;在HTTP/1.0中,max-age指令會被忽略掉緩存驗需要先了解ETag首部字段的含義,它是資源的唯一標識。URL不能唯一表示資源,例 有中文和英文兩個資源,只有ETag才能對這兩個資源進行唯一 ETag:ETag: 可以將緩存資源的ETag值放入If-None-Match首部,服務器收到該請求后,判斷緩存資源的ETag值和資源ETag值是否一致,如果一致則表示緩存資源有效,返回304NotModi?edIf-None-Match:If-None-Match: Last-Mod?ed首部字段也可以用于緩存驗證,它包含在源服務器發(fā)送的響應報文中,指示源服務器對資源的最后修改時間。但是它是一種弱校驗器,因為只能精確到一秒,所以它通常作為ag的備用方案。如果響應首部字段里含有這個信息,客戶端可以在后續(xù)的請求中帶上If-Modi?ed-Since來驗證緩存。服務器只在所請求的資源在給定的日期時間之后對內(nèi)容進行過修改的情況下才會將資源返回,狀態(tài)碼為200OK。如果請求的資源從那時起修改,那么返回一個不帶有實體主體的304NtMi?d響應報文。Last-Modified:Last-Modified:Wed,21Oct201507:28:00If-Modified-Since:Wed,21Oct201507:28:00內(nèi)容協(xié)通過內(nèi)容協(xié)商返回最合適的內(nèi)容,例如根據(jù)瀏覽器的默認語言選擇返回中文界面還是英文界類服務端驅動客戶端設置特定的HTTP首部字段,例如Accept、Accept-Charset、Accept-Encoding、Accept-Language,服務器它存在以下問題服務器很難知道客戶端瀏覽器的全部信客戶端提供的信息相當冗長(HTTP/2協(xié)議的首部壓縮機制緩解了這個問題),并且存在隱私風險(HTTP給定的資源需要返回不同的展現(xiàn)形式,共享緩存的效率會降低,而服務器端的實現(xiàn)會越來越復驅動服務器返回300MultipleChoices或者406NotAcceptable,客戶端從中選出最合適的那個資Vary:Vary:Accept-在使用內(nèi)容協(xié)商的情況下,只有當緩存服務器中的緩存滿足內(nèi)容協(xié)商條件時,才能使用該緩存,否則應該向源服務器請求該資源。例如,一個客戶端發(fā)送了一個包含Accept-Language首部字段的請求之后,源服務器返回的響應內(nèi)容,緩存服務器對這個響應進行緩存之后,在客戶端下一次同一個URL資源,并Accept-Language與緩存中的對應的值相同時才會返回該緩內(nèi)容編 瀏覽器發(fā)送Accept-Encoding首部,其中包含有它所支持的壓縮算法,以及各自的優(yōu)先級。服務器則從中選種,使用該算法對響應的消息主體進行壓縮,并且發(fā)送Content-Encoding首部來告知瀏覽器它選擇了哪一種算法。由于該內(nèi)容協(xié)商過程是基于編碼類型來選擇資源的展現(xiàn)形式的,響應報文的Vary首部字段至少要包含Content-Encoding范圍請如果網(wǎng)絡出現(xiàn)中斷,服務器只發(fā)送了一部分數(shù)據(jù),范圍請求可以使得客戶端只請求服務器未發(fā)送的那部分數(shù)據(jù),從而避免服務器重新發(fā)送所有數(shù)據(jù)。在請求報文中添加Range首部字段指定請求的范圍Range:bytes=0-請求成功的話服務器返回的響應包含206PartialContent狀態(tài)碼HTTP/1.1206PartialContentHTTP/1.1206PartialContentContent-Length:1024(binaryAccept-響應首部字段Accept-Ranges用于告知客戶端是否能處理范圍請求,可以處理使用bytes,否則使用noneAccept-Ranges:Accept-Ranges:響應狀態(tài)在請求成功的情況下,服務器會返回206PartialContent狀態(tài)碼在請求的范圍越界的情況下,服務器會返回416RequestedRangeNotSatis?able狀態(tài)碼。在不支持范圍請求的情況下,服務器會返回200OK狀態(tài)碼。分塊傳輸編ChunkedTransferEncoding,可以把數(shù)據(jù)分割成多塊,讓瀏覽器逐步顯示頁面一份報文主體內(nèi)可含有多種類型的實體同時發(fā)送,每個部分之間用boundary字段定義的分隔符進行分隔,每個部分例如,上傳多個表單時可以使用如下方Content-Type:Content-Type:multipart/form-data;Content-Disposition:form-data;name="submit-Content-Disposition:form-data;name="files";filename="file1.txt"Content-Type:text/ ...contentsoffile1.txt虛擬主HTTP/1.1使用虛擬主機技術,使得一臺服務器擁有多個,并且在邏輯上可以看成多個服務器通信數(shù)據(jù)轉服務器接受客戶端的請求,并且轉發(fā)給其它服務器使用的主要目的是緩負載均日志記而反向一般位于內(nèi)部網(wǎng)絡中,用戶察覺不到網(wǎng)與服務器不同的是,網(wǎng)關服務器會將HTTP轉化為其它協(xié)議進行通信,從而請求其它非HTTP服務器的服務隧使用SSL等加密,在客戶端和服務器之間建立一條安全的通信線路六、HTTP有以下安全性問題使用明文進行通信,內(nèi)容可能會被無法證文的完整性,報文有可能遭篡改。HTTPS并不是新協(xié)議,而是讓HTTP先和SSL(SecureSocketsLayer)通信,再由SSL和TCP通信,也就是HTTPS使用了隧道進行通通過使用SSL,HTTPS具有了加密(防)、認證(防)和完整性保護(防篡改)加對稱密鑰加對稱密鑰加密(Symmtric-KyEncryption),密和使同一鑰。優(yōu)點:運算速度快;缺點:無法安全地將密鑰傳輸給通信非對稱密鑰非對稱密鑰加密,又稱公開密鑰加密(Public- Encryption),加密和使用不同的密鑰公開密鑰所有人都可以獲得,通信發(fā)送方獲得接收方的公開密鑰之后,就可以使用公開密鑰進行加密,接收方收到通信內(nèi)容后使用私有密鑰。非對稱密鑰除了用來加密,還可以用來進行簽名。因為私有密鑰無法被其他人獲取,因此通信發(fā)送方使用其私有密鑰進行簽名,通收方使用發(fā)送方的公開密鑰對簽名進行,就能判斷這個簽名是否正確。HTTPS采用HTTPS采用混合的加密機制,使用非對稱密鑰加密用于傳輸對稱密鑰來保證傳輸過程的安全性,之后使用對稱密鑰加密進行通信來保證通信過程的效率。(下圖中的SessionKey就是對稱密鑰)認通過使用來對通信方進行認證數(shù)字認證機構 Authority)是客戶端與服務器雙方都可信賴的第機構服務器的運營人員向CA提出公開密鑰的申請,CA在判明提出申請者的之后,會對已申請的公開密鑰做數(shù)字簽進行HTTPS通信時,服務器會把發(fā)送給客戶端。客戶端取得其中的公開密鑰之后,先使用數(shù)字簽名進行驗證,完整性保SSL提供報要功能來進行完整性保護HTTP也提供了MD5報要功能,但不是安全的。例如報文內(nèi)容被篡改之后,同時重新計算MD5的值,通HTTPS的報要功能之所以安全,是因為它結合了加密和認證這兩個操作。試想一下,加密之后的報文,遭到篡HTTPS的缺七、HTTP/1.xHTTP/1.x實現(xiàn)簡單是以犧牲性能為代價客戶端需要使用多個連接才能實現(xiàn)并發(fā)和縮短延不會壓縮請求和響應首部,從而導致不必要的網(wǎng)絡流不支持有效的資源優(yōu)先級,致使底層TCP連接的利用率低下二進制分幀HTTP/2.0將報文分成HEADERS幀和DATA幀,它們都是二進制格式在通信過程中,只會有一個TCP連接存在,它承載了任意數(shù)量的雙向數(shù)據(jù)流(Stream)一個數(shù)據(jù)流(Steam)都有一個唯一標識符和可選的優(yōu)先級信息,用于承載雙向信息。消息(Message)是與邏輯請求或響應對應的完整的一系列幀。幀F(xiàn)ame)是最小的通信單位,來自不同數(shù)據(jù)流的幀可以交錯發(fā)送,然后再根據(jù)每個幀頭的數(shù)據(jù)流標識符重新組裝。服務端推HTTP/2.0在客戶端請求一個資源時,會把相關的資源一起發(fā)送給客戶端,客戶端就不需要再次發(fā)起請求了。例如客戶端請求page.html頁面,服務端就把script.js和style.css等與之相關的資源一起發(fā)給客戶端。首部壓HTTP/1.1的首部帶有大量信息,而且每次都要重復發(fā)HTTP/2.0要求客戶端和服務器同時和更新一個包含之前見過的首部字段表,從而避免了重復傳輸。不僅如此,HTTP/2.0也使用Hu?man編碼對首部字段進行壓縮。八、HTTP/1.1詳細內(nèi)容請見上支持同時打開多個TCP連接新增狀態(tài)碼支持分塊傳輸編新增緩存處理指令max-九、GET和POST作GET用于獲取資源,而POST用于傳輸實體主體參GET和POST的請求都能使用額外的參數(shù),但是GET的參數(shù)是以查詢字符串出現(xiàn)在URL中,而POST的參數(shù)在實體主體中。不能因為POST參數(shù)在實體主體中就認為它的安全性更高,因為照樣可以通過一些抓包工具(Fiddler)查看因為URL只支持ASCII碼,因此GET的參數(shù)中如果存在中文等字符就需要先進行編碼。%E4%B8%AD%E6%96%87,而空格會轉換為%20。POST參數(shù)支持標準字符集

會轉換GETGET/test/demo_form.asp?name1=val

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論