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. welcome实现首页路由的重定向效果

    welcome实现首页路由的重定向效果 1.创建welcome组件 2.在路由中引入组件并配置子组件 3.在home.vue中添加路由占位符 4.测试

  2. Windows 电脑的四种运行状态工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), S4 关机状态 (Shutdown), S5

    == Windows 电脑的四种运行状态 == 这四种运行状态(或称电源状态)是: 工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), ...

  3. 012.Ansible高级特性

    一 本地执行 如果希望在控制主机本地运行一个特定的任务,可以使用local_action语句. 假设我们需要配置的远程主机刚刚启动,如果我们直接运行playbook,可能会因为sshd服务尚未开始监听 ...

  4. 030. Python装饰器

    一  装饰器 1.1 装饰器介绍 扩展函数新功能的@定义:替换旧函数,返回新函数,在不改变原有代码的前提下,为该函数扩展新功能;语法:@ (语法糖) 1.2 装饰器的原型 def show(func) ...

  5. STM32F1移植UCOSII

    作者:珵旭媛 下载对应版本的UCOSII https://www.micrium.com/downloadcenter/,你会少修改很多东西: 下载下来后是这样的文件夹,并且Software里面的才是 ...

  6. 第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难

    第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难 如何做个靠谱的人? 有问有答,任务发送和接收有记录,完成有反馈. 如何实现一个靠谱的协议? TCP 协议使用的也是同样的模式.为了保证顺 ...

  7. 出现 关于UTF-8 序列的字节 2 无效的异常

    学习mybatis中碰到了 Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instanc ...

  8. Go slice 扩容机制分析

    前言 我们都知道 Go 语言中的 slice 具有动态扩容的机制(不知道的同学请先补课 Go 切片) 但是其底层机制是什么呢?本着知其然,知其所以然的探索精神去研究一番.还不是为了应试 手动狗头 go ...

  9. deepstream-开放式实时服务器

    deepstream-开放式实时服务器 deepstream是一款开源服务器,其灵感来自金融交易技术背后的概念.它允许客户端和后端服务同步数据.发送消息并以非常高的速度和规模规划rpc. 参考:htt ...

  10. 基于区域的CNN(R-CNN)

    基于区域的CNN(R-CNN) Region-based CNNs (R-CNNs) 基于区域的卷积神经网络或具有CNN特征的区域(R-CNN)是一种将深度模型应用于目标检测的开创性方法.在本节中,将 ...