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

TCP協(xié)議與UDP協(xié)議的區(qū)別

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

目錄

前言

一、TCP協(xié)議?

1、TCP協(xié)議首部組成

2、TCP三次握手和四次揮手

2、1 三次握手

2、2?四次揮手?

3、代碼實現(xiàn)

二、UDP協(xié)議

1、UDP特點??

2、首部格式?

3、代碼實現(xiàn)

三、TCP和UDP的區(qū)別?


前言

????????在我們的OSI七層模型或者是四層模型中,我們的傳輸層始終保持不變,傳輸層負(fù)責(zé)定義兩臺主機(jī)進(jìn)程之間的通信,提供數(shù)據(jù)傳輸服務(wù),提供端到端的可靠傳輸,所以我們需要用到的兩個主要的協(xié)議是:

  • TCP協(xié)議:傳輸控制協(xié)議,提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù),主要提供完整性服務(wù)
  • UDP協(xié)議:用戶數(shù)據(jù)協(xié)議,提供無連接、盡最大努力交互的服務(wù),不保證數(shù)據(jù)的可靠性,主要提供及時性服務(wù)

一、TCP協(xié)議?

1、TCP協(xié)議首部組成:

????????TCP協(xié)議與UDP協(xié)議的區(qū)別

源端口和目的端口(4個字節(jié)

????????源端口是發(fā)送端,目的端口是接收方,各自占2個字節(jié)

序號(4個字節(jié)

????????傳送的數(shù)據(jù)的數(shù)據(jù)流中每一個字節(jié)都擁有自己的序號,序號表示本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號,代表每次數(shù)據(jù)發(fā)送的位置,每發(fā)送一次就累加一次該數(shù)據(jù)字節(jié)數(shù)的大小,序號是計算機(jī)生成的隨機(jī)數(shù)。

確認(rèn)號(4個字節(jié)

????????期望收到對方的下一個報文段數(shù)據(jù)的第一個字節(jié)的序號

數(shù)據(jù)偏移(4位

????????表示數(shù)據(jù)部分距離報文首部的偏移量,“數(shù)據(jù)偏移”的計算單位是4個字節(jié),數(shù)據(jù)偏移量是占四位,那么最大表示為1111,最大1111表示15 x 4= 60個字節(jié),即表示TCP首部最大長度為60個字節(jié),因此“選項”部分最多40個字節(jié)。

保留字段(4位)一般設(shè)置為0

標(biāo)志位(8位)? ? ??

  • 緊急(URG):URG=1表示緊急指針有效,需要盡快傳送,不需要排隊直接優(yōu)先傳輸
  • 確認(rèn)(ACK):對已接受數(shù)據(jù)的確認(rèn),默認(rèn)為0,建立連接后,所以傳送的報文都必須將ACK置為1,當(dāng)ACK=1表示確認(rèn)號字段有效
  • 同步(SYN:在鏈接建立時使用,SYN=1,ACK=0表示是一個鏈接請求,若對方同意建立連接,則響應(yīng)報文段為SYN=1,ACK=1
  • 推送(PSH):接收 TCP 收到 PSH = 1 的報文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個緩存都填滿了后再向上交付。
  • 復(fù)位(RST):當(dāng) RST = 1 時,表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。
  • 終止(FIN:FIN = 1 表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。

窗口

????????窗口值作為接受方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù),單位為字節(jié)(限制是因為接受方的數(shù)據(jù)緩存空間是有限的)

檢驗和(2 字節(jié)

????????檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節(jié)的偽首部。

緊急指針(16

????????指出在本報文段中緊急數(shù)據(jù)共有多少個字節(jié)(緊急數(shù)據(jù)放在本報文段數(shù)據(jù)的最前面)。

?2、TCP三次握手和四次揮手

?2、1 三次握手

TCP協(xié)議與UDP協(xié)議的區(qū)別

第一次握手:客戶端向服務(wù)端發(fā)送了一個同步報文段

? ? ? ? SYN=1:表示客戶端請求連接

第二次握手:服務(wù)端收到了用戶端的請求,同意建立連接,然后服務(wù)器發(fā)送確認(rèn)報文段給客戶端

? ? ? ? SYN=1 ACK=1:表示同意建立連接

第三次握手:客戶端收到了服務(wù)端同意連接的確認(rèn)之后,開始發(fā)送第一個數(shù)據(jù)包? ?

? ? ? ? ACK:表示收到服務(wù)器的確認(rèn)數(shù)據(jù)包?

2、2?四次揮手?

????????TCP協(xié)議與UDP協(xié)議的區(qū)別?

?第一次揮手:客戶端向服務(wù)端發(fā)送連接釋放的請求報文,并且停止發(fā)送數(shù)據(jù)

? ? ? ? FIN=1:客戶端主動釋放客戶端到服務(wù)端的TCP連接

第二次揮手:服務(wù)端收到了客戶端的請求釋放報文,客戶端發(fā)送確認(rèn)報文。從客戶端到服務(wù)端這個方向上的連接就釋放了,TCP連接處于半關(guān)閉狀態(tài)。此時客戶端無法發(fā)送數(shù)據(jù)給服務(wù)端,但是服務(wù)端還可以發(fā)送數(shù)據(jù)給客戶端,客戶端仍可以接收。

? ? ? ? ACK=1:表示同意客戶端釋放連接請求

第三次揮手:服務(wù)端沒有數(shù)據(jù)再發(fā)給客戶端數(shù)據(jù),其應(yīng)用進(jìn)程就通知TCP釋放連接,并向客戶端發(fā)送確認(rèn)報文

? ? ? ? FIN=1 ACK=1:表示服務(wù)器釋放服務(wù)器到客戶端的TCP連接

第四次揮手:客戶端收到服務(wù)端的釋放報文段后,給服務(wù)端發(fā)送同意確認(rèn)報文?

3、代碼實現(xiàn)

? ? ? ? TCP進(jìn)行數(shù)據(jù)的傳輸是基于流進(jìn)行的

????????客戶端:使用的是Socket對象發(fā)送數(shù)據(jù)

public static void main(String[] args) {
	try(Socket clientSocket= new Socket("192.168.1.113",8080);) {
		//客戶端接收服務(wù)端發(fā)送的數(shù)據(jù)
		try(BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));) {
			String result = reader.readLine();
			System.out.println(result);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

?????????服務(wù)端:使用的是ServerSocket?對象接受數(shù)據(jù)

public static void main(String[] args) {
	try(ServerSocket server = new ServerSocket(8080);) {
		//服務(wù)器處于阻塞狀態(tài),等待客戶端的連接
		Socket accept = server.accept();
		System.out.println(accept.getRemoteSocketAddress());
		//服務(wù)端向客戶端發(fā)送數(shù)據(jù)
		try(BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()))) {
			writer.write("提貨碼:"+UUID.randomUUID().toString().substring(0,6).toUpperCase());
			writer.flush();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

二、UDP協(xié)議

1、UDP特點??

  • 用戶數(shù)據(jù)報協(xié)議UDP(User Datagram Protocol 是傳輸層的協(xié)議,無連接(即發(fā)送數(shù)據(jù)之前不需要建立連接)。
  • UDP 面向報文傳輸,不保證可靠交付,同時也不使用擁塞控制,適合多媒體通信的要求。
  • UDP 支持一對一、一對多、多對一和多對多的交互通信。
  • UDP 的首部開銷小,只有 8 個字節(jié)

2、首部格式?

  • UDP的首部沒有“序號”字段,因為UDP協(xié)議只需要傳輸一個數(shù)據(jù)包,所以不需要序號。
  • 用戶數(shù)據(jù)報 UDP 有兩個字段:數(shù)據(jù)字段首部字段。首部字段有 8 個字節(jié),由 4 個字段組成,每個字段都是兩個字節(jié)。

?TCP協(xié)議與UDP協(xié)議的區(qū)別

3、代碼實現(xiàn)

? ? ? ? UDP進(jìn)行數(shù)據(jù)的傳輸使用的是數(shù)據(jù)包的方式?

????????客戶端?

public static void main(String[] args) {
	//設(shè)置數(shù)據(jù)包
	byte[] buff="你好?。。?!".getBytes();
	DatagramPacket packet = new DatagramPacket(buff, buff.length);
	packet.setData(buff);  //將需要的數(shù)據(jù)寫入數(shù)據(jù)包
	
	//基于UDP的Socket
	//8081是設(shè)置自己的端口號
	try(DatagramSocket socket=new DatagramSocket(8081)) {
		//設(shè)置接收方的IP和端口
		socket.connect(Inet4Address.getByName("192.168.0.148"),8080);
		//發(fā)送數(shù)據(jù)包
		socket.send(packet);
		
		//接收接收端的回應(yīng)
		byte[] buf=new byte[64];
		packet.setData(buf);
		socket.receive(packet);
		//接受到的內(nèi)容
		String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
		System.out.println("服務(wù)端發(fā)送的內(nèi)容:"+result);
	} catch (IOException e) {
		e.printStackTrace();
	}
}

?????????服務(wù)端

public static void main(String[] args) {
	//創(chuàng)建數(shù)據(jù)包用于接收
	byte[] buff = new byte[64];
	DatagramPacket packet = new DatagramPacket(buff, buff.length);
	//監(jiān)聽8080端口
	try(DatagramSocket socket = new DatagramSocket(8080)) {
		
		//接受數(shù)據(jù),存入數(shù)據(jù)包
		socket.receive(packet);
		System.out.println("來自客戶端的字節(jié)內(nèi)容:"+Arrays.toString(packet.getData()));
		System.out.println("來自客戶端的字節(jié)長度:"+packet.getLength());
		System.out.println("來自客戶端的字節(jié)位置:"+packet.getOffset());
		
		//接受到的內(nèi)容
		String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
		System.out.println("客戶端發(fā)送的內(nèi)容:"+result);
		
		//給發(fā)送方進(jìn)行反饋
		packet.setData("收到了!?。?.getBytes());
		socket.connect(Inet4Address.getByName("192.168.0.137"),8081);
		socket.send(packet);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

三、TCP和UDP的區(qū)別?

  • 面向連接:TCP協(xié)議需要建立連接,僅支持一對一通信;UDP協(xié)議無需建立連接,支持一對一、一對多、多對一和多對多的交互通信。
  • 可靠傳輸:TCP協(xié)議通過確認(rèn)應(yīng)答、連接管理、流量控制、擁塞控制來確??煽啃詡鬏?;UDP不保證可靠性傳輸。
  • 性能效率:TCP協(xié)議傳輸效率慢,需要較多的資源開銷。UDP協(xié)議傳輸效率快,需要較少的資源開銷。
  • 首部格式:TCP協(xié)議的首部需要20-60個字節(jié),UDP協(xié)議需要8個字節(jié)。
  • 應(yīng)用場景:TCP要求通信數(shù)據(jù)可靠(比如文件傳輸、郵件傳輸?shù)龋?,UDP適用于喲求通信速度快(如音頻、視頻等)文章來源地址http://www.zghlxwxcb.cn/news/detail-406124.html

到了這里,關(guān)于TCP協(xié)議與UDP協(xié)議的區(qū)別的文章就介紹完了。如果您還想了解更多內(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ù)器費用

相關(guān)文章

  • TCP/UDP協(xié)議重溫三次握手四次揮手 簡單筆記

    TCP/UDP協(xié)議重溫三次握手四次揮手 簡單筆記

    術(shù)語儲備: SYN: 同步位 ;SYN=1,表示進(jìn)行一個連接請求 ACK: 確認(rèn)位 ;ACK=1,確認(rèn)有效 ACK=0,確認(rèn)無效 ack : 確認(rèn)號 ;對方發(fā)送序號+1 seq : 序號 ; 標(biāo)識從TCP發(fā)端向TCP收端發(fā)送的數(shù)據(jù)字節(jié)流 FIN :表示 關(guān)閉連接 TCP/UDP協(xié)議都是傳輸層協(xié)議 TCP協(xié)議:(傳輸控制協(xié)議) 連接(三次握

    2024年02月09日
    瀏覽(21)
  • 10000字講解TCP協(xié)議(確認(rèn)應(yīng)答,超時重傳,三次握手,四次揮手等等眾多機(jī)制)以及UDP協(xié)議(UDP報文,校驗和)

    10000字講解TCP協(xié)議(確認(rèn)應(yīng)答,超時重傳,三次握手,四次揮手等等眾多機(jī)制)以及UDP協(xié)議(UDP報文,校驗和)

    UDP它是屬于TCP/IP協(xié)議族中的一種。是無連接的協(xié)議,發(fā)送數(shù)據(jù)前不需要建立連接,因為不需要建立連接,所以可以在網(wǎng)絡(luò)上以任何可能的路徑傳輸,至于有沒有傳輸?shù)侥康牡?,UDP是不關(guān)心的,所以,UDP它是天然支持廣播的,就類似學(xué)校的廣播,只需要將聲音傳遞給每個學(xué)生即

    2024年01月21日
    瀏覽(30)
  • 什么是三次握手與四次揮手( 一篇文章講清楚TCP協(xié)議與UDP協(xié)議)

    什么是三次握手與四次揮手( 一篇文章講清楚TCP協(xié)議與UDP協(xié)議)

    ? ? 關(guān)于TCP協(xié)議和UDP協(xié)議大家應(yīng)該都有所耳聞,我們常用的網(wǎng)絡(luò)通訊。比如瀏覽網(wǎng)頁、軟件聊天、以及你看到的這篇文章,都是通過這兩種協(xié)議來進(jìn)行數(shù)據(jù)傳輸?shù)摹?到底他們是如何工作的?這兩種協(xié)議的區(qū)別又是什么呢?請隨武漢海翎光電的小編一起耐心看完這篇文章,你一

    2024年02月09日
    瀏覽(23)
  • TCP/UDP的首部

    TCP/UDP的首部

    TCP 首部長度為20字節(jié),加上選項部分最大可達(dá)60字節(jié)。 源端口,16位;發(fā)送數(shù)據(jù)的源進(jìn)程端口。 目的端口,16位;接收數(shù)據(jù)的進(jìn)程端口。 由于端口號最多為16位,因此端口號最大值為65535。 序號,32位;代表當(dāng)前TCP數(shù)據(jù)段第一個字節(jié)占整個字節(jié)流的相對位置。 確認(rèn)號,32位;代

    2024年02月16日
    瀏覽(23)
  • 【網(wǎng)絡(luò)原理進(jìn)階篇】自定義協(xié)議,協(xié)議約定符,三次握手,四次揮手,TCP(保證可靠性機(jī)制)和UDP原理

    【網(wǎng)絡(luò)原理進(jìn)階篇】自定義協(xié)議,協(xié)議約定符,三次握手,四次揮手,TCP(保證可靠性機(jī)制)和UDP原理

    前言: 大家好,我是 良辰丫 ,我們已經(jīng)學(xué)習(xí)了網(wǎng)絡(luò)原理基礎(chǔ)版,初步認(rèn)識了網(wǎng)絡(luò),還學(xué)習(xí)了網(wǎng)絡(luò)編程,了解了網(wǎng)絡(luò)通信的各種程序,接下來我們更深入的了解網(wǎng)絡(luò)是如何工作的.這篇文章我們主要介紹協(xié)議,UDP和TCP的一些原理.???? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE初階 ??

    2023年04月24日
    瀏覽(23)
  • TCP協(xié)議與UDP協(xié)議的區(qū)別

    TCP協(xié)議與UDP協(xié)議的區(qū)別

    目錄 前言 一、TCP協(xié)議? 1、TCP協(xié)議首部組成 2、TCP三次握手和四次揮手 2、1 三次握手 2、2?四次揮手? 3、代碼實現(xiàn) 二、UDP協(xié)議 1、UDP特點?? 2、首部格式? 3、代碼實現(xiàn) 三、TCP和UDP的區(qū)別? ????????在我們的OSI七層模型或者是四層模型中,我們的傳輸層始終保持不變,傳輸

    2023年04月09日
    瀏覽(26)
  • TCP協(xié)議和UDP協(xié)議的區(qū)別

    TCP協(xié)議和UDP協(xié)議的區(qū)別

    目錄 一、簡介UDP和TCP來源 OSI七層結(jié)構(gòu) TCP/IP協(xié)議模型 二、TCP協(xié)議: 1、TCP的功能: 2、UDP的代碼實現(xiàn): 3、TCP協(xié)議的組成: ????????4、TCP的連接管理:TCP的三次握手(建立連接)和四次揮手(釋放連接) TCP的三次握手: TCP三次握手的原因: TCP的三次握手狀態(tài)的改變 5、重

    2024年02月02日
    瀏覽(37)
  • 全面解析UDP協(xié)議(特點、報文格式、UDP和TCP的區(qū)別)

    UDP是無連接通信協(xié)議,即在數(shù)據(jù)傳輸時,數(shù)據(jù)的發(fā)送端和接收端不建立邏輯連接。簡單來說,當(dāng)一臺計算機(jī)向另外一臺計算機(jī)發(fā)送數(shù)據(jù)時,發(fā)送端不會確認(rèn)接收端是否存在,就會發(fā)出數(shù)據(jù),同樣接收端在收到數(shù)據(jù)時,也不會向發(fā)送端反饋是否收到數(shù)據(jù)。 特點 無連接:UDP通信

    2024年02月08日
    瀏覽(111)
  • TCP協(xié)議的概念以及與UDP的區(qū)別

    TCP的概念 (Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接(連接導(dǎo)向)的、可靠的、基于IP的傳輸層協(xié)議,由IETF的RFC 793說明(specified)。TCP在IP報文的協(xié)議號是6。 一、傳輸控制協(xié)議 1 面向連接 意味著兩個使用TCP的應(yīng)用(通常是一個客戶端和一個服務(wù)器)在彼此交換數(shù)

    2024年02月07日
    瀏覽(33)
  • TCP、UDP 協(xié)議的區(qū)別,各自的應(yīng)用場景

    TCP 傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。 UDP 用戶數(shù)據(jù)報協(xié)議,是一個簡

    2024年02月09日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包