1.什么是IP和TCP?

  Internet协议(IP)是Internet的地址系统,具有将数据包从源设备传递到目标设备的核心功能。IP是建立网络连接的主要方式,奠定了Internet的基础。IP不负责数据包排序或错误检查。这样的功能需要另一种协议,通常是TCP。

  TCP/IP关系类似于通过邮件向某人发送写在拼图上的消息。消息写好后,拼图分解成碎片。接着,各个碎片可能经过不同的邮递路线传送,其中一些花费的时间要久一些。当拼图碎片经过不同的路径到达时,它们的顺序可能会被打乱。Internet协议确保碎片到达其目的地地址。TCP协议可比作位于另一端的拼图组装者,它将碎片按正确的顺序摆放在一起,要求重新发送缺失的碎片,并且让发送者知道拼图已被接收。从第一个拼图碎片发送之前到最后一个发送之后,TCP一直保持与发送者的连接。

  IP是无连接协议,这意味着每个数据单元都会单独寻址并从源设备路由到目标设备,而且目标不会将确认信息发回给来源。这是传输控制协议(TCP)等协议的用武之地。TCP与IP相结合,在发送者和目标之间保持连接,并确保数据顺序。

  例如,通过TCP发送电子邮件时,将建立连接并进行三向握手。首先,源服务器将 SYN“初始请求”数据包发送到目标服务器,以便开始对话。然后,目标服务器发送一个SYN-ACK 数据包以同意该过程。最后,源服务器将ACK数据包发送到目标以确认该过程,之后便可发送消息内容了。电子邮件消息最终被分解为多个数据包,然后每个数据包发送到Internet,经过一系列网关后到达目标设备;在目标设备上,这组数据包将通过TCP重新组合为电子邮件的原始内容。

  当今Internet上使用的IP主要版本是Internet协议版本4(IPv4)。由于大小限制和IPv4中可有地址总数的关系,一种更新的协议因此诞生。较新的协议称为IPv6,可提供的地址要多得多,并且采用率也在上升。

2.什么是用户数据报协议(UDP/IP)?

  UDP是一种互联网使用的通信协议,用于对时间敏感的传输,例如视频回放或DNS 查找。它不需要所谓的“握手”,允许在接收方同意通信之前进行数据传输从而加快了通信速度。这使协议可以非常快速地运行,并且还为利用创造了机会。

  一个TCP连接(通常用于加载网页内容)需要握手,其意思是接收方在发送数据之前同意进行通信。即使请求是虚假的,UDP也会发送未经确认的数据。

  UDP不具有TCP的错误检查和排序功能,当不需要进行错误检查并且速度很重要时,最好使用UDP。这种内置的可靠性不足是为什么UDP有时被称为“不可靠的数据报协议”的原因。

  UDP于1980年推出,是仍在使用的最古老的网络协议之一。利用UDP的应用程序必须能够容忍错误,丢失和重复。尽管这听起来不尽理想,但是在一些应用中,更快,更不可靠的协议反而是最佳选择。

什么是TCP和UDP?的更多相关文章

  1. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  2. 【校验】TCP和UDP的校验和

    一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...

  3. 初入网络系列笔记(2)TCP和UDP

    一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...

  4. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  5. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  6. http、tcp、udp、OAUTH2.0网络协议区别

                    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...

  7. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  8. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

  9. TCP与UDP的区别

    TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...

  10. 基于socket的TCP和UDP编程

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

随机推荐

  1. Java 正则表达式实例操作

    Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...

  2. CSS3 变形

    目录 Transform Transform与坐标系统 transform-origin transform-style 二维旋转 旋转 rotate 平移 translate translateX ...

  3. [刷题] PTA 6-10 阶乘计算升级版

    要求: 实现一个打印非负整数阶乘的函数 N是用户传入的参数,其值不超过1000.如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印"Invalid input" 1 # ...

  4. Mysql_二进制方式安装详解

    mysql 安装 1.安装方式 1.二进制安装 2.源码包安装 3.rpm包安装 1.二进制安装 1)上传或者下载包 [root@db01 ~]# rz #或者 [root@web01 ~]# wge ...

  5. IDEA workspace.xml 在 git 中无法忽略 ignore 问题

    问题描述 关于 .idea 的文件夹中的 workspace.xml 设置 ignore 之后每次 commit 依旧提示需要提交改变,这就会导致, 每次merge就会导致提示"本地文件改变 ...

  6. [TcaplusDB知识库]TcaplusDB客户端及常用命令

    数据库大都支持命令行访问,TcaplusDB也不例外,通过安装TcaplusDB客户端,您可以方便快捷地从命令行管理与访问数据库. TcaplusDB客户端 首先在 TcaplusServiceApi ...

  7. PDF 文件编写器 C# 类库(版本 1.28.0)使用详解

    PDF File Writer 是一个 C# .NET 类库,允许应用程序创建 PDF 文件. PDF File Writer C# 类库使 .NET 应用程序能够生成 PDF 文档.该库使应用程序免 ...

  8. [leetcode] 39. 组合总和(Java)(dfs、递归、回溯)

    39. 组合总和 直接暴力思路,用dfs+回溯枚举所有可能组合情况.难点在于每个数可取无数次. 我的枚举思路是: 外层枚举答案数组的长度,即枚举解中的数字个数,从1个开始,到target/ min(c ...

  9. python中的时间戳和格式化之间的转换

    import time #把格式化时间转换成时间戳 def str_to_timestamp(str_time=None, format='%Y-%m-%d %H:%M:%S'): if str_ti ...

  10. 如何在TVM上集成Codegen(上)

    如何在TVM上集成Codegen(上) 许多常用的深度学习内核,或者提供DNNL或TensorRT等框架和图形引擎,让用户以某种方式描述他们的模型,从而获得高性能.此外,新兴的深度学习加速器也有自己的 ...