通行导论-IP数据网络基础(2)
传输控制协议(TCP)
差错控制:TCP使用差错控制提供可靠性,包括检测受到损伤、丢失、失序的报文段
实现方法:1.16位检验和,2.确认机制:采用确认证实收到的报文段,3.重传(设置一个重传超时RTO计时器,计时器时间到,认为对应报文段丢失;收到3个重复的ACK立即重传丢失报文段,即快重传;对不消耗序号的报文段不重传)
特点:控制报文段不携带数据,但消耗一个序号;控制报文段也需要被确认;ACK报文段不消耗序号,也不需要确认
拥塞控制:网络中的负载大于容量就可能发生拥塞;通过窗口机制(流量控制)决定发送或接收端能够发送的最大数据量
拥塞窗口:发送端根据自己估计的网络拥塞程度而设置的窗口值(来自发送端的流量控制),接收端窗口:接收端根据目前的接受缓存大小所许诺的最新的窗口值(来自接收端的流量控制)
拥塞猜测:依靠重传发生猜测拥塞发生(慢开始、加速递减和拥塞避免算法)
- 发生超时
- 执行慢开始算法,拥塞窗口初始值为1,发送第一个报文段M0;发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增加到2,于是发送端可以接着发送M1和M2两个报文段;接收端发回ACK2和ACK3,发送端每收到一个队新报文段的确认ACK,发送端的拥塞窗口加1,现在cwnd从2增到4,并发送M4~M8共4个报文段(即拥塞窗口cwnd随着传输次数按指数规律增长)
- 当拥塞窗口cwnd增长到慢开始门限值ssthresh(即当cwnd=16)时,改为执行拥塞避免算法,拥塞窗口按线性规律增长
- 利用TCP重传计时器设置拥塞窗口数值增长到24时,网络出现超时(表明网络拥塞了)
- 更新后的ssthresh变为12(即变为发送窗口值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法
- 当cwnd=12时改为执行拥塞避免算法,拥塞窗口按线性规律增长,每经过一个往返时延就增加一个MMS的大小(?)
- 收到3个ACK:发生超时前cwnd的变化与发生超时时一样,发生超时后更新后的ssthresh变为12(即变为发送窗口值24的一半),拥塞窗口的值直接变为与ssthresh相同的值(发生超时与进入拥塞避免相连),之后一样执行拥塞避免算法,拥塞窗口按线性规律增长
传输层协议(UDP)-不可靠,面向无连接,高效
UDP用户数据报的首部格式
伪首部:计算检验和是,临时把伪首部和UDP用户数据报连接在一起,伪首部仅仅是为了计算检验和(12字节)
TCP与UDP的区别
| TCP | UDP | |
| 是否面向连接 | 面向连接 | 无连接 |
| 是否提包可靠性 | 可靠传输 | 不提供可靠性 |
| 是否流量控制 | 流量控制 | 不提供流量控制 |
| 传输速度 | 慢 | 快 |
| 协议开销 | 大(20字节) | 小(8字节) |
网络层协议(IP)
首部长度字段:占4位,以4字节(32bit)为单位(不以字节为单位)
总长度字段:占16位,单位为字节;首部长度(即4*HLEN)+数据长度;总长度必需不超过最大传送单元MTU;IP分组的最大长度是65535
标识字段:源站每发送一个分组,标识位加1;(源IP地址,标识)→全网唯一分组标识--标识同一数据报的各个分片
标志字段:占3位,最低位为MF(More Fragment),用一比特位来表示“更多的片”,MF=0最后一个分片,MF=1不是最后一个分片;中间一位是DF(Don't Fragment)只有等于0时才允许分片
| D | M |
片偏移字段:8字节为偏移单位--分片的顺序
生存时间(TTL):源和目的之间的路由器个数(跳数);最大值为255(20+21+……28);路由器转发时TTL减1,为0时丢弃该分组
首部检验和:若接收端利用发送端的检验和计算出的结果为0则保留,否则丢弃该数据报
分片计算
片偏移字段的值为每个分片的第一个数据/8,普通包头部长度为20字节(MTU-20)
若某分片丢失,则丢弃所有分片,重传整个数据报
2019-03-11 星期一
浙公网安备 33010602011771号