TCP/UDP解析

文章目录1.UDP主要特点1.1运用场景:1.2UDP首部信息2.TCP主要特点3.TCP的报文格式4.TCP的可靠传输4.1TCP连接的两个端点都有两个窗口:4.2发送缓冲区和接收缓冲区5.TCP的流量控制5.1流量控制介绍5.2死锁问题及解决6.TCP的效率问题6.1 TCP的3种发送时机6.2 TCP的效率问题6.3糊涂窗口综合症7.拥塞控制7.1 拥塞控制概述7.2 拥塞控制与流量控制7.3 拥塞控制的原理7.4 拥塞出现的指标7.5 拥塞通知的传递7.6 TCP拥塞控制方法7.6.1 慢开始算法7
摘要由CSDN通过智能技术生成

1.UDP主要特点

1.不需要建立连接。

2.尽最大努力交付。

3.面向报文交付。

4.没有拥塞控制。

5.支持多种交互通信。

6.首部开销小仅有8字节。

7.应用程序必须选择合适的报文如果报文太长则需要IP分片,太小降低效率。

1.1运用场景:

1.可以重复请求信息的情况下例如:RIP,DNS,DHCP等

2.一次性传小量数据的应用

3.实时应用

4.多媒体应用。

1.2UDP首部信息

1.源端口(2)

2.目的端口(2)

3.长度(2)

4.检验和(2)(首部+伪首部+数据)

在这里插入图片描述

这个检验和是交给上层应用程序检查的,它就相当于你拆快递先检查收货地址(IP地址),再检查是不是你的名字(端口),再检查里面收件是不是错的(里面的数据)。

2.TCP主要特点

1.面向连接:

TCP连接只能有两个端点,TCP连接是一对一的。

TCP提供可靠连接服务。TCP提供全双工通信。

2.面向字节流:

TCP和应用程序交互是一次一个数据块进行交互。但是TCP会把应用程序交下来的数据块看成一串无结构的字节流。

TCP报文收发之间的数据块不一定相同(因为我不一定一次接受多少受网络情况,拥塞情况控制)但是字节流一定相同。

TCP根据对方的接受能力和网络拥塞情况将字节流分成大小不同的段发送给接受缓存

在这里插入图片描述

3.TCP的连接套接字连接两端的插口包含IP和端口号。全双工抽象连接。

3.TCP的报文格式

在这里插入图片描述

1.源端口,目的端口各占两个字节是运输层与应用层交互的接口。

2.序号(4B):seq,字节序号本报文段所携带数据的第一个字节的序号。

3.确认号(4B):ack,期望对方下次发来数据的第一个字节的序号。

4.数据偏移(4bit):标志着报文段数据部分起始位置距离报文段起始位置的距离即首部长度。

5.URG(1B),紧急位置1,立刻将TCP发送缓存中的字节流打包成报文发送出去

6.ACK(1B),ACK = 1代表确认号有效。

7.PSH(1B),PSH = 1,接收方立刻将接收缓存数据上交给应用进程。

8.RST(1B),RST = 1,TCP连接中出现严重差错必须释放连接然后在重新建立运输连接。

9.SYN(1B),SYN = 1,表示这是一个连接请求或连接接受的报文。

10.FIN(1B),FIN = 1,用来释放一个连接。FIN为1表明报文段发送端已发送完成,并要求释放连接。

11.窗口(2B),告诉对方从确认号开始接收方目前允许对方发送的数据量。

12.检验和(2B),类似于UDP首部和数据这两部分计算时要在TCP报文段之前加上伪首部。

13.紧急指针,16位,当URG = 1时,这部分记录了紧急数据的大小把它放在数据部分的最前面发出去。

14.选项字段:长度可变最大报文段数据部分长度MSS,MSS告诉对方TCP我缓存最大能接受的长度为MSS。

MSS太大IP层分片只要有一片出错就得重传。

MSS太小效率低下。

15.其它选项:

窗口扩大选项:占3字节,其中一个字节S为窗口扩大的位数,比如(16+S)但是最大值不能超过30位

时间戳选项:1.计算往返时延。2.防止序号回绕。

在这里插入图片描述

发送时打一个时间戳放在timestamp中,收到确认报文后再打一个时间戳此时将之前的timestamp中的时间放在timestamp echo中然后将收到确认报文的时间戳放在timestamp中二者相减可以得到RTT。

2.防止序号回绕:由于序号编码空间是32位的所以一共是2的32次方。对于高带宽的网络很容易消耗完,也就是说接收方可能会受到两次相同序号的报文,如果不加标记,接收方会认为这两个报文是相同的然后就会丢弃。时间戳选项会将两个报文标记好时间

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温JZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值