1. 网络传输方式

网络通信中根据数据发送方法进行多种分类. 分类方法主要分为两种:面向有连接型.

面向无连接型.

面向无连接型

面向无连接型则 不要求建立和断开连接. 发送端可于任何时候自由发送数据. 反之, 接收端也永远不知道自己会在何时从那里接收到数据. 因此, 面向无连接的情况下, 接收端需要时常确认是否收到了数据.

在面向无连接的通信中, 不需要确认对端是否存在. 即使接收端不存在或无法接受数据, 发送端也能将数据发送出去.

UDP (User Datagram Protocol )不提供复杂的控制机制, 如果传输过程中出现丢包, UDP 也不负责重发. 甚至当出现包到达顺序乱掉时候也没有纠正的功能. 由于 UDP 面向无连接, 它可以随时发送数据. 再加上 UDP 本身的处理既简单又高效, 因此常用于以下几个方面:包总量较少的通信(DNS).

视频、音频等多媒体通信(即时通信).

限定于 LAN 等特定网络中的应用通信.

广播通信(广播、多播)

面向有连接型:

面向有连接型中, 在发送数据之前, 需要在收发主机之间建立一条连接通信线路. 面向连接就好像我们平时打电话, 输入完对方的电话号码拨出之后, 只有对方拿起电话确认连接才能进行真正的通话, 通话结束后将电话机扣上就如同切断电源。因此在面向有连接的方式下, 必须在通信传输前后, 专门进行建立和断开连接的处理.

TCP 提供一种面向连接的通信服务, 只有在确认通信对端存在时才会收发数据, 从而可以控制通信流量的浪费. TCP 提供了数据传输时的各种控制功能, 丢包时可以进行重发控制, 还可以将次序乱掉的分包进行顺序控制.

TCP 协议, 传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议.

2. UDP传输方式

UDP 协议全称是用户数据报协议, 在网络中它与TCP协议一样用于处理数据包, 是一种无连接的协议.

选择 UDP 必须要谨慎, 在网络质量令人十分不满意的环境下, UDP协议数据包丢失会比较严重. 但是由于UDP的特性: 它不属于连接型协议, 因而具有资源消耗小, 处理速度快的优点. 所以通常音频、视频和普通数据在传送时使用 UDP 较多,因为它们即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响.

udp通信模型

3.TCP传输方式

1)TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

3)错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

4) 流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

tcp通信模型

-----尚学堂百战程序员笔记(27)

python udp 丢包_Python语言---TCP、UDP相关推荐

  1. 【测试】发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包

    目录 通过/dev/tcp./dev/udp shell给tcp或udp服务发送16进制报文指令 通过/dev/tcp./dev/udp (https://blog.csdn.net/u0100394 ...

  2. linux 系统 UDP 丢包问题分析思路

    转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.i ...

  3. java udp丢包_linux 系统 UDP 丢包问题分析思路

    最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考. 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程. ●  首先网络报文通 ...

  4. java udp丢包重发_UDPDataPacker_Java数据报之失序和丢包

    Java数据报之失序和丢包 习惯了TCP编程,认为UDP可以包办这些问题是错误的.一个UDP应用程序要承担可靠性方面的全部工作,包括报文的丢失.重复.时延.乱序以及连接失效等问题. 通常我们在可靠性好 ...

  5. Linux系统 UDP 丢包问题分析思路和修改网卡缓存

    最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,我在排查过程中基本都是通过使用 tcpdump 在出现问题的各个环节上进行抓包.分析在那个环节出现问题.针对性去排查解决问题 ...

  6. java中的udp丢包_udp丢包 处理

    什么会导致udp丢包呢,我这里列举了如下几点原因: 1.调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修 ...

  7. udp丢包 又是udp丢包

    自己在做UDP传输时遇到的问题,接收端没设置缓存,结果总是丢包. 看到这篇文章设置了一下接收缓存就好 int nRecvBuf=32*1024;//设置为32K setsockopt(s,SOL_SO ...

  8. udp丢包原因和解决

    一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收 ...

  9. linux下udp丢包和传输延迟,如何测试UDP数据包的丢包率和延迟

    iperf也可以用于UDP数据包吞吐量.丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和 ...

最新文章

  1. linux动态库替换,不要使用 cp 替换正在使用中的Linux 动态库
  2. web前端培训分享Electron之Main Process API
  3. [转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!
  4. php页面采集正则,PHP simple_html_dom.php+正则 采集文章代码
  5. 【报告分享】2021年微信视频号生态趋势调查报告.pdf(附下载链接)
  6. watch解放你的双手
  7. c++除法保留小数_BigDecimal 加减乘除、保留小位数
  8. 函数的参数可以是数组吗_C++数组长度可以为变量吗?
  9. [优化算法] 拉丁超立方采样与基于优化的均匀采样
  10. WCDMA 基本信令流程
  11. Kubernetes之YAML语法
  12. html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
  13. Qt 加载翻译文件基本方法
  14. 仿网易评论盖楼PHP+Mysql实现
  15. 实现 ASP.NET Core WebApi 的版本化
  16. 华为U8818 刷入Recovery教程+刷机
  17. /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.8
  18. [翻译]pb技巧、代码和实用工具[程序员家园论坛]
  19. operator new与placement new
  20. 建筑BIM的使用场景

热门文章

  1. 解决ubuntu下的firefox无法在线播放音频和视频的问题
  2. 【报告分享】2019Z世代消费力洞察报告-腾讯.pdf
  3. 算法工程师面试备战笔记11_朴素贝叶斯分类某个类别概率为0怎么办
  4. Shape Completion using 3D-Encoder-Predictor CNNs and Shape Synthesis 第二部分
  5. 安卓actionBar上无法显示搜索按钮如何解决
  6. Airbnb搜索:Embedding表示学习
  7. 腾讯 WXG | 技术研究-NLP算法三面复盘
  8. 元素周期表排列的规律_元素周期表的秘密【机密文件】
  9. 东南亚本地商ERP仓储系统怎么样?
  10. signature=0880bf79d1c426abd0c8ca4bc897d06f,index.html