傳輸層兩大戰將TCP、UDP的定位

傳輸層

定義一些傳輸數據的協議和端口,傳輸協議同時進行流量控制,根據接收方的數據吞入熟讀,規定適當的發送速率,解決傳輸效率及能力問題

什么是TCP

TCP/IP即傳輸控制/網絡協議,是面向連接的協議,發送數據前要先建立連接(發送方和接收方的成
對的兩個之間必須建 立連接),TCP提供可靠的服務,也就是說,通過TCP連接傳輸的數據不會丟
失,沒有重復,并且按順序到達

TCP是怎么建立服務端與客戶端雙向通信可信型通道的

TCP三次握手是建立TCP連接的過程,用于確認客戶端和服務器之間的發送和接收功能是否正常。以下是TCP三次握手的具體細節:

  1. 第一次握手:客戶端向服務器發送一個SYN包(即同步序列號),并進入SYN_SENT狀態,等待服務器的確認。此時,SYN=1,seq=x(seq為客戶端發送的序列號),表示客戶端請求與服務器建立連接。
  2. 第二次握手:服務器收到客戶端發送的SYN包后,會確認客戶的ACK(即確認號),ack=x+1,同時自己也發送一個SYN包,即SYN+ACK包,此時服務器進入SYN_RECV狀態。SYN=1,ACK=1,seq=y(seq為服務器發送的序列號),ack=x+1,表示服務器已收到客戶端的連接請求,并請求客戶端確認。
  3. 第三次握手:客戶端收到服務器的SYN+ACK包后,會向服務器發送一個確認包ACK,ack=y+1,此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。此時,客戶端和服務器都知道彼此有收發能力,可以開始傳輸數據了。

在三次握手過程中,每個數據包都包含一個序列號(seq)和一個確認號(ack)。序列號用于標識發送方發送的數據包的順序,而確認號則用于確認接收方已成功接收到的數據包的順序。通過比較序列號和確認號,雙方可以確保數據的正確傳輸和接收。

此外,值得注意的是,在第二次和第三次握手中,服務器和客戶端都會發送SYN和ACK標志位都為1的數據包,這是因為SYN和ACK標志位在不同的階段有不同的含義。在第二次握手中,服務器的SYN標志位表示它正在請求與客戶端建立連接,而ACK標志位則表示它已接收到客戶端的連接請求。在第三次握手中,客戶端的SYN標志位已不再需要,因為連接已經建立,而ACK標志位則用于確認已接收到服務器的SYN+ACK包。

總之,TCP三次握手是一個非常重要的過程,用于確保客戶端和服務器之間的連接是可靠的,并且可以正常地傳輸數據。通過三次握手,雙方可以確認彼此的發送和接收功能是否正常,并建立穩定的連接。

用打電話(IM的信令)來比喻三次握手

甲給乙打電話

?第一次握手? 甲撥打乙的電話,乙的手機接收到甲的通話請求? ? 服務器確認客戶端發送正常

第二次握手? ?乙的手機會同步返回一個信令,告訴甲的手機,大哥,我收到了你的信息哦,客戶端確認自己發送和接收與服務器發送和接收都正常,此時服務器只知道自己接收正常不知道自己發送是否正常

第三次握手? ?甲的手機接收到這個信令后,確認了乙的手機可以呼叫的通,繼續呼叫(重點是怎么確定是繼續呼叫還是第一次呼叫,這也就是那些丟來丟去的數據包做的事情)客戶端繼續呼叫了,服務器收到它的繼續呼叫,說明自己也發送成功了,確認了雙方都收發正常,可以建立正常的通訊了

這三次握手是缺一不可的,只要缺少就無法保證雙向的接收都正常

?實際上以上就已經是建立了可信型通訊通道了,你實際上通訊的拒接或者收聽都是建立在這個通訊通道建立的后續操作了

使用TCP協議的協議

使用TCP(傳輸控制協議)的協議有很多,以下是一些常見的例子:

  1. HTTP:超文本傳輸協議,用于在Web瀏覽器和服務器之間傳輸數據。
  2. HTTPS:安全超文本傳輸協議,是HTTP的安全版本,使用SSL/TLS對數據進行加密。
  3. FTP:文件傳輸協議,用于在客戶端和服務器之間傳輸文件。
  4. POP3:郵局協議,用于從郵件服務器接收電子郵件。
  5. SMTP:簡單郵件傳輸協議,用于發送電子郵件。
  6. Telnet:遠程登錄協議,允許用戶通過終端登錄到遠程計算機。
  7. SSH:安全外殼協議,用于加密安全登錄,替代安全性較差的Telnet協議。

以上只是使用TCP協議的一部分協議,實際上還有很多其他的協議也使用TCP進行數據傳輸。TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,廣泛應用于各種網絡應用中。

TCP例子

package com.zxs;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TCPServer {public static void main(String[] args) {try {ServerSocket   server = new ServerSocket(8081);System.out.println("等待客戶端連接...");while (true) {Socket socket = server.accept();System.out.println("客戶信息為:" + socket.getRemoteSocketAddress());InputStream in = socket.getInputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = in.read(buffer)) > 0) {System.out.println(new String(buffer, 0, len));}OutputStream out = socket.getOutputStream();out.write("1".getBytes());}} catch (IOException e) {e.printStackTrace();}}
}

?

package com.zxs;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class TCPClient {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1", 8081);OutputStream outputStream = socket.getOutputStream();System.out.println("連接成功請輸入:");while (true) {byte[] car = new Scanner(System.in).nextLine().getBytes();outputStream.write(car);outputStream.flush();}}
}

什么是UDP

UDP它是屬于TCP/IP協議族中的一種。是無連接的協議,發送數據前不需要建立連接,是沒有可
靠性的協議。因為不需要建立連接所以可以在在網絡上以任何可能的路徑傳輸,因此能否到達目的
地,到達目的地的時間以及內容的正確性都是不能被保證的。

我只負責公告,能不能收到是你們自己的事情

UDP(User Datagram Protocol)是用戶數據報協議,它是OSI(Open System Interconnection,開放式系統互聯)參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。UDP協議主要用于不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應用層完成。

UDP協議的主要特點包括:

  1. 面向無連接的協議,速度快但是不可靠。
  2. 只管發送數據,不確認對方是否收到,對方接收到數據之后也不會反饋一個信息給發送方。
  3. 基于數據包(報)傳輸:將要發送的數據,源和目的地址封裝的數據包中。
  4. 數據包大小限制在64k以內。
用公司發送放假通知來比喻UDP的不負責

假如到了年底放假,具體什么時候放假,人事在群里發一個放假通知,你Y的加沒加群屏沒屏蔽,收沒收到不關他的事,他反正是通知了

使用UDP協議的協議

使用UDP(用戶數據報協議)的協議主要有:

  1. DNS(域名系統):DNS用于將域名轉換為IP地址。由于DNS查詢和響應通常較小,且不需要建立持續的連接,因此DNS使用UDP進行通信。
  2. TFTP(簡單文件傳輸協議):這是一種簡單的文件傳輸協議,通常用于嵌入式系統和網絡設備的固件更新。TFTP使用UDP進行數據傳輸。
  3. RIP(路由信息協議):RIP是一種用于在自治系統(AS)內部網關之間傳遞路由信息的動態路由選擇協議。RIP使用UDP進行通信。
  4. DHCP(動態主機配置協議):DHCP用于自動為網絡中的主機分配IP地址。DHCP客戶端和服務器之間使用UDP進行通信。
  5. SNMP(簡單網絡管理協議):SNMP用于網絡管理系統收集和管理網絡設備的信息。SNMP使用UDP進行通信。

此外,還有一些實時性要求較高、數據量較小的應用場景也會使用UDP協議,例如網絡視頻會議系統、在線視頻、網絡語音電話等。

需要注意的是,雖然這些協議使用UDP進行通信,但并不意味著它們完全不依賴TCP。在某些情況下,這些協議可能會使用TCP進行輔助通信,例如當需要建立連接或進行可靠的數據傳輸時。

UDP例子

package com.zxs;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;//UDP協議Socket:服務端
public class UDPServer {public static void main(String[] args) {try {DatagramSocket socket = new DatagramSocket(8082);System.out.println("服務端準備中...");while (true) {byte[] car = new byte[1024];DatagramPacket packet = new DatagramPacket(car, car.length);socket.receive(packet);int length = packet.getLength();System.out.println("接收到的數據:" + new String(car, 0, length));System.out.println("UDP協議Socket接受成功");}} catch (IOException e) {e.printStackTrace();}}
}
package com.zxs;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.util.Scanner;public class UDPClient {public static void main(String[] args) {try {DatagramSocket socket = new DatagramSocket(2468);InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8082);System.out.println("請輸入你要公告的信息:");while (true) {byte[] car = new Scanner(System.in).nextLine().getBytes();DatagramPacket packet = new DatagramPacket(car, car.length,address);socket.send(packet);System.out.println("UDP協議的Socket發送成功");}} catch (Exception e) {e.printStackTrace();}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710810.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710810.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是IP公網?

IP公網是指互聯網上可以公開訪問的IP地址。它是經過互聯網服務提供商(ISP)向用戶提供的公共網絡IP地址。與之相對的是內網IP地址,內網IP地址一般是由路由器或交換機分配給連接在局域網中的設備使用。 IP公網的作用非常廣泛,可以應…

C#解析JSON

https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定義2. JSON一般構成及解析方法3. 解析舉例子 1. JSON對象解析,只包含一層對象{}2. 嵌套JSON對象解析,包含多層對象{}3. JSON數組解析1(數組循環遍歷&…

Web APIs知識點講解(階段二)

DOM-事件基礎 一.事件 1.事件 目標:能夠給 DOM元素添加事件監聽 事件:事件是在編程時系統內發生的動作或者發生的事情,比如用戶在網頁上單擊一個按鈕 事件監聽:就是讓程序檢測是否有事件產生,一旦有事件觸發,就立即調用一個函…

http工具類

public class HttpRequstUtil {/*** http請求方法** param message 查詢條件* param url 查詢地址* param token 身份驗證token* param socketTimeout socket 響應時間* param connectTimeout 超時時間* return 返回字符串*/Deprecatedpublic stat…

金仕達與 DolphinDB 建立深度合作,共筑 FICC 科技創新新篇章

從“關起門做交易”到“打開門做服務”,國內 FICC 業務正經歷從自營到市場化服務的轉變,借助數據分析、算法交易等技術的快速發展,交易團隊能夠更加主動地發現市場需求,為不同客群提供更好的做市業務,FICC 交易電子化已…

打造智能汽車微服務系統平臺:架構的設計與實現

隨著智能汽車技術的飛速發展,微服務架構在汽車行業中的應用越來越廣泛。采用微服務架構可以使汽車系統更加靈活、可擴展,并且有利于快速推出新功能和服務。本文將從設計原則、關鍵技術、數據安全等方面,介紹如何搭建智能汽車微服務系統平臺架…

網絡通信技術

?1.分組交換技術 在網絡通信中,數據通過網絡節點的某種轉發方式,實現從一個端系統到另一個端系統之間的數據傳輸技術稱為數據交換技術。數據交換技術有電路交換、報文交換和分組交換,計算機網絡采用分組交換技術。 分組就是源主機(如服務器…

【Python】FastAPI 項目創建 與 Docker 部署

文章目錄 前言&需求描述1. 本地FastAPI1.1 Python 環境準備1.2 本地 Pycharm 創建FastAPI項目 2. Python FastAPI 部署2.1 服務器配置Python環境2.2.1 下載與配置Git、Pyenv等工具2.2.2 下載與配置Python 2.2 FastAPI 打包成鏡像2.2.1 項目準備所需環境文件2.2.2 編寫Docke…

畢業設計——基于springboot的聊天系統設計與實現(服務端 + 客戶端 + web端)

整個工程包含三個部分: 1、聊天服務器 聊天服務器的職責一句話解釋:負責接收所有用戶發送的消息,并將消息轉發給目標用戶。 聊天服務器沒有任何界面,但是卻是IM中最重要的角色,為表達敬意,必須要給它放個…

入侵和攻擊模擬 (BAS) 技術應用實踐

文章目錄 前言一、實施BAS的必要性二、實施BAS的關鍵步驟1、識別網絡中的脆弱區域2、創建基線安全模型3、選擇合適的BAS工具4、進行模擬攻擊測試5、分析結果并改進三、BAS實施中的挑戰1、組織的專業知識和能力有限2、改變傳統工作流程3、安全預算不足4、難以與現有安全基礎設施…

C語言中的不同變量初始值:深度解析與實踐指南

在C語言編程領域,理解和掌握變量的初始化原理和過程是構建穩健、高效代碼的基礎。C語言對不同類型變量的初始化處理方式存在差異,這要求開發者明確理解并合理應用這些規則以避免潛在的運行時錯誤和未定義行為。本文將詳細解讀C語言中各類變量的初始狀態設…

AI智能分析網關V4車輛違停算法在園區場景中的應用及特點

隨著城市化進程的加速,車輛違停問題愈發嚴重,給城市交通帶來了極大的困擾。為了解決這一問題,AI技術逐漸被應用于車輛違停的檢測中。AI檢測算法在車輛違停方面的應用,主要是通過計算機視覺技術,對道路上的車輛進行實時…

智慧灌區項目案例(甘肅省蘭州市某重點灌區)

?甘肅省蘭州市某重點灌區自上個世紀80年代建成后,灌溉面積達到30萬畝,對推動當地農業發展發揮了重要作用。但長期以來,該灌區的水利管理仍主要依靠人工統計記錄,缺乏實時監測和精細化管理。為實現灌區管理的現代化升級,甘肅水利局委托星創易聯公司設計實施水利信息化項目。 項…

【Python筆記-設計模式】狀態模式

一、說明 狀態模式是一種行為設計模式,用于解決對象在不同狀態下具有不同行為 (一) 解決問題 在對象行為根據對象狀態而改變時,規避使用大量的條件語句來判斷對象的狀態,提高系統可維護性 (二) 使用場景 當對象的行為取決于其狀態&#…

C#使用iText7將多個PDF文檔合并為單個文檔

使用HtmlAgilityPack抓取并分析網頁內容,然后再調用PuppeteerSharp將網頁生成PDF文件,最終的成果如下圖所示,得到將近120個pdf文檔。能看,但是不方便,需要逐個打開文檔才能看到所需的內容,最好能將這些文檔…

淺談 Linux 網絡編程 socket

文章目錄 socket 介紹 socket 介紹 socket 被翻譯成 網絡套接字,這個名字實在是不好理解,我更愿意稱為"插槽"。 忽略 socket 的中文名,先無腦記住兩個規則: ① 記住,一個文件描述符(fd) 指向一個 socket&…

GPT-SoVITS音色克隆-模型訓練步驟

GPT-SoVITS音色克隆-模型訓練步驟 GPT-SoVITS模型源碼一個簡單的TTS后端項目 基于模型部署和訓練教程,語雀 模型部署和訓練教程 啟動模型訓練的主頁面 1. 切到模型路徑 /psycheEpic/GPT-SoVITS進入Python虛擬環境,并掛起執行python腳本 conda activ…

機器學習(II)--樣本不平衡

現實中,樣本(類別)樣本不平衡(class-imbalance)是一種常見的現象,如:金融欺詐交易檢測,欺詐交易的訂單樣本通常是占總交易數量的極少部分,而且對于有些任務而言少數樣本更…

Linux信號【產生-保存-處理】

目錄 前言: 1、進程信號基本概念 1.1、什么是信號? 1.2、信號的作用 2、鍵盤鍵入 2.1、ctrlc 終止前臺進程 2.1.1、signal 注冊執行動作 3、系統調用 3.1、kill 函數 3.2、模擬實現 myKill 3.3、raise 函數 3.4、abort 函數 4、軟件條件信號…

人工智能福利站,初識人工智能,圖神經網絡學習,第五課

🏆作者簡介,普修羅雙戰士,一直追求不斷學習和成長,在技術的道路上持續探索和實踐。 🏆多年互聯網行業從業經驗,歷任核心研發工程師,項目技術負責人。 🎉歡迎 👍點贊?評論…