文章目录
- TCP------打电话----可靠有序、不丢不重复--------提供全双工-------------发送接收缓存----------面向字节流--------搬砖一样加个头运走
- TCP首部格式-----源端口目的端口一共4B-------序号字段(报文第一个字节的序号)--------确认号(期待收到的内容的第一个字节的序号)-------以4B单位
- 数据偏移--------首部长度--4B为单位-------URG--urgent紧急位--有紧急情况可以插队处理(发送方)---------配合紧急指针字段使用----------确认位ACK=1有效----------建立连接后ACK必须为1---------PSH=1(接收端插队)------RST复位------TCP出现严重偏差必须释放连接---再重新连接-------------同步SYN=1---表明是一个请求/接受报文----------------终值位FIN----表明报文段发送方已经发完要求释放连接
- 窗口---表明接收窗口允许发送方发送的数据量----根据这个设置发送缓存------------检验和-----和IP报文一样---先加上12B的伪首部---计算完去除-------选项--额外的选项
- TCP连接管理
- TCP连接管理-----B/S方式-------
- 三次握手---------1.客户端发送连接请求报文段SYN=1,seq=x随机------------------------------2.服务器为TCP分配缓存和变量,并返回确认报文SYN=1,ACK=1,seq=y随机,ack=x+1(序号想收到的)------------------------3.客户端为TCP分配缓存和变量,返回确认SYN=0,ACK=1,seq=x+1,ack=y+1
- SYN洪范攻击-------黑客发送第一个确认包-------服务器一直发送确认等待确认---------服务器也分配了缓存和变量--------导致服务器资源耗尽--------------------解决方法设置 SYN cookie
- TCP的连接释放------------四次握手-------1.服务端发送释放报文连接FIN=1,seq=u(报文段第一个字节的序号一般没有,为0)------------2.服务器返回一个确认报文,客户到服务器这个方向就关闭了(半关闭)ACK=1,seq=v,ack=u+1-----------------3.服务器发送连接释放报文FIN=1,ACK=1,seq=w,ack=u+1-----------------4.客户端回复确认 等待2MSL----最长报文段寿命后彻底关闭---万一对方没收到可以重传----ACK=1,seq=u+1,ack=w+1
- TCP可靠传输-------校验---伪首部、序号、确认、重传
- 网络层------------不可靠-----------最大努力交付----------------用tcp来保证----------如果用了UDP-------------只能应用层来保证可靠传输了---------------------实际发送用报文段来传输-------不是纯依靠字节流和序号
- 确认----接收方返回确认报文---------也可以捎带着自己要发的信息-------序号写下次期待收到的----------如果456丢了,但是78到了,也会返回期待收到4号
- 重传--------超时重传------RTTs---自适应算法---加权的平均往返时间------------可能会等太久了!!!----------冗余ACK----------发送方收到3个对于某个序号的冗余ACK---------认为报文丢失,重传此号报文-------------------快速重传
- TCP流量控制-------让发送方慢点---------滑动窗口-------动态调整发送方的窗口大小----通过回传的确认报文段的窗口字段--------------发送窗口 选取------------接收窗口rwnd 拥塞窗口cwnd的最小值
- TCP流量控制过程--------收到对方的0窗口通知,启动持续计时器--------持续计时器时间到就发送零窗口探测报文------------接收方收到给出现在的窗口值----------------如果再是0继续计时
- TCP拥塞控制-------资源供应不足、全局性性能变差------------过多数据注入网络------------全局性
- 拥塞控制4算法---------慢开始--拥塞避免--快重传--快恢复-----------拥塞窗口---发送方设置
- 慢开始------开始设置cwnd=1,---------随后每次指数增加------一个往返时延RRT---传输伦次---------------------------指数 到 加法 增加---拥塞避免(线性增加)
- 之前一旦遇到拥塞-----------设置新的门限值---ssthresh---发生拥塞时候大小的一半--------------------到了门限值就线性增大
- 快重传------就是收到三个冗余ACK后直接重传那个报文
- 快恢复------拥塞后不从慢开始开始,直接从新的门限值开始线性增加
🌸I could be bounded in a nutshell and count myself a king of infinite space.
特别鸣谢:木芯工作室 、Ivan from Russia
TCP------打电话----可靠有序、不丢不重复--------提供全双工-------------发送接收缓存----------面向字节流--------搬砖一样加个头运走
TCP首部格式-----源端口目的端口一共4B-------序号字段(报文第一个字节的序号)--------确认号(期待收到的内容的第一个字节的序号)-------以4B单位
数据偏移--------首部长度–4B为单位-------URG–urgent紧急位–有紧急情况可以插队处理(发送方)---------配合紧急指针字段使用----------确认位ACK=1有效----------建立连接后ACK必须为1---------PSH=1(接收端插队)------RST复位------TCP出现严重偏差必须释放连接—再重新连接-------------同步SYN=1—表明是一个请求/接受报文----------------终值位FIN----表明报文段发送方已经发完要求释放连接
窗口—表明接收窗口允许发送方发送的数据量----根据这个设置发送缓存------------检验和-----和IP报文一样—先加上12B的伪首部—计算完去除-------选项–额外的选项
TCP连接管理
TCP连接管理-----B/S方式-------
三次握手---------1.客户端发送连接请求报文段SYN=1,seq=x随机------------------------------2.服务器为TCP分配缓存和变量,并返回确认报文SYN=1,ACK=1,seq=y随机,ack=x+1(序号想收到的)------------------------3.客户端为TCP分配缓存和变量,返回确认SYN=0,ACK=1,seq=x+1,ack=y+1
SYN洪范攻击-------黑客发送第一个确认包-------服务器一直发送确认等待确认---------服务器也分配了缓存和变量--------导致服务器资源耗尽--------------------解决方法设置 SYN cookie
TCP的连接释放------------四次握手-------1.服务端发送释放报文连接FIN=1,seq=u(报文段第一个字节的序号一般没有,为0)------------2.服务器返回一个确认报文,客户到服务器这个方向就关闭了(半关闭)ACK=1,seq=v,ack=u+1-----------------3.服务器发送连接释放报文FIN=1,ACK=1,seq=w,ack=u+1-----------------4.客户端回复确认 等待2MSL----最长报文段寿命后彻底关闭—万一对方没收到可以重传----ACK=1,seq=u+1,ack=w+1
TCP可靠传输-------校验—伪首部、序号、确认、重传
网络层------------不可靠-----------最大努力交付----------------用tcp来保证----------如果用了UDP-------------只能应用层来保证可靠传输了---------------------实际发送用报文段来传输-------不是纯依靠字节流和序号
确认----接收方返回确认报文---------也可以捎带着自己要发的信息-------序号写下次期待收到的----------如果456丢了,但是78到了,也会返回期待收到4号
重传--------超时重传------RTTs—自适应算法—加权的平均往返时间------------可能会等太久了!!!----------冗余ACK----------发送方收到3个对于某个序号的冗余ACK---------认为报文丢失,重传此号报文-------------------快速重传
TCP流量控制-------让发送方慢点---------滑动窗口-------动态调整发送方的窗口大小----通过回传的确认报文段的窗口字段--------------发送窗口 选取------------接收窗口rwnd 拥塞窗口cwnd的最小值
TCP流量控制过程--------收到对方的0窗口通知,启动持续计时器--------持续计时器时间到就发送零窗口探测报文------------接收方收到给出现在的窗口值----------------如果再是0继续计时
TCP拥塞控制-------资源供应不足、全局性性能变差------------过多数据注入网络------------全局性
拥塞控制4算法---------慢开始–拥塞避免–快重传–快恢复-----------拥塞窗口—发送方设置
慢开始------开始设置cwnd=1,---------随后每次指数增加------一个往返时延RRT—传输伦次---------------------------指数 到 加法 增加—拥塞避免(线性增加)
之前一旦遇到拥塞-----------设置新的门限值—ssthresh—发生拥塞时候大小的一半--------------------到了门限值就线性增大
之前直接回到慢开始