suchen
HeimBetrieb und InstandhaltungBetrieb und Wartung von LinuxVerstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Die IP-Schicht unter TCP ist eine Best-Effort-Zustellung und unzuverlässig, daher muss TCP selbst eine zuverlässige Übertragung durchführen. Als Nächstes beginnen wir mit einem einfachen Stop-and-Wait-Protokoll, um zu erklären, wie eine zuverlässige Übertragung implementiert wird. Wir müssen auf mehrere Merkmale einer zuverlässigen Übertragung achten: kein Verlust, keine Duplizierung und ordnungsgemäße Ankunft.

Beachten Sie, dass TCP nicht das Stop-and-Wait-Protokoll verwendet, um eine zuverlässige Übertragung zu erreichen.

Stop Waiting Protocol

Die Datenübertragungseinheit der Transportschicht wird als Segment bezeichnet. Der Einfachheit halber werden sie im Folgenden alle als Gruppen bezeichnet.

Das Prinzip des Stop-and-Wait-Protokolls ist sehr einfach. Nachdem Sie ein Paket gesendet haben, stoppen Sie das Senden, warten Sie auf die Bestätigung des vorherigen Pakets und fahren Sie dann mit dem Senden der folgenden Pakete fort.

Das Folgende wird anhand verschiedener Situationen analysiert:

Fehlerfreie Situation

Die fehlerfreie Situation ist sehr einfach, wie unten gezeigt. Nachdem jedes Paket gesendet wurde, stoppt es das Senden und wartet auf die Bestätigung des Pakets, bevor es mit dem Senden nachfolgender Pakete fortfährt.

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Ein Fehler tritt auf

Es gibt zwei Situationen, in denen ein Fehler auftritt: Die erste besteht darin, dass das gesendete Paket nicht erfolgreich an die Zieladresse zugestellt wurde, und die andere darin, dass das übertragene Datenpaket einen Fehler aufweist Fehler. Lassen Sie uns anhand der Abbildung die beiden Situationen analysieren. Schauen wir uns zunächst die Funktionsweise von B an: Wenn das Paket falsch ist, verwirft B das Paket, nachdem es empfangen wurde Es passiert nichts. Tun Sie es nicht (A wird nicht benachrichtigt, dass ein falsches Paket empfangen wurde). Wenn B das M1-Paket nicht erhält, weiß es nichts und wird keine Maßnahmen ergreifen.

Schauen wir uns an, was A als nächstes tut: Nachdem A das Paket gesendet hat, aber Bs Bestätigung des M1-Pakets nicht erhalten hat, muss das M1-Paket nach Ablauf der Wartezeit erneut gesendet werden. Um eine Timeout-Neuübertragung zu implementieren, müssen Sie einen Timeout-Timer festlegen. Wenn ein gesendetes Paket vor Ablauf des Timeout-Zeitraums bestätigt wird, wird der Timeout-Timer zurückgesetzt, andernfalls muss das Paket erneut übertragen werden. Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Es sind einige Punkte zu beachten:

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

A Nach dem Senden eines Pakets muss eine Kopie des Pakets für die Timeout-Neuübertragung gespeichert werden. Wenn eine Bestätigung für dieses Paket empfangen wird, kann die Kopie des Pakets verworfen werden.

Sie müssen jede Gruppe nummerieren, damit Sie den Ankunftsstatus jeder Gruppe kennen.

  • Das Timeout sollte etwas länger als die durchschnittliche Übertragungszeit eingestellt werden, um unnötige Neuübertragungen zu vermeiden.

  • Verlorene Bestätigung und verspätete Bestätigung
  • Neben Fehlern bei der Paketübertragung treten auch Fehler bei der Rücksendung der Bestätigung auf – verlorene Bestätigung und verspätete Bestätigung.

Sehen Sie sich zunächst die Situation des Bestätigungsverlusts an. Gruppe B von A hat sie erhalten und eine Bestätigung an A gesendet, aber die Bestätigung ging verloren und A hat sie nicht erhalten. Da A die Bestätigung von M1 nicht erhalten hat, überträgt es M1 erneut an B, nachdem es länger als die Zeitüberschreitung gewartet hat. Zu diesem Zeitpunkt empfängt B das doppelte Paket M1 und muss zwei Vorgänge ausführen:

das doppelte Paket M1 verwerfen

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

und die Bestätigung von M1 an A senden. Denn da A M1 erneut übertragen hat, bedeutet dies, dass A das Paket von M1 nicht empfangen hat. Daher muss B weiterhin Bestätigungen an M1 senden.

  • Sehen wir uns eine andere Situation an. Die Gruppenbestätigung für M1 ist verspätet (nach Ablauf der Auszeit erhalten). Nach Erhalt der doppelten Bestätigung wird A diese verwerfen und nichts weiter unternehmen.

    Durch den oben genannten Timeout-Neuübertragungsmechanismus kann eine zuverlässige Übertragung bei unzuverlässiger Netzwerkübertragung erreicht werden.

    Kanalauslastung

    Das obige Stop-and-Wait-Protokoll ist einfach, weist jedoch einen sehr großen Mangel auf: Die Kanalauslastung ist zu gering. Während des Zeitraums, in dem auf den Empfang der Bestätigung gewartet wird, ist der Kanal völlig inaktiv, was sehr verschwenderisch ist.

    Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

    Um die Kanalauslastung zu verbessern, kann die Pipeline-Übertragung verwendet werden, um mehrere Pakete kontinuierlich zu senden, was die Kanalauslastung erheblich verbessern kann.

    Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

    Zu den Protokollen, die die Pipeline-Übertragung nutzen, gehören das Continuous ARQ Protocol und das Window Sliding Protocol. TCP verwendet das Sliding-Window-Protokoll, um eine zuverlässige Übertragung durchzuführen.

Das obige ist der detaillierte Inhalt vonVerstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
win10如何重置tcp/ip协议?windows10重置tcp/ip协议栈的方法win10如何重置tcp/ip协议?windows10重置tcp/ip协议栈的方法Mar 16, 2024 am 11:07 AM

win10如何重置tcp/ip协议?其实方法很简单的,用户们可以直接的进入到命令提示符,然后按下ctrl+shift+enter的组合键来进行操作就可以了或者是直接的执行重置命令来进行设置,下面就让本站来为用户们来仔细的介绍一下windows10重置tcp/ip协议栈的方法吧。windows10重置tcp/ip协议栈的方法一、管理员权限1、我们使用快捷键win+R直接打开运行窗口,然后输入cmd并按住ctrl+shift+enter的组合键。2、或者我们可以直接在开始菜单中搜索命令提示符,右键点

Java API 开发中使用 Netty4 进行 TCP 通信Java API 开发中使用 Netty4 进行 TCP 通信Jun 17, 2023 pm 11:18 PM

TCP是计算机网络通信协议的一种,是一种面向连接的传输协议。在Java应用开发中,TCP通信被广泛应用于各种场景,比如客户端和服务器之间的数据传输、音视频实时传输等等。Netty4是一个高性能、高可扩展性、高性能的网络编程框架,能够优化服务器和客户端之间的数据交换过程,使其更加高效可靠。使用Netty4进行TCP通信的具体实现步骤如下:引入

python中怎么使用TCP实现对话客户端和服务器python中怎么使用TCP实现对话客户端和服务器May 17, 2023 pm 03:40 PM

TCP客户端一个使用TCP协议实现可连续对话的客户端示例代码:importsocket#客户端配置HOST='localhost'PORT=12345#创建TCP套接字并连接服务器client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#获取用户输入message=input("请输入要发送的消息:&

活久见!TCP两次挥手,你见过吗?那四次握手呢?活久见!TCP两次挥手,你见过吗?那四次握手呢?Jul 24, 2023 pm 05:18 PM

那这里面提到的"面向连接",意味着需要 建立连接,使用连接,释放连接。建立连接是指我们熟知的TCP三次握手。而使用连接,则是通过一发送、一确认的形式,进行数据传输。还有就是释放连接,也就是我们常见的TCP四次挥手。

如何在Java中使用单个TCP连接发送多个文件?如何在Java中使用单个TCP连接发送多个文件?Apr 27, 2023 am 08:49 AM

使用一个TCP连接发送多个文件为什么会有这篇博客?最近在看一些相关方面的东西,简单的使用一下Socket进行编程是没有的问题的,但是这样只是建立了一些基本概念。对于真正的问题,还是无能为力。当我需要进行文件的传输时,我发现我好像只是发送过去了数据(二进制数据),但是关于文件的一些信息却丢失了(文件的扩展名)。而且每次我只能使用一个Socket发送一个文件,没有办法做到连续发送文件(因为我是依靠关闭流来完成发送文件的,也就是说我其实是不知道文件的长度,所以只能以一个Socket连接代表一个文件)。

Linux SIGPIPE信号Linux SIGPIPE信号Feb 19, 2024 pm 04:00 PM

在TCP通信双方中,为了描述方便,以下将通信双方用A和B代替。根据TCP协议规定,如果A关闭连接后B继续发送数据,B会收到A的RST响应。若B继续发送数据,系统会发出SIGPIPE信号告知连接已断开,停止发送。系统对SIGPIPE信号的默认处理行为是让B进程退出。操作系统对SIGPIPE信号的这种默认处理行为非常不友好,让我们来分析一下。TCP通信是全双工信道,相当于两条单工信道,连接两端各负责一条。当对端“关闭”时,虽然本意是关闭整个两条信道,但本端只是收到FIN包。根据TCP协议的规定,当一

tcp和ip的区别是什么tcp和ip的区别是什么Sep 04, 2023 pm 02:19 PM

TCP和IP是互联网中两个不同的协议:1、TCP是一种运输层协议,而IP是一种网络层协议;2、TCP提供了数据包的分段、排序、确认和重传等功能,而IP协议负责为数据包提供源和目标地址;3、TCP是面向连接的协议,而IP协议是无连接的;4、TCP还提供流量控制和拥塞控制。

面试官问:一个TCP连接可以发多少个HTTP请求?面试官问:一个TCP连接可以发多少个HTTP请求?Feb 22, 2023 pm 12:00 PM

曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.