九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
計算機網(wǎng)絡(luò)知識梳理(4)——TCP/UDP、TCP三次握手與四次揮手

TCP/IP協(xié)議是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。通俗而言:TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址。

注:seq:'sequance'序列號;ack:'acknowledge'確認(rèn)號;SYN:'synchronize'請求同步標(biāo)志;;ACK:'acknowledge'確認(rèn)標(biāo)志';FIN:'Finally'結(jié)束標(biāo)志。

第一次握手:
客戶端發(fā)送一個TCP的SYN標(biāo)志位置1的包指明客戶打算連接的服務(wù)器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。


第二次握手:
服務(wù)器發(fā)回確認(rèn)包(ACK)應(yīng)答。即SYN標(biāo)志位和ACK標(biāo)志位均為1同時,將確認(rèn)序號(Acknowledgement Number)設(shè)置為客戶的I S N加1以.即X+1。

第三次握手.
客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1.并且把服務(wù)器發(fā)來ACK的序號字段+1,放在確定字段中發(fā)送給對方.并且在數(shù)據(jù)段放寫ISN的+1

SYN攻擊
在三次握手過程中,服務(wù)器發(fā)送SYN-ACK之后,收到客戶端的ACK之前的TCP連接稱為半連接(half-open connect).此時服務(wù)器處于Syn_RECV狀態(tài).當(dāng)收到ACK后,服務(wù)器轉(zhuǎn)入ESTABLISHED狀態(tài).
Syn攻擊就是 攻擊客戶端 在短時間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷地發(fā)送syn包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直 至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標(biāo)系統(tǒng)運行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。
Syn攻擊是一個典型的DDOS攻擊。檢測SYN攻擊非常的方便,當(dāng)你在服務(wù)器上看到大量的半連接狀態(tài)時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊.在Linux下可以如下命令檢測是否被Syn攻擊
netstat -n -p TCP | grep SYN_RECV
一般較新的TCP/IP協(xié)議棧都對這一過程進行修正來防范Syn攻擊,修改tcp協(xié)議實現(xiàn)。主要方法有SynAttackProtect保護機制、SYN cookies技術(shù)、增加最大半連接和縮短超時時間等.
但是不能完全防范syn攻擊。

wireshark抓包

1.為什么建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次握手呢?

這是因為服務(wù)端的LISTEN狀態(tài)下的SOCKET當(dāng)收到SYN報文的連接請求后,它可以把ACK和SYN(ACK起應(yīng)答作用,而SYN起同步作用)放在一個報文里來發(fā)送。但關(guān)閉連接時,當(dāng)收到對方的FIN報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可能未必會馬上會關(guān)閉SOCKET,也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送FIN報文給對方來表示你同意現(xiàn)在可以關(guān)閉連接了,所以它這里的ACK報文和FIN報文多數(shù)情況下都是分開發(fā)送的。

2.為什么TIME_WAIT狀態(tài)還需要等2MSL后才能返回到CLOSED狀態(tài)?

這個問題可以參考《unix 網(wǎng)絡(luò)編程》(第三版,2.7 TIME_WAIT狀態(tài))。

TIME_WAIT狀態(tài)由兩個存在的理由。

(1)可靠的實現(xiàn)TCP全雙工鏈接的終止。

這是因為雖然雙方都同意關(guān)閉連接了,而且握手的4個報文也都協(xié)調(diào)和發(fā)送完畢,按理可以直接回到CLOSED狀態(tài)(就好比從SYN_SEND狀態(tài)到ESTABLISH狀態(tài)那樣);但是因為我們必須要假想網(wǎng)絡(luò)是不可靠的,你無法保證你最后發(fā)送的ACK報文會一定被對方收到,因此對方處于LAST_ACK狀態(tài)下的SOCKET可能會因為超時未收到ACK報文,而重發(fā)FIN報文,所以這個TIME_WAIT狀態(tài)的作用就是用來重發(fā)可能丟失的ACK報文。

(2)允許老的重復(fù)的分節(jié)在網(wǎng)絡(luò)中消逝。

假 設(shè)在12.106.32.254的1500端口和206.168.1.112.219的21端口之間有一個TCP連接。我們關(guān)閉這個鏈接,過一段時間后在 相同的IP地址和端口建立另一個連接。后一個鏈接成為前一個的化身。因為它們的IP地址和端口號都相同。TCP必須防止來自某一個連接的老的重復(fù)分組在連 接已經(jīng)終止后再現(xiàn),從而被誤解成屬于同一鏈接的某一個某一個新的化身。為做到這一點,TCP將不給處于TIME_WAIT狀態(tài)的鏈接發(fā)起新的化身。既然 TIME_WAIT狀態(tài)的持續(xù)時間是MSL的2倍,這就足以讓某個方向上的分組最多存活msl秒即被丟棄,另一個方向上的應(yīng)答最多存活msl秒也被丟棄。 通過實施這個規(guī)則,我們就能保證每成功建立一個TCP連接時。來自該鏈接先前化身的重復(fù)分組都已經(jīng)在網(wǎng)絡(luò)中消逝了。

3. 為什么不能用兩次握手進行連接?

我們知道,3次握手完成兩個重要的功能,既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作(雙方都知道彼此已準(zhǔn)備好),也要允許雙方就初始序列號進行協(xié)商,這個序列號在握手過程中被發(fā)送和確認(rèn)。
現(xiàn)在把三次握手改成僅需要兩次握手,死鎖是可能發(fā)生的。作為例子,考慮計算機S和C之間的通信,假定C給S發(fā)送一個連接請求分組,S收到了這個分組,并發(fā) 送了確認(rèn)應(yīng)答分組。按照兩次握手的協(xié)定,S認(rèn)為連接已經(jīng)成功地建立了,可以開始發(fā)送數(shù)據(jù)分組??墒?,C在S的應(yīng)答分組在傳輸中被丟失的情況下,將不知道S 是否已準(zhǔn)備好,不知道S建立什么樣的序列號,C甚至懷疑S是否收到自己的連接請求分組。在這種情況下,C認(rèn)為連接還未建立成功,將忽略S發(fā)來的任何數(shù)據(jù)分 組,只等待連接確認(rèn)應(yīng)答分組。而S在發(fā)出的分組超時后,重復(fù)發(fā)送同樣的分組。這樣就形成了死鎖。

常見面試題:

  • TCP協(xié)議和UDP協(xié)議的區(qū)別是什么
    • TCP協(xié)議是有連接的,有連接的意思是開始傳輸實際數(shù)據(jù)之前TCP的客戶端和服務(wù)器端必須通過三次握手建立連接,會話結(jié)束之后也要結(jié)束連接。而UDP是無連接的
    • TCP協(xié)議保證數(shù)據(jù)按序發(fā)送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發(fā)送的序列,也不保證按序送到。
    • TCP協(xié)議所需資源多,TCP首部需20個字節(jié)(不算可選項),UDP首部字段只需8個字節(jié)。
    • TCP有流量控制和擁塞控制,UDP沒有,網(wǎng)絡(luò)擁堵不會影響發(fā)送端的發(fā)送速率
    • TCP是一對一的連接,而UDP則可以支持一對一,多對多,一對多的通信。
    • TCP面向的是字節(jié)流的服務(wù),UDP面向的是報文的服務(wù)。
    • TCP介紹和UDP介紹
  • 請詳細(xì)介紹一下TCP協(xié)議建立連接和終止連接的過程?
  • 三次握手建立連接時,發(fā)送方再次發(fā)送確認(rèn)的必要性?
      • 主 要是為了防止已失效的連接請求報文段突然又傳到了B,因而產(chǎn)生錯誤。假定出現(xiàn)一種異常情況,即A發(fā)出的第一個連接請求報文段并沒有丟失,而是在某些網(wǎng)絡(luò)結(jié) 點長時間滯留了,一直延遲到連接釋放以后的某個時間才到達B,本來這是一個早已失效的報文段。但B收到此失效的連接請求報文段后,就誤認(rèn)為是A又發(fā)出一次 新的連接請求,于是就向A發(fā)出確認(rèn)報文段,同意建立連接。假定不采用三次握手,那么只要B發(fā)出確認(rèn),新的連接就建立了,這樣一直等待A發(fā)來數(shù)據(jù),B的許多 資源就這樣白白浪費了。
  • 四次揮手釋放連接時,等待2MSL的意義?
      • 第 一,為了保證A發(fā)送的最有一個ACK報文段能夠到達B。這個ACK報文段有可能丟失,因而使處在LAST-ACK狀態(tài)的B收不到對已發(fā)送的FIN和ACK 報文段的確認(rèn)。B會超時重傳這個FIN和ACK報文段,而A就能在2MSL時間內(nèi)收到這個重傳的ACK+FIN報文段。接著A重傳一次確認(rèn)。
      • 第二,就是防止上面提到的已失效的連接請求報文段出現(xiàn)在本連接中,A在發(fā)送完最有一個ACK報文段后,再經(jīng)過2MSL,就可以使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡(luò)中消失。

常見的應(yīng)用中有哪些是應(yīng)用TCP協(xié)議的,哪些又是應(yīng)用UDP協(xié)議的,為什么它們被如此設(shè)計?

  • 以下應(yīng)用一般或必須用udp實現(xiàn)?多播的信息一定要用udp實現(xiàn),因為tcp只支持一對一通信。如果一個應(yīng)用場景中大多是簡短的信息,適合用udp實現(xiàn),因為udp是基于報文段的,它直接對上層應(yīng)用的數(shù)據(jù)封裝成報文段,然后丟在網(wǎng)絡(luò)中,如果信息量太大,會在鏈路層中被分片,影響傳輸效率。如果一個應(yīng)用場景重性能甚于重完整性和安全性,那么適合于udp,比如多媒體應(yīng)用,缺一兩幀不影響用戶體驗,但是需要流媒體到達的速度快,因此比較適合用udp如果要求快速響應(yīng),那么udp聽起來比較合適如果又要利用udp的快速響應(yīng)優(yōu)點,又想可靠傳輸,那么只能考上層應(yīng)用自己制定規(guī)則了。常見的使用udp的例子:ICQ,QQ的聊天模塊。

以qq為例的一個說明(轉(zhuǎn)載自知乎)

登陸采用TCP協(xié)議和HTTP協(xié)議,你和好友之間發(fā)送消息,主要采用UDP協(xié)議,內(nèi)網(wǎng)傳文件采用了P2P技術(shù)。總來的說:
1.登陸過程,客戶端client 采用TCP協(xié)議向服務(wù)器server發(fā)送信息,HTTP協(xié)議下載信息。登陸之后,會有一個TCP連接來保持在線狀態(tài)。
2.和好友發(fā)消息,客戶端client采用UDP協(xié)議,但是需要通過服務(wù)器轉(zhuǎn)發(fā)。騰訊為了確保傳輸消息的可靠,采用上層協(xié)議來保證可靠傳輸。如果消息發(fā)送失敗,客戶端會提示消息發(fā)送失敗,并可重新發(fā)送。
3.如果是在內(nèi)網(wǎng)里面的兩個客戶端傳文件,QQ采用的是P2P技術(shù),不需要服務(wù)器中轉(zhuǎn)。

使用TCP的協(xié)議:FTP(文件傳輸協(xié)議)、Telnet(遠程登錄協(xié)議)、SMTP(簡單郵件傳輸協(xié)議)、POP3(和SMTP相對,用于接收郵件)、HTTP協(xié)議等。

補充UDP:

UDP用戶數(shù)據(jù)報協(xié)議,是面向無連接的通訊協(xié)議,UDP數(shù)據(jù)包括目的端口號和源端口號信息,由于通訊不需要連接,所以可以實現(xiàn)廣播發(fā)送。UDP通訊時不需要接收方確認(rèn),屬于不可靠的傳輸,可能會出現(xiàn)丟包現(xiàn)象,實際應(yīng)用中要求程序員編程驗證。

UDP與TCP位于同一層,但它不管數(shù)據(jù)包的順序、錯誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢---應(yīng)答的服務(wù),例如NFS。相對于FTP或Telnet,這些服務(wù)需要交換的信息量較小。

每個UDP報文分UDP報頭和UDP數(shù)據(jù)區(qū)兩部分。報頭由四個16位長(2字節(jié))字段組成,分別說明該報文的源端口、目的端口、報文長度以及校驗值。UDP報頭由4個域組成,其中每個域各占用2個字節(jié),具體如下:
  (1)源端口號;

(2)目標(biāo)端口號;

(3)數(shù)據(jù)報長度;

(4)校驗值。

使用UDP協(xié)議包括:TFTP(簡單文件傳輸協(xié)議)、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)、DNS(域名解析協(xié)議)、NFS、BOOTP。

TCP 與 UDP 的區(qū)別:TCP是面向連接的,可靠的字節(jié)流服務(wù);UDP是面向無連接的,不可靠的數(shù)據(jù)報服務(wù)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
王道考研 計算機網(wǎng)絡(luò)筆記 第五章:傳輸層
一篇文章讓你搞懂什么是TCP/IP協(xié)議
一文秒懂 TCP/IP實際五層結(jié)構(gòu)(下篇)
拜托面試不要再問我TCP三次握手與四次揮手了
堅持苦學(xué) TCP,終于把 TCP 協(xié)議給學(xué)明白了,堅持看完你會收獲很大
什么情況下適合用UDP協(xié)議,什么情況下適合用TCP協(xié)議?
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服