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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linux網絡編程--7. tcpip協議.html

?? Linux網絡編程
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
</tr><td align=center><table border="0" width="80%"  cellspacing="0" cellpadding="0" align=center><tr><td valign=top><font color=#cccccc>
<br>&nbsp;&nbsp;&nbsp;&nbsp;你也許聽說過TCP/IP協議,那么你知道到底什么是TCP,什么是IP嗎?在這一章里面,我們一起來學習這個目前網絡上用最廣泛的協議.&nbsp;
<br>
<br>
<br>7.1&nbsp;網絡傳輸分層&nbsp;
<br>如果你考過計算機等級考試,那么你就應該已經知道了網絡傳輸分層這個概念.在網絡上,人們為了傳輸數據時的方便,把網絡的傳輸分為7個層次.分別是:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層和物理層.分好了層以后,傳輸數據時,上一層如果要數據的話,就可以直接向下一層要了,而不必要管數據傳輸的細節.下一層也只向它的上一層提供數據,而不要去管其它東西了.如果你不想考試,你沒有必要去記這些東西的.只要知道是分層的,而且各層的作用不同.&nbsp;
<br>
<br>7.2&nbsp;IP協議&nbsp;
<br>IP協議是在網絡層的協議.它主要完成數據包的發送作用.&nbsp;下面這個表是IP4的數據包格式&nbsp;
<br>
<br>&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32
<br>--------------------------------------------------
<br>|版本&nbsp;&nbsp;&nbsp;|首部長度|服務類型|&nbsp;&nbsp;&nbsp;&nbsp;數據包總長&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>--------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;標識&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|DF&nbsp;|MF|&nbsp;碎片偏移&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>--------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;生存時間&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;協議&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;首部較驗和&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;源IP地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目的IP地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>-------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;選項&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>=================================================
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;數據&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>-------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
<br>下面我們看一看IP的結構定義<netinet/ip.h>&nbsp;
<br>
<br>struct&nbsp;ip
<br>&nbsp;&nbsp;{
<br>#if&nbsp;__BYTE_ORDER&nbsp;==&nbsp;__LITTLE_ENDIAN
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;ip_hl:4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;header&nbsp;length&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;ip_v:4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;version&nbsp;*/
<br>#endif
<br>#if&nbsp;__BYTE_ORDER&nbsp;==&nbsp;__BIG_ENDIAN
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;ip_v:4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;version&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;ip_hl:4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;header&nbsp;length&nbsp;*/
<br>#endif
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int8_t&nbsp;ip_tos;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;type&nbsp;of&nbsp;service&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_short&nbsp;ip_len;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;total&nbsp;length&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_short&nbsp;ip_id;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;identification&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_short&nbsp;ip_off;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;fragment&nbsp;offset&nbsp;field&nbsp;*/
<br>#define&nbsp;IP_RF&nbsp;0x8000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;reserved&nbsp;fragment&nbsp;flag&nbsp;*/
<br>#define&nbsp;IP_DF&nbsp;0x4000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;dont&nbsp;fragment&nbsp;flag&nbsp;*/
<br>#define&nbsp;IP_MF&nbsp;0x2000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;more&nbsp;fragments&nbsp;flag&nbsp;*/
<br>#define&nbsp;IP_OFFMASK&nbsp;0x1fff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;mask&nbsp;for&nbsp;fragmenting&nbsp;bits&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int8_t&nbsp;ip_ttl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;time&nbsp;to&nbsp;live&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int8_t&nbsp;ip_p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;protocol&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_short&nbsp;ip_sum;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;checksum&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;in_addr&nbsp;ip_src,&nbsp;ip_dst;&nbsp;&nbsp;/*&nbsp;source&nbsp;and&nbsp;dest&nbsp;address&nbsp;*/
<br>&nbsp;&nbsp;};
<br>
<br>ip_vIP協議的版本號,這里是4,現在IPV6已經出來了&nbsp;
<br>
<br>ip_hlIP包首部長度,這個值以4字節為單位.IP協議首部的固定長度為20個字節,如果IP包沒有選項,那么這個值為5.&nbsp;
<br>
<br>ip_tos服務類型,說明提供的優先權.&nbsp;
<br>
<br>ip_len說明IP數據的長度.以字節為單位.&nbsp;
<br>
<br>ip_id標識這個IP數據包.&nbsp;
<br>
<br>ip_off碎片偏移,這和上面ID一起用來重組碎片的.&nbsp;
<br>
<br>ip_ttl生存時間.沒經過一個路由的時候減一,直到為0時被拋棄.&nbsp;
<br>
<br>ip_p協議,表示創建這個IP數據包的高層協議.如TCP,UDP協議.&nbsp;
<br>
<br>ip_sum首部校驗和,提供對首部數據的校驗.&nbsp;
<br>
<br>ip_src,ip_dst發送者和接收者的IP地址&nbsp;
<br>
<br>關于IP協議的詳細情況,請參考&nbsp;RFC791
<br>
<br>7.3&nbsp;ICMP協議&nbsp;
<br>ICMP是消息控制協議,也處于網絡層.在網絡上傳遞IP數據包時,如果發生了錯誤,那么就會用ICMP協議來報告錯誤.&nbsp;
<br>
<br>ICMP包的結構如下:&nbsp;
<br>
<br>&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32
<br>---------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;類型&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代碼&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;校驗和&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>--------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;數據&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;數據&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>--------------------------------------------------------------------
<br>
<br>ICMP在<netinet/ip_icmp.h>中的定義是&nbsp;
<br>struct&nbsp;icmphdr
<br>{
<br>&nbsp;&nbsp;u_int8_t&nbsp;type;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;message&nbsp;type&nbsp;*/
<br>&nbsp;&nbsp;u_int8_t&nbsp;code;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;type&nbsp;sub-code&nbsp;*/
<br>&nbsp;&nbsp;u_int16_t&nbsp;checksum;
<br>&nbsp;&nbsp;union
<br>&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;struct
<br>&nbsp;&nbsp;&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;id;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;sequence;
<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;echo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;echo&nbsp;datagram&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;&nbsp;&nbsp;gateway;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;gateway&nbsp;address&nbsp;*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;struct
<br>&nbsp;&nbsp;&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;__unused;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;mtu;
<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;frag;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;path&nbsp;mtu&nbsp;discovery&nbsp;*/
<br>&nbsp;&nbsp;}&nbsp;un;
<br>};
<br>
<br>關于ICMP協議的詳細情況可以查看&nbsp;RFC792
<br>
<br>7.4&nbsp;UDP協議&nbsp;
<br>UDP協議是建立在IP協議基礎之上的,用在傳輸層的協議.UDP和IP協議一樣是不可靠的數據報服務.UDP的頭格式為:&nbsp;
<br>
<br>
<br>&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32
<br>---------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDP源端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDP目的端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>---------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDP數據報長度&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDP數據報校驗&nbsp;&nbsp;&nbsp;|
<br>---------------------------------------------------
<br>
<br>UDP結構在<netinet/udp.h>中的定義為:&nbsp;
<br>struct&nbsp;udphdr&nbsp;{
<br>&nbsp;&nbsp;u_int16_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source;
<br>&nbsp;&nbsp;u_int16_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest;
<br>&nbsp;&nbsp;u_int16_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len;
<br>&nbsp;&nbsp;u_int16_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check;
<br>};
<br>
<br>關于UDP協議的詳細情況,請參考&nbsp;RFC768
<br>7.5&nbsp;TCP&nbsp;
<br>TCP協議也是建立在IP協議之上的,不過TCP協議是可靠的.按照順序發送的.TCP的數據結構比前面的結構都要復雜.&nbsp;
<br>
<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32
<br>-------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;源端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目的端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>-------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;序列號&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;確認號&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>------------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|U|A|P|S|F|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>|首部長度|&nbsp;保留&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|R|C|S|Y|I|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;窗口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|G|K|H|N|N|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>-----------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;校驗和&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;緊急指針&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
<br>-----------------------------------------------------------------
<br>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;選項&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;填充字節&nbsp;&nbsp;&nbsp;|
<br>-----------------------------------------------------------------
<br>
<br>TCP的結構在<netinet/tcp.h>中定義為:&nbsp;
<br>struct&nbsp;tcphdr
<br>&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;source;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;dest;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;seq;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t&nbsp;ack_seq;
<br>#if&nbsp;__BYTE_ORDER&nbsp;==&nbsp;__LITTLE_ENDIAN
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;res1:4;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;doff:4;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;fin:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;syn:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;rst:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;psh:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ack:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;urg:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;res2:2;
<br>#elif&nbsp;__BYTE_ORDER&nbsp;==&nbsp;__BIG_ENDIAN
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;doff:4;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;res1:4;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;res2:2;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;urg:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;ack:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;psh:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;rst:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;syn:1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;fin:1;
<br>#endif
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;window;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;check;
<br>&nbsp;&nbsp;&nbsp;&nbsp;u_int16_t&nbsp;urg_prt;
<br>};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
<br>source發送TCP數據的源端口&nbsp;
<br>dest接受TCP數據的目的端口&nbsp;
<br>
<br>seq標識該TCP所包含的數據字節的開始序列號&nbsp;
<br>
<br>ack_seq確認序列號,表示接受方下一次接受的數據序列號.&nbsp;
<br>
<br>doff數據首部長度.和IP協議一樣,以4字節為單位.一般的時候為5&nbsp;
<br>
<br>urg如果設置緊急數據指針,則該位為1&nbsp;
<br>
<br>ack如果確認號正確,那么為1&nbsp;
<br>
<br>psh如果設置為1,那么接收方收到數據后,立即交給上一層程序&nbsp;
<br>
<br>rst為1的時候,表示請求重新連接&nbsp;
<br>
<br>syn為1的時候,表示請求建立連接&nbsp;
<br>
<br>fin為1的時候,表示親戚關閉連接&nbsp;
<br>
<br>window窗口,告訴接收者可以接收的大小&nbsp;
<br>
<br>check對TCP數據進行較核&nbsp;
<br>
<br>urg_ptr如果urg=1,那么指出緊急數據對于歷史數據開始的序列號的偏移值&nbsp;
<br>
<br>關于TCP協議的詳細情況,請查看&nbsp;RFC793
<br>
<br>
<br>7.6&nbsp;TCP連接的建立&nbsp;
<br>TCP協議是一種可靠的連接,為了保證連接的可靠性,TCP的連接要分為幾個步驟.我們把這個連接過程稱為"三次握手".&nbsp;
<br>
<br>下面我們從一個實例來分析建立連接的過程.&nbsp;
<br>
<br>第一步客戶機向服務器發送一個TCP數據包,表示請求建立連接.&nbsp;為此,客戶端將數據包的SYN位設置為1,并且設置序列號seq=1000(我們假設為1000).&nbsp;
<br>
<br>第二步服務器收到了數據包,并從SYN位為1知道這是一個建立請求的連接.于是服務器也向客戶端發送一個TCP數據包.因為是響應客戶機的請求,于是服務器設置ACK為1,sak_seq=1001(1000+1)同時設置自己的序列號.seq=2000(我們假設為2000).&nbsp;
<br>
<br>第三步客戶機收到了服務器的TCP,并從ACK為1和ack_seq=1001知道是從服務器來的確認信息.于是客戶機也向服務器發送確認信息.客戶機設置ACK=1,和ack_seq=2001,seq=1001,發送給服務器.至此客戶端完成連接.&nbsp;
<br>
<br>最后一步服務器受到確認信息,也完成連接.&nbsp;
<br>
<br>通過上面幾個步驟,一個TCP連接就建立了.當然在建立過程中可能出現錯誤,不過TCP協議可以保證自己去處理錯誤的.&nbsp;
<br>
<br>
<br>&nbsp;&nbsp;說一說其中的一種錯誤.
<br>&nbsp;&nbsp;聽說過DOS嗎?(可不是操作系統啊).今年春節的時候,美國的五大網站一起受到攻擊.攻擊者用的就是DOS(拒絕式服務)方式.概括的說一下原理.
<br>&nbsp;&nbsp;客戶機先進行第一個步驟.服務器收到后,進行第二個步驟.按照正常的TCP連接,客戶機應該進行第三個步驟.
<br>不過攻擊者實際上并不進行第三個步驟.因為客戶端在進行第一個步驟的時候,修改了自己的IP地址,就是說將一個實際上不存在的IP填充在自己IP數據包的發送者的IP一欄.這樣因為服務器發的IP地址沒有人接收,所以服務端會收不到第三個步驟的確認信號,這樣服務務端會在那邊一直等待,直到超時.
<br>這樣當有大量的客戶發出請求后,服務端會有大量等待,直到所有的資源被用光,而不能再接收客戶機的請求.
<br>這樣當正常的用戶向服務器發出請求時,由于沒有了資源而不能成功.于是就出現了春節時所出現的情況.
<br></font></td></tr><tr><td><hr></td></tr><form method=post action=/cgi-bin/find.cgi><tr><td><b>相關文章</b>  關鍵詞 <input type=text name=key value='Linux網絡編程'> <input type=submit value=搜索></td></tr></form><tr><td><a href=/a4/b7/20010508/112209.html>Linux網絡編程--6. 高級套接字函數</a> <small>(2001-05-08 11:22:09)</small></font><br><a href=/a4/b7/20010508/112131.html>Linux網絡編程--5. 用戶數據報發送</a> <small>(2001-05-08 11:21:31)</small></font><br><a href=/a4/b7/20010508/112052.html>Linux網絡編程--4. 完整的讀寫函數</a> <small>(2001-05-08 11:20:52)</small></font><br><a href=/a4/b7/20010508/112014.html>Linux網絡編程--3. 服務器和客戶機的信息函數</a> <small>(2001-05-08 11:20:14)</small></font><br><a href=/a4/b7/20010508/111934.html>Linux網絡編程--2. 初等網絡函數介紹(TCP)</a> <small>(2001-05-08 11:19:34)</small></font><br><a href=/a4/b7/20010508/111655.html>Linux網絡編程--1. Linux網絡知識介紹</a> <small>(2001-05-08 11:16:55)</small></font><br></td></tr><tr><td>&nbsp;</td></tr></table></td></tr><tr>  <td width="100%" height="2" colspan="5" bgcolor="#D09F0D"><img src="/images/c.gif" width=1 height=1></td> </tr><tr>    <td width="100%" height="40" colspan="5" valign=top><p align="center"><font color=#ffffff>&copy; &nbsp;&nbsp;樊強制作 歡迎分享 2001 </font></p></td>  </tr></table></center></div><img src="/cgi-bin/pagehit.cgi?filename=a4/b7/20010508/112240.html" width=1 height=1></body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
caoporm超碰国产精品| 亚洲男人电影天堂| 久久99久久久欧美国产| 欧美一区二区三区视频在线| 日日夜夜精品免费视频| 欧美一区二区在线看| 视频一区免费在线观看| 日韩午夜小视频| 秋霞国产午夜精品免费视频| 精品电影一区二区| 国产不卡免费视频| 国产精品免费网站在线观看| 色综合视频一区二区三区高清| 亚洲综合色成人| 欧美一区二区三区免费大片| 麻豆91在线看| 综合中文字幕亚洲| 欧美精三区欧美精三区| 激情五月婷婷综合| 亚洲人xxxx| 欧美一区二区三区在线观看 | 欧洲激情一区二区| 香蕉久久夜色精品国产使用方法| 欧美一二三区精品| youjizz国产精品| 午夜精品成人在线视频| 久久久精品日韩欧美| 欧洲生活片亚洲生活在线观看| 免费人成在线不卡| 国产欧美日韩另类视频免费观看| 色哟哟国产精品| 激情文学综合网| 亚洲国产精品久久人人爱蜜臀| 精品sm在线观看| 欧美中文字幕一区| 国产一区二区三区在线看麻豆| 一区二区三区高清在线| 欧美变态tickle挠乳网站| 色婷婷香蕉在线一区二区| 久久99国产精品久久99| 亚洲欧美一区二区三区国产精品| 欧美电影免费提供在线观看| 99国产欧美另类久久久精品 | 国产在线不卡视频| 亚洲五月六月丁香激情| 欧美国产禁国产网站cc| 欧美一级艳片视频免费观看| av亚洲精华国产精华精| 麻豆一区二区三区| 亚洲成人免费视| 成人欧美一区二区三区白人| 久久精品无码一区二区三区| 日韩欧美在线综合网| 色综合色综合色综合| 国产精品1区2区3区在线观看| 婷婷夜色潮精品综合在线| 亚洲欧洲综合另类| 国产精品美女久久久久久| 精品国产一区二区三区久久久蜜月| 91福利在线导航| 99久久精品免费观看| 成人一二三区视频| 国产一区二三区好的| 日韩在线一区二区| 亚洲国产你懂的| 亚洲视频免费在线观看| 国产精品电影院| 国产目拍亚洲精品99久久精品| 精品国产伦理网| 欧美变态tickle挠乳网站| 欧美一区二区三区视频免费| 69久久夜色精品国产69蝌蚪网| 91黄色激情网站| 在线视频国产一区| 欧洲精品一区二区| 欧美日韩激情在线| 欧美日韩免费在线视频| 欧美亚洲综合色| 欧美日韩三级一区| 欧美高清性hdvideosex| 欧美一区二区福利在线| 日韩一级视频免费观看在线| 日韩欧美国产电影| 久久综合网色—综合色88| 国产无人区一区二区三区| 久久久久久久久久看片| 国产精品情趣视频| 亚洲亚洲人成综合网络| 亚洲在线中文字幕| 婷婷国产v国产偷v亚洲高清| 日本sm残虐另类| 奇米色一区二区| 国产一区二区三区四区五区入口 | 亚洲制服丝袜在线| 亚洲午夜在线电影| 奇米影视一区二区三区| 国产麻豆精品视频| 成人av资源下载| 日本黄色一区二区| 日韩一区二区三区视频在线| 国产香蕉久久精品综合网| 中文字幕亚洲不卡| 亚洲线精品一区二区三区| 六月丁香婷婷久久| 成人免费视频网站在线观看| 欧美在线制服丝袜| 9191国产精品| 中文字幕av一区二区三区高 | 欧美一区二区三区公司| 久久精品亚洲精品国产欧美kt∨| 亚洲男人的天堂av| 日韩制服丝袜av| 成人看片黄a免费看在线| 欧洲生活片亚洲生活在线观看| 欧美一区二区三区免费观看视频| 日本一区二区视频在线| 亚洲福利一区二区| 国产成人精品www牛牛影视| 91色.com| 2021久久国产精品不只是精品| 亚洲精品网站在线观看| 经典三级视频一区| 欧美午夜片在线看| 国产欧美一区二区三区在线老狼 | 国产精品乱人伦一区二区| 亚洲成av人在线观看| 国产成人av一区| 91精品国产综合久久婷婷香蕉| 国产精品污www在线观看| 日韩成人伦理电影在线观看| 成人做爰69片免费看网站| 日韩三级在线观看| 亚洲一区二区三区小说| 欧美高清一级片在线| 亚洲午夜久久久| 日本欧美一区二区| 成人在线视频首页| 欧美一区二区成人6969| 亚洲图片你懂的| 91美女片黄在线观看91美女| 精品国产百合女同互慰| 天堂va蜜桃一区二区三区漫画版| 波多野结衣视频一区| 久久噜噜亚洲综合| 日韩av一区二区三区四区| 91天堂素人约啪| 亚洲国产精品传媒在线观看| 裸体在线国模精品偷拍| 3751色影院一区二区三区| 一区二区三区毛片| av一二三不卡影片| 国产精品视频一二三| 国产精品一区在线| 欧美xxxxxxxx| 欧美aⅴ一区二区三区视频| 欧美性xxxxx极品少妇| 亚洲天堂2014| 99re6这里只有精品视频在线观看| 亚洲精品一区二区三区蜜桃下载| 日韩 欧美一区二区三区| 欧美日韩国产高清一区二区| 一区二区三区四区不卡在线| 91小视频免费看| 亚洲另类春色国产| 日本韩国一区二区| 一区二区三区日韩精品| 日本二三区不卡| 亚洲欧美日韩一区二区三区在线观看| 国产69精品久久久久毛片| 国产欧美精品一区| 成人性生交大片免费看视频在线| 欧美高清在线精品一区| 成人a级免费电影| 国产精品久久久久久久久果冻传媒 | 久久综合久久鬼色中文字| 久久精品国产77777蜜臀| 欧美成人精品3d动漫h| 久久精品免费观看| 精品国产乱码久久久久久影片| 激情深爱一区二区| 国产片一区二区三区| 懂色av一区二区在线播放| 国产精品传媒在线| 色综合久久久久网| 亚洲午夜久久久| 日韩一级成人av| 国产综合久久久久影院| 欧美激情在线一区二区| 在线观看日韩高清av| 亚洲国产欧美在线| 国产视频在线观看一区二区三区 | 在线一区二区观看| 亚洲bt欧美bt精品| 精品成人一区二区| 成人中文字幕在线| 亚洲一级二级三级| 精品国产sm最大网站| 成人福利视频网站| 午夜精品福利久久久| 国产日韩综合av|