0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超硬核TCP、UDP基础知识汇总2

jf_78858299 来源:阿Q正砖 作者:阿Q正砖 2023-02-15 09:57 次阅读

注意事项:

1.TCP发送窗口是由对方发回的报文段(窗口大小,ack)设置的但是同一时刻发送窗口接收窗口大小未必相等(当接收方发回一个报文窗口大小改变但由于网络时延发送方窗口值可能不变)。

2.接收方应该有累计确认功能这样可以减小传输开销。

3.TCP是全双工通信,所以两端都有发送窗口和接收窗口。

3.2、发送缓冲区和接收缓冲区

图片

发送窗口只是发送缓冲区的一部分,发送缓冲区通常包括发送方应用程序传送给发送方TCP准备发送的数据。这里面包括已发送但还未收到确认的数据和未发送但在发送窗口的数据以及未发送但不再发送窗口的数据。

图片

接收缓冲区包含了按序到达但尚未被应用程序读取的数据,不按序到达以及尚未进入接收窗口的数据。

4、TCP的流量控制

4.1、流量控制介绍

发送方一次发送的字节数量不要太多要让对方来的及接收。接收方是通过调整滑动窗口来进行流量控制的。

图片

•来看下面这样一个实例A为发送方,B为接收方。B的接收窗口由400字节。

•首先A向B发送了一个序号为1的100字节的数据(1~100)。此时B的接收窗口还剩300字节。

•然后A向B发送了序号为101的100字节数据(101~200).此时B的接收窗口还剩200字节。

•然后A向B发送了序号为201的100字节的数据(201~300)但是这个报文丢失了。

•此时B向A发送一个回复报文ACK = 201说明我已经接收1200字节的数据下一次要从201开始发。同时进行了一次流量控制即rwnd = 300也就是说B能接收300字节。所以A要发送201500的报文。

•A已经发送过201的报文了所以它连续发送301,401的报文此时他知道201发送失败进行超时重传。

•这时A收到了B成功收到401的报文下一次要从501开始发而且又进行了一次流量控制rwnd = 100还能接收100字节的数据。

•然后A又继续发送了一个序号为501的报文,然后A停止发送。然后收到了B返回的回复序号为601滑动窗口置为0的报文。

4.2、死锁问题及解决

图片

接上文,过了一段时间后B的接收缓存又有了一些存储空间。这时候会向A发送一个报文下次发送的序号为601,rwnd=400滑动窗口。但是如果这个报文丢失那么就会造成A不知道B中滑动窗口更新的消息那么就永远不会向B发送报文。

解决方案:TCP为每个连接都设置了一个持续计时器。只要收到对方的零窗口通知,就启动该持续计时器:

持续计时器到期发送一个零窗口探测报文段,对方再确认这个探测报文段时给出现在的窗口值如果窗口值仍然是0,接收方确认报文方重新设置持续计数器;若窗口不是0,死锁的僵局便被打破了。

5、TCP的效率问题

5.1、TCP的3种发送时机

1.当发送缓存中达到双方约定的MSS时然后发送。

2.当URG = 1时立刻发送。

3.当发送方一个计时器期限到了就把当前已有的数据装入报文段发送出去(这个数据长度不能超过MSS)

5.2、TCP的效率问题

图片

举例:

比如说Telnet远程终端协议客户端A向服务端B发送一个字符需要消耗41字节,B端服务器向A发送一个确认报文40字节,同时服务端要向客户端回显那一个字符。又是41字节,A客户端向B服务端发送一个确认报文40个字节我一共要交流2字节的数据我却用了162字节的报文利用率太低了。

解决方案:Nagle算法

发送方发送第一个字节,然后缓存剩下的数据字节。发送方收到对方发送的确认报文以后才把发送缓存中所有数据组装成一个报文段发送出去。当发送缓存中数据达到对方接收窗口一半或者达到MSS时立刻发送。

5.3、糊涂窗口综合症

当接收方缓冲区已满会向发送方发送一个rwnd为0的报文告诉对方不要再发了。当应用进程读取1字节接收缓存时,接收方向发送方发送rwnd = 1的报文此时发送方将1字节的数据打包成报文段发送给接收方。如此循环往复每次只能发一个字节。

解决方案:

接收方等待一段时间,使得接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一半空间;只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前窗口的大小。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓冲区
    +关注

    关注

    0

    文章

    31

    浏览量

    9035
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1273

    浏览量

    78307
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33625
收藏 人收藏

    评论

    相关推荐

    基础知识汇总!!!

    基础知识汇总
    发表于 11-07 18:14

    第12章 TCP传输控制协议基础知识

    知识点主要整理自网络)12.1 初学者重要提示12.2 TCP基础知识参考资料12.3 TCP基础知识点12.4
    发表于 10-30 08:51

    第16章 UDP用户数据报协议基础知识

    ) 16.1 初学者重要提示 16.2 UDP基础知识参考资料 16.3 UDP基础知识点 16.4 TCP
    发表于 11-02 17:27

    第25章 DHCP动态主机配置协议基础知识

    转帖本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCPUDP的学习,需要大家对DHCP也有个基础的认识
    发表于 11-20 14:55

    电镀的基础知识汇总

    :没有严格规范操作就不可能镀出合格的电镀产品!因此要使自己能胜任电镀工这个岗位,就必须懂一点电镀的基本常识,通过理论上的培训,实践操作合格,这样才能真正的做合格的电镀工。以下是电镀基础知识汇总的的70个问答(上篇),希望能帮到身边的电镀师傅们。
    发表于 02-26 06:56

    TCP协议基础知识

    TCP 是互联网核心协议之一,本文介绍它的基础知识
    的头像 发表于 10-16 10:29 3403次阅读
    <b class='flag-5'>TCP</b>协议<b class='flag-5'>基础知识</b>

    tcpudp协议的异同

    UDP 校验和则是包含 UDP 首部和数据在内的校验结果。 TCP协议 TCP协议基于网络层的 IP 协议提供的是有连接、可靠服务,是基于字节流的。
    的头像 发表于 11-12 14:45 3647次阅读
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>协议的异同

    华为EMC基础知识汇总资源下载

    华为EMC基础知识汇总资源下载
    发表于 06-04 11:10 110次下载

    硬核TCPUDP基础知识汇总1

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 316次阅读
    超<b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>1

    硬核TCPUDP基础知识汇总3

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 355次阅读
    超<b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>3

    硬核TCPUDP基础知识汇总4

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 362次阅读
    超<b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>4

    TCP/UDP网络编程的基础知识合集1

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 526次阅读

    TCP/UDP网络编程的基础知识合集2

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 459次阅读

    TCP/UDP网络编程的基础知识合集3

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 577次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>网络编程的<b class='flag-5'>基础知识</b>合集3

    TCPUDP的基本区别

    TCPUDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(
    的头像 发表于 11-13 15:27 552次阅读
    <b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>的基本区别