国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

這篇具有很好參考價值的文章主要介紹了網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 網(wǎng)絡(luò)編程

Java是 Internet 上的語言,它從語言級上提供了對網(wǎng)絡(luò)應(yīng)用程序的支持,程序員能夠很容易開發(fā)常見的網(wǎng)絡(luò)應(yīng)用程序。

Java提供的網(wǎng)絡(luò)類庫,可以實現(xiàn)無痛的網(wǎng)絡(luò)連接,聯(lián)網(wǎng)的底層細(xì)節(jié)被隱藏在 Java 的本機(jī)安裝系統(tǒng)里,由 JVM 進(jìn)行控制。并且 Java 實現(xiàn)了一個跨平臺的網(wǎng)絡(luò)庫,程序員面對的是一個統(tǒng)一的網(wǎng)絡(luò)編程環(huán)境

1.1 軟件架構(gòu)

  • C/S架構(gòu) :全稱為Client/Server結(jié)構(gòu),是指客戶端和服務(wù)器結(jié)構(gòu)。常見程序有QQ、美團(tuán)app、360安全衛(wèi)士等軟件。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

B/S架構(gòu) :全稱為Browser/Server結(jié)構(gòu),是指瀏覽器和服務(wù)器結(jié)構(gòu)。常見瀏覽器有IE、谷歌、火狐等。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

兩種架構(gòu)各有優(yōu)勢,但是無論哪種架構(gòu),都離不開網(wǎng)絡(luò)的支持。網(wǎng)絡(luò)編程,就是在一定的協(xié)議下,實現(xiàn)兩臺計算機(jī)的通信的程序。

1.2 網(wǎng)絡(luò)基礎(chǔ)

  • 計算機(jī)網(wǎng)絡(luò):
    把分布在不同地理區(qū)域的計算機(jī)與專門的外部設(shè)備用通信線路互連成一個規(guī)模大、功能強(qiáng)的網(wǎng)絡(luò)系統(tǒng),從而使眾多的計算機(jī)可以方便地互相傳遞信息、共享硬件、軟件、數(shù)據(jù)信息等資源。

  • 網(wǎng)絡(luò)編程的目的: 直接或間接地通過網(wǎng)絡(luò)協(xié)議與其它計算機(jī)實現(xiàn)數(shù)據(jù)交換,進(jìn)行通訊。

  • 網(wǎng)絡(luò)編程中有三個主要的問題:

    • 問題1:如何準(zhǔn)確地定位網(wǎng)絡(luò)上一臺或多臺主機(jī)
    • 問題2:如何定位主機(jī)上的特定的應(yīng)用
    • 問題3:找到主機(jī)后,如何可靠、高效地進(jìn)行數(shù)據(jù)傳輸

2. 網(wǎng)絡(luò)通信要素

2.1 如何實現(xiàn)網(wǎng)絡(luò)中的主機(jī)互相通信

  • 通信雙方地址
    • IP
    • 端口號
  • 一定的規(guī)則:不同的硬件、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則。而我們就把這種規(guī)則稱為協(xié)議,即網(wǎng)絡(luò)通信協(xié)議。

2.2 通信要素一:IP地址和域名

2.2.1 IP地址

IP地址:指互聯(lián)網(wǎng)協(xié)議地址(Internet Protocol Address),俗稱IP。IP地址用來給網(wǎng)絡(luò)中的一臺計算機(jī)設(shè)備做唯一的編號。假如我們把“個人電腦”比作“一臺電話”的話,那么“IP地址”就相當(dāng)于“電話號碼”。

IP地址分類方式一:

  • IPv4:是一個32位的二進(jìn)制數(shù),通常被分為4個字節(jié),表示成a.b.c.d 的形式,以點分十進(jìn)制表示,例如192.168.65.100 。其中a、b、c、d都是0~255之間的十進(jìn)制整數(shù)。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

  • 這種方式最多可以表示42億個。其中,30億都在北美,亞洲4億,中國2.9億。2011年初已經(jīng)用盡。

  • IP地址 = 網(wǎng)絡(luò)地址 +主機(jī)地址

    • 網(wǎng)絡(luò)地址:標(biāo)識計算機(jī)或網(wǎng)絡(luò)設(shè)備所在的網(wǎng)段
    • 主機(jī)地址:標(biāo)識特定主機(jī)或網(wǎng)絡(luò)設(shè)備

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

其中,E類用于科研。
  • IPv6:由于互聯(lián)網(wǎng)的蓬勃發(fā)展,IP地址的需求量愈來愈大,但是網(wǎng)絡(luò)地址資源有限,使得IP的分配越發(fā)緊張。

    為了擴(kuò)大地址空間,擬通過IPv6重新定義地址空間,采用128位地址長度,共16個字節(jié),寫成8個無符號整數(shù),每個整數(shù)用四個十六進(jìn)制位表示,數(shù)之間用冒號(:)分開。比如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,按保守方法估算IPv6實際可分配的地址,整個地球的每平方米面積上仍可分配1000多個地址,這樣就解決了網(wǎng)絡(luò)地址資源數(shù)量不夠的問題。2012年6月6日,國際互聯(lián)網(wǎng)協(xié)會舉行了世界IPv6啟動紀(jì)念日,這一天,全球IPv6網(wǎng)絡(luò)正式啟動。多家知名網(wǎng)站,如Google、Facebook和Yahoo等,于當(dāng)天全球標(biāo)準(zhǔn)時間0點(北京時間8點整)開始永久性支持IPv6訪問。2018年6月,三大運(yùn)營商聯(lián)合阿里云宣布,將全面對外提供IPv6服務(wù),并計劃在2025年前助推中國互聯(lián)網(wǎng)真正實現(xiàn)“IPv6 Only”。

    在IPv6的設(shè)計過程中除了一勞永逸地解決了地址短缺問題以外,還考慮了在IPv4中解決不好的其它問題,主要有端到端IP連接、服務(wù)質(zhì)量(QoS)、安全性、多播、移動性、即插即用等。

IP地址分類方式二:

公網(wǎng)地址( 萬維網(wǎng)使用)和 私有地址( 局域網(wǎng)使用)。192.168.開頭的就是私有地址,范圍即為192.168.0.0–192.168.255.255,專門為組織機(jī)構(gòu)內(nèi)部使用。

常用命令:

  • 查看本機(jī)IP地址,在控制臺輸入:
ipconfig
  • 檢查網(wǎng)絡(luò)是否連通,在控制臺輸入:
ping 空格 IP地址
ping 192.168.1.222

特殊的IP地址:

  • 本地回環(huán)地址(hostAddress)127.0.0.1
  • 主機(jī)名(hostName)localhost
2.2.2 域名

Internet上的主機(jī)有兩種方式表示地址:

  • 域名(hostName):https://www.csdn.net/
  • IP 地址(hostAddress):202.108.35.210

域名解析: 因為IP地址數(shù)字不便于記憶,因此出現(xiàn)了域名。域名容易記憶,當(dāng)在連接網(wǎng)絡(luò)時輸入一個主機(jī)的域名后,域名服務(wù)器(DNS,Domain Name System,域名系統(tǒng))負(fù)責(zé)將域名轉(zhuǎn)化成IP地址,這樣才能和主機(jī)建立連接。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

  1. 在瀏覽器中輸入www.qq.com 域名,操作系統(tǒng)會先檢查自己本地的hosts文件是否有這個網(wǎng)址映射關(guān)系,如果有,就先調(diào)用這個IP地址映射,完成域名解析。
  2. 如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網(wǎng)址映射關(guān)系,如果有,直接返回,完成域名解析。
  3. 如果hosts與本地DNS解析器緩存都沒有相應(yīng)的網(wǎng)址映射關(guān)系,首先會找TCP/IP參數(shù)中設(shè)置的首選DNS服務(wù)器,在此我們叫它本地DNS服務(wù)器,此服務(wù)器收到查詢時,如果要查詢的域名,包含在本地配置區(qū)域資源中,則返回解析結(jié)果給客戶機(jī),完成域名解析,此解析具有權(quán)威性。
  4. 如果要查詢的域名,不由本地DNS服務(wù)器區(qū)域解析,但該服務(wù)器已緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個IP地址映射,完成域名解析,此解析不具有權(quán)威性。
  5. 如果本地DNS服務(wù)器本地區(qū)域文件與緩存解析都失效,則根據(jù)本地DNS服務(wù)器的設(shè)置(是否設(shè)置轉(zhuǎn)發(fā)器)進(jìn)行查詢,如果未用轉(zhuǎn)發(fā)模式,本地DNS就把請求發(fā)至13臺根DNS,根DNS服務(wù)器收到請求后會判斷這個域名(.com)是誰來授權(quán)管理,并會返回一個負(fù)責(zé)該頂級域名服務(wù)器的一個IP。本地DNS服務(wù)器收到IP信息后,將會聯(lián)系負(fù)責(zé).com域的這臺服務(wù)器。這臺負(fù)責(zé).com域的服務(wù)器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務(wù)器地址(http://qq.com)給本地DNS服務(wù)器。當(dāng)本地DNS服務(wù)器收到這個地址后,就會找(http://qq.com)域服務(wù)器,重復(fù)上面的動作,進(jìn)行查詢,直至找到www.qq.com主機(jī)。
  6. 如果用的是轉(zhuǎn)發(fā)模式,此DNS服務(wù)器就會把請求轉(zhuǎn)發(fā)至上一級DNS服務(wù)器,由上一級服務(wù)器進(jìn)行解析,上一級服務(wù)器如果不能解析,或找根DNS或把轉(zhuǎn)請求轉(zhuǎn)至上上級,以此循環(huán)。不管是本地DNS服務(wù)器用是是轉(zhuǎn)發(fā),還是根提示,最后都是把結(jié)果返回給本地DNS服務(wù)器,由此DNS服務(wù)器再返回給客戶機(jī)。

2.3 通信要素二:端口號

網(wǎng)絡(luò)的通信,本質(zhì)上是兩個進(jìn)程(應(yīng)用程序)的通信。每臺計算機(jī)都有很多的進(jìn)程,那么在網(wǎng)絡(luò)通信時,如何區(qū)分這些進(jìn)程呢?

如果說IP地址可以唯一標(biāo)識網(wǎng)絡(luò)中的設(shè)備,那么端口號就可以唯一標(biāo)識設(shè)備中的進(jìn)程(應(yīng)用程序)。

不同的進(jìn)程,設(shè)置不同的端口號。

  • 端口號:用兩個字節(jié)表示的整數(shù),它的取值范圍是0~65535。
    • 公認(rèn)端口:0~1023。被預(yù)先定義的服務(wù)通信占用,如:HTTP(80),F(xiàn)TP(21),Telnet(23)
    • 注冊端口:1024~49151。分配給用戶進(jìn)程或應(yīng)用程序。如:Tomcat(8080),MySQL(3306),Oracle(1521)。
    • 動態(tài)/ 私有端口:49152~65535。

如果端口號被另外一個服務(wù)或應(yīng)用所占用,會導(dǎo)致當(dāng)前程序啟動失敗。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

2.4 通信要素三:網(wǎng)絡(luò)通信協(xié)議

通過計算機(jī)網(wǎng)絡(luò)可以使多臺計算機(jī)實現(xiàn)連接,位于同一個網(wǎng)絡(luò)中的計算機(jī)在進(jìn)行連接和通信時需要遵守一定的規(guī)則,這就好比在道路中行駛的汽車一定要遵守交通規(guī)則一樣。

  • 網(wǎng)絡(luò)通信協(xié)議:在計算機(jī)網(wǎng)絡(luò)中,這些連接和通信的規(guī)則被稱為網(wǎng)絡(luò)通信協(xié)議,它對數(shù)據(jù)的傳輸格式、傳輸速率、傳輸步驟、出錯控制等做了統(tǒng)一規(guī)定,通信雙方必須同時遵守才能完成數(shù)據(jù)交換。

新的問題:網(wǎng)絡(luò)協(xié)議涉及內(nèi)容太多、太復(fù)雜。如何解決?

計算機(jī)網(wǎng)絡(luò)通信涉及內(nèi)容很多,比如指定源地址和目標(biāo)地址,加密解密,壓縮解壓縮,差錯控制,流量控制,路由控制,如何實現(xiàn)如此復(fù)雜的網(wǎng)絡(luò)協(xié)議呢?通信協(xié)議分層思想。

在制定協(xié)議時,把復(fù)雜成份分解成一些簡單的成份,再將它們復(fù)合起來。最常用的復(fù)合方式是層次方式,即同層間可以通信、上一層可以調(diào)用下一層,而與再下一層不發(fā)生關(guān)系。各層互不影響,利于系統(tǒng)的開發(fā)和擴(kuò)展。

這里有兩套參考模型

  • OSI參考模型:模型過于理想化,未能在因特網(wǎng)上進(jìn)行廣泛推廣
  • TCP/IP參考模型(或TCP/IP協(xié)議):事實上的國際標(biāo)準(zhǔn)。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

上圖中,OSI參考模型:模型過于理想化,未能在因特網(wǎng)上進(jìn)行廣泛推廣。 TCP/IP參考模型(或TCP/IP協(xié)議):事實上的國際標(biāo)準(zhǔn)

  • TCP/IP協(xié)議: 傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議( Transmission Control Protocol/Internet Protocol),TCP/IP 以其兩個主要協(xié)議:傳輸控制協(xié)議(TCP)和網(wǎng)絡(luò)互聯(lián)協(xié)議(IP)而得名,實際上是一組協(xié)議,包括多個具有不同功能且互為關(guān)聯(lián)的協(xié)議。是Internet最基本、最廣泛的協(xié)議。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

TCP/IP協(xié)議中的四層介紹:

  • 應(yīng)用層:應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時通信的活動。主要協(xié)議有:HTTP協(xié)議、FTP協(xié)議、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)、SMTP(簡單郵件傳輸協(xié)議)和POP3(Post Office Protocol 3的簡稱,即郵局協(xié)議的第3個版)等。
  • 傳輸層:主要使網(wǎng)絡(luò)程序進(jìn)行通信,在進(jìn)行網(wǎng)絡(luò)通信時,可以采用TCP協(xié)議,也可以采用UDP協(xié)議。TCP(Transmission Control Protocol)協(xié)議,即傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議):是一個無連接的傳輸層協(xié)議、提供面向事務(wù)的簡單不可靠的信息傳送服務(wù)。
  • 網(wǎng)絡(luò)層:網(wǎng)絡(luò)層是整個TCP/IP協(xié)議的核心,支持網(wǎng)間互連的數(shù)據(jù)通信。它主要用于將傳輸?shù)臄?shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)發(fā)送到目標(biāo)計算機(jī)或者網(wǎng)絡(luò)。而IP協(xié)議是一種非常重要的協(xié)議。IP(internet protocal)又稱為互聯(lián)網(wǎng)協(xié)議。IP的責(zé)任就是把數(shù)據(jù)從源傳送到目的地。它在源地址和目的地址之間傳送一種稱之為數(shù)據(jù)包的東西,它還提供對數(shù)據(jù)大小的重新組裝功能,以適應(yīng)不同網(wǎng)絡(luò)對包大小的要求。
  • 物理+數(shù)據(jù)鏈路層:鏈路層是用于定義物理傳輸通道,通常是對某些網(wǎng)絡(luò)連接設(shè)備的驅(qū)動協(xié)議,例如針對光纖、網(wǎng)線提供的驅(qū)動。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

3. 傳輸層協(xié)議:TCP與UDP協(xié)議

通信的協(xié)議還是比較復(fù)雜的,java.net 包中包含的類和接口,它們提供低層次的通信細(xì)節(jié)。我們可以直接使用這些類和接口,來專注于網(wǎng)絡(luò)程序開發(fā),而不用考慮通信的細(xì)節(jié)。

java.net 包中提供了兩種常見的網(wǎng)絡(luò)協(xié)議的支持:

  • UDP:用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol)。
  • TCP:傳輸控制協(xié)議 (Transmission Control Protocol)。

3.1 TCP協(xié)議與UDP協(xié)議

TCP協(xié)議:

  • TCP協(xié)議進(jìn)行通信的兩個應(yīng)用進(jìn)程:客戶端、服務(wù)端。
  • 使用TCP協(xié)議前,須先建立TCP連接,形成基于字節(jié)流的傳輸數(shù)據(jù)通道
  • 傳輸前,采用“三次握手”方式,點對點通信,是可靠的
    • TCP協(xié)議使用重發(fā)機(jī)制,當(dāng)一個通信實體發(fā)送一個消息給另一個通信實體后,需要收到另一個通信實體確認(rèn)信息,如果沒有收到另一個通信實體確認(rèn)信息,則會再次重復(fù)剛才發(fā)送的消息。
  • 在連接中可進(jìn)行大數(shù)據(jù)量的傳輸
  • 傳輸完畢,需釋放已建立的連接,效率低

UDP協(xié)議:

  • UDP協(xié)議進(jìn)行通信的兩個應(yīng)用進(jìn)程:發(fā)送端、接收端。
  • 將數(shù)據(jù)、源、目的封裝成數(shù)據(jù)包(傳輸?shù)幕締挝唬?code>不需要建立連接
  • 發(fā)送不管對方是否準(zhǔn)備好,接收方收到也不確認(rèn),不能保證數(shù)據(jù)的完整性,故是不可靠的
  • 每個數(shù)據(jù)報的大小限制在64K內(nèi)
  • 發(fā)送數(shù)據(jù)結(jié)束時無需釋放資源,開銷小,通信效率高
  • 適用場景:音頻、視頻和普通數(shù)據(jù)的傳輸。例如視頻會議

TCP生活案例:打電話

UDP生活案例:發(fā)送短信、發(fā)電報

3.2 三次握手

TCP協(xié)議中,在發(fā)送數(shù)據(jù)的準(zhǔn)備階段,客戶端與服務(wù)器之間的三次交互,以保證連接的可靠。

  • 第一次握手,客戶端向服務(wù)器端發(fā)起TCP連接的請求
  • 第二次握手,服務(wù)器端發(fā)送針對客戶端TCP連接請求的確認(rèn)
  • 第三次握手,客戶端發(fā)送確認(rèn)的確認(rèn)

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

1、客戶端會隨機(jī)一個初始序列號seq=x,設(shè)置SYN=1 ,表示這是SYN握手報文。然后就可以把這個 SYN 報文發(fā)送給服務(wù)端了,表示向服務(wù)端發(fā)起連接,之后客戶端處于同步已發(fā)送狀態(tài)。

2、服務(wù)端收到客戶端的 SYN 報文后,也隨機(jī)一個初始序列號(seq=y),設(shè)置ack=x+1,表示收到了客戶端的x之前的數(shù)據(jù),希望客戶端下次發(fā)送的數(shù)據(jù)從x+1開始。
設(shè)置 SYN=1 和 ACK=1。表示這是一個SYN握手和ACK確認(rèn)應(yīng)答報文。最后把該報文發(fā)給客戶端,該報文也不包含應(yīng)用層數(shù)據(jù),之后服務(wù)端處于同步已接收狀態(tài)。

3、客戶端收到服務(wù)端報文后,還要向服務(wù)端回應(yīng)最后一個應(yīng)答報文,將ACK置為 1 ,表示這是一個應(yīng)答報文
ack=y+1 ,表示收到了服務(wù)器的y之前的數(shù)據(jù),希望服務(wù)器下次發(fā)送的數(shù)據(jù)從y+1開始。
最后把報文發(fā)送給服務(wù)端,這次報文可以攜帶數(shù)據(jù),之后客戶端處于 連接已建立 狀態(tài)。服務(wù)器收到客戶端的應(yīng)答報文后,也進(jìn)入連接已建立狀態(tài)。

完成三次握手,連接建立后,客戶端和服務(wù)器就可以開始進(jìn)行數(shù)據(jù)傳輸了。由于這種面向連接的特性,TCP協(xié)議可以保證傳輸數(shù)據(jù)的安全,所以應(yīng)用十分廣泛,例如下載文件、瀏覽網(wǎng)頁等。

3.3 四次揮手

TCP協(xié)議中,在發(fā)送數(shù)據(jù)結(jié)束后,釋放連接時需要經(jīng)過四次揮手。

  • 第一次揮手:客戶端向服務(wù)器端提出結(jié)束連接,讓服務(wù)器做最后的準(zhǔn)備工作。此時,客戶端處于半關(guān)閉狀態(tài),即表示不再向服務(wù)器發(fā)送數(shù)據(jù)了,但是還可以接受數(shù)據(jù)。
  • 第二次揮手:服務(wù)器接收到客戶端釋放連接的請求后,會將最后的數(shù)據(jù)發(fā)給客戶端。并告知上層的應(yīng)用進(jìn)程不再接收數(shù)據(jù)。
  • 第三次揮手:服務(wù)器發(fā)送完數(shù)據(jù)后,會給客戶端發(fā)送一個釋放連接的報文。那么客戶端接收后就知道可以正式釋放連接了。
  • 第四次揮手:客戶端接收到服務(wù)器最后的釋放連接報文后,要回復(fù)一個徹底斷開的報文。這樣服務(wù)器收到后才會徹底釋放連接。這里客戶端,發(fā)送完最后的報文后,會等待2MSL,因為有可能服務(wù)器沒有收到最后的報文,那么服務(wù)器遲遲沒收到,就會再次給客戶端發(fā)送釋放連接的報文,此時客戶端在等待時間范圍內(nèi)接收到,會重新發(fā)送最后的報文,并重新計時。如果等待2MSL后,沒有收到,那么徹底斷開。

網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)

1、客戶端打算斷開連接,向服務(wù)器發(fā)送FIN報文(FIN標(biāo)記位被設(shè)置為1,1表示為FIN,0表示不是),F(xiàn)IN報文中會指定一個序列號,之后客戶端進(jìn)入FIN_WAIT_1狀態(tài)。也就是客戶端發(fā)出連接釋放報文段(FIN報文),指定序列號seq = u,主動關(guān)閉TCP連接,等待服務(wù)器的確認(rèn)。

2、服務(wù)器收到連接釋放報文段(FIN報文)后,就向客戶端發(fā)送ACK應(yīng)答報文,以客戶端的FIN報文的序列號 seq+1 作為ACK應(yīng)答報文段的確認(rèn)序列號ack = seq+1 = u + 1。接著服務(wù)器進(jìn)入CLOSE_WAIT(等待關(guān)閉)狀態(tài),此時的TCP處于半關(guān)閉狀態(tài)(下面會說什么是半關(guān)閉狀態(tài)),客戶端到服務(wù)器的連接釋放??蛻舳耸盏絹碜苑?wù)器的ACK應(yīng)答報文段后,進(jìn)入FIN_WAIT_2狀態(tài)。

3、服務(wù)器也打算斷開連接,向客戶端發(fā)送連接釋放(FIN)報文段,之后服務(wù)器進(jìn)入LASK_ACK(最后確認(rèn))狀態(tài),等待客戶端的確認(rèn)。服務(wù)器的連接釋放(FIN)報文段的FIN=1,ACK=1,序列號seq=m,確認(rèn)序列號ack=u+1。

4、客戶端收到來自服務(wù)器的連接釋放(FIN)報文段后,會向服務(wù)器發(fā)送一個ACK應(yīng)答報文段,以連接釋放(FIN)報文段的確認(rèn)序號 ack 作為ACK應(yīng)答報文段的序列號 seq,以連接釋放(FIN)報文段的序列號 seq+1作為確認(rèn)序號ack。

之后客戶端進(jìn)入TIME_WAIT(時間等待)狀態(tài),服務(wù)器收到ACK應(yīng)答報文段后,服務(wù)器就進(jìn)入CLOSE(關(guān)閉)狀態(tài),到此服務(wù)器的連接已經(jīng)完成關(guān)閉??蛻舳颂幱赥IME_WAIT狀態(tài)時,此時的TCP還未釋放掉,需要等待2MSL后,客戶端才進(jìn)入CLOSE狀態(tài)。文章來源地址http://www.zghlxwxcb.cn/news/detail-426941.html

到了這里,關(guān)于網(wǎng)絡(luò)編程(TCP與UDP協(xié)議)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.27(網(wǎng)絡(luò)編程套接字 —— UDP協(xié)議介紹 | TCP協(xié)議介紹 | UDP 和 TCP 的異同)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.27(網(wǎng)絡(luò)編程套接字 —— UDP協(xié)議介紹 | TCP協(xié)議介紹 | UDP 和 TCP 的異同)

    在上一篇文章中,我們深入探討了Linux網(wǎng)絡(luò)編程的基石——套接字(Socket)的概念以及相關(guān)的編程接口。我們了解到,套接字是網(wǎng)絡(luò)通信過程中端與端之間數(shù)據(jù)交換的關(guān)鍵抽象概念,它提供了一套豐富的編程接口,使得開發(fā)者能夠在應(yīng)用層直接進(jìn)行網(wǎng)絡(luò)通信的開發(fā)。不僅如此

    2024年03月16日
    瀏覽(97)
  • Go語言實戰(zhàn):網(wǎng)絡(luò)編程與TCP_UDP

    Go語言是一種現(xiàn)代的編程語言,由Google的Robert Griesemer、Rob Pike和Ken Thompson于2009年開發(fā)。Go語言的設(shè)計目標(biāo)是簡單、高效、可擴(kuò)展和易于使用。它具有垃圾回收、類型安全、并發(fā)性能等優(yōu)點。Go語言的網(wǎng)絡(luò)編程庫 net 包提供了TCP/UDP的實現(xiàn),使得開發(fā)者可以輕松地編寫網(wǎng)絡(luò)應(yīng)用程序

    2024年02月21日
    瀏覽(96)
  • 初學(xué)記錄【linux應(yīng)用】 TCP/UDP 網(wǎng)絡(luò)編程 C語言

    初學(xué)記錄【linux應(yīng)用】 TCP/UDP 網(wǎng)絡(luò)編程 C語言

    以下內(nèi)容分別為TCP 與 UDP編程,內(nèi)容有相似或者重合部分,可根據(jù)流程 相互對照學(xué)習(xí),都已經(jīng)附上源碼 。 **1.** socket 創(chuàng)建 tcp套接字 (監(jiān)聽的套接字) 2、IPv4套接字地址結(jié)構(gòu) #include netinet/in.h struct in_addr: 如果使用 Internet 所以 sin_family 一般為 AF_INET。 ? sin_addr 設(shè)置為 INADDR_AN

    2024年02月03日
    瀏覽(26)
  • 【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實踐與應(yīng)用場景~

    【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實踐與應(yīng)用場景~

    了解多線程與網(wǎng)絡(luò)編程的操作關(guān)系; 了解網(wǎng)絡(luò)程序開發(fā)的主要模式; 了解 TCP 程序的基本實現(xiàn); 在Java中,網(wǎng)絡(luò)編程的核心意義是實現(xiàn)不同電腦主機(jī)之間的數(shù)據(jù)交互。Java采用了一種簡化的概念,將這個過程進(jìn)一步抽象為JVM(Java虛擬機(jī))進(jìn)程之間的通信??梢栽谕慌_電腦上

    2024年02月15日
    瀏覽(98)
  • 【socket】從計算機(jī)網(wǎng)絡(luò)基礎(chǔ)到socket編程——Windows && Linux C語言 + Python實現(xiàn)(TCP+UDP)

    【socket】從計算機(jī)網(wǎng)絡(luò)基礎(chǔ)到socket編程——Windows && Linux C語言 + Python實現(xiàn)(TCP+UDP)

    簡單講一下基礎(chǔ)知識,便于后面代碼的理解,建議大概瀏覽一下這一小節(jié)內(nèi)容。這里講的只是冰山一角,建議大家學(xué)習(xí)計算機(jī)網(wǎng)絡(luò)相關(guān)知識,推薦幾本書: 《計算機(jī)網(wǎng)絡(luò)》(謝希仁) 《計算機(jī)網(wǎng)絡(luò) 自頂向下方法》 《計算機(jī)網(wǎng)絡(luò)技術(shù)》 《計算機(jī)網(wǎng)絡(luò)基礎(chǔ)及應(yīng)用》 《Linux C從入

    2024年02月08日
    瀏覽(21)
  • 【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    網(wǎng)絡(luò)編程是C++ API操作中很重要的一部分,包含 TCP 和 UDP 。 網(wǎng)絡(luò)傳輸模型可以抽象為7個層: 物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層 。 但在使用TCP/IP協(xié)議時,可以簡化為這4層: 網(wǎng)絡(luò)接口、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層 。 TCP:可靠傳輸,三次握手建立

    2024年02月16日
    瀏覽(28)
  • 網(wǎng)絡(luò)編程 —— TCP 和 UDP 編程詳解

    網(wǎng)絡(luò)編程 —— TCP 和 UDP 編程詳解

    目錄 網(wǎng)絡(luò)編程主要函數(shù)介紹 1. socket 函數(shù) 2. bind 函數(shù) 3. listen 函數(shù) 4. accept 函數(shù) 5. connect 函數(shù) 6. send 函數(shù) 7. recv 函數(shù) 8. recvfrom 函數(shù) 9. sendto 函數(shù) TCP 和 UDP 原理上的區(qū)別 TCP 編程 服務(wù)端代碼: 客戶端代碼: UDP 編程 服務(wù)端代碼: 客戶端代碼: 1. socket 函數(shù) int socket(int domain, int

    2024年02月04日
    瀏覽(18)
  • 網(wǎng)絡(luò)編程、UDP、TCP

    網(wǎng)絡(luò)編程、UDP、TCP

    就是將地理位置不同的具有獨立功能的多臺計算及外部設(shè)備,通過通信線路連接起來,在網(wǎng)絡(luò)操作系統(tǒng)、網(wǎng)絡(luò)管理軟件以及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機(jī)系統(tǒng) 傳播交流信息、數(shù)據(jù)交換、通信 1.如何準(zhǔn)確定位網(wǎng)絡(luò)上的一臺主機(jī) 192.xxx.xx.xx:端

    2024年03月10日
    瀏覽(36)
  • UDP和TCP網(wǎng)絡(luò)編程

    UDP和TCP網(wǎng)絡(luò)編程

    特點: 無連接:發(fā)送數(shù)據(jù)前不需要建立連接。 不可靠:沒有重發(fā)機(jī)制,無法保證數(shù)據(jù)的可靠性和順序。 無擁塞控制:發(fā)送方發(fā)送數(shù)據(jù)的速度受限于網(wǎng)絡(luò)的帶寬。 快速:由于沒有連接建立和擁塞控制的處理,UDP的傳輸速度通常比TCP快。 簡單:UDP協(xié)議的頭部較小,僅有8個字節(jié)

    2024年02月11日
    瀏覽(25)
  • 基于TCP、UDP網(wǎng)絡(luò)編程

    基于TCP、UDP網(wǎng)絡(luò)編程

    應(yīng)用層 : 應(yīng)用程序拿到數(shù)據(jù)怎么用 傳輸層 : 負(fù)責(zé)關(guān)注傳輸過程中起點和終點 網(wǎng)絡(luò)層 :負(fù)責(zé)整個傳輸過程中的路線規(guī)劃 數(shù)據(jù)鏈路層 :負(fù)責(zé)相鄰節(jié)點之間的數(shù)據(jù)傳輸 物理層 : 基礎(chǔ)設(shè)施,硬件設(shè)備 程序員寫網(wǎng)絡(luò)程序,主要編寫的應(yīng)用層代碼,真正要發(fā)這個數(shù)據(jù),調(diào)用下層協(xié)

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包