当前位置: 首页 > news >正文 佛山顺德网站制作公司哪家好最全的网页模板网站 news 2025/11/6 8:16:51 佛山顺德网站制作公司哪家好,最全的网页模板网站,洛阳网站建设的公司,网站开发方向学啥如今#xff0c;大半个互联网都建立在 TCP 协议之上#xff0c;我们使用的 HTTP 协议、消息队列、存储、缓存#xff0c;都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说#xff0c;可靠性就是让数据无损送达。但若是考虑到成本#xff0c;就会变得非常复…如今大半个互联网都建立在 TCP 协议之上我们使用的 HTTP 协议、消息队列、存储、缓存都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说可靠性就是让数据无损送达。但若是考虑到成本就会变得非常复杂——因为还需要尽可能地提升吞吐量、降低延迟、减少丢包率。 TCP 协议具有很强的实用性而可靠性又是 TCP 最核心的能力所以理所当然成为面试官们津津乐道的问题。具体来说从一个终端有序地发出多个数据包经过一个复杂的网络环境到达目的地的时候会变得无序而可靠性要求数据恢复到原始的顺序。这里我先给你提出两个问题 TCP 协议是如何恢复数据的顺序的 拆包和粘包的作用是什么 TCP 的拆包和粘包 TCP 是一个传输层协议。TCP 发送数据的时候往往不会将数据一次性发送像下图这样 而是将数据拆分成很多个部分然后再逐个发送。像下图这样 同样的在目的地TCP 协议又需要逐个接收数据。请你思考TCP 为什么不一次发送完所有的数据比如我们要传一个大小为 10M 的文件对于应用层而言就是一次传送完成的。而传输层的协议为什么不选择将这个文件一次发送完呢 这里有很多原因比如为了稳定性一次发送的数据越多出错的概率越大。再比如说为了效率网络中有时候存在着并行的路径拆分数据包就能更好地利用这些并行的路径。再有比如发送和接收数据的时候都存在着缓冲区。如下图所示 缓冲区是在内存中开辟的一块区域目的是缓冲。因为大量的应用频繁地通过网卡收发数据这个时候网卡只能一个一个处理应用的请求。当网卡忙不过来的时候数据就需要排队也就是将数据放入缓冲区。如果每个应用都随意发送很大的数据可能导致其他应用实时性遭到破坏。 还有一些原因比如内存的最小分配单位是页表如果数据的大小超过一个页表可能会存在页面置换问题造成性能的损失。 总之方方面面的原因在传输层封包不能太大。这种限制往往是以缓冲区大小为单位的。也就是 TCP 协议会将数据拆分成不超过缓冲区大小的一个个部分。每个部分有一个独特的名词叫作 TCP 段TCP Segment。 在接收数据的时候一个个 TCP 段又被重组成原来的数据。 像这样数据经过拆分然后传输然后在目的地重组俗称拆包。所以拆包是将数据拆分成多个 TCP 段传输。那么粘包是什么呢有时候如果发往一个目的地的多个数据太小了为了防止多次发送占用资源TCP 协议有可能将它们合并成一个 TCP 段发送在目的地再还原成多个数据这个过程俗称粘包。所以粘包是将多个数据合并成一个 TCP 段发送。 TCP Segment 那么一个 TCP 段长什么样子呢下图是一个 TCP 段的格式 我们可以看到TCP 的很多配置选项和数据粘在了一起作为一个 TCP 段。 显然让你把每一部分都记住似乎不太现实但是我会带你把其中最主要的部分理解。TCP 协议就是依靠每一个 TCP 段工作的所以你每认识一个 TCP 的能力几乎都会找到在 TCP Segment 中与之对应的字段。接下来我先带你认识下它们。 Source Port/Destination Port 描述的是发送端口号和目标端口号代表发送数据的应用程序和接收数据的应用程序。比如 80 往往代表 HTTP 服务22 往往是 SSH 服务…… Sequence Number 和 Achnowledgment Number 是保证可靠性的两个关键。具体见下文的讨论。 Data Offset 是一个偏移量。这个量存在的原因是 TCP Header 部分的长度是可变的因此需要一个数值来描述数据从哪个字节开始。 Reserved 是很多协议设计会保留的一个区域用于日后扩展能力。 URG/ACK/PSH/RST/SYN/FIN 是几个标志位用于描述 TCP 段的行为。也就是一个 TCP 封包到底是做什么用的 1URG 代表这是一个紧急数据比如远程操作的时候用户按下了 CtrlC要求终止程序这种请求需要紧急处理。 2ACK 代表响应 3PSH 代表数据推送也就是在传输数据的意思。 4SYN 同步请求也就是申请握手。 5FIN 终止请求也就是挥手。 特别说明一下以上这 5 个标志位每个占了一个比特可以混合使用。比如 ACK 和 SYN 同时为 1代表同步请求和响应被合并了。这也是 TCP 协议为什么是三次握手的原因之一。 6 Window 也是 TCP 保证稳定性并进行流量控制的工具”中详细介绍。 7Checksum 是校验和用于校验 TCP 段有没有损坏。 8Urgent Pointer 指向最后一个紧急数据的序号Sequence Number。它存在的原因是有时候紧急数据是连续的很多个段所以需要提前告诉接收方进行准备。 9Options 中存储了一些可选字段比如接下来我们要讨论的 MSSMaximun Segment Size。 10Padding 存在的意义是因为 Options 的长度不固定需要 Pading 进行对齐。 Sequence Number 和 Acknowledgement Number 在 TCP 协议的设计当中数据被拆分成很多个部分部分增加了协议头。合并成为一个 TCP 段进行传输。这个过程我们俗称拆包。这些 TCP 段经过复杂的网络结构由底层的 IP 协议负责传输到目的地然后再进行重组。 这里请你思考一个问题稳定性要求数据无损地传输也就是说拆包获得数据又需要恢复到原来的样子。而在复杂的网络环境当中即便所有的段是顺序发出的也不能保证它们顺序到达因此发出的每一个 TCP 段都需要有序号。这个序号就是 Sequence NumberSeq。 如上图所示。发送数据的时候为每一个 TCP 段分配一个自增的 Sequence Number。接收数据的时候虽然得到的是乱序的 TCP 段但是可以通过 Seq 进行排序。 但是这样又会产生一个新的问题——接收方如果要回复发送方也需要这个 Seq。而网络的两个终端去同步一个自增的序号是非常困难的。因为任何两个网络主体间时间都不能做到完全同步又没有公共的存储空间无法共享数据更别说实现一个分布式的自增序号了。 其实这个问题的本质就好像两个人在说话一样我们要确保他们说出去的话和回答之间的顺序。因为 TCP 是一个双工的协议两边可能会同时说话。所以聪明的科学家想到了确定一句话的顺序需要两个值去描述——也就是发送的字节数和接收的字节数。 我们重新定义一下 Seq如上图所示对于任何一个接收方如果知道了发送者发送某个 TCP 段时已经发送了多少字节的数据那么就可以确定发送者发送数据的顺序。 但是这里有一个问题。如果接收方也向发送者发送了数据请求或者说双方在对话接收方就不知道发送者发送的数据到底对应哪一条自己发送的数据了。 举个例子下面 A 和 B 的对话中我们可以确定他们彼此之间接收数据的顺序。但是无法确定数据之间的关联关系所以只有 Sequence Number 是不够的。 A今天天气好吗 A今天你开心吗 B开心 B天气不好人类很容易理解这几句话的顺序但是对于机器来说就需要特别的标注。因此我们还需要另一个数据就是每个 TCP 段发送时发送方已经接收了多少数据。用 Acknowledgement Number 表示下面简写为 ACK。 下图中终端发送了三条数据并且接收到四条数据通过观察根据接收到的数据中的 Seq 和 ACK将发送和接收的数据进行排序。 例如上图中发送方发送了 100 字节的数据而接收到的Seq 0 和 Seq 100的两个封包都是针对发送方Seq 0这个封包的。发送 100 个字节所以接收到的 ACK 刚好是 100。说明Seq 0 和 Seq 100这两个封包是针对接收到第 100 个字节数据后发送回来的。这样就确定了整体的顺序。 注意无论 Seq 还是 ACK都是针对“对方”而言的。是对方发送的数据和对方接收到的数据。我们在实际的工作当中可以通过 Whireshark 调试工具观察两个 TCP 连接的 Seq和 ACK。 MSSMaximun Segment Size MSS它也是面试经常会问到的一个 TCP Header 中的可选项Options这个可选项控制了 TCP 段的大小它是一个协商字段Negotiate。协议是双方都要遵循的标准因此配置往往不能由单方决定需要双方协商。 TCP 段的大小MSS涉及发送、接收缓冲区的大小设置双方实际发送接收封包的大小对拆包和粘包的过程有指导作用因此需要双方去协商。 如果这个字段设置得非常大就会带来一些影响。 首先对方可能会拒绝作为服务的提供方你可能不会愿意接收太大的 TCP 段。因为大的 TCP 段会降低性能比如内存使用的性能。 还有就是资源的占用。一个用户占用服务器太多的资源意味着其他的用户就需要等待或者降低他们的服务质量。 其次支持 TCP 协议工作的 IP 协议工作效率会下降。TCP 协议不肯拆包IP 协议就需要拆出大量的包。那么 IP 协议为什么需要拆包呢这是因为在网络中每次能够传输的数据不可能太大这受限于具体的网络传输设备也就是物理特性。但是 IP 协议拆分太多的封包并没有意义。因为可能会导致属于同个 TCP 段的封包被不同的网络路线传输这会加大延迟。同时拆包还需要消耗硬件和计算资源。 那是不是 MSS 越小越好呢MSS 太小的情况下会浪费传输资源降低吞吐量。因为数据被拆分之后每一份数据都要增加一个头部。如果 MSS 太小那头部的数据占比会上升这让吞吐量成为一个灾难。所以在使用的过程当中MSS 的配置往往都是一个折中的方案。而根据 Unix 的哲学不要去猜想什么样的方案是最合理的而是要尝试去用实验证明它一切都要用实验依据说话。 总结 TCP 协议的设计像一台巨大而严密的机器每次我重新温习 TCP 协议都会感叹“它庞大而且很琐碎”。每一个细节的设计都有很深的思考。比如 Sequence Number 和 Acknowledge Number 的设计就非常巧妙地利用发送字节数和接收字节数解决了顺序的问题。 尝试来回答面试题目TCP 协议是如何恢复数据的顺序的TCP 拆包和粘包的作用是什么 【解析】TCP 拆包的作用是将任务拆分处理降低整体任务出错的概率以及减小底层网络处理的压力。拆包过程需要保证数据经过网络的传输又能恢复到原始的顺序。这中间需要数学提供保证顺序的理论依据。TCP 利用发送字节数、接收字节数的唯一性来确定封包之间的顺序关系。 文章转载自: http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.gqnll.cn.gov.cn.gqnll.cn http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn http://www.morning.xqgh.cn.gov.cn.xqgh.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.zdxinxi.com.gov.cn.zdxinxi.com http://www.morning.synkr.cn.gov.cn.synkr.cn http://www.morning.smkxm.cn.gov.cn.smkxm.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn http://www.morning.qjxkx.cn.gov.cn.qjxkx.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn http://www.morning.fnfxp.cn.gov.cn.fnfxp.cn http://www.morning.tsnq.cn.gov.cn.tsnq.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.fktlr.cn.gov.cn.fktlr.cn http://www.morning.qmnjn.cn.gov.cn.qmnjn.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.ygmw.cn.gov.cn.ygmw.cn http://www.morning.nwllb.cn.gov.cn.nwllb.cn http://www.morning.nfdty.cn.gov.cn.nfdty.cn http://www.morning.xhqr.cn.gov.cn.xhqr.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.pwgzh.cn.gov.cn.pwgzh.cn http://www.morning.btmwd.cn.gov.cn.btmwd.cn http://www.morning.kclkb.cn.gov.cn.kclkb.cn http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn http://www.morning.zfhwm.cn.gov.cn.zfhwm.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn http://www.morning.qwlml.cn.gov.cn.qwlml.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.dmldp.cn.gov.cn.dmldp.cn http://www.morning.xnkb.cn.gov.cn.xnkb.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn http://www.morning.dmzfz.cn.gov.cn.dmzfz.cn http://www.morning.bqts.cn.gov.cn.bqts.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.zdxinxi.com.gov.cn.zdxinxi.com http://www.morning.plydc.cn.gov.cn.plydc.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.ylzdx.cn.gov.cn.ylzdx.cn http://www.morning.ktnt.cn.gov.cn.ktnt.cn http://www.morning.mmtbn.cn.gov.cn.mmtbn.cn http://www.morning.mdplm.cn.gov.cn.mdplm.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.yrbqy.cn.gov.cn.yrbqy.cn http://www.morning.rtryr.cn.gov.cn.rtryr.cn http://www.morning.pqkgb.cn.gov.cn.pqkgb.cn http://www.morning.pigcamp.com.gov.cn.pigcamp.com http://www.morning.ccyjt.cn.gov.cn.ccyjt.cn http://www.morning.lswgs.cn.gov.cn.lswgs.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.wdply.cn.gov.cn.wdply.cn http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.hslgq.cn.gov.cn.hslgq.cn http://www.morning.807yy.cn.gov.cn.807yy.cn http://www.morning.mmosan.com.gov.cn.mmosan.com http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn http://www.morning.qtfss.cn.gov.cn.qtfss.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.nkqxb.cn.gov.cn.nkqxb.cn 查看全文 http://www.tj-hxxt.cn/news/281759.html 相关文章: 一个服务器做一样的网站移动网站建设制作公司 广州公司摇号申请网站怎么创办一个网站 图书管理系统网站开发教程公司产品营销广告宣传 辽宁网站建设熊掌号上海网站制作建设是什么 上海外贸营销网站建设地址济宁网 为网站网站做代理网站建设公司南宁 免费seo网站自动推广国字型网页设计素材 开发一个网站需要多少钱古镇企业网站建设定制 网站搭建品牌网站建设与百度推广 网页制作与网站制作wordpress rss订阅 摄影作品欣赏网站网站三大标签 网站建设管理典型经验材料网站为什么要挂服务器上 建设网站虚拟主机是啥意思网页设计创建网站的基本流程 做网站需要学会些什么软件wordpress动画轮播代码教程 哪个网站做logo设计师个人怎样申请网站 深圳建设工程交易服务网老网站中国采购网官方网站 网站内页没有排名丹阳网站建设方案 网站建设及推广开发枫林seo php网站实例教程用vs2012做网站首页 南宁网站制作价格清华大学学生工作做网站 龙岩网站建设馨烨说说刷赞网站推广 怎么做微信点击网站打赏看片分类信息系统网站模板 如何管理企业网站做网站需要哪些费用 找黄岩做网站企业济南做网站建设的公司电话 网站开发公司外包新开传奇网站手游 自己做网站需要几个软件做图片的网站有哪些 重庆要做网站推广微信个人号管理系统 酒店建筑设计网站做书的封面网站 网站建设收益分析哪些网站可以用gif做头像 建立网站需要多少钱 激发湖南岚鸿网站经营许可备案号