网络通信之校验

简介: 这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。   UDP检验和 覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。

这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。

  UDP检验和 覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。

TCP校验:首部和数据的校验和;

UDP校验:ipv4中首部和数据的校验和,但是是可选的;ipv6必选;

IP校验:首部校验和;

TCP是基于流的;什么是流呢?

UDP是基于数据包;

校验方法:二进制求反码相加即得和;

TCP半关闭;

 Nagle算法:

  由于Tcp中的微小分组(比如:41Byte的分组:20Byte的IP头,20Byte的TCP头和1个Byte的数据)在广域网上回增加拥塞的可能,Nagle算法就是优化该问题的;

该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组;相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去;

  该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送的越快;

 tcp的成块数据流:

  正常的数据流通常是采用“隔一个报文确认”的策略;就是说:s端收到报文段1,先不进行ack;而是等到收到报文段2之后,再ack回应客户端;

滑动窗口协议:(窗口的大小是不断变化的; )

  在c端保存,并受s端和c端共同控制;

假设先将待发送的字节编号:1、2、3、4、5、6、7、8、9、0、10、11、12;由三次握手建立连接之后,得到s端的tcp的buf大小即滑动窗口的初始化大小(假设为6Byte);

a:此时滑动窗口的左边沿是:1号,右边沿是:6号;此时发送1、2、3、号之后,滑动窗口位置不变,

b:s端向c端确认ack=4;win=6;此时窗口左边移动到7号处,右边移动到:4+6即10处;

c:接着:第二段报文发送4、5、6、7号,此时窗口不动,因为只有再收到s端的ack之后才改变位置、大小;

d:s端确认第二段报文,ack=8,win=3;说明s端的tcp缓存只有一个byte空间;滑动窗口左边移动到8号处,右边移动到3+8即11号处;

特殊情况:

    1、如果c端收到一个滑动窗口左边沿向左边移动的ack;则认为该ack是一个重复的ack;直接丢弃;(这是因为,滑动窗口的左边是由s端确认收到序号控制,因此不可能向左边移动)

    2、如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据;

PUSH标志:

    在每一个tcp例子中,我们都看到了PUSH标志,其用途是c方使用该标志通知s方将所有接收到的数据全部提交给接收进程;这里的数据 包括:与PUSH一起传送的数据以及接收方tcp以及为接收进程接收到的其他数据;

  慢启动:(slow start)

    慢启动为c方tcp增加了另一个窗口:拥塞窗口(congestion  window,简写:cwnd);

  1、当与s端建立tcp连接时,cwnd被初始化为1个报文端;此后没收到一个s端的ack,cwnd就增加一个报文段(cwnd以字节为单位,但是慢启动以报文段大小为单位进行增加);

  2、c端取拥塞窗口与通告窗口中的最小值作为发送上限;

    拥塞窗口是c端式用的流量控制,通过窗口是s端的流量控制;

  具体的内容“创建tcp超时和重传机制”

 

    

 

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
算法
计算机网络——数据链路层-差错检测(奇偶校验、循环冗余校验CRC)
计算机网络——数据链路层-差错检测(奇偶校验、循环冗余校验CRC)
1535 0
|
算法 网络协议
网络协议及应用之二:校验和
TCP/IP协议族校验和的计算方法相同, 差别在于进行校验的数据.   一 校验和计算方法    1. 将数据流按16bit求和, 存放在32Bit及更大的空间(eg.
1372 0
|
XML Java 数据格式
XMLSpy编辑工具中设置XML的DTD/XSD校验指向本地,而不要直接指向网络去
http://yulimin.javaeye.com/blog/24495 关键字:   XML DTD XSD 校验     XMLSpy编辑工具中如何设置XML的DTD/XSD校验指向本地,而不要直接指向网络去? 前提:在不修改XML的条件下,修改XML的,不要这个,这个变态的谁都会。。。 其它的工具及另外的方法如下,但是
2109 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
280 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
232 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
245 10
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。

热门文章

最新文章