03_筆記

網(wǎng)絡(luò)層:
協(xié)議:IP椒涯、ICMP(互聯(lián)網(wǎng)控制消息協(xié)議,用來返回錯(cuò)誤信息)碉就、ARP

網(wǎng)絡(luò)層首部固定部分20字節(jié)盟广,可變部分最多40字節(jié)

首部數(shù)據(jù):
  1,版本:占4位瓮钥,0b0100:IPv4筋量, 0b0110: IPv6
  2,首部長度:占4位骏庸,二進(jìn)制乘以4是最終長度毛甲,最小值0b0101年叮,最大值0b1111
  3具被,區(qū)分服務(wù):占8位,用于提高網(wǎng)絡(luò)服務(wù)質(zhì)量 
  4只损,總長度:占16位一姿,首部+數(shù)據(jù)長度之和,最大值65535跃惫,由于幀的數(shù)據(jù)不能超過1500字節(jié)叮叹,所以過大的ip數(shù)據(jù)包需要分片傳輸給數(shù)據(jù)鏈路層,每一片都有自己的網(wǎng)絡(luò)層首部
  5爆存,標(biāo)識(shí):占16位蛉顽,數(shù)據(jù)包的id,當(dāng)數(shù)據(jù)包過大進(jìn)行分片時(shí)先较,同一個(gè)數(shù)據(jù)包所有片的標(biāo)識(shí)都是一樣的携冤,有一個(gè)計(jì)數(shù)器專門管理數(shù)據(jù)包的id,每發(fā)出一個(gè)數(shù)據(jù)包闲勺,id就加1
  6曾棕,標(biāo)志:占3位,第1位保留菜循;第2位:1代表允許分片翘地,0代表不允許分片;第3位:1代表不是最后一片癌幕,0代表是最后1片
  7衙耕,片偏移:占13位,片偏移乘以8是字節(jié)偏移勺远,所以每一片的長度一定是8的倍數(shù)
  8橙喘,生存時(shí)間:TTL,占8位谚中,每個(gè)路由器在轉(zhuǎn)發(fā)之前會(huì)將TTL減1渴杆,一旦發(fā)現(xiàn)TTL減為0寥枝,路由器會(huì)返回錯(cuò)誤報(bào)告(ICMP協(xié)議)。
  9磁奖,協(xié)議:占8位囊拜,表明所封裝的數(shù)據(jù)使用了什么協(xié)議。TCP6比搭, UDP17冠跷, ICMP1,IP4
  10身诺,首部檢驗(yàn)和:占16位蜜托,用于檢查首部是否有錯(cuò)誤
  11,源IP地址:32位
  12霉赡,目標(biāo)IP地址:32位

傳輸層:

協(xié)議:TCP(傳輸控制協(xié)議)橄务、UDP(用戶數(shù)據(jù)報(bào)協(xié)議)

區(qū)別:

  1,TCP是面向連接的穴亏,TCP協(xié)議傳輸數(shù)據(jù)時(shí)需要進(jìn)行三次握手建立連接蜂挪,一旦不想繼續(xù)發(fā)送數(shù)據(jù)需要四次揮手釋放連接,UDP是無連接的
  2嗓化,TCP是可靠傳輸?shù)奶匿蹋粊G包,如果發(fā)送的數(shù)據(jù)某些字節(jié)不小心丟了刺覆,TCP會(huì)重新發(fā)严肪,保證傳輸?shù)臄?shù)據(jù)沒問題,UDP不可靠傳輸谦屑,盡最大努力交付驳糯,可能丟包 
  3,由于TCP是面向連接的伦仍,而且為了保證可靠傳輸首部占用空間大结窘,UDP首部占用空間小
  4,TCP傳輸速率慢充蓝,UDP傳輸速率快
  5隧枫,TCP資源消耗大,UDP資源消耗小
  6谓苟,應(yīng)用場景:TCP:瀏覽器官脓、文件傳輸、郵件發(fā)送 UDP:音視頻通話涝焙,直播
  7卑笨,應(yīng)用層協(xié)議:TCP:HTTP、HTTPS仑撞、FTP赤兴、SMTP妖滔、DNS,  UDP:DNS

UDP:

首部:8個(gè)字節(jié)
1桶良,源端口號(hào):16位
2座舍,目標(biāo)端口號(hào):16位
3,UDP長度陨帆,16位曲秉,首部的長度+數(shù)據(jù)的長度
4,檢驗(yàn)和:16位疲牵,計(jì)算的內(nèi)容:偽首部(源IP承二,目標(biāo)IP,0纲爸,協(xié)議類型(17)亥鸠,UDP長度(16位)) + 首部 + 數(shù)據(jù)

TCP:

首部:至少20個(gè)字節(jié)的固定首都,可變部分最多40字節(jié)缩焦,建立連接時(shí)读虏,前兩次握手通常32字節(jié)

頭部:
1,源端口號(hào):16位
2袁滥,目標(biāo)端口號(hào):16位
3,序號(hào):占32位灾螃,TCP在傳輸過程中的每個(gè)字節(jié)都有一個(gè)編號(hào)题翻,在建立連接前,表示初始序號(hào)腰鬼,在建立連接后嵌赠,表示這一次傳給對方的TCP數(shù)據(jù)部分的第一個(gè)字節(jié)的編號(hào)
4,確認(rèn)號(hào):占32位熄赡,在建立連接后姜挺,確認(rèn)號(hào)代表期望對方下一次傳過來的TCP數(shù)據(jù)部分的第一個(gè)字節(jié)的編號(hào)
5,數(shù)據(jù)偏移:占4位彼硫,二進(jìn)制乘以4是最終長度炊豪,最小值0b0101,最大值0b1111
6拧篮,保留位词渤,占6位,全是0
7串绩,標(biāo)志位:占6位
URG:當(dāng)URG為1時(shí)缺虐,緊急指針字段才有效,表明當(dāng)前報(bào)文段中有緊急數(shù)據(jù)礁凡,應(yīng)當(dāng)優(yōu)先盡快傳送
ACK:當(dāng)ACK為1時(shí)高氮,確認(rèn)號(hào)字段才有效
PSH:交互式網(wǎng)絡(luò)中
RST:讓RST為1時(shí)慧妄,表明連接中出現(xiàn)嚴(yán)重差錯(cuò),必須釋放連接
SYN:建立連接時(shí)使用剪芍,當(dāng)SYN=1腰涧,ACK=0時(shí),表明是一個(gè)建立連接的請求
如果對方同意建立連接紊浩,則回復(fù)SYN=1窖铡,ACK=1
FIN:釋放連接時(shí)使用,當(dāng)FIN=1坊谁,表明數(shù)據(jù)已經(jīng)發(fā)送完畢费彼,要求釋放連接
8,窗口:占16位
9口芍,檢驗(yàn)和:占16位箍铲,計(jì)算的內(nèi)容:偽首部12個(gè)字節(jié)(源IP4個(gè)字節(jié),目標(biāo)IP4個(gè)字節(jié)鬓椭,0颠猴,協(xié)議類型1個(gè)字節(jié),TCP長度2個(gè)字節(jié)) + 首部 + 數(shù)據(jù)
10小染,緊急指針:占16位翘瓮,一般存放數(shù)字,表明數(shù)據(jù)部分前面有多少個(gè)字節(jié)是緊急的

 選項(xiàng)部分: 
   1裤翩,MSS资盅,每個(gè)段最大的數(shù)據(jù)部分大小,在建立連接時(shí)確定
   2踊赠,是否允許SACK
   3呵扛,window scale(窗口縮放系數(shù)),window * window scale得到真正的窗口值

TCP的要點(diǎn):

一:可靠傳輸
   當(dāng)服務(wù)器返回?cái)?shù)據(jù)較大時(shí)筐带,TCP會(huì)將數(shù)據(jù)分成多個(gè)段發(fā)送今穿,如果中途某個(gè)段丟失,TCP會(huì)將丟失的段重新發(fā)送伦籍,保證客戶端收到的數(shù)據(jù)是完整的

   停止等待ARQ協(xié)議:自動(dòng)重傳請求

     發(fā)送一個(gè)分組就停止發(fā)送等待確認(rèn)

     假設(shè)A和B進(jìn)行通信蓝晒,A要發(fā)三個(gè)包給B
     無差錯(cuò)情況:A發(fā)送M1,B確認(rèn)收到M1鸽斟,A發(fā)送M2拔创,B確認(rèn)收到M2,A發(fā)送M3富蓄,B確認(rèn)收到M3
     超時(shí)重傳:A發(fā)送M1剩燥,但是等到一定時(shí)間沒有收到B的確認(rèn),A重新發(fā)送M1
         B未收到或者收到發(fā)現(xiàn)包有問題沒有給回確認(rèn):確認(rèn)收到M1
         B收到后返回的確認(rèn)收到M1丟失:B丟棄重復(fù)的M1,重傳確認(rèn)M1
         A超時(shí)收到上次重復(fù)的確認(rèn)M1灭红,什么也不做
         
         超過了一定重傳次數(shù)或時(shí)間還沒收到對端的確認(rèn)報(bào)文侣滩,就會(huì)發(fā)送rst報(bào)文,斷開TCP連接

   連續(xù)ARQ協(xié)議+滑動(dòng)窗口協(xié)議:
      
      發(fā)送窗口中的分組連續(xù)發(fā)送变擒,發(fā)送完成后停止君珠,等待確認(rèn)
      
      1,建立TCP連接時(shí)娇斑,接收方告訴發(fā)送方接收窗口大小策添,此時(shí),發(fā)送方就設(shè)置發(fā)送窗口大小為接收窗口大泻晾隆(接收窗口大小和擁塞窗口大小的最小值)
      2唯竹,發(fā)送方將發(fā)送窗口數(shù)據(jù)分成多個(gè)包連續(xù)發(fā)送,B收到后發(fā)送確認(rèn)號(hào)苦丁,ACK=1浸颓,確認(rèn)號(hào)=期望收到下一次數(shù)據(jù)第一個(gè)字節(jié)編號(hào),
      3旺拉,發(fā)送方收到接收方的確認(rèn)標(biāo)識(shí)产上,將已經(jīng)收到的分組從緩存中刪除,滑動(dòng)窗口向前移蛾狗,繼續(xù)將下一個(gè)窗口數(shù)據(jù)分成多個(gè)包發(fā)送
      4晋涣,如果接收方收到的數(shù)據(jù)發(fā)生丟失,接收方給回連續(xù)收到的數(shù)據(jù)的下一個(gè)字節(jié)的確認(rèn)號(hào)淘太,并且已經(jīng)讀取的報(bào)文從緩存中刪除
      5姻僧,發(fā)送方收到接收方的確認(rèn)報(bào)文后,滑動(dòng)窗口向前移蒲牧,根據(jù)確認(rèn)標(biāo)識(shí)重新發(fā)送數(shù)據(jù),如果使用了選擇性確認(rèn)赌莺,則只重發(fā)丟失的數(shù)據(jù)

      接收方給回確認(rèn)時(shí)冰抢,會(huì)告訴發(fā)送方接收窗口大小
      如果接收窗口最多能接收4個(gè)包,但發(fā)送發(fā)只發(fā)送了2個(gè)包艘狭,接收方等待一段時(shí)間還沒有第3個(gè)包挎扰,接收方就會(huì)返回確認(rèn)收到兩個(gè)包給發(fā)送方

   SACK:選擇性確認(rèn)

      在TCP通信過程中,如果發(fā)送序列中間某個(gè)數(shù)據(jù)包丟失(比如1巢音、2遵倦、3、4官撼、5中的3丟失了)

      使用SACK之前:
       TCP會(huì)重傳最后確認(rèn)的分組后續(xù)的分組(最后確認(rèn)的是2梧躺,會(huì)重傳3,4,5)掠哥,這樣原先已經(jīng)正確傳輸?shù)姆纸M也會(huì)重新發(fā)送巩踏,降低了TCP性能

      使用SACK之后:
       接收方會(huì)告訴發(fā)送方,哪些數(shù)據(jù)丟失续搀,哪些數(shù)據(jù)已經(jīng)提前收到塞琼,使TCP只重新發(fā)送丟失的包,不用發(fā)送后續(xù)所有的分組

       實(shí)現(xiàn)方式:

         SACK信息會(huì)放在首部的選項(xiàng)部分禁舷,
         Kind:1個(gè)字節(jié)彪杉,5代表這是SACK選項(xiàng)
         Length:1個(gè)字節(jié),表明SACK選項(xiàng)一共占用多少個(gè)字節(jié)
         LeftEdge:占4個(gè)字節(jié)牵咙,左邊界
         RightEdge:占4個(gè)字節(jié)派近,右邊界

         最多攜帶4組邊界信息,SACK選項(xiàng)最大占用字節(jié) = 4 * 8 + 2 = 34

 為什么選擇在傳輸層就分成多個(gè)段霜大,而不是等到網(wǎng)絡(luò)層再分片傳遞給數(shù)據(jù)鏈路層构哺?
 為了提高重傳的性能,如果在傳輸層不分段战坤,一旦數(shù)據(jù)丟失曙强,整個(gè)傳輸層的數(shù)據(jù)都得重傳,如果在傳輸層分了段途茫,一旦出現(xiàn)數(shù)據(jù)丟失碟嘴,只需要重傳丟失的那些段即可


二:流量控制

   在發(fā)送方給接收方發(fā)送數(shù)據(jù)的過程中,接收方會(huì)告訴發(fā)送方接收方的接收窗口大小囊卜,從而控制發(fā)送方的發(fā)送速率娜扇,讓發(fā)送方的發(fā)送速率不要太快,讓接收方來得及接收處理栅组。發(fā)送方的發(fā)送窗口大小不能超過接收方給出的接收窗口大小雀瓢,當(dāng)發(fā)送方收到接收窗口大小為0時(shí),發(fā)送方就會(huì)停止發(fā)送數(shù)據(jù)玉掸。

   
   為什么要進(jìn)行流量控制:
   如果接收方的緩存區(qū)滿了刃麸,發(fā)送方還在瘋狂的發(fā)送數(shù)據(jù),接收方只能把收到的數(shù)據(jù)包丟掉司浪,大量的丟包會(huì)極大的浪費(fèi)網(wǎng)絡(luò)資源泊业,所以要進(jìn)行流量控制。
   
   
   特殊情況:
   如果接收方給發(fā)送方發(fā)送了0窗口的報(bào)文段啊易,后面接收方又有了一些存儲(chǔ)空間吁伺,給發(fā)送方發(fā)送的非0窗口的報(bào)文丟失了,發(fā)送方的發(fā)送窗口一直為0租谈,雙方陷入僵局篮奄。
   當(dāng)發(fā)送方接收到0窗口通知時(shí),這時(shí)發(fā)送方停止發(fā)送報(bào)文,并且同時(shí)開啟一個(gè)定時(shí)器宦搬,隔一段時(shí)間就發(fā)個(gè)測試報(bào)文去詢問接收方最新窗口大小牙瓢,如果接收的窗口大小還是0,則發(fā)送方再次刷新啟動(dòng)定時(shí)器间校。


三:擁塞控制

   擁塞控制是為了防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中
   避免網(wǎng)絡(luò)中的路由器或鏈路過載

   擁塞控制是一個(gè)全局性的過程矾克,涉及到所有主機(jī)、路由器憔足,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素胁附,是大家共同努力的結(jié)果。相比而言滓彰,流量控制是點(diǎn)對點(diǎn)通信的控制控妻。

   方法:

   慢開始:

     擁塞窗口的初始值比較小,然后隨著數(shù)據(jù)包被接收方確認(rèn)(收到一個(gè)ACK)揭绑,擁塞窗口就成指數(shù)級(jí)增長

   擁塞避免:

     當(dāng)擁塞窗口達(dá)到慢開始閾值后弓候,以線性方式增加(加法增大),擁塞窗口緩慢增大他匪,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞菇存。只要網(wǎng)絡(luò)出現(xiàn)擁塞,把慢開始閾值減半(乘法減邪蠲邸)依鸥,于此同時(shí),執(zhí)行慢開始算法(舊版本)悼沈。當(dāng)網(wǎng)絡(luò)出現(xiàn)頻繁擁塞時(shí)贱迟,慢開始閾值就下降的很快

   快重傳:

     接收方每收到一個(gè)失序的分組后就立即發(fā)出重復(fù)確認(rèn),使發(fā)送方及時(shí)知道有分組沒有到達(dá)絮供,而不要等待自己發(fā)送數(shù)據(jù)時(shí)才進(jìn)行確認(rèn)

     發(fā)送方只要連續(xù)收到三個(gè)重復(fù)確認(rèn)(總共4個(gè)確認(rèn))衣吠,就應(yīng)當(dāng)立即重傳對方尚未收到的報(bào)文段,而不必繼續(xù)等待重傳計(jì)時(shí)器到期后再重傳

   快恢復(fù):

     當(dāng)發(fā)送方連續(xù)收到三個(gè)重復(fù)確認(rèn)壤靶,為了預(yù)防網(wǎng)絡(luò)發(fā)生擁塞蒸播,就執(zhí)行乘法減小算法,把慢開始閾值減為擁塞峰值的一半萍肆,由于發(fā)送方現(xiàn)在認(rèn)為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞,因此不執(zhí)行慢開始算法胀屿,擁塞窗口不恢復(fù)到初始值塘揣,而是設(shè)置為慢開始閾值減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(加法增大)宿崭,使擁塞窗口緩慢線性增大
     

   MSS:每個(gè)段最大的數(shù)據(jù)部分大小亲铡,在建立連接時(shí)確定(選項(xiàng)部分)
   cwnd:擁塞窗口(發(fā)送方根據(jù)網(wǎng)絡(luò)狀況自己調(diào)整)
   rwnd:接收窗口
   swnd:發(fā)送窗口,= min(cwnd,rwnd)


四:連接管理
   
   建立連接奖蔓,三次握手:
     
     1赞草、客戶端處于CLOSE關(guān)閉狀態(tài),服務(wù)器處于LISTEN監(jiān)聽狀態(tài)吆鹤,等待客戶端連接

       客戶端發(fā)送連接請求厨疙,SYN=1,ACK=0要求建立連接疑务,ack=0沾凄,seq=s1

       此時(shí)客戶端進(jìn)入同步已發(fā)送狀態(tài),表示客戶端已發(fā)送SYN報(bào)文知允,等待服務(wù)器的第二次握手

     2撒蟀、服務(wù)器收到客戶端要求建立連接的請求,

        回復(fù)連接請求確認(rèn)温鸽,同意建立連接,SYN=1保屯,ACK=1,ack=s1+1涤垫,seq=s2

        服務(wù)器進(jìn)入同步已接收狀態(tài)姑尺,表示收到了SYN報(bào)文

     3、客戶端收到服務(wù)器的連接請求確認(rèn)雹姊,

        發(fā)送最后確認(rèn)股缸,SYN=0,ACK=1吱雏,ack=s2+1敦姻,seq=s1+1

        客戶端進(jìn)入ESTABLISHED連接已建立狀態(tài),服務(wù)器收到客戶端的ACK報(bào)文歧杏,服務(wù)器進(jìn)入ESTABLISHED連接已建立狀態(tài)



    前兩次握手的特點(diǎn):

      SYN都是1礁阁,數(shù)據(jù)部分長度是0筹陵,TCP頭部的長度是32字節(jié)

    為什么建立連接要進(jìn)行三次握手:

      主要目的:防止服務(wù)器端一直等待,浪費(fèi)資源

      如果建立連接只需要2次握手,可能出現(xiàn)的情況:

      假如客戶端發(fā)出的第一個(gè)連接請求報(bào)文段因?yàn)榫W(wǎng)絡(luò)延遲饱苟,在連接釋放以后的某個(gè)時(shí)間才到達(dá)服務(wù)器,本來這是一個(gè)已經(jīng)失效的連接請求旅挤,但服務(wù)器收到這個(gè)請求后饵婆,誤以為是客戶端再次發(fā)出的一個(gè)新的連接請求,于是服務(wù)器就向客戶端發(fā)出確認(rèn)報(bào)文段咐鹤,同意建立連接拗秘,如果不采用3次握手,那么只要服務(wù)器發(fā)出確認(rèn)祈惶,新的連接就建立了雕旨,由于現(xiàn)在客戶端并沒有真正想連接服務(wù)器的意愿扮匠,因此不會(huì)理睬服務(wù)器的確認(rèn),也不會(huì)向服務(wù)器發(fā)送數(shù)據(jù)凡涩,但服務(wù)器卻以為新的連接已經(jīng)建立棒搜,并一直等待客戶端發(fā)來數(shù)據(jù),這樣活箕,服務(wù)器的很多資源就白白浪費(fèi)了

      采用三次握手力麸,當(dāng)客戶端沒有向服務(wù)器的確認(rèn)發(fā)出確認(rèn),服務(wù)器由于收不到確認(rèn)讹蘑,就知道客戶端并沒有要求建立連接


   第3次握手失敗了末盔,服務(wù)器會(huì)怎么處理?

   此時(shí)座慰,服務(wù)器處于同步已接收狀態(tài)陨舱,若等不到客戶端的ACK,服務(wù)器就會(huì)重新發(fā)送SYN+ACK包版仔,如果服務(wù)器多次重發(fā)SYN+ACK都等不到客戶端的ACK游盲,就會(huì)發(fā)送RST包,強(qiáng)制關(guān)閉連接


   釋放連接蛮粮,四次揮手:


    1益缎,客戶端和服務(wù)器處于連接已建立狀態(tài)

       客戶端向?qū)Ψ桨l(fā)送FIN報(bào)文,F(xiàn)IN=1然想,ACK=1,seq=u莺奔,ack=v

       客戶端進(jìn)入終止等待1狀態(tài),表示想主動(dòng)關(guān)閉連接

    2变泄,服務(wù)器收到客戶端的FIN報(bào)文令哟,

       服務(wù)器回應(yīng)ACK報(bào)文給對方,ACK=1妨蛹,seq=v屏富,ack=u+1

       服務(wù)器處于關(guān)閉等待狀態(tài),在此狀態(tài)下服務(wù)器需要考慮自己是否還有數(shù)據(jù)發(fā)送給對方蛙卤,如果沒有狠半,發(fā)送FIN報(bào)文給對方

       客戶端收到服務(wù)器的ACK確認(rèn)后,就會(huì)處于終止等待2狀態(tài)颤难,等待對方發(fā)送FIN報(bào)文

    3神年,服務(wù)器發(fā)送FIN報(bào)文,F(xiàn)IN=1行嗤,ACK=1瘤袖,seq=w,ack=u+1

       服務(wù)器進(jìn)入最后確認(rèn)狀態(tài)昂验,等待對方的ACK報(bào)文

    4捂敌,客戶端收到服務(wù)器的FIN報(bào)文,

       客戶端回應(yīng)ACK報(bào)文既琴,ACK=1占婉,seq=u+1,ack=w+1

       客戶端進(jìn)入時(shí)間等待狀態(tài)甫恩,等2MSL后即進(jìn)入關(guān)閉狀態(tài)

       服務(wù)器收到客戶端的ACK報(bào)文逆济,進(jìn)入關(guān)閉狀態(tài)

    如果終止等待1狀態(tài)下,收到了對方同時(shí)帶FIN標(biāo)志和ACK標(biāo)志的報(bào)文時(shí)磺箕,可以直接進(jìn)入時(shí)間等待狀態(tài)奖慌,而無須進(jìn)入終止等待2狀態(tài)

    如果一方發(fā)送FIN報(bào)文后,沒有收到對方的ACK報(bào)文松靡,卻收到了對方的FIN報(bào)文简僧,就會(huì)進(jìn)入CLOSING狀態(tài),表示雙方都正在關(guān)閉連接雕欺。


    MSL:TCP報(bào)文在因特網(wǎng)上的最長生存時(shí)間岛马,每個(gè)具體的TCP實(shí)現(xiàn)都必須選擇一個(gè)確定的MSL值,RFC建議是2分鐘屠列,

    為什么客戶端發(fā)送ACK確認(rèn)后啦逆,需要有個(gè)時(shí)間等待階段,等待一段時(shí)間(一般是2倍的MSL)后再真正關(guān)閉連接笛洛?

    可以防止本次連接中產(chǎn)生的數(shù)據(jù)包誤傳到下一次的連接中夏志,

    如果客戶端發(fā)送ACK后馬上釋放了,然后又因?yàn)榫W(wǎng)絡(luò)原因苛让,服務(wù)器沒有收到客戶端的ACK沟蔑,服務(wù)器就會(huì)重發(fā)FIN,這時(shí)客戶端沒有任何響應(yīng)蝌诡,服務(wù)器那邊會(huì)干等溉贿,甚至多次重發(fā)FIN,浪費(fèi)資源浦旱。這時(shí)如果有一個(gè)新的應(yīng)用程序剛好分配了同一個(gè)端口號(hào)宇色,新的應(yīng)用程序收到FIN后馬上開始執(zhí)行斷開連接的操作,本來它可能是想跟服務(wù)器建立連接的颁湖。


    為什么釋放連接的時(shí)候宣蠕,要進(jìn)行4次揮手?

    TCP是全雙工模式甥捺,

      第1次揮手抢蚀,表示主機(jī)1告訴主機(jī)2,主機(jī)1已經(jīng)沒有數(shù)據(jù)要發(fā)送了镰禾,但是此時(shí)主機(jī)1還是可以接受來自主機(jī)2的數(shù)據(jù)

      第2次揮手皿曲,表示主機(jī)2已經(jīng)知道主機(jī)1沒有數(shù)據(jù)發(fā)送了唱逢,但主機(jī)2還是可以發(fā)送數(shù)據(jù)到主機(jī)1的

      第3次揮手,表示主機(jī)2告訴主機(jī)1屋休,主機(jī)2沒有數(shù)據(jù)要發(fā)送了

      第4次揮手坞古,表示主機(jī)1已經(jīng)知道主機(jī)2沒有數(shù)據(jù)發(fā)送了,隨后正式斷開整個(gè)TCP連接

應(yīng)用層:

協(xié)議:
 超文本傳輸協(xié)議:http劫樟、https
 文件傳輸:FTP
 電子郵件:SMTP痪枫、POP3、IMAP
 動(dòng)態(tài)主機(jī)配置:DHCP
 域名系統(tǒng):DNS
 webSocket

DNS:

利用DNS協(xié)議叠艳,可以將域名解析成對應(yīng)的IP地址奶陈,可以基于UDP也可以基于TCP,服務(wù)器占53端口

 域名的分類:

    通用頂級(jí)域名:.com .net .org .edu .gov  .int
    國家及地區(qū)頂級(jí)域名:.cn .jp .uk
    新通用頂級(jí)域名:.vip .top .club .shop
    二級(jí)域名:在通用頂級(jí)域名下附较,一般指域名注冊人的名稱 google baidu
            在國家及地區(qū)頂級(jí)域名下吃粒,指注冊的類別,com edu gov net

 
DNS域名解析過程:

  所有DNS服務(wù)器都記錄了根域名服務(wù)器的地址 .翅睛,上級(jí)DNS服務(wù)器記錄了下一級(jí)DNS服務(wù)器的地址声搁,全球一共13臺(tái)ipv4的DNS根域名服務(wù)器,25臺(tái)ipv6的DNS根域名服務(wù)器


  1捕发,客戶端發(fā)請求訪問最近的DNS服務(wù)器(可以是路由器)疏旨,如果有緩存直接返回,沒有緩存扎酷,訪問根DNS服務(wù)器
  2檐涝,根DNS服務(wù)器返回頂級(jí)域名服務(wù)器地址
  3,頂級(jí)域名服務(wù)器返回二級(jí)域名服務(wù)器
  4法挨,直到拿到ip地址谁榜,緩存到本地DNS服務(wù)器,返回給客戶端

DHCP:動(dòng)態(tài)主機(jī)配置協(xié)議凡纳,基于UDP窃植,客戶端端口68、服務(wù)器端口67

ip地址按分配方式分為:靜態(tài)IP地址荐糜、動(dòng)態(tài)IP地址(從DHCP服務(wù)器自動(dòng)獲认锪)

DHCP服務(wù)器會(huì)從IP地址池中,挑選一個(gè)IP地址暴氏,出租給客戶端一段時(shí)間延塑,時(shí)間到期就回收它們

路由器可以充當(dāng)DHCP服務(wù)器

分配地址過程:

  1,發(fā)廣播包(源IP0.0.0.0答渔, 目標(biāo)IP 255.255.255.255关带,目標(biāo)MAC FF:FF:FF:FF:FF)
  2,提供租約沼撕,服務(wù)器返回可以租用的IP地址宋雏,以及租用期限芜飘、子網(wǎng)掩碼、網(wǎng)關(guān)好芭、DNS等信息
  3燃箭,選擇IP地址,客戶端選擇一個(gè)OFFER舍败,發(fā)送廣播包進(jìn)行回應(yīng)
  4,確認(rèn)敬拓,被選中的服務(wù)器發(fā)送ACK數(shù)據(jù)包給客戶端
  5邻薯,自動(dòng)續(xù)約客戶端自動(dòng)在租期不足的時(shí)候發(fā)送消息申請續(xù)約

HTTP:

超文本傳輸協(xié)議,是互聯(lián)網(wǎng)中應(yīng)用最廣泛的應(yīng)用層協(xié)議之一乘凸,設(shè)計(jì)的初衷是為了提供一種發(fā)布和接收HTML頁面的方法厕诡,由URI來標(biāo)識(shí)具體的資源

版本:
   1991,0.9营勤,只支持GET請求
   1996灵嫌,1.0,支持POST葛作、HEAD寿羞,支持請求頭,響應(yīng)頭赂蠢,支持更多數(shù)據(jù)類型
   每次請求都需要建立一個(gè)TCP連接绪穆,請求后立即斷開連接
   1997,1.1虱岂,支持PUT玖院、DELETE,支持持久連接第岖,多個(gè)請求可以共用一個(gè)TCP連接
   2015难菌,2.0
   2018,3.0(草稿階段)


報(bào)文格式:ABNF標(biāo)準(zhǔn) 

   header-field蔑滓,0個(gè)或者多個(gè)

   請求報(bào)文: 

     請求方法 空格 URI 空格 版本 回車換行
     首部字段名 冒號(hào) (空格/TAB 0個(gè)或多個(gè)) 值 (空格/TAB 0個(gè)或多個(gè)) 回車換行
     首部字段名 冒號(hào) (空格/TAB 0個(gè)或多個(gè)) 值 (空格/TAB 0個(gè)或多個(gè)) 回車換行
     回車換行
     實(shí)體主體
   
   響應(yīng)報(bào)文:

     版本 空格 狀態(tài)碼 (空格 狀態(tài)碼的描述 0個(gè)或多個(gè)) 回車換行
     首部字段名 冒號(hào) (空格/TAB 0個(gè)或多個(gè)) 值 (空格/TAB 0個(gè)或多個(gè)) 回車換行
     首部字段名 冒號(hào) (空格/TAB 0個(gè)或多個(gè)) 值 (空格/TAB 0個(gè)或多個(gè)) 回車換行
     回車換行
     實(shí)體主體


   請求方法:

     GET:用于讀取操作郊酒,獲取某個(gè)資源,請求參數(shù)直接拼接在URL后面
     POST:用于添加烫饼、修改猎塞、刪除,請求參數(shù)放在請求體
     HEAD:得到和GET請求相同的響應(yīng)(狀態(tài)行杠纵、響應(yīng)頭)荠耽,但是沒有響應(yīng)體,使用場景:在下載大文件前比藻,先獲取其大小铝量,再?zèng)Q定是否要下載倘屹,以此可以節(jié)約帶寬資源
     OPTIONS:用于獲取目的資源所支持的通信選項(xiàng),比如服務(wù)器支持的請求方法
     TRACE:請求服務(wù)器回顯其收到的請求信息慢叨,主要用于HTTP請求的測試或診斷
     PUT:用于對已存在的資源進(jìn)行整體覆蓋
     DELETE:用于刪除指定資源
     PATCH:用于對資源進(jìn)行部分修改(資源不存在纽匙,會(huì)創(chuàng)建新的資源)
     CONNECT:可以開啟一個(gè)客戶端與所請求資源之間的雙向溝通的通道,可以用來創(chuàng)建隧道拍谐,可以用來訪問采用了SSL(HTTPS)協(xié)議的站點(diǎn)  烛缔??轩拨?


     
   狀態(tài)碼:

      信息響應(yīng) 100~199 :
         100: Continue践瓷,請求的初始部分(URL、請求頭)已經(jīng)被服務(wù)器收到亡蓉,并且沒有被服務(wù)器拒絕晕翠,客戶端應(yīng)該繼續(xù)發(fā)送剩余的請求,如果請求已經(jīng)完成砍濒,就忽略這個(gè)響應(yīng)
         
      成功響應(yīng) 200~299 :
         200: 請求成功

      重定向 300~399 :

         302: 重定向淋肾,請求的資源被重定向到Location指定的地址
         304: Not Modified, 說明無需再次傳輸請求的內(nèi)容,也就是說可以使用緩存的內(nèi)容

      客戶端錯(cuò)誤 400~499 :
         400: Bad Request爸邢,請求報(bào)文語法無效
         401:缺少身份驗(yàn)證憑證
         403:服務(wù)器有能力處理該請求樊卓,但是拒絕授權(quán)訪問
         404:資源找不到
         405:請求方法不允許
         406:服務(wù)器無法提供客戶端想要的編碼格式
         408:服務(wù)器想要將沒有在使用的連接關(guān)閉

      服務(wù)器錯(cuò)誤 500~599 :
         500: 服務(wù)器報(bào)錯(cuò)
         501: 請求的方法不被服務(wù)器支持(GET、HEAD必須支持)
         502:
         503:服務(wù)器尚未處于可以接受請求的狀態(tài)


   請求頭:

     User-Agent:瀏覽器(客戶端)的身份標(biāo)識(shí)字符串
     Host:服務(wù)器的域名甲棍、端口號(hào)
     Date:發(fā)送消息的日期和時(shí)間
     Content-Type:請求體的類型
     Content-Length:請求體的長度
     Referer:瀏覽器訪問的前一個(gè)頁面
     Accept:能夠接受的響應(yīng)體類型
     Accept-Charset:能夠接受的字符集
     Accept-Encoding:能夠接受的編碼方式
     Accept-Language:能夠接受的響應(yīng)內(nèi)容的語言
     Range:僅請求某個(gè)實(shí)體的一部分?jǐn)?shù)據(jù)简识,字節(jié)偏移以0開始,常用于多線程斷點(diǎn)下載
     Connection:想要優(yōu)先使用的連接類型感猛,keep-alive持久連接
     Origin:發(fā)起一個(gè)針對跨域資源共享的請求七扰,告訴服務(wù)器跨域的源
     Cookie:用于會(huì)話跟蹤,自動(dòng)保存之前由服務(wù)器通過Set-Cookie發(fā)送的Cookie
     If-None-Match:如果上一次響應(yīng)頭里有Etag陪白,就會(huì)將Etag的值作為請求頭的值
     If-Modified-Since:如果上一次的響應(yīng)頭里沒有Etag颈走,有Last-Modified,就會(huì)將Last-Modified的值作為請求頭的值


   響應(yīng)頭:

     Date:發(fā)送消息的日期和時(shí)間
     Last-Modified:所請求對象的最后修改時(shí)間
     Server:服務(wù)器的名字
     Expires:指定一個(gè)時(shí)間咱士,超過該時(shí)間則認(rèn)為此響應(yīng)已經(jīng)過期
     Content-Type:響應(yīng)體的類型
     Content-Encoding:響應(yīng)體的編碼類型
     Content-Length:響應(yīng)體的長度
     Accept-Range:服務(wù)器支持哪些種類的部分內(nèi)容范圍
     Content-Range:這條部分消息是數(shù)據(jù)完整消息的哪部分
     Content-Dispositon:可以讓客戶端下載文件并建議文件名的頭部
     Location:用來進(jìn)行重定向
     Access-Control-Allow-Origin:告訴瀏覽器這時(shí)一個(gè)允許跨域訪問的請求立由,允許哪些源跨域
     Set-Cookie:用于會(huì)話跟蹤,區(qū)分請求來自哪個(gè)瀏覽器序厉,服務(wù)器返回一個(gè)Cookie讓客戶端去保存
     Cache-Control:緩存策略
       no-storage锐膜,不緩存數(shù)據(jù)到本地
       public,允許用戶弛房、代理服務(wù)器緩存數(shù)據(jù)到本地
       private道盏,只允許用戶緩存數(shù)據(jù)到本地
       max-age,緩存的有效時(shí)間,單位秒
       no-cache荷逞,每次需要發(fā)請求給服務(wù)器詢問緩存是否有變化媒咳,再來決定如何使用緩存
     Last-Modified:資源的最后修改時(shí)間
     Etag:資源的唯一標(biāo)識(shí)(根據(jù)文件內(nèi)容計(jì)算出來的摘要值)
     Pragma:類似于Cache-Control,1.0版本



   緩存機(jī)制:
     
     通常將GET請求 + 靜態(tài)資源進(jìn)行緩存

     Last-Modified的缺陷:只能精確到秒級(jí)別种远,如果資源在1秒內(nèi)被修改了涩澡,客戶端無法獲取最新的額資源數(shù)據(jù),如果某些數(shù)據(jù)最后一次修改時(shí)間發(fā)生了變化但是內(nèi)容并沒有任何變化坠敷,會(huì)導(dǎo)致相同數(shù)據(jù)重復(fù)傳輸

     
     1妙同,客戶端發(fā)送GET請求
     2,判斷本地是否有緩存膝迎,如果本地沒有緩存渐溶,請求服務(wù)器,如果返回響應(yīng)頭Cache-Control不為為no-storage則將響應(yīng)體數(shù)據(jù)緩存到本地弄抬。
     3,如果本地有緩存宪郊,判斷響應(yīng)頭Cache-Control是否為no-cache掂恕,如果不是,判斷緩存過期時(shí)間弛槐,如果沒有過期懊亡,直接使用本地緩存
     4,如果緩存過期或者Cache-Control為no-cache乎串,請求服務(wù)器店枣,此時(shí)可能帶上請求頭If-None-Match(如果響應(yīng)頭有Etag)或者If-Modified-Since(響應(yīng)頭沒有Etag并且有Last-Modified),如果服務(wù)器返回304叹誉,則直接使用緩存
     5鸯两,如果服務(wù)器返回不是304,則使用最新數(shù)據(jù)长豁,同時(shí)判斷是否需要緩存



代理服務(wù)器:

     本身不生產(chǎn)內(nèi)容钧唐,處于中間位置轉(zhuǎn)發(fā)上下游的請求和響應(yīng),面向下游的客戶端匠襟,他是服務(wù)器钝侠,面向上游的服務(wù)器他是客戶端

     正向代理:代理客戶端
         作用:
           隱藏客戶端身份
           繞過防火墻
           Internet訪問控制
           數(shù)據(jù)過濾

     反向代理:代理服務(wù)器
           隱藏服務(wù)器身份
           安全防護(hù)
           負(fù)載均衡

  

 CDN:內(nèi)容分發(fā)網(wǎng)絡(luò)

     CDN分發(fā)過程:
        1,用戶發(fā)起請求
        2酸舍,DNS進(jìn)行域名解析帅韧,DNS會(huì)根據(jù)用戶IP地理位置、接入網(wǎng)絡(luò)類型啃勉、返回離用戶路由最短忽舟、負(fù)載最輕的緩存服務(wù)器
        3,獲得緩存服務(wù)器IP
        4,如果緩存中有目標(biāo)資源萧诫,將目標(biāo)資源返回給用戶
        5斥难,如果緩存中沒有目標(biāo)資源,則向源站發(fā)起請求帘饶,把獲取的內(nèi)容保存在緩存服務(wù)器哑诊,并返回給用戶

網(wǎng)絡(luò)安全:

網(wǎng)絡(luò)通信過程中面臨的4種安全威脅:

 截獲:竊聽通信內(nèi)容

 中斷:中斷網(wǎng)絡(luò)通信

 篡改:篡改通信內(nèi)容

 偽造:偽造通信內(nèi)容


1,ARP欺騙 - 網(wǎng)絡(luò)層

   可以讓攻擊者獲取局域網(wǎng)上的數(shù)據(jù)包甚至可篡改數(shù)據(jù)包及刻,可以讓網(wǎng)絡(luò)上特定電腦之間無法正常通信镀裤,可以讓送至特定IP地址的流量被錯(cuò)誤送到攻擊者所取代的地方

   通過在主機(jī)發(fā)送ARP廣播時(shí),向主機(jī)返回錯(cuò)誤的MAC地址

   防護(hù):靜態(tài)ARP缴饭,通過DHCP暑劝,一些防護(hù)軟件

2,Dos颗搂、DDos

   帶寬消耗型:UDP洪水攻擊担猛、ICMP洪水攻擊
   資源消耗型:SYN洪水攻擊、LAND攻擊

   防護(hù)方式:防火墻丢氢、交換機(jī)傅联、路由器

2.1 SYN洪水攻擊 - 傳輸層

    攻擊者發(fā)送一系列的SYN請求到目標(biāo),然后讓目標(biāo)因收不到ACK(第三次握手)而進(jìn)行等待疚察、消耗資源

    方法:修改源IP地址蒸走,讓目標(biāo)送SYN、ACK到偽造的IP地址貌嫡,因此目標(biāo)永遠(yuǎn)不可能收到ACK

2.2 LIND攻擊 - 傳輸層

    持續(xù)發(fā)送相同源地址和目標(biāo)地址的欺騙數(shù)據(jù)包比驻,使目標(biāo)試圖與自己建立連接,消耗系統(tǒng)資源直至崩潰

    防護(hù):防火墻岛抄、路由器

3 DNS劫持

  攻擊者篡改了某個(gè)域名的解析結(jié)果别惦,使得指向該域名的IP變成了另一個(gè)IP,導(dǎo)致對響應(yīng)網(wǎng)址的訪問被劫持到另一個(gè)不可達(dá)的或者假冒的網(wǎng)址弦撩,從而實(shí)現(xiàn)非法竊取用戶信息或者破壞正常網(wǎng)絡(luò)服務(wù)的目的

4 HTTP劫持

  對HTTP數(shù)據(jù)包進(jìn)行攔截處理步咪,比如插入JS代碼

HTTPS:

超文本傳輸安全協(xié)議(使用了TLS、SLL的HTTP)益楼,默認(rèn)端口443

SSL/TLS(傳輸層安全性協(xié)議)工作在應(yīng)用層和傳輸層中間

成本:

  證書的費(fèi)用

  加解密計(jì)算

  降低了訪問速度


通信過程:

 一猾漫、TCP三次握手

 二、TLS連接(TLS1.2)

  協(xié)商TLS版本感凤,加密套件

  1悯周,Client Hello:客戶端發(fā)送TLS版本號(hào)、支持的加密套件列表陪竿、一個(gè)隨機(jī)數(shù)
  2禽翼,Server Hello: 服務(wù)器發(fā)送TLS版本屠橄,選擇的加密套件,一個(gè)隨機(jī)數(shù)
  3闰挡,Certificate:服務(wù)器發(fā)送服務(wù)器的公鑰證書(被CA簽名過的)
  4锐墙,Server Key Exchange:服務(wù)器發(fā)送用以實(shí)現(xiàn)密鑰交換算法的一個(gè)參數(shù),為了防止偽造长酗,參數(shù)是經(jīng)過服務(wù)器私鑰簽名的(客戶端用第三部服務(wù)器發(fā)送的公鑰進(jìn)行驗(yàn)證)
  5溪北,Sever Hello Done:告知客戶端,協(xié)商部分結(jié)束
  6夺脾,Client Key Exchange:客戶端發(fā)送用以實(shí)現(xiàn)密鑰交換算法的另一個(gè)參數(shù)

  到目前為止之拨,客戶端和服務(wù)器都擁有了迷藥交換算法的兩個(gè)參數(shù),客戶端和服務(wù)器都可以使用密鑰交換算法根據(jù)這兩個(gè)參數(shù)計(jì)算出一個(gè)新的隨機(jī)密鑰串咧叭,然后結(jié)合客戶端和服務(wù)器分別生成的隨機(jī)數(shù)和隨機(jī)密鑰串生成一個(gè)主密鑰蚀乔,最后利用主密鑰衍生出其他密鑰,客戶端發(fā)送用的會(huì)話密鑰菲茬、服務(wù)器發(fā)送用戶會(huì)話密鑰

  7吉挣、Change Cipher Spec:客戶端告知服務(wù)器,之后的通信會(huì)采用計(jì)算出的會(huì)話密鑰進(jìn)行加密

  8婉弹、Finished:客戶端發(fā)送 加密包含連接至今全部報(bào)文的整體摘要值听想,加密之后發(fā)送給服務(wù)器

  9、Change Cipher:服務(wù)器告知客戶端马胧,之后的通信會(huì)采用計(jì)算出的會(huì)話密鑰進(jìn)行加密
  10、Finished:服務(wù)器發(fā)送 加密包含連接至今全部報(bào)文的整體摘要值衔峰,加密之后發(fā)送給客戶端

    到此為止佩脊,客戶端服務(wù)器都驗(yàn)證加密解密沒問題,握手正式結(jié)束


 三垫卤、HTTP請求和響應(yīng)  


 HTTP(HTTP/1.1)協(xié)議的不足:

  1威彰、同一時(shí)間、一個(gè)連接只能對應(yīng)一個(gè)請求
     針對同一個(gè)域名穴肘,大多數(shù)瀏覽器允許同時(shí)最多6個(gè)并發(fā)連接
  
  2歇盼,只允許客戶端主動(dòng)發(fā)起請求
     一個(gè)請求只能對應(yīng)一個(gè)響應(yīng)

  3,同一個(gè)請求會(huì)話的多次請求中评抚,頭信息會(huì)被重復(fù)傳輸
     通常會(huì)給每個(gè)傳輸增加500~800字節(jié)的開銷豹缀,如果使用Cookie,增加的開銷有時(shí)會(huì)達(dá)到上千字節(jié)


 SPDY(speedy),Google開發(fā)的基于TCP的應(yīng)用層協(xié)議慨代,強(qiáng)制要求使用SSL/TLS邢笙,以提高網(wǎng)絡(luò)速度,它修改了HTTP請求和響應(yīng)的傳輸方式

 SPDY是HTTP/2的前身

HTTP/2:
于2015年正式發(fā)表侍匙,
http/2在底層傳輸做了很多改進(jìn)和優(yōu)化氮惯,但在語義上完全與HTTP/1.1兼容,因此想要升級(jí)到HTTP/2,開發(fā)者不需要修改任何代碼妇汗,只需要升級(jí)服務(wù)器配置帘不、升級(jí)瀏覽器

特性:

1,二進(jìn)制格式杨箭,http/2采用二進(jìn)制格式傳輸數(shù)據(jù)寞焙,而非1.1的文本格式,二進(jìn)制格式在協(xié)議的解析和優(yōu)化擴(kuò)展上帶來更多的優(yōu)勢告唆。

2棺弊,多路復(fù)用,客戶端和服務(wù)器可以將http消息分解為互不依賴的幀擒悬,然后交錯(cuò)發(fā)送模她,最后再再另一端把它們重新組裝起來,可以使用一個(gè)連接并行發(fā)送多個(gè)請求和響應(yīng)

3懂牧,優(yōu)先級(jí)侈净,允許每個(gè)數(shù)據(jù)流都有一個(gè)關(guān)聯(lián)的權(quán)重和依賴關(guān)系,可以向每個(gè)數(shù)據(jù)流分配一個(gè)介于1至256之間的整數(shù)僧凤,每個(gè)數(shù)據(jù)流與其他數(shù)據(jù)流之間可以存在顯式依賴關(guān)系畜侦,客戶端可以構(gòu)建和傳遞優(yōu)先級(jí)樹,表明它傾向于如何接收響應(yīng)躯保,服務(wù)器可以使用此信息通過控制CPU旋膳、內(nèi)存和其他資源的分配設(shè)定數(shù)據(jù)流處理的優(yōu)先級(jí),在資源數(shù)據(jù)可用之后途事,確保將高優(yōu)先級(jí)響應(yīng)以最優(yōu)先方式傳輸至客戶端

4,頭部壓縮验懊,http/2使用HPACK壓縮請求頭和響應(yīng)頭,極大減小頭部開銷尸变,進(jìn)而提高性能
維護(hù)頭部信息哈希表义图,只發(fā)送對應(yīng)頭信息的索引

5,服務(wù)器推送,服務(wù)器可以對一個(gè)客戶端請求發(fā)送多個(gè)響應(yīng)召烂,除了對最初請求的響應(yīng)外碱工,服務(wù)器還可以向客戶端推送額外資源,而無需客戶端額外明確要求

問題:

 1奏夫,隊(duì)頭阻塞:

 2怕篷,握手延遲:

HTTP/3

由Google開發(fā),棄用TCP酗昼,改為基于UDP協(xié)議的QUIC協(xié)議實(shí)現(xiàn)

TLS -> QUIC + TLS

TCP -> UDP

由QUIC保證可靠傳輸

HTTP3特性:

  1匙头,連接遷移

    TCP基于4要素(源IP、目標(biāo)IP仔雷、源端口蹂析、目標(biāo)端口)舔示,切換網(wǎng)絡(luò)時(shí)導(dǎo)致連接發(fā)生變化

    QUIC連接不受4要素影響,當(dāng)4要素發(fā)生變化時(shí)电抚,原連接依然維持惕稻,QUIC連接以一組Connection ID來標(biāo)識(shí)一個(gè)連接,即使IP或者端口發(fā)生變化蝙叛,只要ConnectionID沒有變化俺祠,那么連接依然可以維持
  
  2, 向前糾錯(cuò)

 HTTP3問題:操作系統(tǒng)內(nèi)核、CPU負(fù)載

    與基于TLS的HTTP/2相比借帘,大規(guī)模部署QUIC需要近2倍的CPU使用量蜘渣,Linux內(nèi)核的UDP部分沒有得到像TCP那樣的優(yōu)化,因?yàn)閭鹘y(tǒng)上沒有使用UDP進(jìn)行如此高速的信息傳輸肺然,TCP和TLS有硬件加速蔫缸,而對于UDP很罕見,對于QUIC基本不存在

webSocket協(xié)議:

基于TCP支持全雙工通信的應(yīng)用層協(xié)議际起,客戶端服務(wù)器都可以主動(dòng)發(fā)消息給對方拾碌,
使用場景:社交訂閱、體育實(shí)況更新街望、多媒體聊天校翔、股票基金報(bào)價(jià)
使用80、443端口
需要先建立連接

webService:web服務(wù)灾前,是一種跨編程語言和操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)防症,現(xiàn)在很多企業(yè)開發(fā)平臺(tái)都是采用web api

SOAP:簡單對象訪問協(xié)議,很多時(shí)候 SOAP = HTTP + XML

webService使用SOAP來封裝傳遞數(shù)據(jù)

HTTPDNS:基于HTTP協(xié)議向DNS服務(wù)器發(fā)送域名解析請求哎甲,移動(dòng)端集成相關(guān)的SDK就可以使用HTTPDNS服務(wù)

FTP:文件傳輸協(xié)議告希,基于TCP

郵件相關(guān)協(xié)議:

SMTP:簡單郵件傳輸協(xié)議 基于TCP
POP、POP3:郵局協(xié)議
IMAP:因特網(wǎng)信息訪問協(xié)議

IPV6烧给,128位,每16位為一組喝噪,共8組础嫡,每組前面連續(xù)的0可以省略,可以采用雙冒號(hào)表示1組或者多組連續(xù)的0酝惧,但只能出現(xiàn)一次

即時(shí)通信常用協(xié)議:

XMPP榴鼎,基于TCP,特點(diǎn):使用XML格式進(jìn)行傳輸晚唇、體積較大巫财,比較成熟的IM協(xié)議,接入方便

MQTT哩陕,基于TCP平项,特點(diǎn):開銷很小赫舒,以減低網(wǎng)絡(luò)流量,信息冗余遠(yuǎn)小于XMPP闽瓢,很多人認(rèn)為MQTT最適合物聯(lián)網(wǎng)

流媒體協(xié)議

RTP(UDP)接癌、
RTCP(UDP)、
RTSP(TCP揭蜒、UDP)焕盟、
RTMP(TCP)中姜、
HLS(HTTP)

網(wǎng)絡(luò)互聯(lián)模型

物理層、數(shù)據(jù)鏈路層荔燎、網(wǎng)絡(luò)層、運(yùn)輸層销钝、會(huì)話層有咨、表示層、應(yīng)用層
網(wǎng)絡(luò)接口層曙搬、網(wǎng)際層摔吏、運(yùn)輸層、應(yīng)用層
物理層(比特流)纵装、數(shù)據(jù)鏈路層(幀)征讲、網(wǎng)絡(luò)層(包)、運(yùn)輸層(段)橡娄、應(yīng)用層(報(bào)文)

計(jì)算機(jī)之間的通信方式:

網(wǎng)線直連诗箍、同軸電纜、集線器挽唉、網(wǎng)橋滤祖、交換機(jī)、(連接的設(shè)備在同一網(wǎng)段瓶籽、處在同一廣播域)

路由器(可以在不同網(wǎng)段之間轉(zhuǎn)發(fā)數(shù)據(jù)匠童、隔絕廣播域)

MAC地址:

6字節(jié)(48位),前三個(gè)字節(jié)組織唯一標(biāo)識(shí)符塑顺,由注冊管理機(jī)構(gòu)分配給廠商汤求,后三個(gè)字節(jié)網(wǎng)絡(luò)接口標(biāo)識(shí)符,由廠商自行分配

當(dāng)48位全是1時(shí)严拒,代表廣播地址

ARP協(xié)議:地址解析協(xié)議扬绪,通過IP地址獲取MAC地址
當(dāng)不知道對方主機(jī)的MAC地址時(shí),可以通過發(fā)送ARP廣播獲取對方的MAC地址裤唠,獲取成功后挤牛,會(huì)緩存IP地址、MAC地址的映射信息种蘸,俗稱ARP緩存墓赴,通過ARP廣播獲取的MAC地址竞膳,屬于動(dòng)態(tài)緩存,存儲(chǔ)時(shí)間比較短(默認(rèn)2分鐘)竣蹦,過期了自動(dòng)刪除

IPV4:

IP地址由兩個(gè)部分組成顶猜,網(wǎng)絡(luò)ID和主機(jī)ID,通過子網(wǎng)掩碼可以得知網(wǎng)絡(luò)ID痘括、主機(jī)ID
主機(jī)所在網(wǎng)段 = 子網(wǎng)掩碼 & IP地址

IP地址的分類

A類: 0開頭长窄,默認(rèn)子網(wǎng)掩碼 255.0.0.0
     第一部分取值 1 ~ 126
B類:10開頭,默認(rèn)子網(wǎng)掩碼 255.255.0.0
    第一部分取值 128 ~ 191
C類:110開頭纲菌,默認(rèn)子網(wǎng)掩碼 255.255.255.0.0
    第一部分取值 192 ~ 223
D類:1110開頭
    第一部分取值 240 ~ 255
E類:1111開頭

主機(jī)ID全是0挠日,代表主機(jī)所在的網(wǎng)段
主機(jī)ID全是1,代碼主機(jī)所在網(wǎng)段的廣播

子網(wǎng):子網(wǎng)掩碼向右移

超網(wǎng):子網(wǎng)掩碼向左移

數(shù)據(jù)鏈路層:

廣播信道:CSMA/CD協(xié)議翰舌,
首部:源MAC嚣潜、目標(biāo)MAC、網(wǎng)絡(luò)類型
以太網(wǎng)幀:首部 + 數(shù)據(jù) + FCS
數(shù)據(jù)部分至少是:64 - 6 - 6 - 2 - 4 = 46字節(jié)
以太網(wǎng)幀的長度:64 ~ 1518

點(diǎn)對點(diǎn)信道:PPP協(xié)議

3個(gè)特點(diǎn):

 封裝成幀
 透明傳輸:
   使用SOH作為幀開始符椅贱,使用EOT作為幀結(jié)束符懂算,數(shù)據(jù)部分一旦出現(xiàn)了SOH、EOT就進(jìn)行轉(zhuǎn)義
 差錯(cuò)檢驗(yàn)
    根據(jù)數(shù)據(jù)部分和首部計(jì)算出 FCS

數(shù)據(jù)鏈路層的幀長:以太網(wǎng)最大傳輸單元MTU1500字節(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庇麦,一起剝皮案震驚了整個(gè)濱河市计技,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌山橄,老刑警劉巖垮媒,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異航棱,居然都是意外死亡睡雇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門饮醇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來它抱,“玉大人,你說我怎么就攤上這事朴艰」坌睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵呵晚,是天一觀的道長。 經(jīng)常有香客問我沫屡,道長饵隙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任沮脖,我火速辦了婚禮金矛,結(jié)果婚禮上芯急,老公的妹妹穿的比我還像新娘。我一直安慰自己驶俊,他們只是感情好娶耍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饼酿,像睡著了一般榕酒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上故俐,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天想鹰,我揣著相機(jī)與錄音,去河邊找鬼药版。 笑死辑舷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的槽片。 我是一名探鬼主播何缓,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼还栓!你這毒婦竟也來了碌廓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蝙云,失蹤者是張志新(化名)和其女友劉穎氓皱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勃刨,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡波材,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了身隐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷区。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贾铝,靈堂內(nèi)的尸體忽然破棺而出隙轻,到底是詐尸還是另有隱情,我是刑警寧澤垢揩,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布玖绿,位于F島的核電站,受9級(jí)特大地震影響叁巨,放射性物質(zhì)發(fā)生泄漏斑匪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一锋勺、第九天 我趴在偏房一處隱蔽的房頂上張望蚀瘸。 院中可真熱鬧狡蝶,春花似錦、人聲如沸贮勃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寂嘉。三九已至奏瞬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垫释,已是汗流浹背丝格。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棵譬,地道東北人显蝌。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像订咸,于是被迫代替她去往敵國和親曼尊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353