网工笔记-传输层
概述
主要有两个协议TCP(可靠)和UDP(不可靠)
工作位置
区分不同应用进程的时候,利用端口号来区分
端口号是16位的,只作用于本机的应用程序,互联网中不同计算机相同的端口号没有联系
服务器使用的端口号:
0-1023为熟知端口(一般不能用)
1024-49151为登记端口(一般可以用户指定)
客户端使用的端口号:
49152-65535(短暂端口,用完回收)
UDP协议
概述
UDP在ip数据报服务上多增加了两个功能
1.复用和分用
2.差错检测
特点
1.无连接
2.使用最大可能的交付
3.面向报文,一次传输一块完整的报文
4.没有拥塞控制
5.支持一对一,一对多,多对一,多对多通信
6.首部开销小,只有八个字节
发送方UDP对应用层交下来的报文,不合并也不拆分,原样发送
接收方UDP对IP层交上来的UDP数据报,去除首部后原封不动的交付给上层应用程序,一次交付一个完整的数据报。
首部格式
伪首部:防止传过来的数据的ip地址不对
TCP协议
概述
1.特点
TCP只能承载单播和IPv6的任播
2.TCP面向流概念
3.TCP的连接
套接字
TCP的首部格式
序号:指的是本报文段所发送数据的第一个字节的序号
确认号:告诉对方你接下来发给我的数据段的序号,以及确认号之前的数据段我都收到了
数据偏移:就是首部长度
窗口:用来描述我能接收多大的数据,经常是动态变化的
校验和:检查首部和数据两个部分,在计算校验和时,需要在TCP报文段的前面加上12字节的伪首部。
TCP伪首部
紧急指针:当URG=1的时候才有意义,指出本报文段中紧急数据的字节数,在这之前的都紧急,之后就不紧急了。
选项:
选项(2):最大报文段长度MSS:是每个TCP报文段中数据字段最大的长度。
选项(3):窗口扩大
选项(5):SACK
选项(8):时间戳
TCP的滑动窗口和流量控制
1.以字节为单位的滑动窗口
发送缓存和发送窗口
接收缓存和接收窗口
2.利用滑动窗口实现拥塞控制
流量控制:让发送方发送的速率不要太快,让接收方来得及接收
实现:可变窗口机制
发送方的发送窗口大小是由接收方来决定的
可能发生死锁
解决:持续计时器:只要TCP连接的一方收到对方的零窗口通知,就启动该持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),在对方确认这个探测报文段时给出当前窗口值。
若窗口任然为0,收到这个报文段的一方就重新设置持续计时器
若窗口不是0,则死锁僵局就可以打破
发送方糊涂窗口综合征
接收方糊涂窗口综合征
TCP的拥塞控制
拥塞控制和流量控制的区别
拥塞控制:防止过多数据注入到网络中,避免网络中的路由器或链路过载,是一个全局性的过程
流量控制:抑制发送端发送数据的速率,以使接收端来得及接收,是一个端到端的过程
TCP的拥塞控制方法
控制拥塞窗口变化的原则
只要网络没有出现拥塞,拥塞窗口就可以增大些(提高网络利用率)
只要网络出现拥塞或可能出现拥塞,拥塞窗口就会减少些
判断网络出现拥塞或可能出现拥塞的情况:
出现:超时重传计时器超时
可能:收到3个重复的确认
TCP拥塞控制算法
1.慢开始
2.拥塞避免
3.快重传
4.快恢复
1.慢开始
2个控制变量:拥塞窗口cwnd、慢开始门限ssthresh(按照经验设置的)
当cwnd<sshresh就会使用慢开始算法
cwnd实现指数级别的增长
2.拥塞避免算法
cwnd>=sshresh
当网络出现拥塞
3.快重传算法
出现快重传的情况,就要迅速采取措施,措施就是快恢复算法
4.快恢复算法
TCP拥塞控制流程图
TCP的连接管理
TCP的连接建立
TCP的建立连接过程叫握手,采用三次握手
主动发起连接建立的应用进程叫客户
被动等待连接建立的应用进程叫服务器
TCP的连接释放
数据传输结束后,通信双方都可以释放连接
采用四次挥手
MSL:报文最大生存时间
RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。