色天下一区二区三区,少妇精品久久久一区二区三区,中文字幕日韩高清,91精品国产91久久久久久最新毛片

首頁 > 江西 > 上饒市 > tcp連接,什么是 TCP 連接

tcp連接,什么是 TCP 連接

來源:整理 時間:2022-12-24 22:48:03 編輯:好學習 手機版

本文目錄一覽

1,什么是 TCP 連接

世界上絕大部分的 HTTP 通信都是通過 TCP/IP 承載的,TCP/IP 是全球計算機和網絡設備都在使用的一種常用的分組交換網絡分層協議集。客戶端應用程序可以打開一條 TCP/IP 連接,連接到世界上可能運行的任何一個服務器應用程序上。一旦連接建立起來,在不斷網的情況下,客戶端與服務器之間交換的報文就永遠不會丟失、受損或者失序。

什么是 TCP 連接

2,什么是TCP連接

  TCP即傳輸控制協議。TCP連接是互聯網連接協議集的一種。  TCP通信最重要的特征是:  有序和可靠。  有序通過將文本流分段并編號實現,可靠通過ACK回復和重復發送實現。TCP連接狀態圖  參考文章:  TCP連接過程詳解  blog.163.com/hlz_2599/blog/static/142378474201151943414397/

什么是TCP連接

3,TCP 連接詳解

1、先提出一個問題, 可以不進行三次握手直接往服務端發送數據包嗎? 是不可以的,也是可以的 ; 1)不可以是因為現在的TCP連接標準和規范要求傳輸數據前先確認兩端的狀態,有一端狀態不OK的話,發數據包有什么用呢; 2)說可以是站在網絡連接的角度,像 UDP 協議; 2、TCP三次握手 1)標志位、隨機序列號和確認序列號是在數據包的 TCP 首部里面; 2)幾個狀態是指客戶端和服務端連接過程中 socket 狀態; 3)第一次握手,客戶端向服務端發送數據包,該數據包中 SYN 標志位為 1,還有隨機生成的序列號c_seq,客戶端狀態改為 SYN-SENT ; 4)第二次握手,服務端接收到客戶端發過來的數據包中 SYN 標志位為 1,就知道客戶端想和自己建立連接,服務端會根據自身的情況決定是拒絕連接,或確定連接,還是丟棄該數據包; 拒絕連接,會往客戶端發一個數據包,該數據包中 RST 標志位為 1,客戶端會報 Connection refused ; 丟棄客戶端的數據包,超過一定時間后客戶端會報 Connection timeout; 確定連接時會往客戶端發一個數據包,該數據包中 ACK 標志位為 1,確認序列號 ack=c_seq+1,SYN 標志位為 1,隨機序列號 s_seq,狀態由 LISTEN 改為 SYN-RCVD ; 5)第三次握手,客戶端接收到數據包會做校驗,校驗ACK標志位和確認序列號 ack=c_seq+1,如果確定是服務端的確認數據包,改自己的狀態為 ESTABLISHED ,并給服務端發確認數據包; 6)服務端接到客戶端數據包,會校驗ACK標志位和確認序列號 ack=s_seq+1,改自己的狀態為 ESTABLISHED ,之后就可以進行數據傳輸了; 7)建立連接時的數據包是沒有實際內容的,沒有應用層的數據; 8)建立連接之后發起的請求數據包,每個數據包都會封裝各層協議的頭部信息,標志位ACK為1,其他標志位變動; 9)網絡進程間的通信,一臺服務器內部的進程間通信不用這樣; 3、TCP 連接三次握手抓包 1)Socket 在 linux 系統中是一種特殊的文件,因為 linux 系統的理念就是【一切皆文件】,是系統內核級的功能; 2)以上定義比較具體,可以抽象來理解,是一個內核級的用于通信的功能層,包含一組接口函數,這些函數實際就是操作 socket 文件句柄文件描述符; 一個 TCP 連接由四要素【源IP、源Port、目標IP、目標Port】唯一標識,也即 socket 由這四要素唯一確定; 一個 TCP 連接的建立也就是客戶端、服務端創建了相對應的一對 socket,客戶端和服務端之間的通信也就是這對 socket 間的通信(物理層面是網卡在發送/接收比特流數據); 3) 一個服務與另一個服務建立連接,他們的端口是什么呢 ? 客戶端發出請求端口號是隨機的,服務端是進程監聽的端口號; 2、socket 主要函數介紹 1、進程通信,一個進程只有一個監聽 socket,connect socket 是針對一個客戶的一個連接的,有很多個; 2、connect 函數內部在發起請求前會找系統隨機一個端口號; 3、連接建立后,客戶端發起請求傳輸數據,服務端會直接交給 connect socket 處理,不會交給監聽 socket 處理; 4、監聽 socket 在處理客戶端請求時,如果此時其他客戶端發請求過來,監聽 socket 是沒法處理的,此時系統會維護請求隊列由 backlog 參數指定; 全連接隊列(completed connection queue) 半連接隊列(incomplete connection queue) Linux 內核 2.2 版本之前 ,backlog 的大小等于全連接隊列和半連接隊列之和; Linux 內核 2.2 版本之后 ,backlog 的大小之和全連接隊列有關系: 半連接隊列大小由 /proc/sys/net/ipv4/tcp_max_syn_backlog 文件指定,可以開很大; 全連接隊列大小由 /proc/sys/net/core/somaxconn 文件和 backlog 參數指定,取兩個中的最小值; tomcat acceptCount 就是配置全連接隊列大小; 3、socket 函數在建立連接和數據傳輸的大概使用情況 4、TCP首部結構 1)2的16次方等于 65536,所以系統中端口號的限制個數為 65536,一般1024以下端口被系統占用; 2)標志位這里是 6 個,還有其他標志位的,只是這 6 個標志位常用; 3)seq 序列號,ack 確認序列號,序列號在數據傳輸時分包用到。三次握手時 seq 序列號是隨機的,沒有實際意義; 4)TCP 包首部后面接著的是 IP 包首部,再緊接著的是以太網包首部,其實都是加 0101010101 二進制位; 幾個常用標志位,首先一個標志位占一個 bit 位,只能是二進制中的 1 或 0; 1)SYN ,簡寫 S ,請求標志位,用來建立連接。在TCP三次握手中收到帶有該標志位的數據包,表示對方想與己方建立連接; 2)ACK ,簡寫【.】 ,請求確認/應答標志位,用于對對方的請求進行應答,對方收到含該標志位的數據包,會知道己方存在且可用。也會用在連接建立之后,己方發送響應數據給對方的數據包中; 3)FIN ,簡寫 F ,請求斷開標志位,用于斷開連接。對方收到己方的含該標志位的數據包,就知道己方想與它斷開連接,不再保持連接; 4)RST ,簡寫 R ,請求復位標志位,因網絡或己方服務原因導致有數據包丟失,己方接收到的數據包序列號與上一個數據包的序列號不銜接,那己方會發送含該標志位的數據包告訴對方,對方接收到含該標志位的數據包就知道己方要求它重新三次握手建立連接并重新發送丟失的數據包,一般斷點續傳會用到該標志位; 還有就是如果對方發過來的數據錯了,有問題,己方也會發送含該標志位的數據包; 5)PSH ,簡寫 P ,推送標志位,表示收到數據包后要立即交給應用程序去處理,不應該放在緩存中,read()/write() 都有緩存區; 6)URG ,簡寫 U ,緊急標志位,該標志位表示 tcp 包首部中的緊急指針域有效,督促中間層盡快處理; 7)ECE,在保留位中; 8)CWR,在保留位中; 5、TCP 抓包 1)服務端會根據自身情況,沒有要處理的數據時會把第二次和第三次揮手合并成一次揮手,此時標志位 FIN=1 / ACK=1; 2)MSL 是 Maximum Segment Lifetime 縮寫,指數據包在網絡中最大生存時間,RFC 建議是 2分鐘; 詳細描述: 1)客戶端、服務端都可以主動發起斷開連接; 2)第一次揮手,客戶端向服務端發送含 FIN=1 標志位的數據包,隨機序列號 seq=m,此時客戶端狀態由 ESTABLISHED 變為 FIN_WAIT_1 ; 3)第二次揮手,服務端收到含 FIN=1 標志位的數據包,就知道客戶端要斷開連接,服務端會向客戶端發送含 ACK=1 標志位的應答數據包,確認序列號 ack=m+1,此時服務端狀態由 ESTABLISHED 變為 CLOSE_WAIT ; 4)客戶端收到含 ACK=1 標志位的應答數據包,知道服務端的可以斷開的意思,此時客戶端狀態由 FIN_WAIT_1 變為 FIN_WAIT_2 ;(第一、二次揮手也只是雙方交換一下意見而已) 5)第三次揮手,服務端處理完剩下的數據后再次向客戶端發送含 FIN=1 標志位的數據包,隨機序列號 seq=n,告訴客戶端現在可以真正的斷開連接了,此時服務端狀態由 CLOSE_WAIT 變為 LAST_ACK ; 6)第四次揮手,客戶端收到服務端再次發送的含 FIN=1 標志位的數據包,就知道服務端處理好了可以斷開連接了,但是客戶端為了慎重起見,不會立馬關閉連接,而是改狀態,且向服務端發送含 ACK=1 標志位的應答數據包,確認序列號 ack=n+1,此時客戶端狀態由 FIN_WAIT_2 變為 TIME_WAIT ; 等待 2 個MSL 時間還是未收到服務端發過來的數據,則表明服務端已經關閉連接了,客戶端也會關閉連接釋放資源,此時客戶端狀態由 TIME_WAIT 變為 CLOSED ; 也就是說 TIME_WAIT 狀態存在時長在 1~4分鐘; 7)服務端收到含 ACK=1 標志位的應答數據包,知道客戶端確認可以斷開了,就立即關閉連接釋放資源,此時服務端狀態由 LAST_ACK 變為 CLOSED ; SYN 洪水攻擊(SYN Flood) 是一種 DoS攻擊(拒絕服務攻擊),大概原理是偽造大量的TCP請求,服務端收到大量的第一次握手的數據包,且都會發第二次握手數據包去回應,但是因為 IP 是偽造的,一直都不會有第三次握手數據包,導致服務端存在大量的半連接,即 SYN_RCVD 狀態的連接,導致半連接隊列被塞滿,且服務端默認會發 5 個第二次握手數據包,耗費大量 CPU 和內存資源,使得正常的連接請求進不來;

TCP 連接詳解

文章TAG:tcp連接連接什么

最近更新

  • 陰囊濕疹癥狀圖片,陰囊濕疹的癥狀有哪些?

    1,急性陰囊濕疹瘙癢:此時多為陰囊皮膚潮紅、瘙癢并有丘疹,瘙癢多了抓撓,可露出光滑的紅色皮膚,當發現自己有陰囊濕疹的癥狀時,要及時調整,以免誘發疾病,損傷睪丸,影響精子質量,另外, ......

    上饒市 日期:2023-05-06

  • 熬夜頭疼是什么原因,熬夜引起的頭痛是什么原因

    熬夜引起的頭痛是什么原因你好,這是屬于心神失養造成的,這是需要進行安養心神的治療的這是可以做個腦電圖的檢查的,可以喝中藥治療的,可以吃點健腦補腎丸和正天丸治療的,注意休息,保持放松 ......

    上饒市 日期:2023-05-06

  • 機械租賃合同,機械租賃合同

    本文目錄一覽1,機械租賃合同2,工程機械租賃合同如何寫3,建筑工程機械租賃合同范文怎么寫4,我想要一份機械租賃合同范本1,機械租賃合同合同的簽訂,使所有的交易和活動都完美化,合法化 ......

    上饒市 日期:2023-05-06

  • 帶馬的四字成語,有馬的成語四字的最新的

    有馬的成語四字的最新的萬馬奔騰2,帶馬的四字成語快馬加鞭,龍馬精神,老馬識途,馬到成功,一馬當先,馬踏飛燕,指鹿為馬,衣馬輕肥塞翁失馬,焉知非福,老馬識途,馬到成功,馬不停蹄盲人瞎 ......

    上饒市 日期:2023-05-06

  • 范成大簡介,范成大的簡介

    范成大的簡介成大(1126-1193)字致能,號石湖居士。平江吳郡(郡治在今江蘇吳縣)人。南宋詩人。他父母早亡,家境貧寒。宋高宗紹興二十四年(1154)進士,初授戶曹,又任監和劑局 ......

    上饒市 日期:2023-05-06

  • 三七粉的美容功效,我向知道三七粉的美容效用什么時候吃效用

    我向知道三七粉的美容效用什么時候吃效用病情分析:三七具有清熱平肝,養心安神,潤肺,葆青春抗衰老、消除和減少皮膚皺紋及老年斑等功效。,尤其適用于女性的美容、護膚,是女性最天然的良好美 ......

    上饒市 日期:2023-05-06

  • 有趣的懲罰方式,有什么好玩的懲罰人的方法啊

    有什么好玩的懲罰人的方法啊整蠱專家逃學威龍1逃學威龍2逃學威龍3審死官鹿鼎記鹿鼎記2神龍教武狀元蘇乞兒唐伯虎點秋香、跳舞。吹起來系在一條長長的繩子,然后繞在失敗者的身上,讓其他參加 ......

    上饒市 日期:2023-05-06

  • 舉辦用英語怎么說,英語中的舉行怎么說

    英語中的舉行怎么說takeplacehold{0}2,舉辦用英文怎么說conducthold都可以.hold舉辦:hold如:舉辦展覽:holdashow{1}3,繞月舉辦用英語怎 ......

    上饒市 日期:2023-05-06

主站蜘蛛池模板: 武清区| 卢龙县| 曲沃县| 莱西市| 明星| 平山县| 安康市| 安宁市| 罗甸县| 越西县| 高州市| 宣城市| 黄骅市| 聂荣县| 安阳市| 曲周县| 浮梁县| 沙雅县| 嘉鱼县| 张家界市| 抚远县| 柞水县| 达拉特旗| 石屏县| 鲜城| 营口市| 永定县| 舞钢市| 耒阳市| 富平县| 东源县| 冕宁县| 汉川市| 井冈山市| 宁乡县| 启东市| 海林市| 古交市| 开江县| 张家港市| 博客|