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. [bug] IDEA 右侧模块灰色

    参考 https://blog.csdn.net/weixin_44188501/article/details/104717177

  2. ltp

    1.查找文件 find / -name 'filename'   1 2.查找目录 find / -name 'path' -type d 1 3.查找内容 # find .| xargs grep ...

  3. KVM虚拟化存储管理(4)

    一.KVM存储虚拟化介绍 KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种型: Vol ...

  4. 统计行数、文件夹个数、文件个数的相关shell命令

    极客君最近做项目,刚好遇到需要统计一些sql文件数量的问题,用到一些实用的shell命令,记录下来,以后万一还能用上呢? 如果在终端不打开文件看到一共多少行,则可以使用wc命令来实现: wc -l [ ...

  5. Python数模笔记-Scipy库(1)线性规划问题

    1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...

  6. 浅谈:Redis持久化机制(一)RDB篇

    浅谈:Redis持久化机制(一)RDB篇 ​ 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存 ...

  7. c++ 各种数据结构的时间空间复杂度

    普通线段树    时间 log2(n); 空间 n+log2(n)+log4(n)+log(8)n+.....+logn(n)==n*4; 动态开点线段树 时间 log2(n); 空间 q*log2( ...

  8. 北汽极狐ARCFOX与华为合作

    北汽极狐ARCFOX与华为合作 全球首款激光雷达量产车 2021年,是激光雷达"上车"的元年. 曾经价格高不可攀,只能用于Robotaxi.无人车测试的激光雷达,终于彻底具备商业化 ...

  9. TensorRT-安装-使用

    TensorRT-安装-使用 一.安装 这里 是英伟达提供的安装指导,如果有仔细认真看官方指导,基本上按照官方的指导肯定能安装成功. 问题是肯定有很多人不愿意认真看英文指导,比如说我就是,我看那个指导 ...

  10. 使用Keil语言的嵌入式C编程教程(上)

    使用Keil语言的嵌入式C编程教程(上) Embedded C Programming Tutorial with Keil Language Embedded System 嵌入式系统是指以单片机为 ...