关于socket数据长度
一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系统)的缓冲区,8k的数据由底层分片,而应用层看来只是一次发送。
Socket本身分为两种,流(TCP)和数据报(UDP)
TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点:不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么:什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输………… 什么时候应该使用UDP:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
tcp协议和udp协议的差别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度 慢 快
关于socket数据长度相关推荐
- C# 三种方式实现Socket数据接收(经典)
Stream.Read 方法 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数. 语法: public abstract int Read(byte[] buffer, in ...
- GK309协议电子工牌数据模拟器+Socket数据发送 JAVA版-源码
GK309协议电子工牌数据模拟器+Socket数据发送 JAVA版-源码 说明 源码 EXE执行文件 说明 单JAVA文件,直接运行main方法即可. 只做了GK309的基础位置数据模拟: 0x01 ...
- Seaborn可视化使用relplot函数可视化数据长度不同的时间序列实战:two Pandas Series of different lengths
Seaborn可视化使用relplot函数可视化数据长度不同的时间序列实战:two Pandas Series of different lengths 目录
- internetreadfile读取数据长度为0_Hadoop 读取数据
MapReduce - 读取数据 通过InputFormat决定读取的数据的类型,然后拆分成一个个InputSplit,每个InputSplit对应一个Map处理,RecordReader读取Inpu ...
- SparkStreaming读取Socket数据
SparkStreaming是7*24h不间断运行,底层操作的是DStream. 读取Socket数据过程 1.SparkStreaming启动后,首先启动一个job,这个job有一个task一直接收 ...
- 顺序表循环队列:创建初始化、入队、出队、获取队列头数据、计算队列有效数据长度...
/* 顺序表队列 初始化 入队列 出队列 取队列头数据 计算队列有效长度 */ #include <stdio.h> #include &l ...
- 加密解密时遇到的不正确的数据以及要解密的数据长度无效问题解决方案
这两天一直在为文件加密解密时,由于关闭数据转换链接流CryptoStream或者使用FlushFinalBlock时出现的 "不正确的数据"和"要解密的数据长度无效&qu ...
- send函数 获得已发送数据长度_蓝牙BLE开发1--起因与回调函数
1 起因 笔者在开发蓝牙芯片CC2540,试图取实现大量数据的BLE透传功能,在认真学习了蓝牙4.0协议标准以及TI提供的SDK说明,我总结了两个发送函数,以及两个接收函数的位置. 两个发送函数包括 ...
- MySQL innodb每行数据长度的限制
今天在使用MySQL innodb时,create table时,报出这样的一个错误: Row size too large. The maximum row size for the used ta ...
最新文章
- 微信内置浏览器的JsAPI(WeixinJSBridge续)[转载]
- php round函数输出不对_Python 四舍五入函数 Round
- CF1481F-AB Tree【构造,背包】
- mongo的php查询,使用PHP进行简单查询的mongo查询速度慢
- QEMU-KVM磁盘在线备份
- 中移4G模块-ML302-OpenCpu开发-前端网页搭建
- 谷歌Chrome浏览器开发者工具教程—JS调试篇
- 自媒体运营,你要的小工具来了
- 3DMAX渲染很卡很慢?8个3dsMax中节省建模和渲染时间的技巧-瑞云渲染
- 《计算机网络教程》(微课版 第五版) 第六章 网络应用层 课后习题及答案
- Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
- 海思mpp_sample例子详解
- 爆红十年后,谁“切”了苹果?
- 世界上最小的操作系统MenuetOS,仅有1.4M,安装运行全教程
- l33t-hoster .htaccess \x00注释putenv绕过disable_function计算c代码
- 低成本WebIDE(centos7+codeserver+内网穿透)
- 分享几个在线生成头像的网站
- java小项目---------银行新用户现金业务办理(运用数据库)
- 解决win10部分程序文本乱码,亲测有效
- 面试十五年经验程序员,面试官沦为听众