文章目录
计算机网络——传输层(二)
五、TCP三次握手建立连接
5.1 三次握手建立连接
- 一方被动的等待一个进来的连接请求
- 另一方通过发送连接请求,设置一些参数
- 服务器方回发确认应答
- 应答到达请求方,请求方最后确认,建立连接
- Host1发送一个连接请求数据段
SYN
,包含一个初始序列号X(随机产生),控制位SYN=1,ACK=0。整个SYN叫做第一次握手信息。第一次握手 - Host2收到Host1的SYN会回发一个连接应答SYN,里面也包含一个初始化序列号y(Host2随机产生),SYN=1,ACK=1,确认号ack number=x+1,表示对字节号x的确认。第二次握手
- 当连接应答到达Host1,Host1发送最后的确认。序列号的x+1,确认号为y+1,控制位SYN为0,ACK=1。第三次握手
5.2 重复连接请求CR与重复ACK
5.3 安全问题(DoS攻击)
SYN泛洪导致DoS攻击
这会导致被攻击者挂起很多进程等待,最终因为资源耗尽瘫痪。
六、TCP连接释放
6.1 发送FIN置位的TCP数据段
6.2 两军队问题
6.3 解决
6.4 四次挥手图解
七、TCP传输策略
7.1 滑动窗口
- 发送方发送2k数据,SEQ=0.
- 接收方接收2k的数据,编号1~2047。缓存剩余2k。回发一个确认,ack number = 2048 表明1~2047都收到了,同时Window size 的值是2048,表明剩余空间为2k。
- 发方收到确认,发送2k的数据,SEQ=2048.
- 收方回发确认,Window size = 0 ,表明没有空间了。
- 收方清理空间,空出2k,马上发送一个更新窗口。Windowsize=2018。
- ·······
7.2 交互式编辑器
这里举了一个例子,指出存在的问题。
7.2.1 问题
7.2.2 优化
7.3 傻瓜窗口综合征
解决
八、TCP拥塞控制
8.1 概述
8.2 慢启动算法
- 开始阈值为64k,拥塞窗口指数增长。
- 增长到一定的值,超时,此时,阈值变为当前拥塞窗口的一般32k。
然后再次启动慢启动过程。不断重复。拥塞窗口随着网络环境不断变化。
快速恢复
拥塞窗口不用重置为一个数据段大小,而是直接设置为阈值大小,从这里直接线性增长,这就是快速恢复。
8.3 小结
拥塞控制算法
注意
九、TCP定时器
9.1 重传定时器
TCP采用了肯定确认重传技术保证每个字节的传输。
为了解决数据段丢失问题,每发一个数据段会启动一个定时器,重传定时器。
9.2 持续定时器
9.3 其它定时器
9.4 TCP/UDP比较