<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://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/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://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Design<span class="_ _0"> </span>and<span class="_ _0"> </span>Implemen<span class="_ _1"></span>tation<span class="_ _0"> </span>of<span class="_ _0"> </span>the<span class="_ _0"> </span><span class="ff2 ls1">lw<span class="_ _2"></span></span>IP</div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">TCP/IP<span class="_ _0"> </span>Stac<span class="_ _1"></span>k</div><div class="t m0 x3 h3 y3 ff3 fs1 fc0 sc0 ls0 ws0">Sw<span class="_ _3"></span>edish<span class="_ _4"> </span>Institute<span class="_ _4"> </span>of<span class="_ _4"> </span>Computer<span class="_ _4"> </span>Science</div><div class="t m0 x4 h3 y4 ff3 fs1 fc0 sc0 ls0 ws0">F<span class="_ _5"></span>ebruary<span class="_ _4"> </span>20,<span class="_ _4"> </span>2001</div><div class="t m0 x5 h4 y5 ff3 fs2 fc0 sc0 ls0 ws0">Adam<span class="_ _6"> </span>Dunk<span class="_ _3"></span>els</div><div class="t m0 x6 h3 y6 ff3 fs1 fc0 sc0 ls0 ws0">adam@sics.se</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,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://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/bg2.jpg"></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,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://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/bg3.jpg"><div class="t m0 x7 h5 y7 ff4 fs3 fc0 sc0 ls0 ws0">Abstract</div><div class="t m0 x8 h5 y8 ff2 fs3 fc0 sc0 ls2 ws0">lw<span class="_ _7"></span><span class="ff5 ls0">IP<span class="_ _8"> </span>is<span class="_ _8"> </span>an<span class="_ _8"> </span>implementation<span class="_ _8"> </span>of<span class="_ _8"> </span>the<span class="_ _8"> </span>TCP/IP<span class="_ _8"> </span>protocol<span class="_ _8"> </span>stack.<span class="_ _0"> </span>The<span class="_ _8"> </span>fo<span class="_ _9"></span>cus<span class="_ _8"> </span>of<span class="_ _8"> </span>the<span class="_ _8"> </span></span>lw<span class="_ _7"></span><span class="ff5 ls0">IP<span class="_ _8"> </span>stac<span class="_ _3"></span>k<span class="_ _8"> </span>is<span class="_ _8"> </span>to</span></div><div class="t m0 x8 h5 y9 ff5 fs3 fc0 sc0 ls0 ws0">reduce<span class="_ _6"> </span>memory<span class="_ _6"> </span>usage<span class="_ _6"> </span>and<span class="_ _6"> </span>co<span class="_ _9"></span>de<span class="_ _8"> </span>size,<span class="_ _a"> </span>making<span class="_ _6"> </span><span class="ff2 ls2">lw<span class="_ _7"></span></span>IP<span class="_ _6"> </span>suitable<span class="_ _6"> </span>for<span class="_ _6"> </span>use<span class="_ _6"> </span>in<span class="_ _6"> </span>small<span class="_ _6"> </span>clients<span class="_ _8"> </span>with<span class="_ _6"> </span>very</div><div class="t m0 x8 h5 ya ff5 fs3 fc0 sc0 ls0 ws0">limited<span class="_ _b"> </span>resources<span class="_ _b"> </span>suc<span class="_ _3"></span>h<span class="_ _b"> </span>as<span class="_ _b"> </span>em<span class="_ _3"></span>b<span class="_ _9"></span>edded<span class="_ _b"> </span>systems.<span class="_ _8"> </span>In<span class="_ _2"> </span>order<span class="_ _b"> </span>to<span class="_ _b"> </span>reduce<span class="_ _b"> </span>pro<span class="_ _9"></span>cessing<span class="_ _b"> </span>and<span class="_ _b"> </span>memory<span class="_ _b"> </span>demands,</div><div class="t m0 x8 h5 yb ff2 fs3 fc0 sc0 ls2 ws0">lw<span class="_ _7"></span><span class="ff5 ls0">IP<span class="_ _c"> </span>uses<span class="_ _c"> </span>a<span class="_ _c"> </span>tailor<span class="_ _c"> </span>made<span class="_ _c"> </span>API<span class="_ _c"> </span>that<span class="_ _c"> </span>do<span class="_ _9"></span>es<span class="_ _c"> </span>not<span class="_ _c"> </span>require<span class="_ _c"> </span>an<span class="_ _3"></span>y<span class="_ _c"> </span>data<span class="_ _c"> </span>copying.</span></div><div class="t m0 x9 h5 yc ff5 fs3 fc0 sc0 ls0 ws0">This<span class="_ _b"> </span>rep<span class="_ _9"></span>ort<span class="_ _b"> </span>describ<span class="_ _9"></span>es<span class="_ _b"> </span>the<span class="_ _c"> </span>design<span class="_ _b"> </span>and<span class="_ _b"> </span>implementation<span class="_ _b"> </span>of<span class="_ _4"> </span><span class="ff2 ls2">lw<span class="_ _7"></span></span>IP.<span class="_ _b"> </span>The<span class="_ _b"> </span>algorithms<span class="_ _b"> </span>and<span class="_ _c"> </span>data<span class="_ _b"> </span>struc-</div><div class="t m0 x8 h5 yd ff5 fs3 fc0 sc0 ls0 ws0">tures<span class="_ _c"> </span>used<span class="_ _c"> </span>both<span class="_ _c"> </span>in<span class="_ _c"> </span>the<span class="_ _c"> </span>proto<span class="_ _9"></span>col<span class="_ _b"> </span>implementations<span class="_ _c"> </span>and<span class="_ _c"> </span>in<span class="_ _b"> </span>the<span class="_ _c"> </span>sub<span class="_ _c"> </span>systems<span class="_ _c"> </span>such<span class="_ _b"> </span>as<span class="_ _c"> </span>the<span class="_ _c"> </span>memory<span class="_ _c"> </span>and</div><div class="t m0 x8 h5 ye ff5 fs3 fc0 sc0 ls0 ws0">buffer<span class="_ _c"> </span>management<span class="_ _c"> </span>systems<span class="_ _4"> </span>are<span class="_ _c"> </span>describ<span class="_ _9"></span>ed.<span class="_ _a"> </span>Also<span class="_ _c"> </span>included<span class="_ _4"> </span>in<span class="_ _c"> </span>this<span class="_ _d"> </span>rep<span class="_ _9"></span>ort<span class="_ _c"> </span>is<span class="_ _d"> </span>a<span class="_ _d"> </span>reference<span class="_ _d"> </span>man<span class="_ _3"></span>ual<span class="_ _d"> </span>for</div><div class="t m0 x8 h5 yf ff5 fs3 fc0 sc0 ls0 ws0">the<span class="_ _c"> </span><span class="ff2 ls2">lw<span class="_ _7"></span></span>IP<span class="_ _c"> </span>API<span class="_ _c"> </span>and<span class="_ _c"> </span>some<span class="_ _c"> </span>co<span class="_ _9"></span>de<span class="_ _c"> </span>examples<span class="_ _c"> </span>of<span class="_ _c"> </span>using<span class="_ _c"> </span><span class="ff2 ls2">lw<span class="_ _7"></span></span>IP.</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,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://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/bg4.jpg"><div class="t m0 x8 h6 y10 ff6 fs2 fc0 sc0 ls0 ws0">Con<span class="_ _1"></span>ten<span class="_ _3"></span>ts</div><div class="t m0 x8 h5 y11 ff4 fs3 fc1 sc0 ls0 ws0">1<span class="_ _e"> </span>In<span class="_ _3"></span>tro<span class="_ _9"></span>duction<span class="_ _f"> </span><span class="fc0">1</span></div><div class="t m0 x8 h5 y12 ff4 fs3 fc1 sc0 ls0 ws0">2<span class="_ _e"> </span>Proto<span class="_ _9"></span>col<span class="_ _d"> </span>lay<span class="_ _1"></span>ering<span class="_ _10"> </span><span class="fc0">1</span></div><div class="t m0 x8 h5 y13 ff4 fs3 fc1 sc0 ls0 ws0">3<span class="_ _e"> </span>Ov<span class="_ _3"></span>erview<span class="_ _11"> </span><span class="fc0">2</span></div><div class="t m0 x8 h5 y14 ff4 fs3 fc1 sc0 ls0 ws0">4<span class="_ _e"> </span>Pro<span class="_ _9"></span>cess<span class="_ _d"> </span>mo<span class="_ _9"></span>del<span class="_ _12"> </span><span class="fc0">2</span></div><div class="t m0 x8 h5 y15 ff4 fs3 fc1 sc0 ls0 ws0">5<span class="_ _e"> </span>The<span class="_ _d"> </span>op<span class="_ _9"></span>erating<span class="_ _4"> </span>system<span class="_ _4"> </span>em<span class="_ _3"></span>ulation<span class="_ _4"> </span>la<span class="_ _3"></span>y<span class="_ _3"></span>er<span class="_ _13"> </span><span class="fc0">3</span></div><div class="t m0 x8 h5 y16 ff4 fs3 fc1 sc0 ls0 ws0">6<span class="_ _e"> </span>Buffer<span class="_ _d"> </span>and<span class="_ _4"> </span>memory<span class="_ _4"> </span>management<span class="_ _14"> </span><span class="fc0">3</span></div><div class="t m0 x9 h5 y17 ff5 fs3 fc1 sc0 ls0 ws0">6.1<span class="_ _15"> </span>P<span class="_ _3"></span>ack<span class="_ _1"></span>et<span class="_ _c"> </span>buffers<span class="_ _c"> </span>—<span class="_ _c"> </span>pbufs<span class="_ _b"> </span><span class="fc0 ls3">..................................<span class="_ _16"> </span>3</span></div><div class="t m0 x9 h5 y18 ff5 fs3 fc1 sc0 ls0 ws0">6.2<span class="_ _15"> </span>Memory<span class="_ _c"> </span>managemen<span class="_ _3"></span>t<span class="_ _17"> </span><span class="fc0 ls3">..................................<span class="_ _16"> </span>5</span></div><div class="t m0 x8 h5 y19 ff4 fs3 fc1 sc0 ls0 ws0">7<span class="_ _e"> </span>Net<span class="_ _3"></span>w<span class="_ _3"></span>ork<span class="_ _d"> </span>interfaces<span class="_ _18"> </span><span class="fc0">5</span></div><div class="t m0 x8 h5 y1a ff4 fs3 fc1 sc0 ls0 ws0">8<span class="_ _e"> </span>IP<span class="_ _d"> </span>pro<span class="_ _9"></span>cessing<span class="_ _19"> </span><span class="fc0">7</span></div><div class="t m0 x9 h5 y1b ff5 fs3 fc1 sc0 ls0 ws0">8.1<span class="_ _15"> </span>Receiving<span class="_ _c"> </span>pac<span class="_ _3"></span>kets<span class="_ _c"> </span><span class="fc0 ls3">.....................................<span class="_ _1a"> </span>7</span></div><div class="t m0 x9 h5 y1c ff5 fs3 fc1 sc0 ls0 ws0">8.2<span class="_ _15"> </span>Sending<span class="_ _c"> </span>pac<span class="_ _3"></span>kets<span class="_ _c"> </span><span class="fc0 ls3">......................................<span class="_ _1a"> </span>7</span></div><div class="t m0 x9 h5 y1d ff5 fs3 fc1 sc0 ls0 ws0">8.3<span class="_ _15"> </span>F<span class="_ _5"></span>orwarding<span class="_ _c"> </span>pac<span class="_ _1"></span>kets<span class="_ _8"> </span><span class="fc0 ls3">....................................<span class="_ _16"> </span>8</span></div><div class="t m0 x9 h5 y1e ff5 fs3 fc1 sc0 ls0 ws0">8.4<span class="_ _15"> </span>ICMP<span class="_ _c"> </span>pro<span class="_ _9"></span>cessing<span class="_ _1b"> </span><span class="fc0 ls3">.....................................<span class="_ _16"> </span>8</span></div><div class="t m0 x8 h5 y1f ff4 fs3 fc1 sc0 ls0 ws0">9<span class="_ _e"> </span>UDP<span class="_ _d"> </span>pro<span class="_ _9"></span>cessing<span class="_ _1c"> </span><span class="fc0">8</span></div><div class="t m0 x8 h5 y20 ff4 fs3 fc1 sc0 ls0 ws0">10<span class="_ _c"> </span>TCP<span class="_ _4"> </span>pro<span class="_ _9"></span>cessing<span class="_ _1d"> </span><span class="fc0">9</span></div><div class="t m0 x9 h5 y21 ff5 fs3 fc1 sc0 ls0 ws0">10.1<span class="_ _a"> </span>Ov<span class="_ _3"></span>erview<span class="_ _e"> </span><span class="fc0 ls3">.........................................<span class="_ _16"> </span>9</span></div><div class="t m0 x9 h5 y22 ff5 fs3 fc1 sc0 ls0 ws0">10.2<span class="_ _a"> </span>Data<span class="_ _c"> </span>structures<span class="_ _a"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>1<span class="_ _1e"></span>0</span></div><div class="t m0 x9 h5 y23 ff5 fs3 fc1 sc0 ls0 ws0">10.3<span class="_ _a"> </span>Sequence<span class="_ _c"> </span>n<span class="_ _3"></span>umber<span class="_ _c"> </span>calculations<span class="_ _a"> </span><span class="fc0 ls3">..............................<span class="_ _0"> </span>1<span class="_ _1e"></span>2</span></div><div class="t m0 x9 h5 y24 ff5 fs3 fc1 sc0 ls0 ws0">10.4<span class="_ _a"> </span>Queuing<span class="_ _c"> </span>and<span class="_ _c"> </span>transmitting<span class="_ _c"> </span>data<span class="_ _1f"> </span><span class="fc0 ls3">.............................<span class="_ _0"> </span>1<span class="_ _1e"></span>2</span></div><div class="t m0 xa h5 y25 ff5 fs3 fc1 sc0 ls0 ws0">10.4.1<span class="_ _1f"> </span>Silly<span class="_ _c"> </span>windo<span class="_ _1"></span>w<span class="_ _d"> </span>a<span class="_ _3"></span>voidance<span class="_ _17"> </span><span class="fc0 ls3">.............................<span class="_ _0"> </span>1<span class="_ _1e"></span>3</span></div><div class="t m0 x9 h5 y26 ff5 fs3 fc1 sc0 ls0 ws0">10.5<span class="_ _a"> </span>Receiving<span class="_ _c"> </span>segments<span class="_ _4"> </span><span class="fc0 ls3">....................................<span class="_ _0"> </span>1<span class="_ _20"></span>3</span></div><div class="t m0 xa h5 y27 ff5 fs3 fc1 sc0 ls0 ws0">10.5.1<span class="_ _1f"> </span>Dem<span class="_ _1"></span>ultiplexing<span class="_ _1b"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>1<span class="_ _20"></span>3</span></div><div class="t m0 xa h5 y28 ff5 fs3 fc1 sc0 ls0 ws0">10.5.2<span class="_ _1f"> </span>Receiving<span class="_ _c"> </span>data<span class="_ _0"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>1<span class="_ _1e"></span>4</span></div><div class="t m0 x9 h5 y29 ff5 fs3 fc1 sc0 ls0 ws0">10.6<span class="_ _a"> </span>Accepting<span class="_ _c"> </span>new<span class="_ _c"> </span>connections<span class="_ _17"> </span><span class="fc0 ls3">...............................<span class="_ _0"> </span>1<span class="_ _1e"></span>4</span></div><div class="t m0 x9 h5 y2a ff5 fs3 fc1 sc0 ls0 ws0">10.7<span class="_ _a"> </span>F<span class="_ _5"></span>ast<span class="_ _c"> </span>retransmit<span class="_ _1b"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>1<span class="_ _1e"></span>4</span></div><div class="t m0 x9 h5 y2b ff5 fs3 fc1 sc0 ls0 ws0">10.8<span class="_ _a"> </span>Timers<span class="_ _d"> </span><span class="fc0 ls3">...........................................<span class="_ _21"> </span>1<span class="_ _1e"></span>4</span></div><div class="t m0 x9 h5 y2c ff5 fs3 fc1 sc0 ls0 ws0">10.9<span class="_ _a"> </span>Round-trip<span class="_ _c"> </span>time<span class="_ _c"> </span>estimation<span class="_ _0"> </span><span class="fc0 ls3">...............................<span class="_ _0"> </span>1<span class="_ _20"></span>5</span></div><div class="t m0 x9 h5 y2d ff5 fs3 fc1 sc0 ls0 ws0">10.10Congestion<span class="_ _d"> </span>con<span class="_ _3"></span>trol<span class="_ _22"> </span><span class="fc0 ls3">....................................<span class="_ _0"> </span>1<span class="_ _1e"></span>5</span></div><div class="t m0 x8 h5 y2e ff4 fs3 fc1 sc0 ls0 ws0">11<span class="_ _c"> </span>Interfacing<span class="_ _d"> </span>the<span class="_ _4"> </span>stac<span class="_ _3"></span>k<span class="_ _23"> </span><span class="fc0">15</span></div><div class="t m0 x8 h5 y2f ff4 fs3 fc1 sc0 ls0 ws0">12<span class="_ _c"> </span>Application<span class="_ _4"> </span>Program<span class="_ _4"> </span>In<span class="_ _3"></span>terface<span class="_ _24"> </span><span class="fc0">16</span></div><div class="t m0 x9 h5 y30 ff5 fs3 fc1 sc0 ls0 ws0">12.1<span class="_ _a"> </span>Basic<span class="_ _c"> </span>concepts<span class="_ _25"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>1<span class="_ _1e"></span>6</span></div><div class="t m0 x9 h5 y31 ff5 fs3 fc1 sc0 ls0 ws0">12.2<span class="_ _a"> </span>Implemen<span class="_ _3"></span>tation<span class="_ _c"> </span>of<span class="_ _c"> </span>the<span class="_ _c"> </span>API<span class="_ _e"> </span><span class="fc0 ls3">...............................<span class="_ _0"> </span>1<span class="_ _1e"></span>7</span></div><div class="t m0 x8 h5 y32 ff4 fs3 fc1 sc0 ls0 ws0">13<span class="_ _c"> </span>Statistical<span class="_ _4"> </span>co<span class="_ _9"></span>de<span class="_ _4"> </span>analysis<span class="_ _26"> </span><span class="fc0">17</span></div><div class="t m0 x9 h5 y33 ff5 fs3 fc1 sc0 ls0 ws0">13.1<span class="_ _a"> </span>Lines<span class="_ _c"> </span>of<span class="_ _c"> </span>co<span class="_ _9"></span>de<span class="_ _21"> </span><span class="fc0 ls3">.......................................<span class="_ _21"> </span>1<span class="_ _1e"></span>8</span></div><div class="t m0 x9 h5 y34 ff5 fs3 fc1 sc0 ls0 ws0">13.2<span class="_ _a"> </span>Ob<span class="_ _9"></span>ject<span class="_ _c"> </span>co<span class="_ _9"></span>de<span class="_ _c"> </span>size<span class="_ _25"> </span><span class="fc0 ls3">.....................................<span class="_ _0"> </span>1<span class="_ _1e"></span>9</span></div><div class="t m0 x8 h5 y35 ff4 fs3 fc1 sc0 ls0 ws0">14<span class="_ _c"> </span>Performance<span class="_ _d"> </span>analysis<span class="_ _27"> </span><span class="fc0">20</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,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://static.pudn.com/prod/directory_preview_static/627578fe16f2c0769cf018e5/bg5.jpg"><div class="t m0 x8 h5 y10 ff4 fs3 fc1 sc0 ls0 ws0">15<span class="_ _c"> </span>API<span class="_ _4"> </span>reference<span class="_ _28"> </span><span class="fc0">21</span></div><div class="t m0 x9 h5 y36 ff5 fs3 fc1 sc0 ls0 ws0">15.1<span class="_ _a"> </span>Data<span class="_ _c"> </span>t<span class="_ _3"></span>yp<span class="_ _9"></span>es<span class="_ _17"> </span><span class="fc0 ls3">........................................<span class="_ _0"> </span>2<span class="_ _1e"></span>1</span></div><div class="t m0 xa h5 y37 ff5 fs3 fc1 sc0 ls0 ws0">15.1.1<span class="_ _1f"> </span>Netbufs<span class="_ _0"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>2<span class="_ _1e"></span>1</span></div><div class="t m0 x9 h5 y38 ff5 fs3 fc1 sc0 ls0 ws0">15.2<span class="_ _a"> </span>Buffer<span class="_ _c"> </span>functions<span class="_ _c"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>2<span class="_ _20"></span>1</span></div><div class="t m0 xa h5 y39 ff5 fs3 fc1 sc0 ls0 ws0">15.2.1<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y3a ff5 fs3 fc1 sc0 ls0 ws0">new()<span class="_ _21"> </span><span class="fc0 ls3">...................................<span class="_ _21"> </span>2<span class="_ _1e"></span>1</span></div><div class="t m0 xa h5 y3b ff5 fs3 fc1 sc0 ls0 ws0">15.2.2<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y3c ff5 fs3 fc1 sc0 ls0 ws0">delete()<span class="_ _0"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>1</span></div><div class="t m0 xa h5 y3d ff5 fs3 fc1 sc0 ls0 ws0">15.2.3<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y3e ff5 fs3 fc1 sc0 ls0 ws0">allo<span class="_ _9"></span>c()<span class="_ _6"> </span><span class="fc0 ls3">...................................<span class="_ _21"> </span>2<span class="_ _1e"></span>2</span></div><div class="t m0 xa h5 y3f ff5 fs3 fc1 sc0 ls0 ws0">15.2.4<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y40 ff5 fs3 fc1 sc0 ls0 ws0">free()<span class="_ _e"> </span><span class="fc0 ls3">...................................<span class="_ _21"> </span>2<span class="_ _1e"></span>2</span></div><div class="t m0 xa h5 y41 ff5 fs3 fc1 sc0 ls0 ws0">15.2.5<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y42 ff5 fs3 fc1 sc0 ls0 ws0">ref()<span class="_ _1b"> </span><span class="fc0 ls3">....................................<span class="_ _0"> </span>2<span class="_ _1e"></span>2</span></div><div class="t m0 xa h5 y43 ff5 fs3 fc1 sc0 ls0 ws0">15.2.6<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y44 ff5 fs3 fc1 sc0 ls0 ws0">len()<span class="_ _6"> </span><span class="fc0 ls3">....................................<span class="_ _0"> </span>2<span class="_ _1e"></span>3</span></div><div class="t m0 xa h5 y45 ff5 fs3 fc1 sc0 ls0 ws0">15.2.7<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y46 ff5 fs3 fc1 sc0 ls0 ws0">data()<span class="_ _1b"> </span><span class="fc0 ls3">...................................<span class="_ _0"> </span>2<span class="_ _1e"></span>3</span></div><div class="t m0 xa h5 y47 ff5 fs3 fc1 sc0 ls0 ws0">15.2.8<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y48 ff5 fs3 fc1 sc0 ls0 ws0">next()<span class="_ _1b"> </span><span class="fc0 ls3">...................................<span class="_ _0"> </span>2<span class="_ _20"></span>3</span></div><div class="t m0 xa h5 y49 ff5 fs3 fc1 sc0 ls0 ws0">15.2.9<span class="_ _1f"> </span>netbuf</div><div class="t m0 xb h5 y4a ff5 fs3 fc1 sc0 ls0 ws0">first()<span class="_ _21"> </span><span class="fc0 ls3">...................................<span class="_ _0"> </span>2<span class="_ _20"></span>4</span></div><div class="t m0 xa h5 y4b ff5 fs3 fc1 sc0 ls0 ws0">15.2.10<span class="_ _29"> </span>netbuf</div><div class="t m0 xb h5 y4c ff5 fs3 fc1 sc0 ls0 ws0">cop<span class="_ _3"></span>y()<span class="_ _a"> </span><span class="fc0 ls3">...................................<span class="_ _0"> </span>2<span class="_ _20"></span>4</span></div><div class="t m0 xa h5 y4d ff5 fs3 fc1 sc0 ls0 ws0">15.2.11<span class="_ _29"> </span>netbuf</div><div class="t m0 xb h5 y4e ff5 fs3 fc1 sc0 ls0 ws0">c<span class="_ _3"></span>hain()<span class="_ _17"> </span><span class="fc0 ls3">..................................<span class="_ _21"> </span>2<span class="_ _1e"></span>4</span></div><div class="t m0 xa h5 y4f ff5 fs3 fc1 sc0 ls0 ws0">15.2.12<span class="_ _29"> </span>netbuf</div><div class="t m0 xb h5 y50 ff5 fs3 fc1 sc0 ls0 ws0">fromaddr()<span class="_ _2a"> </span><span class="fc0 ls3">................................<span class="_ _0"> </span>2<span class="_ _1e"></span>4</span></div><div class="t m0 xa h5 y51 ff5 fs3 fc1 sc0 ls0 ws0">15.2.13<span class="_ _29"> </span>netbuf</div><div class="t m0 xb h5 y52 ff5 fs3 fc1 sc0 ls0 ws0">fromp<span class="_ _9"></span>ort()<span class="_ _25"> </span><span class="fc0 ls3">................................<span class="_ _0"> </span>2<span class="_ _1e"></span>5</span></div><div class="t m0 x8 h5 y53 ff4 fs3 fc1 sc0 ls0 ws0">16<span class="_ _c"> </span>Netw<span class="_ _1"></span>ork<span class="_ _4"> </span>connection<span class="_ _4"> </span>functions<span class="_ _2b"> </span><span class="fc0">25</span></div><div class="t m0 xa h5 y54 ff5 fs3 fc1 sc0 ls0 ws0">16.0.14<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y55 ff5 fs3 fc1 sc0 ls0 ws0">new()<span class="_ _e"> </span><span class="fc0 ls3">..................................<span class="_ _21"> </span>2<span class="_ _1e"></span>5</span></div><div class="t m0 xa h5 y56 ff5 fs3 fc1 sc0 ls0 ws0">16.0.15<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y57 ff5 fs3 fc1 sc0 ls0 ws0">delete()<span class="_ _2c"> </span><span class="fc0 ls3">.................................<span class="_ _0"> </span>2<span class="_ _1e"></span>5</span></div><div class="t m0 xa h5 y58 ff5 fs3 fc1 sc0 ls0 ws0">16.0.16<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y59 ff5 fs3 fc1 sc0 ls0 ws0">t<span class="_ _3"></span>yp<span class="_ _9"></span>e()<span class="_ _0"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>5</span></div><div class="t m0 xa h5 y5a ff5 fs3 fc1 sc0 ls0 ws0">16.0.17<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y5b ff5 fs3 fc1 sc0 ls0 ws0">p<span class="_ _9"></span>eer()<span class="_ _21"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _20"></span>5</span></div><div class="t m0 xa h5 y5c ff5 fs3 fc1 sc0 ls0 ws0">16.0.18<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y5d ff5 fs3 fc1 sc0 ls0 ws0">addr()<span class="_ _1f"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>6</span></div><div class="t m0 xa h5 y5e ff5 fs3 fc1 sc0 ls0 ws0">16.0.19<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y5f ff5 fs3 fc1 sc0 ls0 ws0">bind()<span class="_ _2d"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>6</span></div><div class="t m0 xa h5 y60 ff5 fs3 fc1 sc0 ls0 ws0">16.0.20<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y61 ff5 fs3 fc1 sc0 ls0 ws0">connect()<span class="_ _2c"> </span><span class="fc0 ls3">................................<span class="_ _0"> </span>2<span class="_ _1e"></span>6</span></div><div class="t m0 xa h5 y62 ff5 fs3 fc1 sc0 ls0 ws0">16.0.21<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y63 ff5 fs3 fc1 sc0 ls0 ws0">listen()<span class="_ _c"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>6</span></div><div class="t m0 xa h5 y64 ff5 fs3 fc1 sc0 ls0 ws0">16.0.22<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y65 ff5 fs3 fc1 sc0 ls0 ws0">accept()<span class="_ _1f"> </span><span class="fc0 ls3">.................................<span class="_ _0"> </span>2<span class="_ _20"></span>6</span></div><div class="t m0 xa h5 y66 ff5 fs3 fc1 sc0 ls0 ws0">16.0.23<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y67 ff5 fs3 fc1 sc0 ls0 ws0">recv()<span class="_ _2e"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>7</span></div><div class="t m0 xa h5 y68 ff5 fs3 fc1 sc0 ls0 ws0">16.0.24<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y69 ff5 fs3 fc1 sc0 ls0 ws0">write()<span class="_ _8"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>8</span></div><div class="t m0 xa h5 y6a ff5 fs3 fc1 sc0 ls0 ws0">16.0.25<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y6b ff5 fs3 fc1 sc0 ls0 ws0">send()<span class="_ _2d"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>2<span class="_ _1e"></span>9</span></div><div class="t m0 xa h5 y6c ff5 fs3 fc1 sc0 ls0 ws0">16.0.26<span class="_ _29"> </span>netconn</div><div class="t m0 xc h5 y6d ff5 fs3 fc1 sc0 ls0 ws0">close()<span class="_ _1b"> </span><span class="fc0 ls3">..................................<span class="_ _0"> </span>3<span class="_ _1e"></span>0</span></div><div class="t m0 x8 h5 y6e ff4 fs3 fc1 sc0 ls0 ws0">17<span class="_ _c"> </span>BSD<span class="_ _4"> </span>so<span class="_ _9"></span>c<span class="_ _3"></span>k<span class="_ _3"></span>et<span class="_ _4"> </span>library<span class="_ _2f"> </span><span class="fc0">30</span></div><div class="t m0 x9 h5 y6f ff5 fs3 fc1 sc0 ls0 ws0">17.1<span class="_ _a"> </span>The<span class="_ _c"> </span>represen<span class="_ _3"></span>tation<span class="_ _c"> </span>of<span class="_ _c"> </span>a<span class="_ _c"> </span>so<span class="_ _9"></span>c<span class="_ _3"></span>ket<span class="_ _b"> </span><span class="fc0 ls3">..............................<span class="_ _0"> </span>3<span class="_ _1e"></span>0</span></div><div class="t m0 x9 h5 y70 ff5 fs3 fc1 sc0 ls0 ws0">17.2<span class="_ _a"> </span>Allo<span class="_ _9"></span>cating<span class="_ _c"> </span>a<span class="_ _c"> </span>sock<span class="_ _3"></span>et<span class="_ _30"> </span><span class="fc0 ls3">....................................<span class="_ _0"> </span>3<span class="_ _1e"></span>0</span></div><div class="t m0 xa h5 y71 ff5 fs3 fc1 sc0 ls0 ws0">17.2.1<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">socket()<span class="_ _c"> </span></span>call<span class="_ _2d"> </span><span class="fc0 ls3">................................<span class="_ _21"> </span>3<span class="_ _1e"></span>0</span></div><div class="t m0 x9 h5 y72 ff5 fs3 fc1 sc0 ls0 ws0">17.3<span class="_ _a"> </span>Connection<span class="_ _c"> </span>setup<span class="_ _a"> </span><span class="fc0 ls3">.....................................<span class="_ _2d"> </span>3<span class="_ _20"></span>1</span></div><div class="t m0 xa h5 y73 ff5 fs3 fc1 sc0 ls0 ws0">17.3.1<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">bind()<span class="_ _c"> </span></span>call<span class="_ _15"> </span><span class="fc0 ls3">.................................<span class="_ _0"> </span>3<span class="_ _1e"></span>1</span></div><div class="t m0 xa h5 y74 ff5 fs3 fc1 sc0 ls0 ws0">17.3.2<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">connect()<span class="_ _c"> </span></span>call<span class="_ _17"> </span><span class="fc0 ls3">...............................<span class="_ _21"> </span>3<span class="_ _1e"></span>1</span></div><div class="t m0 xa h5 y75 ff5 fs3 fc1 sc0 ls0 ws0">17.3.3<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">listen()<span class="_ _c"> </span></span>call<span class="_ _2d"> </span><span class="fc0 ls3">................................<span class="_ _21"> </span>3<span class="_ _1e"></span>2</span></div><div class="t m0 xa h5 y76 ff5 fs3 fc1 sc0 ls0 ws0">17.3.4<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">accept()<span class="_ _c"> </span></span>call<span class="_ _2d"> </span><span class="fc0 ls3">................................<span class="_ _21"> </span>3<span class="_ _1e"></span>2</span></div><div class="t m0 x9 h5 y77 ff5 fs3 fc1 sc0 ls0 ws0">17.4<span class="_ _a"> </span>Sending<span class="_ _c"> </span>and<span class="_ _c"> </span>receiving<span class="_ _c"> </span>data<span class="_ _e"> </span><span class="fc0 ls3">...............................<span class="_ _0"> </span>3<span class="_ _1e"></span>3</span></div><div class="t m0 xa h5 y78 ff5 fs3 fc1 sc0 ls0 ws0">17.4.1<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">send()<span class="_ _c"> </span></span>call<span class="_ _15"> </span><span class="fc0 ls3">.................................<span class="_ _0"> </span>3<span class="_ _1e"></span>3</span></div><div class="t m0 xa h5 y79 ff5 fs3 fc1 sc0 ls0 ws0">17.4.2<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">sendto()<span class="_ _c"> </span></span>and<span class="_ _c"> </span><span class="ff7">sendmsg()<span class="_ _c"> </span></span>calls<span class="_ _c"> </span><span class="fc0 ls3">.......................<span class="_ _0"> </span>3<span class="_ _20"></span>4</span></div><div class="t m0 xa h5 y7a ff5 fs3 fc1 sc0 ls0 ws0">17.4.3<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">write()<span class="_ _c"> </span></span>call<span class="_ _6"> </span><span class="fc0 ls3">.................................<span class="_ _21"> </span>3<span class="_ _1e"></span>4</span></div><div class="t m0 xa h5 y7b ff5 fs3 fc1 sc0 ls0 ws0">17.4.4<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">recv()<span class="_ _c"> </span></span>and<span class="_ _c"> </span><span class="ff7">read()<span class="_ _c"> </span></span>calls<span class="_ _1f"> </span><span class="fc0 ls3">..........................<span class="_ _2d"> </span>3<span class="_ _20"></span>5</span></div><div class="t m0 xa h5 y7c ff5 fs3 fc1 sc0 ls0 ws0">17.4.5<span class="_ _1f"> </span>The<span class="_ _b"> </span><span class="ff7">recvfrom()<span class="_ _d"> </span></span>and<span class="_ _c"> </span><span class="ff7">recvmsg()<span class="_ _c"> </span></span>calls<span class="_ _2a"> </span><span class="fc0 ls3">.....................<span class="_ _0"> </span>3<span class="_ _1e"></span>6</span></div><div class="t m0 x8 h5 y7d ff4 fs3 fc1 sc0 ls0 ws0">18<span class="_ _c"> </span>Co<span class="_ _9"></span>de<span class="_ _4"> </span>examples<span class="_ _31"> </span><span class="fc0">36</span></div><div class="t m0 x9 h5 y7e ff5 fs3 fc1 sc0 ls0 ws0">18.1<span class="_ _a"> </span>Using<span class="_ _c"> </span>the<span class="_ _c"> </span>API<span class="_ _15"> </span><span class="fc0 ls3">......................................<span class="_ _0"> </span>3<span class="_ _1e"></span>6</span></div><div class="t m0 x9 h5 y7f ff5 fs3 fc1 sc0 ls0 ws0">18.2<span class="_ _a"> </span>Directly<span class="_ _c"> </span>in<span class="_ _3"></span>terfacing<span class="_ _c"> </span>the<span class="_ _c"> </span>stack<span class="_ _21"> </span><span class="fc0 ls3">..............................<span class="_ _0"> </span>3<span class="_ _1e"></span>9</span></div><div class="t m0 x8 h5 y80 ff4 fs3 fc1 sc0 ls0 ws0">Bibliograph<span class="_ _3"></span>y<span class="_ _32"> </span><span class="fc0">41</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>