tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议

近期分享的网络知识包括HTTP协议、DNS协议、HTTPS协议、TCP协议、IP协议、TCP/IP、Web攻击及其他协议。今天内容是TCP协议。

e998b5bd6b9590e1921d4ad63f7439f5.png

TCP协议

1. 传输层

2. 作用

  • 提供可靠的字节流服务

3. 大块数据分割成报文段(segment)

4. 三次握手

1) 发送端发带SYN标志的数据包给对方。

2) 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。

3) 最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束

握手某个阶段中断,TCP会以相同的顺序发送相同的数据包。

5. 四次挥手

  1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
  2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
  4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

6. 流量控制

  • TCP接收端对发送端发送多少字节的数据进行控制,防止接收端处理不及而丢失数据
  • 发送窗口的大小是受到接收窗口的控制的。
  • 发送窗口必须根据接收端的大小及时调整发送窗口的大小,这个机制保证了每次TCP传输的数据量都是接收端可以及时处理的。

7. 差错控制

  • 保证接收端接收的数据是完整未受损伤的,是可靠性的重要保证。
  • 主要使用校验和、确认、超时重传这三个工具进行差错控制。

8. 拥塞控制

拥塞窗口:

  • 发送方的窗口大小是接收窗口与拥塞窗口中的较小值。
  • 拥塞窗口的大小又取决于网络的拥塞状况。

拥塞策略:

  • 慢开始
  • 拥塞避免
  • 拥塞检测

拥塞控制流程:

1) 由于刚开始不清楚网络的拥塞情况,所以会首先采用慢开始算法,开始阶段,窗口大小由1指数增大,直到窗口大小到达门限值。

2) 窗口大小到达门限值后,就开始执行拥塞避免算法,之后窗口值按照线性规律增大,直到出现超时或者到达最大的窗口大小值。

3) 这个时候,会开始执行拥塞检测算法,也就是把门限值变为窗口大小的一半,之后继续执行拥塞避免算法,窗口大小按照线性规律增大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓开发语言php,go语言支持安卓开发吗

go语言支持安卓开发。使用golang开发android需要下载安装gomobile,然后有两种开发方式,分别为:1、原生应用开发;2、混合绑定开发。本教程操作环境:windows10系统、GO 1.11.2、thinkpad t480电脑。大概14年的时候go语言…

解决python连接mysql,UTF-8乱码问题

在测试“Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序”的程序时,从MySQL中读取的中文输出到网页显示都是问号,如下图: 解决方法: 产生乱码问题,通常都是由于几方面的编码不统一导致的&#x…

python伪代码书写规范_代码这样写更优雅(Python 版)(转载)

Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行速度慢,代码…

php处理ajax post请求超时,php – 如何处理AJAX请求中的会话超时

考虑返回一个http状态为401,一个JSON对象详细说明原因.如果你正在使用jQuery,那么你将会丢失你的error()回调,然后你可以解析你的对象.$.ajax({data: {},dataType: html,success: function(data) {// do whatever here},type: POST,url: myserver.com,error: function(XMLHttpR…

python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式

python中三元表达式的语法如下 if elseresult x if condition else y另外一种三元表达式,比较少见result (x, y)[condition]列表推导式 〉循环python中列表推导式用于使用其他列表创建一个新列表。其基本形式为: [表达式 for 变量 in 列表]list_1_10 …

php 同一行,php – 如何在同一行中对类方法进行多个调用?

通过“ – >”逐个调用类的功能的方式因为该函数返回同一个对象的类.见下面的例子.你会得到这个class Wke {public $type;public $errno;public $msg;public $page;public $template $this;public function notify(){return $this;}public function errorno($error){$this-…

PHP数组

//常用函数//生成随机数echo rand(1,10);//两个参数来确定随机数的范围,必须要两个参数 //日期时间函数var_dump(time());//取当前时间的UNIX时间戳echo date("Y-m-d H:i:s",time());//格式化日期时间戳echo date("Y-m-d H:i:s");//省掉第二个参数&#xf…

pycharm python部署_使用PyCharm配合部署Python的Django框架的配置纪实

安装软件安装 Python 2.7、PyCharm、pip(Python包管理工具)、Django ( pip install Django)部署PyCharm 新建Django工程完成后,其目录如下:子目录MyDjangoProject下表示工程的全局配置,分别为setttings.py、urls.py和wsgi.py,其中setttings.p…

php商品在最少购买,ECSHOP给商品设置最少购买数量的方法

ecshop后台默认没有给商品设置最小起订量或者最少购买量的功能。保哥在使用ecshop做一个商城时,要给商品设置包邮来吸引买家,但又不想买家购买一件产品也给包邮,这样很容易亏本。对于价值较高的商品有一定的利润空间设置包邮是合情合理的&…

Crawler - 如何爬取列表后进行文章的爬取

2019独角兽企业重金招聘Python工程师标准>>> 已知BUG:(version:5) 1-爬取后生成的XML默认编码是Java环境决定导入数据库可能出问题 方法修改xml编码后导入 重点CL 和 CI命令 CL 是爬取List列表 会通过file生成文件 CI 中file是CL执行后生存的File文件 CL…

程序员出差是去干什么_让我来告诉你,35岁以上的人都在干什么!

欢迎关注专栏:里面定期分享Android和Flutter架构技术知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿。Android高级进阶​zhuanlan.zhihu.com让我来告诉你,35岁以上的人都在干什…

oracle v¥bh,【oracle笔记2】约束

约束*约束是添加在列上的,用来约束列的。1. 主键约束(唯一标识)***非空******唯一******被引用***(外键时引用主键)*当表的某一列被指定为主键后,该列就不能为空,不能有重复的出现。*创建表时指定主键的两种方式:>create table…

WAP端 touch事件触发顺序记录

IOS7.0 safari 滚动滚动条的时候, 最后手指放开 (scroll 总是在 touchend后面,所以要用 setTimeout)   touchstart touchmove(多个) touchend scroll(一个)IOS8.4 safari 滚动滚动条的时候   touchstart touchmove…

opencv入门_【OpenCV入门之十八】通过形态学操作提取水平与垂直线

小白导读学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了【OpenCV入门】系列。新的一年文章的内容进行了很大的完善,主要是借鉴了更多大神的文章,希望让小伙伴更加容易理解。如果小伙伴觉…

php strstr 从尾部,PHP strstr() 和 strrchr() 详解

strstr() 和 strrchr()有一定的相似性,所以放在一起。strstrstrstr ( string $haystack , mixed $needle [, bool $before_needle FALSE ] ) : stringneedle 可以为单个字符,也可以是个字符串。返回 needle 在 haystack 在第一次出现的位置到结束&#…

python计算结果传给spark_Spark入门:流计算简介(Python版)

数据总体上可以分为静态数据和流数据。对静态数据和流数据的处理,对应着两种截然不同的计算模式:批量计算和实时计算。批量计算以“静态数据”为对象,可以在很充裕的时间内对海量数据进行批量处理,计算得到有价值的信息。Hadoop就…

【译】NoClassDefFoundError和ClassNotFoundException的不同

本文翻译自:Difference between NoClassDefFoundError vs ClassNotFoundExcepiton in Java 如果JVM或者ClassLoader在加载类时找不到对应的类,就会引发NoClassDefFoundError和ClassNotFoundException,这两种错误都非常严重。由于不同的ClassL…

oracle怎么设置出蓝色边,Oracle 数据库入门之———————-,多行函数-蓝色留心...

2,多行函数SQL> –工资总额SQL> select sum(sal) from emp;SUM(SAL)29025SQL> –人数SQL> select count(*) from emp;COUNT(*)14SQL> –平均工资SQL> select sum(sal)/count(*) 一,avg(sal) 二 from emp;一 二2073.21429 2073.21429SQL> –平均…

python绘制剖面图_用python绘制剖面图

我自己为这个功能做了一个模块。在import pandas as pdfrom pandas import Series, DataFrameimport numpy as npimport matplotlib.pyplot as pltdef Profile(x,y,nbins,xmin,xmax,ax):df DataFrame({x : x , y : y})binedges xmin ((xmax-xmin)/nbins) * np.arange(nbins1…

Ubuntu上安装Robomongo及添加到启动器

到目前为止,Robomongo仍是MongoDB最好的客户端管理工具,如需在Ubuntu上安装Robomongo,可直接从官网下载.tar.gz压缩包进行解压,然后直接运行bin目录下的robomongo文件即可启动界面。例如我将下载下来的.tar.gz压缩包解压到/usr/lo…