亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - china linux forum.htm

?? 包括較少的一些linux下的網(wǎng)絡(luò)代碼閱讀筆記
?? HTM
?? 第 1 頁 / 共 2 頁
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0111)http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=147050&page=120&view=collapsed&sb=5&o=all -->
<HTML><HEAD><TITLE>2.4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY>
<CENTER><FONT color=red>著名軟件中國鏡像:</FONT> <A 
href="http://apache.linuxforum.net/"><FONT color=red>Apache|</FONT></A> <A 
href="http://php.linuxforum.net/"><FONT color=red>Php|</FONT></A> <A 
href="http://debian.linuxforum.net/"><FONT color=red>Debian|</FONT></A> <A 
href="http://mysql.linuxforum.net/"><FONT color=red>Mysql|</FONT></A> <A 
href="http://proftpd.linuxforum.net/"><FONT color=red>Proftp|</FONT></A> <A 
href="http://qmail.linuxforum.net/top.html"><FONT color=red>Qmail|</FONT></A> <A 
href="http://samba.linuxforum.net/samba.html"><FONT color=red>Samba|</FONT></A> 
<A href="http://www1.cn.squid-cache.org/"><FONT color=red>Squid|</FONT></A> <A 
href="http://xfree86.linuxforum.net/"><FONT color=red>Xfree86|</FONT></A> <A 
href="http://cpan.linuxforum.net/"><FONT color=red>CPAN|</FONT></A> <A 
href="http://ldp.linuxforum.net/"><FONT color=red>LDP|</FONT></A> <A 
href="http://gnu.linuxforum.net/"><FONT 
color=red>GNU|</FONT></A></CENTER><BR><LINK 
href="2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum.files/stylesheet2.css" rel=stylesheet 
type=text/css><SPAN class=onbody>
<TABLE align=center border=0 cellPadding=3 cellSpacing=0 class=p9 width="95%">
  <TBODY>
  <TR align=right bgColor=#0099cc vAlign=center>
    <TD align=left width="20%"><A 
      href="http://www.linuxforum.net/index.php"><FONT 
      color=#ffffff>中國Linux論壇首頁</FONT></A></TD>
    <TD width="80%"><A 
      href="http://www.linuxforum.net/forum/ubbthreads.php"><FONT 
      color=#ffffff>技術(shù)論壇|</FONT></A><FON color="#FFFFFF" t> <A 
      href="http://www.linuxforum.net/docnew/index.php"><FONT 
      color=#ffffff>文章薈萃</FONT></A><FONT color=#ffffff>| <A 
      href="http://www.linuxforum.net/books/index.php"><FONT 
      color=#ffffff>藏經(jīng)閣</FONT></A>| <A href="http://mail.linuxforum.net/"><FONT 
      color=#ffffff>會(huì)員信箱</FONT></A>| <A href="http://sf.linuxforum.net/"><FONT 
      color=#ffffff>項(xiàng)目計(jì)劃</FONT></A>| <A 
      href="http://www.linuxforum.net/poll2/index.php"><FONT 
      color=#ffffff>在線調(diào)查</FONT></A>| <A href="ftp://ftp.linuxforum.net/"><FONT 
      color=#ffffff>軟件倉庫</FONT></A>| <A 
      href="http://www.linuxforum.net/about.php"><FONT 
      color=#ffffff>關(guān)于本站</FONT></A>| </FONT></TD></TR></TBODY></TABLE><BR></SPAN>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
  <TBODY>
  <TR>
    <TD class=tableborders>
      <TABLE border=0 cellPadding=3 cellSpacing=1 width="100%">
        <TBODY>
        <TR>
          <TD align=right class=menubar><A 
            href="http://www.linuxforum.net/forum/ubbthreads.php?Cat=">討論區(qū)列表</A> 
            | <A href="http://www.linuxforum.net/forum/search.php?Cat=">搜尋文章</A> 
            | <A 
            href="http://www.linuxforum.net/forum/newuser.php?Cat=">新用戶注冊</A> | 
            <A href="http://www.linuxforum.net/forum/login.php?Cat=">登入論壇</A> | 
            <A href="http://www.linuxforum.net/forum/online.php?Cat=">在線用戶</A> | 
            <A 
            href="http://www.linuxforum.net/forum/faq_chinese.php?Cat=">常見問題</A> 
          </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<P>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
  <TBODY>
  <TR>
    <TD class=tableborders>
      <TABLE border=0 cellPadding=3 cellSpacing=1 width="100%">
        <TBODY>
        <TR class=darktable>
          <TD>
            <TABLE cellPadding=0 cellSpacing=0 width="100%">
              <TBODY>
              <TR class=darktable>
                <TD align=left width="33%"><SPAN class=catandforum><A 
                  href="http://www.linuxforum.net/forum/ubbthreads.php?Cat=&amp;C=4">Linux 
                  高級(jí)應(yīng)用</A> <BR>&nbsp;&nbsp;&nbsp;&gt;&gt; <A 
                  href="http://www.linuxforum.net/forum/postlist.php?Cat=&amp;Board=linuxK&amp;page=120&amp;view=collapsed&amp;sb=5&amp;o=all">Linux內(nèi)核技術(shù)</A> 
                  </SPAN></TD>
                <TD align=middle width="33%">此話題閱讀次數(shù): 497 </TD>
                <TD align=right width="33%">
                  <TABLE border=0>
                    <TBODY>
                    <TR>
                      <TD class=navigation noWrap><IMG align=absMiddle alt=* 
                        src="2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum.files/greyflat.gif">平坦模式&nbsp; 
                      </TD>
                      <TD class=navigation noWrap><A 
                        href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&amp;Board=linuxK&amp;Number=147050&amp;page=120&amp;view=collapsed&amp;sb=5&amp;o=all&amp;vc=1"><IMG 
                        align=absMiddle alt=樹狀模式,一封一封讀 border=0 
                        src="2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum.files/threaded.gif">樹狀模式</A>&nbsp; 
                      </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center border=0 cellPadding=4 cellSpacing=0 width="95%">
  <TBODY>
  <TR>
    <TD align=left class=small>&nbsp; </TD>
    <TD align=right class=small><A 
      href="http://www.linuxforum.net/forum/printthread.php?Cat=&amp;Board=linuxK&amp;main=147050&amp;type=thread" 
      target=_blank><IMG align=top border=0 
      src="2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum.files/printthread.gif"> 打印</A> 
  </TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
  <TBODY>
  <TR>
    <TD class=tableborders>
      <TABLE border=0 cellPadding=3 cellSpacing=1 width="100%">
        <TBODY>
        <TR>
          <TD class=darktable rowSpan=2 vAlign=top width="17%"><A 
            name=Post147050></A><A 
            href="http://www.linuxforum.net/forum/showprofile.php?Cat=&amp;User=ysqcn&amp;Number=147050&amp;Board=linuxK&amp;what=showflat&amp;page=120&amp;view=collapsed&amp;sb=5&amp;o=all&amp;fpart=1&amp;vc=1">ysqcn</A><BR><SPAN 
            class=small>(newbie)<BR>08/01/01 20:25<BR></SPAN></TD>
          <TD class=subjecttable width="83%">
            <TABLE border=0 class=subjecttable width="100%">
              <TBODY>
              <TR>
                <TD align=left width="70%"><IMG height=15 
                  src="2_4網(wǎng)絡(luò)代碼閱讀筆記(2) - China Linux Forum.files/book.gif" 
                  width=15> <B>2.4網(wǎng)絡(luò)代碼閱讀筆記(2)</B> </TD>
                <TD align=right width="30%">&nbsp; </TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD class=lighttable width="83%"><BR>
            <P class=post>發(fā)信人: ysqcn (歲月無聲), 信區(qū): llkm <BR>標(biāo) 題: 2.4網(wǎng)絡(luò)代碼閱讀筆記(2) 
            <BR>發(fā)信站: UNIX編程 (2001年06月12日21:38:25 星期二), 站內(nèi)信件 
            <BR><BR>接下來就分析sys_bind了,這個(gè)函數(shù)相對簡單點(diǎn),好,讓我們開始吧: <BR><BR>asmlinkage long 
            sys_bind(int fd, struct sockaddr *umyaddr, int addrlen) <BR>{ 
            <BR>struct socket *sock; <BR>char address[MAX_SOCK_ADDR]; <BR>int 
            err; <BR>if((sock = sockfd_lookup(fd,&amp;err))!=NULL) <BR>{ 
            <BR>if((err=move_addr_to_kernel(umyaddr,addrlen,address))&gt;=0) 
            <BR>&gt;&gt;&gt;&gt;tcp,udp,raw這里均調(diào)用inet_bind,而packet調(diào)用了packet_bind 
            <BR>&gt;&gt;&gt;&gt;這里只分析前者,后者在討論af_packet.c的時(shí)候在說 <BR>err = 
            sock-&gt;ops-&gt;bind(sock, (struct sockaddr *)address, addrlen); 
            <BR>&gt;&gt;&gt;&gt;將sock相聯(lián)系的file的應(yīng)用計(jì)數(shù)減一,如果為0,則釋放,此時(shí)就引起一連串的操作 
            <BR>sockfd_put(sock); <BR>} <BR>return err; <BR>} 
            <BR><BR>對sockfd_lookup沒有什么好說的了,current.file---&gt;file_struct.fd[套接字描述符] 
            <BR>----&gt;file.inde-----&gt;inode.socket_i,這樣一層層的指下來,就有套接字描述符得到了 
            <BR>struct socket相應(yīng)的結(jié)構(gòu)了. 
            <BR>move_addr_to_kernel就是用copy_from_user拷貝用戶給出的地址到字符數(shù)組address中 
            <BR>去,sock-&gt;ops-&gt;bind就調(diào)用inet_stream_ops中的函數(shù)了,到了BSD層了,為inet_bind: 
            <BR><BR>static int inet_bind(struct socket *sock, struct sockaddr 
            *uaddr, int addr_len) <BR>{ <BR>struct sockaddr_in *addr=(struct 
            sockaddr_in *)uaddr; <BR>&gt;&gt;&gt;&gt;有struct socket得到相應(yīng)的struct 
            sock <BR>struct sock *sk=sock-&gt;sk; <BR>unsigned short snum; 
            <BR>int chk_addr_ret; <BR>int err; <BR>/* If the socket has its own 
            bind function then use it. (RAW) */ <BR>if(sk-&gt;prot-&gt;bind) 
            <BR>&gt;&gt;&gt;&gt;如果INET層有自己的bind就調(diào)用它,只有raw有,tcp和udp都沒有,為NULL 
            <BR>&gt;&gt;&gt;&gt;由于udp和tcp的BSD層的bind都是這個(gè)inet_bind,而raw又使用udp的BSD層的 
            <BR>&gt;&gt;&gt;&gt;例程,故對raw的bind也走到這兒了,不過在這兒raw就與tcp和udp分岔了 
            <BR>return sk-&gt;prot-&gt;bind(sk, uaddr, addr_len); <BR>if 
            (addr_len &lt; sizeof(struct sockaddr_in)) <BR>return -EINVAL; 
            <BR>&gt;&gt;&gt;&gt;得到bind的地址類型,可以有下面的幾種:RTN_LOCAL,RTN_MULTICAST, 
            <BR>&gt;&gt;&gt;&gt;RTN_BROADCAST,RTN_UNICAST <BR>chk_addr_ret = 
            inet_addr_type(addr-&gt;sin_addr.s_addr); <BR>...................... 
            <BR>snum = ntohs(addr-&gt;sin_port); 
            <BR>&gt;&gt;&gt;&gt;只有超級(jí)用戶才能綁定1024以下的端口 <BR>if (snum &amp;&amp; snum 
            &lt; PROT_SOCK &amp;&amp; !capable(CAP_NET_BIND_SERVICE)) <BR>return 
            -EACCES; <BR>lock_sock(sk); <BR>/* Check these errors (active 
            socket, double bind). */ <BR>err = -EINVAL; <BR>if ((sk-&gt;state != 
            TCP_CLOSE) || <BR>&gt;&gt;&gt;&gt;TCP和UDP在創(chuàng)建套接字的時(shí)候sk-&gt;num并沒有賦值,為零 
            <BR>(sk-&gt;num != 0)) <BR>goto out; 
            <BR>&gt;&gt;&gt;&gt;rcv_saddr用來從hash表中查找,saddr在發(fā)包時(shí)使用 
            <BR>sk-&gt;rcv_saddr = sk-&gt;saddr = addr-&gt;sin_addr.s_addr; 
            <BR>if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == 
            RTN_BROADCAST) <BR>&gt;&gt;&gt;&gt;對廣播地址和組播為0 <BR>sk-&gt;saddr = 0; 
            /* Use device */ <BR>/* Make sure we are allowed to bind here. */ 
            <BR>&gt;&gt;&gt;&gt;這里調(diào)用了tcp_v4_get_port,如果snum為0,則查找一個(gè)合適的端口 
            <BR>&gt;&gt;&gt;&gt;否則檢查端口是不是沒有被使用,將最后得到的合法端口賦值給sk-&gt;num 
            <BR>&gt;&gt;&gt;&gt;下面詳細(xì)分析 <BR>if (sk-&gt;prot-&gt;get_port(sk, 
            snum) != 0) { <BR>sk-&gt;saddr = sk-&gt;rcv_saddr = 0; <BR>err = 
            -EADDRINUSE; <BR>goto out; <BR>} <BR>if (sk-&gt;rcv_saddr) 
            <BR>sk-&gt;userlocks |= SOCK_BINDADDR_LOCK; <BR>if (snum) 
            <BR>sk-&gt;userlocks |= SOCK_BINDPORT_LOCK; 
            <BR>&gt;&gt;&gt;&gt;這幾個(gè)賦值,意識(shí)很清楚 <BR>sk-&gt;sport = 
            htons(sk-&gt;num); <BR>sk-&gt;daddr = 0; <BR>sk-&gt;dport = 0; 
            <BR>&gt;&gt;&gt;&gt;sk-&gt;dst_cache = NULL; <BR>sk_dst_reset(sk); 
            <BR>err = 0; <BR>out: <BR>release_sock(sk); <BR>return err; <BR>} 
            <BR><BR><BR>下面是tcp_v4_get_port了,看看linux是怎樣管理端口的: <BR>/* Obtain a 
            reference to a local port for the given sock, <BR>* if snum is zero 
            it means select any available local port. <BR>*/ <BR>static int 
            tcp_v4_get_port(struct sock *sk, unsigned short snum) <BR>{ 
            <BR>&gt;&gt;&gt;&gt;定義了一個(gè)桶 <BR>struct tcp_bind_hashbucket *head; 
            <BR>struct tcp_bind_bucket *tb; <BR>int ret; <BR>local_bh_disable(); 
            <BR>&gt;&gt;&gt;&gt;給定的端口為0,系統(tǒng)分配一個(gè) <BR>if (snum == 0) { 
            <BR>&gt;&gt;&gt;&gt;本地端口范圍,從1024到4999,可以通過sysctl改變. <BR>int low = 
            sysctl_local_port_range[0]; <BR>int high = 
            sysctl_local_port_range[1]; <BR>&gt;&gt;&gt;&gt;有多少端口可以用來分配 <BR>int 
            remaining = (high - low) + 1; <BR>int rover; 
            <BR>spin_lock(&amp;tcp_portalloc_lock); 
            <BR>&gt;&gt;&gt;&gt;tcp_port_rover=1023 <BR>rover = tcp_port_rover; 
            <BR>do { rover++; <BR>if ((rover &lt; low) || (rover &gt; high)) 
            <BR>rover = low; 
            <BR>&gt;&gt;&gt;&gt;tcp_bhash是已經(jīng)綁定的端口的hash表,遍歷這個(gè)表,如果發(fā)現(xiàn)有 
            <BR>&gt;&gt;&gt;&gt;重復(fù)的端口,則遍歷下一個(gè). <BR>head = 
            &amp;tcp_bhash[tcp_bhashfn(rover)]; 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产首页| 国内久久精品视频| 在线视频国内一区二区| 亚洲精品高清在线| 欧美天天综合网| 午夜电影网一区| 6080国产精品一区二区| 看电视剧不卡顿的网站| 精品国产免费人成电影在线观看四季| 精品系列免费在线观看| 欧美国产一区二区| 91蜜桃免费观看视频| 亚洲制服丝袜一区| 日韩精品一区在线观看| 国产精品538一区二区在线| 国产精品视频一二| 欧美系列日韩一区| 狠狠色丁香久久婷婷综| 国产精品青草久久| 欧美日韩国产天堂| 国产麻豆一精品一av一免费 | 老鸭窝一区二区久久精品| 久久综合色一综合色88| 99久久精品免费精品国产| 一区二区三区加勒比av| 日韩欧美的一区二区| 成人动漫一区二区| 日本欧美在线观看| 中文字幕一区二区三区不卡| 欧美性色欧美a在线播放| 日本美女一区二区| 亚洲欧美综合色| 欧美成人video| 色老汉一区二区三区| 精品中文av资源站在线观看| |精品福利一区二区三区| 日韩午夜小视频| 一本一道波多野结衣一区二区| 免费人成精品欧美精品| 亚洲人成7777| 久久天天做天天爱综合色| 在线观看一区二区视频| 国产精品正在播放| 秋霞影院一区二区| 亚洲精品高清在线观看| 久久免费的精品国产v∧| 欧美三级三级三级爽爽爽| 丁香婷婷深情五月亚洲| 美女一区二区三区在线观看| 亚洲精品中文字幕乱码三区| 中文成人综合网| 成人a免费在线看| 91精品婷婷国产综合久久性色| 亚洲成人av电影| 中文字幕欧美国产| www亚洲一区| 在线不卡中文字幕| 欧美影视一区二区三区| 成人精品国产一区二区4080| 免费不卡在线观看| 午夜电影一区二区三区| 一区二区三区精品久久久| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日韩视频不卡中文| 日本韩国一区二区| 国产激情一区二区三区四区| 日韩高清不卡一区二区| 亚洲成av人片一区二区梦乃| 亚洲精品日日夜夜| 亚洲色图一区二区| 亚洲天堂网中文字| 中文字幕在线观看不卡| 久久综合久久综合九色| 精品国产乱码久久久久久图片| 欧美一区二区三区免费在线看 | 午夜一区二区三区视频| 一区二区三区四区乱视频| 国产精品久久久久影院亚瑟| 国产精品天天看| 中文字幕在线观看一区二区| 国产精品国模大尺度视频| 国产精品国产三级国产有无不卡 | av亚洲精华国产精华精华| 日本一区二区不卡视频| 亚洲老妇xxxxxx| 亚洲免费av高清| 亚洲一线二线三线视频| 亚洲国产三级在线| 香蕉影视欧美成人| 奇米影视一区二区三区| 久久99国产乱子伦精品免费| 韩国女主播成人在线| 国产在线不卡一区| 国产高清在线精品| 99精品久久99久久久久| 色老汉av一区二区三区| 欧美四级电影在线观看| 欧美一区午夜精品| 久久青草欧美一区二区三区| 国产欧美日韩在线看| 亚洲人成精品久久久久| 亚洲成av人片在线| 久久精品国产色蜜蜜麻豆| 狠狠v欧美v日韩v亚洲ⅴ| 夫妻av一区二区| 中文字幕中文字幕在线一区| 欧美理论片在线| 精品欧美乱码久久久久久1区2区| 26uuu亚洲综合色欧美| 国产欧美视频一区二区三区| 日韩毛片视频在线看| 视频在线观看一区二区三区| 久久精品国产网站| av中文字幕亚洲| 欧美精品久久天天躁| 久久久久久一级片| 亚洲一级片在线观看| 精品一区二区免费看| 91在线播放网址| 日韩一区二区视频| 亚洲天天做日日做天天谢日日欢 | 在线电影一区二区三区| 精品国产乱码久久| 一区二区三区精品在线观看| 九一九一国产精品| 91国产免费观看| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品美女久久久久久2018| 久久精品免费在线观看| 国产香蕉久久精品综合网| 欧美卡1卡2卡| 欧美色国产精品| 久久久美女毛片| 水野朝阳av一区二区三区| 成人国产精品免费观看动漫| 欧美一区二区三区公司| 亚洲欧美一区二区三区极速播放 | 制服视频三区第一页精品| 亚洲国产高清aⅴ视频| 青草av.久久免费一区| 91女神在线视频| 国产欧美日韩综合| 九色综合狠狠综合久久| 欧美日韩精品系列| 18成人在线观看| 风间由美中文字幕在线看视频国产欧美| 欧美日韩日日骚| 亚洲另类色综合网站| 久久久精品国产99久久精品芒果 | 亚洲图片欧美色图| 粉嫩嫩av羞羞动漫久久久| 日韩一二三区视频| 午夜精品福利久久久| 欧美亚洲国产一卡| 亚洲精品国产第一综合99久久| 成人精品一区二区三区四区| 26uuu另类欧美亚洲曰本| 日韩电影在线免费看| 欧美日韩一区国产| 午夜免费久久看| 久久精品一二三| 人妖欧美一区二区| 欧美一区二区高清| 日韩精品一二三区| 在线播放欧美女士性生活| 一区二区久久久久| 欧美亚洲一区二区在线| 亚洲一区在线观看网站| 91福利精品视频| 亚洲高清视频的网址| 欧美亚一区二区| 水野朝阳av一区二区三区| 3atv一区二区三区| 精品一区二区三区欧美| 精品入口麻豆88视频| 激情综合网av| 久久久久久久久久久久电影| 国产另类ts人妖一区二区| 国产人成一区二区三区影院| 高清av一区二区| 中文字幕亚洲成人| 在线观看视频一区| 日韩精品电影一区亚洲| 欧美一区二区人人喊爽| 精品一区二区三区av| 欧美高清在线一区二区| 97久久人人超碰| 亚洲激情自拍偷拍| 91超碰这里只有精品国产| 美脚の诱脚舐め脚责91| 国产欧美精品一区aⅴ影院 | 56国语精品自产拍在线观看| 蜜臀精品久久久久久蜜臀 | 中文字幕乱码亚洲精品一区| 99视频精品全部免费在线| 亚洲影视在线播放| 精品免费99久久| 99视频在线观看一区三区| 亚洲综合网站在线观看| 日韩精品一区二区三区中文不卡|