<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/12608758/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/12608758/bg1.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">计算机基础主干知识详细拓展版(学习<span class="ff2">|</span>复习<span class="ff2">|</span></div><div class="t m0 x2 h3 y3 ff1 fs0 fc0 sc0 ls0 ws0">面试)</div><div class="t m0 x3 h4 y2 ff2 fs0 fc1 sc0 ls0 ws0"> </div><div class="t m0 x4 h5 y4 ff1 fs1 fc2 sc0 ls0 ws0">我不会直接把书上的知识点复制过来,而是加上相关理解和拓展问题,你有一桶水,才就能洒出</div><div class="t m0 x4 h5 y5 ff1 fs1 fc2 sc0 ls0 ws0">半桶水!加油!</div><div class="t m0 x4 h5 y6 ff1 fs1 fc2 sc0 ls0 ws0">有更新和优化会在公众号【程序员宝藏】提醒!请注意查收!(持续更新,不细你来找我要红</div><div class="t m0 x4 h5 y7 ff1 fs1 fc2 sc0 ls0 ws0">包!)</div><div class="t m0 x2 h6 y8 ff1 fs2 fc0 sc0 ls0 ws0">目录:<span class="_ _0"> </span><span class="ff2 fc1"> </span></div><div class="t m0 x2 h7 y9 ff1 fs3 fc1 sc0 ls0 ws0">计算机基础主干知识详细拓展版(学习<span class="ff2">|</span>复习<span class="ff2">|</span>面试)</div><div class="t m0 x5 h8 ya ff3 fs3 fc1 sc0 ls0 ws0">目录:</div><div class="t m0 x5 h8 yb ff3 fs3 fc1 sc0 ls0 ws0">一、计算机网络</div><div class="t m0 x6 h8 yc ff4 fs3 fc1 sc0 ls0 ws0">1<span class="ff3">、</span>TCP<span class="ff3">三次握手与四次挥手</span></div><div class="t m0 x7 h8 yd ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="_ _1"></span>TCP <span class="ff3">协议的特点</span></div><div class="t m0 x7 h8 ye ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="_ _1"></span>TCP<span class="ff3">报文段格式</span></div><div class="t m0 x7 h8 yf ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="_ _1"></span>TCP<span class="ff3">连接管理</span></div><div class="t m0 x7 h8 y10 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">三次握手建立连接</span></div><div class="t m0 x7 h8 y11 ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">四次握手释放连接</span></div><div class="t m0 x6 h8 y12 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">介质访问控制</span></div><div class="t m0 x7 h8 y13 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">介质访问控制综述</span></div><div class="t m0 x7 h8 y14 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">信道划分介质访问控制</span></div><div class="t m0 x8 h8 y15 ff3 fs3 fc1 sc0 ls0 ws0">频分多路复用(<span class="ff4">Frequency division multiple<span class="_ _2"></span>xing FDM<span class="ff3">)</span></span></div><div class="t m0 x8 h8 y16 ff3 fs3 fc1 sc0 ls0 ws0">时分多路复用(<span class="ff4">Time division multiplexing TDM</span>)</div><div class="t m0 x8 h8 y17 ff3 fs3 fc1 sc0 ls0 ws0">波分多路复用(<span class="ff4">Wavelength division multiple<span class="_ _2"></span>xing <span class="_ _3"> </span>WDM<span class="ff3">)</span></span></div><div class="t m0 x8 h8 y18 ff3 fs3 fc1 sc0 ls0 ws0">码分多路复用<span class="ff4">(Code division multiplexing CDM)</span></div><div class="t m0 x7 h8 y19 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">随机访问介质访问控制</span></div><div class="t m0 x8 h8 y1a ff4 fs3 fc1 sc0 ls0 ws0">ALOHA<span class="ff3">协议</span></div><div class="t m0 x8 h8 y1b ff4 fs3 fc1 sc0 ls0 ws0">CSMA<span class="ff3">协议(</span>Carrier sense multiple access<span class="ff3">)</span></div><div class="t m0 x8 h8 y1c ff4 fs3 fc1 sc0 ls0 ws0">CSMA/CD <span class="ff3">协议</span></div><div class="t m0 x8 h8 y1d ff4 fs3 fc1 sc0 ls0 ws0">CSMA/CA<span class="ff3">协议</span>(Collision Avoidance, <span class="ff3">碰撞避免</span>CA)</div><div class="t m0 x7 h8 y1e ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">轮询访问介质访问控制:令牌传递协议</span></div><div class="t m0 x6 h8 y1f ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">路由算法</span></div><div class="t m0 x7 h8 y20 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">路由算法综述</span></div><div class="t m0 x7 h8 y21 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">静态路由算法</span></div><div class="t m0 x7 h8 y22 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">距离</span>-<span class="ff3">向量路由算法(</span>RIP<span class="ff3">)</span></div><div class="t m0 x7 h8 y23 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">链路状态路由算法</span>(OSPF)</div><div class="t m0 x7 h8 y24 ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">层次路由</span></div></div><div class="c x9 y25 w3 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">公众号:程序员宝藏(免费首发)5/14/2020</div></div><div class="c xa y27 w4 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">1</div></div><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611792,0.000000,0.000000,1.611792,0.000000,0.000000]}'></div></div></body></html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/12608758/bg2.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x6 h8 y28 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">各层主要网络协议</span></div><div class="t m0 x7 h8 y29 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">各层计算机网络协议综述</span></div><div class="t m0 x7 h8 y2a ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">物理层协议</span></div><div class="t m0 x7 h8 y2b ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">数据链路层协议</span></div><div class="t m0 x7 h8 y2c ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">网络层协议</span></div><div class="t m0 x7 h8 y2d ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">传输层</span></div><div class="t m0 x7 h8 y2e ff4 fs3 fc1 sc0 ls0 ws0">6.<span class="ff3">应用层</span></div><div class="t m0 x6 h8 y2f ff4 fs3 fc1 sc0 ls0 ws0">5<span class="ff3">、各层网络设备</span></div><div class="t m0 x7 h8 y30 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">物理层设备</span></div><div class="t m0 x7 h8 y31 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">数据链路层设备</span></div><div class="t m0 x7 h8 y32 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">网络层设备</span></div><div class="t m0 x7 h8 y33 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">网关</span></div><div class="t m0 x5 h8 y34 ff3 fs3 fc1 sc0 ls0 ws0">二、操作系统</div><div class="t m0 x6 h8 y35 ff4 fs3 fc1 sc0 ls0 ws0">1<span class="ff3">、死锁</span></div><div class="t m0 x7 h8 y36 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">死锁的定义</span></div><div class="t m0 x7 h8 y37 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">死锁产生的原因</span></div><div class="t m0 x7 h8 y38 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">死锁产生的必要条件</span></div><div class="t m0 x7 h8 y39 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">死锁的处理策略</span></div><div class="t m0 x7 h8 y3a ff3 fs3 fc1 sc0 ls0 ws0">死锁预防</div><div class="t m0 x7 h8 y3b ff3 fs3 fc1 sc0 ls0 ws0">死锁避免</div><div class="t m0 x8 h8 y3c ff3 fs3 fc1 sc0 ls0 ws0">银行家算法</div><div class="t m0 x7 h8 y3d ff3 fs3 fc1 sc0 ls0 ws0">死锁的检测和解除</div><div class="t m0 x8 h8 y3e ff3 fs3 fc1 sc0 ls0 ws0">死锁解除</div><div class="t m0 x6 h8 y3f ff4 fs3 fc1 sc0 ls0 ws0">2<span class="ff3">、程序</span>|<span class="ff3">进程</span>|<span class="ff3">线程比较</span></div><div class="t m0 x7 h8 y40 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">程序、进程、线程简述</span></div><div class="t m0 x8 h8 y41 ff3 fs3 fc1 sc0 ls0 ws0">程序的基本概念</div><div class="t m0 x8 h8 y42 ff3 fs3 fc1 sc0 ls0 ws0">进程的基本概念</div><div class="t m0 x7 h8 y43 ff3 fs3 fc1 sc0 ls0 ws0">线程的基本概念</div><div class="t m0 x7 h8 y44 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">程序和进程</span></div><div class="t m0 x8 h8 y45 ff3 fs3 fc1 sc0 ls0 ws0">程序和进程的比较</div><div class="t m0 x7 h8 y46 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">进程和线程</span></div><div class="t m0 x8 h8 y47 ff3 fs3 fc1 sc0 ls0 ws0">线程与进程的比较</div><div class="t m0 x6 h8 y48 ff4 fs3 fc1 sc0 ls0 ws0">3<span class="ff3">、虚拟内存管理</span></div><div class="t m0 x7 h8 y49 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">前导知识简述</span></div><div class="t m0 x8 h8 y4a ff3 fs3 fc1 sc0 ls0 ws0">链接和装入</div><div class="t m0 x8 h8 y4b ff3 fs3 fc1 sc0 ls0 ws0">连续分配管理方式</div><div class="t m0 x8 h8 y4c ff3 fs3 fc1 sc0 ls0 ws0">非连续分配方式</div><div class="t m0 x7 h8 y4d ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">页式虚拟内存</span></div><div class="t m0 x8 h8 y4e ff3 fs3 fc1 sc0 ls0 ws0">页表机制</div><div class="t m0 x8 h8 y4f ff3 fs3 fc1 sc0 ls0 ws0">缺页中断机构</div><div class="t m0 x8 h8 y50 ff3 fs3 fc1 sc0 ls0 ws0">地址变换机构</div><div class="t m0 x8 h8 y51 ff3 fs3 fc1 sc0 ls0 ws0">页面置换算法</div><div class="t m0 x7 h8 y52 ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">段式虚拟内存</span></div><div class="t m0 x7 h8 y53 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">段页式虚拟内存</span></div><div class="t m0 x6 h8 y54 ff4 fs3 fc1 sc0 ls0 ws0">4.I/O<span class="ff3">控制方式</span></div><div class="t m0 x7 h8 y55 ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">程序直接控制方式</span></div><div class="t m0 x7 h8 y56 ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">中断驱动方式</span></div><div class="t m0 x7 h8 y57 ff4 fs3 fc1 sc0 ls0 ws0">3.DMA<span class="ff3">方式</span></div><div class="t m0 x7 h8 y58 ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">通道控制方式</span></div><div class="t m0 x7 h8 y59 ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">总(举个栗子)</span></div><div class="t m0 x6 h8 y5a ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">进程调度算法</span></div><div class="t m0 x7 h8 y5b ff4 fs3 fc1 sc0 ls0 ws0">1.<span class="ff3">前导知识简述</span></div><div class="t m0 x8 h8 y5c ff3 fs3 fc1 sc0 ls0 ws0">调度的基本评价准则</div><div class="t m0 x7 h8 y5d ff4 fs3 fc1 sc0 ls0 ws0">2.<span class="ff3">先来先服务调度算法(</span>FCFS)</div><div class="t m0 x7 h8 y5e ff4 fs3 fc1 sc0 ls0 ws0">3.<span class="ff3">短进程优先调度算法(</span>SPF<span class="ff3">)</span></div><div class="t m0 x7 h8 y5f ff4 fs3 fc1 sc0 ls0 ws0">4.<span class="ff3">优先级调度算法</span></div><div class="t m0 x7 h8 y60 ff4 fs3 fc1 sc0 ls0 ws0">5.<span class="ff3">时间片轮转调度算法</span></div><div class="t m0 x7 h8 y61 ff4 fs3 fc1 sc0 ls0 ws0">6.<span class="ff3">高响应比优先调度算法</span></div></div><div class="c x9 y25 w3 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">公众号:程序员宝藏(免费首发)5/14/2020</div></div><div class="c xa y27 w4 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">2</div></div><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611792,0.000000,0.000000,1.611792,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/12608758/bg3.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x7 h8 y28 ff4 fs3 fc1 sc0 ls0 ws0">7.<span class="ff3">多级反馈队列调度算法</span></div><div class="t m0 x2 h6 y62 ff1 fs2 fc0 sc0 ls0 ws0">一、计算机网络<span class="_ _4"> </span><span class="ff2 fc1"> </span></div><div class="t m0 x2 hb y63 ff2 fs5 fc0 sc0 ls0 ws0">1<span class="ff1">、</span>T<span class="_ _2"></span>CP<span class="ff1">三次握手与四次挥手<span class="_ _5"> </span></span><span class="fc1"> </span></div><div class="t m0 x2 hc y64 ff2 fs6 fc0 sc0 ls0 ws0">1.<span class="_ _1"></span>T<span class="_ _1"></span>CP <span class="ff1">协议的特点<span class="_ _6"> </span></span><span class="fc1"> </span></div><div class="t m0 x2 hd y65 ff4 fs1 fc0 sc0 ls0 ws0">TCP<span class="ff3">是在不可靠的</span>IP<span class="ff3">层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重</span></div><div class="t m0 x2 hd y66 ff3 fs1 fc0 sc0 ls0 ws0">复问题。</div><div class="t m0 x2 hd y67 ff4 fs1 fc0 sc0 ls0 ws0">TCP <span class="ff3">是</span>T<span class="_ _1"></span>CP/IP <span class="ff3">体系中非常复杂的一个协议,主要特点如下:</span></div><div class="t m0 x2 hd y68 ff4 fs1 fc0 sc0 ls0 ws0">1) TCP <span class="ff3">是面向连接的传输层协议。</span></div><div class="t m0 x2 hd y69 ff4 fs1 fc0 sc0 ls0 ws0">2) <span class="ff3">每条</span>TCP <span class="ff3">连接只能有两个端点,每条</span>T<span class="_ _1"></span>CP <span class="ff3">连接只能是点对点的(一对一)。</span></div><div class="t m0 x2 hd y6a ff4 fs1 fc0 sc0 ls0 ws0">3) TCP <span class="ff3">提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序。</span></div><div class="t m0 x4 hd y6b ff3 fs1 fc2 sc0 ls0 ws0">这里是一个提问点:如何保证数据无差错、不丢失、不重复且有序的?有哪些机制来保证?</div><div class="t m0 x4 hd y6c ff3 fs1 fc2 sc0 ls0 ws0">答:<span class="ff4">TCP </span>使用了校验、序号、确认和重传等机制来达到这一目的。</div><div class="t m0 x2 hd y6d ff4 fs1 fc0 sc0 ls0 ws0">4) TCP <span class="ff3">提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此</span>T<span class="_ _1"></span>CP <span class="ff3">连接的两端都设</span></div><div class="t m0 x2 hd y6e ff3 fs1 fc0 sc0 ls0 ws0">有发送缓存和接收缓存,用来临时存放双向通信的数据。</div><div class="t m0 x4 hd y6f ff3 fs1 fc2 sc0 ls0 ws0">这里是一个提问点:为什么需要设置缓存,缓存的作用?<span class="ff4"> </span></div><div class="t m0 x4 hd y70 ff3 fs1 fc2 sc0 ls0 ws0">答:发送缓存用来暂时存放以下数据:<span class="ff4">1.</span>发送应用程序传送给发送方<span class="ff4">TCP </span>准备发送的数据;<span class="ff4">2.<span class="_ _7"></span>TCP </span></div><div class="t m0 x4 hd y71 ff3 fs1 fc2 sc0 ls0 ws0">已发送但尚未收到确认的数据。</div><div class="t m0 x4 hd y72 ff3 fs1 fc2 sc0 ls0 ws0">接收缓存用来暂时存放以下数据:<span class="ff4">1.</span>按序到达但尚未被接收应用程序读取的数据;<span class="ff4">2.</span>不按序到达的</div><div class="t m0 x4 hd y73 ff3 fs1 fc2 sc0 ls0 ws0">数据。</div><div class="t m0 x2 hd y74 ff4 fs1 fc0 sc0 ls0 ws0">5) TCP<span class="ff3">是面向字节流的,虽然应用程序和</span>T<span class="_ _1"></span>CP<span class="ff3">的交互是一次一个数据块(大小不等),但</span>TCP<span class="ff3">把应用程</span></div><div class="t m0 x2 hd y75 ff3 fs1 fc0 sc0 ls0 ws0">序交下来的数据仅视为一连串的无结构的字节流。</div><div class="t m0 x4 hd y76 ff3 fs1 fc2 sc0 ls0 ws0">一个字节占一个序号,每个报文段用第一个字节的序号来标识<span class="ff4">,</span>例如,一报文段的序号字段值是</div><div class="t m0 x4 hd y77 ff4 fs1 fc2 sc0 ls0 ws0">301, <span class="ff3">而携带的数据共有</span>l00B<span class="_ _1"></span>, <span class="ff3">表明本报文段的数据的最后一个字节的序号是</span>400, <span class="ff3">因此下一个报文</span></div><div class="t m0 x4 hd y78 ff3 fs1 fc2 sc0 ls0 ws0">段的数据序号应从<span class="ff4">401</span>开始,也就是期望的下一个序号(确认号)。</div><div class="t m0 x2 hc y79 ff2 fs6 fc0 sc0 ls0 ws0">2.<span class="_ _7"></span>TCP<span class="ff1">报文段格式<span class="_ _8"> </span></span><span class="fc1"> </span></div></div><div class="c x9 y25 w3 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">公众号:程序员宝藏(免费首发)5/14/2020</div></div><div class="c xa y27 w4 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">3</div></div><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611792,0.000000,0.000000,1.611792,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/12608758/bg4.jpg"><div class="c x1 y7a w2 he"><div class="t m0 x4 hd y7b ff3 fs1 fc2 sc0 ls0 ws0">部分字段解释:</div><div class="t m0 x4 hd y7c ff4 fs1 fc2 sc0 ls0 ws0">1) <span class="ff3">序号字段(就是</span>seq<span class="ff3">):序号字段的值指的是本报文段所发送的数据的第一个字节的序号。</span></div><div class="t m0 x4 hd y7d ff4 fs1 fc2 sc0 ls0 ws0">2) <span class="ff3">确认号字段(就是</span>ack<span class="ff3">):是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认</span></div><div class="t m0 x4 hd y7e ff3 fs1 fc2 sc0 ls0 ws0">号为<span class="ff4">N, </span>则表明到序号<span class="ff4">N-1</span>为止的所有数据都已正确收到。(累积确认)</div><div class="t m0 x4 hd y7f ff4 fs1 fc2 sc0 ls0 ws0">3) <span class="ff3">确认位</span>ACK<span class="ff3">:只有当</span>A<span class="_ _1"></span>CK=1<span class="ff3">时确认号字段才有效。当</span>ACK=0<span class="ff3">时,确认号无效。</span>TCP <span class="ff3">规定,在连</span></div><div class="t m0 x4 hd y80 ff3 fs1 fc2 sc0 ls0 ws0">接建立后所有传送的报文段都必须把<span class="ff4">ACK</span>置<span class="ff4">1</span>。</div><div class="t m0 x4 hd y81 ff4 fs1 fc2 sc0 ls0 ws0">4) <span class="ff3">同步位</span>SYN<span class="ff3">:同步</span>SYN=1<span class="ff3">表示这是一个连接请求或连接接收报文。当</span>SYN= 1, ACK=0 <span class="ff3">时,表明</span></div><div class="t m0 x4 hd y82 ff3 fs1 fc2 sc0 ls0 ws0">这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用<span class="ff4">SYN= 1, ACK=1</span>。即<span class="ff4">SYN=1</span></div><div class="t m0 x4 hd y83 ff3 fs1 fc2 sc0 ls0 ws0">表示这是一个连接请求或连接接收报文。</div><div class="t m0 x4 hd y84 ff4 fs1 fc2 sc0 ls0 ws0">5) <span class="ff3">终止位</span>FIN (Finish) <span class="ff3">:用来释放一个连接。</span>FIN=1<span class="ff3">表明此报文段的发送方的数据已发送完毕了并</span></div><div class="t m0 x4 hd y85 ff3 fs1 fc2 sc0 ls0 ws0">要求释放传输连接。</div><div class="t m0 x2 hc y86 ff2 fs6 fc0 sc0 ls0 ws0">3.<span class="_ _7"></span>TCP<span class="ff1">连接管理<span class="_ _9"> </span></span><span class="fc1"> </span></div><div class="t m0 x2 hd y87 ff4 fs1 fc0 sc0 ls0 ws0">TCP <span class="ff3">是面向连接的协议,因此每个</span>T<span class="_ _1"></span>CP <span class="ff3">连接都有三个阶段:连接建立、数据传送和连接释放。</span></div><div class="t m0 x2 hd y88 ff4 fs1 fc0 sc0 ls0 ws0">TCP <span class="ff3">连接的管理就是使运输连接的建立和释放都能正常进行。</span></div><div class="t m0 x2 hd y89 ff3 fs1 fc0 sc0 ls0 ws0">在<span class="ff4">TCP </span>连接建立的过程中,要解决以下三个问题:</div><div class="t m0 x2 hd y8a ff4 fs1 fc0 sc0 ls0 ws0">1) <span class="ff3">要使每一方都能够确知对方的存在。</span></div><div class="t m0 x2 hd y8b ff4 fs1 fc0 sc0 ls0 ws0">2) <span class="ff3">要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。</span></div><div class="t m0 x2 hd y8c ff4 fs1 fc0 sc0 ls0 ws0">3) <span class="ff3">能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。</span></div><div class="t m0 x2 hd y8d ff3 fs1 fc0 sc0 ls0 ws0">每条<span class="ff4">TCP </span>连接唯一地被通信两端的两个端点(即两个套接字)确定。</div><div class="t m0 xb hf y8e ff6 fs3 fc0 sc0 ls0 ws0">端口拼接到<span class="ff7">IP</span>地址即为套接字</div><div class="t m0 x2 hc y8f ff2 fs6 fc0 sc0 ls0 ws0">4.<span class="ff1">三次握手建立连接<span class="_ _a"> </span></span><span class="fc1"> </span></div></div><div class="c x9 y25 w3 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">公众号:程序员宝藏(免费首发)5/14/2020</div></div><div class="c xa y27 w4 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">4</div></div><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611792,0.000000,0.000000,1.611792,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/12608758/bg5.jpg"><div class="c x1 y7a w2 he"><div class="t m0 x2 hd y90 ff4 fs1 fc0 sc0 ls0 ws0">1) <span class="ff3">第一次握手:客户机的</span>TCP<span class="ff3">首先向服务器的</span>T<span class="_ _1"></span>CP<span class="ff3">发送一个连接请求报文段。这个特殊的报文段中不含</span></div><div class="t m0 x2 hd y91 ff3 fs1 fc0 sc0 ls0 ws0">应用层数据,其首部中的<span class="ff4">SYN</span>标志位被置为<span class="ff4">1</span>。另外,客户机会随机选择一个起始序号<span class="ff4">seq = x</span>(连接请</div><div class="t m0 x2 hd y92 ff3 fs1 fc0 sc0 ls0 ws0">求报文不携带数据,但要消耗一个序号)。</div><div class="t m0 x2 hd y93 ff4 fs1 fc0 sc0 ls0 ws0">2) <span class="ff3">第二次握手:服务器的</span>TCP <span class="ff3">收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该</span></div><div class="t m0 x2 hd y94 ff4 fs1 fc0 sc0 ls0 ws0">TCP<span class="ff3">连接分配</span>T<span class="_ _1"></span>CP<span class="ff3">缓存和变量。在确认报文段中,</span>SYN <span class="ff3">和</span>ACK <span class="ff3">位都被置为</span>1, <span class="ff3">确认号字段的值为</span>x+1,<span class="ff3">并且</span></div><div class="t m0 x2 hd y95 ff3 fs1 fc0 sc0 ls0 ws0">服务器随机产生起始序号<span class="ff4">seq= y( </span>确认报文不携带数据,但也要消耗一个序号)。确认报文段同样不包</div><div class="t m0 x2 hd y96 ff3 fs1 fc0 sc0 ls0 ws0">含应用层数据。</div><div class="t m0 x2 hd y97 ff4 fs1 fc0 sc0 ls0 ws0">3) <span class="ff3">第三次握手:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变</span></div><div class="t m0 x2 hd y98 ff3 fs1 fc0 sc0 ls0 ws0">量。这个报文段的<span class="ff4">ACK </span>标志位被置<span class="ff4">1, </span>序号字段为<span class="ff4">x+1, </span>确认号字段<span class="ff4">ack=y+1</span>。该报文段可以携带数据,若</div><div class="t m0 x2 hd y99 ff3 fs1 fc0 sc0 ls0 ws0">不携带数据则不消耗序号</div><div class="t m0 xc hd y9a ff7 fs3 fc0 sc0 ls0 ws0">http<span class="ff6">中的</span>tcp<span class="ff6">连接的第三次握手的报文段中就捎带了客户对万维网文档的请求<span class="_ _b"> </span><span class="ff3 fs1">。</span></span></div><div class="t m0 x2 hd y9b ff3 fs1 fc0 sc0 ls0 ws0">成功进行以上三步后,就建立了<span class="ff4">TCP </span>连接,接下来就可以传送应用层数据。<span class="ff4">T<span class="_ _1"></span>CP <span class="ff3">提供的是全双工通信,</span></span></div><div class="t m0 x2 hd y9c ff3 fs1 fc0 sc0 ls0 ws0">因此通信双方的应用进程在任何时候都能发送数据。</div><div class="t m0 x2 hd y9d ff3 fs1 fc0 sc0 ls0 ws0">【总结】:</div><div class="t m0 x2 h10 y9e ff4 fs1 fc0 sc0 ls0 ws0">1) SYN = 1,ACK = 0,seq = x;</div><div class="t m0 x2 h10 y9f ff4 fs1 fc0 sc0 ls0 ws0">2) SYN = 1,ACK = 1,seq = y<span class="_ _1"></span>,ack = x+1;</div><div class="t m0 x2 hd ya0 ff4 fs1 fc0 sc0 ls0 ws0">3) SYN = 0,ACK = 1,seq = x+1,ack=y+1<span class="ff3">。</span></div><div class="t m0 x4 hd ya1 ff3 fs1 fc2 sc0 ls0 ws0">【拓展问题<span class="ff4">1</span>】:什么是<span class="ff4">SYN</span>洪泛攻击?(三次握手机制有什么问题?)</div><div class="t m0 x4 hd ya2 ff3 fs1 fc2 sc0 ls0 ws0">答:由于服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时</div><div class="t m0 x4 hd ya3 ff3 fs1 fc2 sc0 ls0 ws0">分配的,攻击者发送<span class="ff4">TCP</span>的<span class="ff4">SYN</span>报文段,<span class="ff4">SYN</span>是<span class="ff4">T<span class="_ _1"></span>CP<span class="ff3">三次握手中的第一个数据包,而当服务器返回</span></span></div><div class="t m0 x4 hd ya4 ff4 fs1 fc2 sc0 ls0 ws0">ACK<span class="ff3">后,该攻击者就不对其进行再确认,那这个</span>T<span class="_ _1"></span>CP<span class="ff3">连接就处于挂起状态,也就是所谓的半连接状</span></div><div class="t m0 x4 hd ya5 ff3 fs1 fc2 sc0 ls0 ws0">态,服务器收不到再确认的话,还会重复发送<span class="ff4">ACK</span>给攻击者。这样更加会浪费服务器的资源。攻</div><div class="t m0 x4 hd ya6 ff3 fs1 fc2 sc0 ls0 ws0">击者就对服务器发送非常大量的这种<span class="ff4">TCP</span>连接,由于每一个都没法完成三次握手,所以在服务器</div><div class="t m0 x4 hd ya7 ff3 fs1 fc2 sc0 ls0 ws0">上,这些<span class="ff4">TCP</span>连接会因为挂起状态而消耗<span class="ff4">CPU</span>和内存,最后服务器可能死机,就无法为正常用户</div><div class="t m0 x4 hd ya8 ff3 fs1 fc2 sc0 ls0 ws0">提供服务了。</div><div class="t m0 x4 hd ya9 ff3 fs1 fc2 sc0 ls0 ws0">【拓展问题<span class="ff4">2</span>】:如果已经建立了连接,但是客户端突然出现故障了怎么办?</div><div class="t m0 x4 hd yaa ff4 fs1 fc2 sc0 ls0 ws0">TCP<span class="ff3">还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资</span></div><div class="t m0 x4 hd yab ff3 fs1 fc2 sc0 ls0 ws0">源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为<span class="ff4">2</span>小时,若两</div><div class="t m0 x4 hd yac ff3 fs1 fc2 sc0 ls0 ws0">小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔<span class="ff4">75</span>秒钟发送一</div><div class="t m0 x4 hd yad ff3 fs1 fc2 sc0 ls0 ws0">次。若一连发送<span class="ff4">10</span>个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。</div></div><div class="c x9 y25 w3 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">公众号:程序员宝藏(免费首发)5/14/2020</div></div><div class="c xa y27 w4 h9"><div class="t m0 x0 ha y26 ff5 fs4 fc3 sc0 ls0 ws0">5</div></div></div><div class="pi" data-data='{"ctm":[1.611792,0.000000,0.000000,1.611792,0.000000,0.000000]}'></div></div>