为什么说TCP/IP协议族中的IP协议是无连接的?

2024-01-12

为什么IP被称为无连接协议?如果是的话,那么面向连接的协议是什么?

Thanks.

更新 - 1 - 20:21 2010/12/26

我认为,为了更好地回答我的问题,最好从物理上和逻辑上解释“连接”的实际含义。

更新 - 2 - 9:59 AM 2/1/2013

根据下面所有的答案,我觉得这里提到的“联系”应该被视为一组行动/安排/纪律。因此,它更多的是一个抽象的概念,而不是一个具体的对象。

更新 - 3 - 11:35 AM 6/18/2015

这是更物理的解释:

  • IP协议是无连接的,因为IP网络中的所有数据包都是独立路由的,它们不一定经过相同的路由,而在面向连接的虚电路网络中,所有数据包都经过相同的路由。这条单一路线就是“虚拟电路”的含义。

  • 通过连接,因为只有 1 个路由,所以所有数据包将按照发送出去的顺序到达。

  • 如果没有连接,则不能保证所有数据包都会到达 与发送的顺序相同。

更新 - 2016 年 1 月 20 日星期三 4 - 9:55

其特点之一是connection-oriented是数据包顺序被保留。 TCP 使用序列号来实现这一点,但 IP 没有这样的设施。因此,TCP 是面向连接的,而 IP 是无连接的。


基本思想非常简单:使用 IP(就其本身而言——没有 TCP、UDP 等),您只是发送一个数据包。您只需将一些带有目标地址的数据发送到网络上,仅此而已。 IP 本身可以提供:

  1. 不保证一定会送达
  2. 没有办法知道它是否是
  3. 没有什么可以让目的地知道等待数据包
  4. 很多其他的事情

它所做的只是指定一个最小的数据包格式,以便您可以从一个点到另一个点获取一些数据(例如,路由器知道数据包格式,因此它们可以查看目的地并在下一跳上发送数据包)。

TCP是面向连接的。建立连接意味着在 TCP 会话开始时,它会进行“三次握手”,以便(特别是)目的地知道与源的连接已建立。它在内部跟踪该地址,因此它可以/将会/确实期望来自该地址的更多数据包,并且能够发送回复以(例如)确认它收到的每个数据包。源和目的地还合作对确认方案中的所有数据包进行序列号,因此每一端都知道另一端是否收到了它发送的数据包。这在物理上并不涉及太多,但从逻辑上讲,它涉及在两端分配一些内存。其中包括元数据的内存,例如要使用的下一个数据包序列号,以及可能重新传输的有效负载数据,直到另一方确认收到该数据包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么说TCP/IP协议族中的IP协议是无连接的? 的相关文章

  • 服务器套接字在 Close_Wait 中挂起

    场景如下 我正在从 C 服务器应用程序向客户端发送大量数据 突然数据流停止 客户端没有数据更新并且端口被阻塞 发生这种情况时 服务器端症状是 Close Wait 在该端口 netstat 操作将在日志中阻塞 错误代码 135 无法从客户端
  • 如何从 Android 应用程序检测 WiFi 网络中连接的所有设备

    我正在开发一个应用程序 我需要在其中扫描 WiFi 网络并显示所有已连接设备的列表 允许用户点击设备 应用程序应显示该特定设备的所有硬件信息 这里的硬件是指 RAM 存储介质 存储容量 设备名称 设备 IP 地址等 现在 该设备可以是 Xb
  • 使用 Python 查找 LAN 上的活动节点

    我正在创建一个与 Python 2 7 和 Windows 中的 IP Messenger 相同的 Messenger 我想要与 IP Messenger 使用的功能相同的功能查找通过 LAN 运行相同软件的系统但我无法理解这项技术 有人可
  • python 中的原始套接字和 sendto

    我正在努力将 scapy 与twisted 集成 但我在 OSX 上遇到了这个非常奇怪的错误 我似乎无法弄清楚 基本上我无法通过原始套接字发送有效的 TCP 数据包 包括 IP 标头 这就是我正在做的 import socket from
  • 10G 链路的 netcat 和 iperf 结果存在巨大差异

    我很困惑看到 netcat 和 iperf 结果之间的巨大差异 我有 10 G 链路连接我的服务器和客户端 iperf 的速度约为 10Gb s 但 netcat 的速度仅为约 280 MB s 可能是什么错误 对于 Iperf Serve
  • 通过 UDP 从服务器向 iPhone 发送大量实时处理的数据

    我正在实施一个远程应用程序 服务器将实时处理和渲染数据作为动画 准确地说 是一系列图像 每次渲染图像时 都会通过 UDP 将图像传输到接收 iPhone 客户端 我研究了一些UDP 我知道以下几点 UDP 的最大大小约为 65k 不过 iP
  • C# P2P聊天应用程序设计

    我想创建一个不使用显式服务器的简单聊天应用程序 主要要求是用户可以同时与许多朋友聊天 就像在 Skype 等上一样 我在这里指的不是会议聊天 而是多个单独的聊天窗口 目前 我只想要一个 LAN 消息应用程序 但如果设计能够轻松扩展到 Int
  • 什么是监控网络活动的好工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我经营的是小区 现在我正在寻找一个在服务器 Windows 或 Linux 上运行的监控工具 它可以跟踪
  • Jmeter TCP Sampler - 如何重用线程之间的连接?

    我在 JMeter 的 ThreadGroup 下设置了一个 TCP 采样器 数据是从 CSV 文件中选取的 第一行数据用于认证 后续行为实际参数数据 像下面这样的东西 AAAAAAA21 BBBBBBBCCCCCCCDDDDDDD BBB
  • 如何使用来自 Microsoft-Windows-NDIS-PacketCapture 提供程序的实时 ETW 事件?

    更大的问题是一般如何使用实时 ETW 网络堆栈事件 但我特别感兴趣Microsoft Windows NDIS PacketCapture 提供程序 所有其他网络堆栈提供程序都部分工作 但 NDIS PacketCapture NDIS P
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 从物理上来说,套接字是什么?

    我总是更喜欢编程概念的物理含义而不是其逻辑含义 那么这个问题就来了 当我回顾套接字编程范例时 我注意到bind 连接 函数所做的就像tuning由创建的套接字socket 功能 所以我想那是什么socket 函数所做的只是创建一个数据结构
  • 点击 Java Web 服务:curl 或 URLConnection

    我使用的 Java 服务器在以下 URL 上公开 RESTful API http localhost 8080 my server 文档建议使用curl用于提交简单的PUT请求 文件上传 并强烈建议用户使用与示例中提供的完全相同的参数 所
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • javax.net.ssl.SSLException:没有可用的 PSK。无法恢复

    我正在使用 Jetty 客户端发送传出请求 在 Java 10 下完美运行的代码在 Java 11 下突然出现以下异常 javax net ssl SSLException No PSK available Unable to resume
  • 如何使用 select 将数据从服务器发送到客户端

    我在一些教程的帮助下想出了一个代码 用于使用选择功能与客户端连接并接受来自客户端的消息 现在我想做的是在服务器需要时将数据发送到特定的客户端 如何做到这一点 提前致谢 服务器代码 include
  • 检查 WebRTC 连接 - 可靠的方法

    我有一个实时视频聊天应用程序 并且使用支持 STUN TURN 和 UPD TCP 传输的 TURN 服务器 有时用户可以连接到网络blocksWebRTC 连接的端口和协议就这么多不可能发生 通常这些是公司网络 我想在用户尝试相互连接之前
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成

随机推荐