mtu

kcp协议解析

做~自己de王妃 提交于 2019-12-20 01:58:26
1.发送过程是怎样的? 发送缓存?如何控制?发送逻辑?影响发送的相关设置?如何拆包 2.接收过程是什么样的? 接收缓存?接收到的包是怎么样的?如何合包? 3.如何校验ack?何时free缓存? 4.nodelay和fastack是怎么回事? 5.kcp的流模式是什么意思?长度>mtu 小于MTU各是什么情况 6.需要哪些补充功能? 7. 来源: CSDN 作者: JackMaaaaaaa 链接: https://blog.csdn.net/Ternence_God/article/details/103613742

Linux常用的网络命令

試著忘記壹切 提交于 2019-12-19 19:53:59
网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数、路由参数和无线网络等,就得要了解下面这些相关的命令才行。其中Route及ip这两条命令是比较重要的。当然,比较早期的用法,我们都是使用ifconfig的。 ? ifconfig:查询、设置网卡和IP网段等相关参数。 ? ifup、ifdown:这两个文件是Script,通过更简单的方式来启动网络接口。 ? Route:查询、设置路由表(Route table)。 ? ip:复合式的命令,能直接修改上述命令提到的功能。 ifconfig、ifup、ifdown 这 3个命令的用途都是启动网络接口,不过,ifup和ifdown仅就 /etc/sysconfig/network- scripts内的ifcfg-ethx(x为数字)进行启动或关闭的操作,并不能直接修改网络参数,除非手动调整ifcfg-ethx文件才行。至于 ifconfig则能直接手动给予某个接口IP或调整其网络参数。下面我们就分别来谈一谈。 1. ifconfig ifconfig主要是能手动启动、观察和修改网络接口的相关参数,能修改的参数非常多,包括IP参数及MTU等都能修改,他的语法如下: [root@linux ~]# ifconfig {interface} {up|down} 一 般来说,直接输入ifconfig就会列出目前已被启动的卡

【面试】TCP-IP经典

旧时模样 提交于 2019-12-19 11:46:13
整理之前的笔记,发现网络通信通俗易懂的解释。 搞清这15个问题,那你就精通了TCP! 网络协议那么多, 为什么面试喜欢问TCP? 原因无外乎两个: TCP协议直接与进程打交道,写网络程序要用; TCP协议设计十分精巧,在一个不可靠的IP网络上实现了可靠传输,因为精巧,掌握TCP的原理自然也有难度,对它掌握如何,很能反映面试者的基础水平。闲言少叙,看看这几个问题你能不能答出来! 15个问题: A进程通过TCP向另一台机器上的B进程发送了一个字符串"hello",TCP返回对方成功接收的确认信息,请问,现在进程A是否可以肯定地说进程B收到了它发送的字符串? 答案 :不能!举反例,进程B所在机器的TCP收到进程A发送的"hello"信息后,告诉进程A发送成功,但有可能没有立即将数据交给进程B,而是放在自己的缓冲区中,等待进程B读取,如果机器此时突然掉电,缓冲区中的信息将丢失,进程B将不可能收到"hello"字符串。 有什么办法来尽量避免上述情况的发生呢? 答案 :将TCP报文段首部中的PSH标志置1,这样会让B端的TCP协议收到数据后尽快交给进程B,能不缓存尽量不要缓存。 我们知道通常TCP连接的建立需要3次握手,关闭需要4次握手,为什么关闭会多一次呢? 答案 :简单说,就是TCP允许半关闭状态的存在。当进程A向进程B发送FIN,B也向A发送确认后。此时此刻的状态就是半关闭状态

TCP和UDP报文分片的区别

允我心安 提交于 2019-12-18 07:11:48
搞了三年网络,今天才知道这个细节,汗,总结下: MTU大家都知道,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节。一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。 MSS(最大分段大小) MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet上标准的MTU(最小的MTU,链路层网络为x2.5时)为576,那么如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。 到了这里有一个问题自然就明了了,TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU

BLE different MTU for different implementations

懵懂的女人 提交于 2019-12-11 06:58:01
问题 I have tried different implementations of BLE connection on Android. One with RxAndroidBle and another one with simple Android API. I used RxAndroidBle example app for testing. I connect to the same peripheral with the same service and characteristic. Though when I read or get notifications from it in the case of RxAndroidBle I receive 512 bytes and in the case of Android API - just 20. I try to request MTU 512 but onMtuChanged is never called and I still receive 20. Do I miss something? 来源:

MTU与MSS有什么区别?

别说谁变了你拦得住时间么 提交于 2019-12-10 14:17:18
mtu是网络传输最大报文包,mss是网络传输数据最大值。 具体分析如下: 1、mss加包头数据就等于mtu. 简单说拿TCP包做例子。 报文传输1400字节的数据的话,那么mss就是1400,再加上20字节IP包头,20字节tcp包头,那么mtu就是1400+20+20. 当然传输的时候其他的协议还要加些包头在前面,总之mtu就是总的最后发出去的报文大小。mss就是你需要发出去的数据大小。 2、MSS: Maxitum Segment Size 最大分段大小 2.MSS最大传输大小的缩写,是TCP协议里面的一个概念。 3.MSS就是TCP数据包每次能够传输的最大数据分段。 3、为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。 来源: CSDN 作者: 行yutian空 链接: https://blog.csdn.net/ChenYuJin1314520/article/details/103473656

[iOS][BLE] Get negotiate MTU

烂漫一生 提交于 2019-12-10 10:15:06
问题 I'm currently developing a BLE App in iOS. In my application I need to implement a segmentation protocol to send large datas using BLE. My application need to have the Central role. My issue is that I can't get the negotiate MTU. I can get the maximumWriteValueLength of my peripheral but it is bigger that mine and can't find the maximumWriteValueLength of my central object. Did someone know a way to find the negotiate MTU or a way to access the CBCentral object of my CBCentralManager? 回答1:

Python监控服务器利器--psutil

喜欢而已 提交于 2019-12-06 03:28:29
服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些shell或Python脚本;shell下可以使用系统自带的ps/free/top/df等shell命令,Python可以调用subprocess等模块来运行shell命令,不过这么做就比较麻烦。这里有一个比较好用的第三方模块:psutil。   psutil是一个跨平台的库,用于在Python中检索有关运行进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析,限制进程资源和运行进程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。 psutil目前支持以下平台: Linux Windows OSX, FreeBSD, OpenBSD, NetBSD Sun Solaris AIX ... 等装有Python2.6至3.6的32-bit和64-bit架构. 也可以在PyPy上运行。 安装 文中示例均在Python版本3.6环境下运行; # pip3 install psutil 常用模块 获取psutil版本信息 In [1]: import psutil In [2]: psutil

IP_笔记

旧城冷巷雨未停 提交于 2019-12-06 00:53:05
IP_报文 IP报文格式内容的记忆 如手部长度占4位,以四字节为单位,取值5-15,所以长度位20-60位 总长度,标识,标志 为什么要IP数据报要分片? 如果IP数据报加上数据帧头部后大于MTU,数据报文就会分成若干片进行传输。那么什么是MTU呢?每一种物理网络都会规定链路层数据帧的最大长度,称为链路层 IP报文格式内容的记忆 如手部长度占4位,以四字节为单位,取值5-15,所以长度位20-60位 总长度,标识,标志 为什么要IP数据报要分片? 如果IP数据报加上数据帧头部后大于MTU,数据报文就会分成若干片进行传输。那么什么是MTU呢?每一种物理网络都会规定链路层数据帧的最大长度,称为链路层 来源: https://www.cnblogs.com/Betelgeuse/p/11954264.html

数据链路层协议

末鹿安然 提交于 2019-12-06 00:23:04
数据链路层的主要协议有: 1. Point-to-Point Protocal,PPP点到点 2. Ethernet,以太网 3. High-Level Data Link Control Protocal,HDLC高级链路控制协议 4. Frame Relay,帧中继 5. Asynchronous Transfer Mode,ATM 数据链路层信息单元的MTU: 链路层的信息单元是帧,链路层不同协议对最大帧长度(最大传输单元:MTU)做了限制,以太网协议规定最大帧长度是1500Byte。 OSI各层的信息单元对应如下: 段——————–>传输层 数据包、数据报——>网络层 数据帧—————>数据链路层 如果IP数据报的长度大于MTU,这时候就需要对IP数据报进行分片处理后再经由链路层转发。 来源: https://www.cnblogs.com/123456qq/p/11953527.html