TCP澶寸粨鏋?
TCP鍗忚澶存渶灝?0涓瓧鑺傦紝鍖呮嫭浠ヤ笅鐨勫尯鍩燂紙鐢變簬緲昏瘧涓嶇鐩稿悓錛屾枃绔犱腑緇欏嚭鐩稿簲鐨勮嫳鏂囧崟璇嶏級(jí)錛?
TCP婧愮鍙?Source Port)錛?6浣嶇殑婧愮鍙e叾涓寘鍚垵濮嬪寲閫氫俊鐨勭鍙c傛簮绔彛鍜屾簮IP鍦板潃鐨勪綔鐢ㄦ槸鏍囩ず鎶ラ棶鐨勮繑鍥炲湴鍧銆?
TCP鐩殑绔彛(Destination port)錛?6浣嶇殑鐩殑绔彛鍩熷畾涔変紶杈撶殑鐩殑銆傝繖涓鍙f寚鏄庢姤鏂囨帴鏀惰綆楁満涓婄殑搴旂敤紼嬪簭鍦板潃鎺ュ彛銆?
TCP搴忓垪鍙鳳紙搴忓垪鐮?Sequence銆Number錛夛細(xì)32浣嶇殑搴忓垪鍙風(fēng)敱鎺ユ敹绔綆楁満浣跨敤錛岄噸鏂板垎孌電殑鎶ユ枃鎴愭渶鍒濆艦寮忋傚綋SYN鍑虹幇錛屽簭鍒楃爜瀹為檯涓婃槸鍒濆搴忓垪鐮侊紙ISN錛夛紝鑰岀涓涓暟鎹瓧鑺傛槸ISN+1銆傝繖涓簭鍒楀彿錛堝簭鍒楃爜錛夋槸鍙互琛ュ伩浼犺緭涓殑涓嶄竴鑷淬?
TCP搴旂瓟鍙?Acknowledgment Number)錛?2浣嶇殑搴忓垪鍙風(fēng)敱鎺ユ敹绔綆楁満浣跨敤錛岄噸緇勫垎孌電殑鎶ユ枃鎴愭渶鍒濆艦寮忋傦紝濡傛灉璁劇疆浜?jiǎn)ACK鎺у埗浣嶏紝榪欎釜鍊艱〃紺轟竴涓噯澶囨帴鏀剁殑鍖呯殑搴忓垪鐮併?
鏁版嵁鍋忕Щ閲?HLEN)錛?浣嶅寘鎷琓CP澶村ぇ灝忥紝鎸囩ず浣曞鏁版嵁寮濮嬨?
淇濈暀(Reserved)錛?浣嶅煎煙錛岃繖浜涗綅蹇呴』鏄?銆備負(fù)浜?jiǎn)灏嗘潵瀹氫箟鏂扮殑鐢ㄩ旀墍淇濈暀銆?
鏍囧織(Code Bits)錛?浣嶆爣蹇楀煙銆傝〃紺轟負(fù)錛氱揣鎬ユ爣蹇椼佹湁鎰忎箟鐨勫簲絳旀爣蹇椼佹帹銆侀噸緗繛鎺ユ爣蹇椼佸悓姝ュ簭鍒楀彿鏍囧織銆佸畬鎴愬彂閫佹暟鎹爣蹇椼傛寜鐓ч『搴忔帓鍒楁槸錛歎RG銆丄CK銆丳SH銆丷ST銆丼YN銆丗IN銆?
紿楀彛(Window)錛?6浣嶏紝鐢ㄦ潵琛ㄧず鎯蟲(chóng)敹鍒扮殑姣忎釜TCP鏁版嵁孌電殑澶у皬銆?
鏍¢獙浣?Checksum)錛?6浣峊CP澶淬傛簮鏈哄櫒鍩轟簬鏁版嵁鍐呭璁$畻涓涓暟鍊鹼紝鏀朵俊鎭満瑕佷笌婧愭満鍣ㄦ暟鍊?緇撴灉瀹屽叏涓鏍鳳紝浠庤岃瘉鏄庢暟鎹殑鏈夋晥鎬с?
浼樺厛鎸囬拡錛堢揣鎬?Urgent Pointer錛夛細(xì)16浣嶏紝鎸囧悜鍚庨潰鏄紭鍏堟暟鎹殑瀛楄妭錛屽湪URG鏍囧織璁劇疆浜?jiǎn)鏃舵墠鏈夋晥銆傚鏋淯RG鏍囧織娌℃湁琚緗紝绱фュ煙浣滀負(fù)濉厖銆傚姞蹇鐞嗘爣紺轟負(fù)绱фョ殑鏁版嵁孌點(diǎn)?
閫夐」(Option)錛氶暱搴︿笉瀹氾紝浣嗛暱搴﹀繀欏諱互瀛楄妭銆傚鏋?娌℃湁 閫夐」灝辮〃紺鴻繖涓竴瀛楄妭鐨勫煙絳変簬0銆?
濉厖錛氫笉瀹氶暱錛屽~鍏呯殑鍐呭蹇呴』涓?錛屽畠鏄負(fù)浜?jiǎn)鏁板鐩殑鑰屽瓨鍦ㄣ傜洰鐨勬槸紜繚絀洪棿鐨勫彲棰勬祴鎬с備繚璇佸寘澶寸殑緇撳悎鍜屾暟鎹殑寮濮嬪鍋忕Щ閲忚兘澶熻32鏁撮櫎錛屼竴鑸澶栫殑闆朵互淇濊瘉TCP澶存槸32浣嶇殑鏁存暟鍊嶃?br>錛滈檮鍥炬槸鐢⊿NIFFER鎶撶殑涓涓寘澶寸粨鏋勶紴
00 50 07 45 9b d6 43 3c 47 fd 37 50 50 18
ff 1f 05 a5 00 00 48 54 54 50 2f 31 2e 31
20 32 30 30 20 4f 4b 0d 0a 53 65 72 76 65
72 3a 20 4d 69 63 72 6f 73 6f 66 74 2d 49
49 53 2f 35 2e 30 0d 0a 44 61 74 65 3a 20
57 65 64 2c 20 31 32 20 4e 6f 76 20 32 30
30 33 20 30 33 3a 33 37 3a 35 35 20 47 4d
54 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a
20 63 6c 6f 73 65 0d 0a 48 54 54 50 2f 31
2e 31 20 32 30 30 20 4f 4b 0d 0a 53 65 72
76 65 72 3a 20 4d 69 63 72 6f 73 6f 66 74
2d 49 49 53 2f 35 2e 30 0d 0a 50 72 61 67
6d 61 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a
43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20
74 65 78 74 2f 70 6c 61 69 6e 3b 63 68 61
72 73 65 74 3d 67 62 32 33 31 32 0d 0a 0d
0a
瑙f瀽錛?br>婧愮鍙o細(xì)00銆50銆銆銆銆鐩殑绔彛錛?7銆45銆銆搴忓垪鍙鳳細(xì)9b d6 43銆3c
搴旂瓟鍙鳳細(xì)47 fd 37 50銆 鏁版嵁鍋忕Щ閲忥細(xì)50銆銆銆淇濈暀錛?br>鏍囧織浣嶏細(xì)18銆銆銆銆銆銆銆紿楀彛錛歠f銆1f 鏍¢獙浣嶏細(xì)05 a5
浼樺厛鎸囬拡錛?0銆00銆銆銆銆閫夐」錛氥銆銆銆銆銆銆濉厖錛氾紙浣欎笅鐨?05瀛楄妭涓篢CP鏁版嵁錛?br>
鏍囧織鎺у埗鍔熻兘 URG錛氱揣鎬ユ爣蹇?
绱ф?The urgent pointer) 鏍囧織鏈夋晥銆傜揣鎬ユ爣蹇楃疆浣嶏紝
ACK錛氱‘璁ゆ爣蹇?紜緙栧彿(Acknowledgement Number)鏍忔湁鏁堛傚ぇ澶氭暟鎯呭喌涓嬭鏍囧織浣嶆槸緗綅鐨勩俆CP鎶ュご鍐呯殑紜緙栧彿鏍忓唴鍖呭惈鐨勭‘璁ょ紪鍙?w+1錛孎igure錛?)涓轟笅涓涓鏈熺殑搴忓垪緙栧彿錛屽悓鏃舵彁紺鴻繙绔郴緇熷凡緇忔垚鍔熸帴鏀舵墍鏈夋暟鎹?
銆銆PSH錛氭帹鏍囧織
璇ユ爣蹇楃疆浣嶆椂錛屾帴鏀剁涓嶅皢璇ユ暟鎹繘琛岄槦鍒楀鐞嗭紝鑰屾槸灝藉彲鑳藉揩灝嗘暟鎹漿鐢卞簲鐢ㄥ鐞嗐傚湪澶勭悊 telnet 鎴?rlogin 絳変氦浜掓ā寮忕殑榪炴帴鏃訛紝璇ユ爣蹇楁繪槸緗綅鐨勩?
RST錛氬浣嶆爣蹇?澶嶄綅鏍囧織鏈夋晥銆傜敤浜庡浣嶇浉搴旂殑TCP榪炴帴銆?
SYN錛氬悓姝ユ爣蹇?鍚屾搴忓垪緙栧彿(Synchronize Sequence Numbers)鏍忔湁鏁堛傝鏍囧織浠呭湪涓夋鎻℃墜寤虹珛TCP榪炴帴鏃舵湁鏁堛傚畠鎻愮ずTCP榪炴帴鐨勬湇鍔$媯(gè)鏌ュ簭鍒楃紪鍙鳳紝璇ュ簭鍒楃紪鍙蜂負(fù)TCP榪炴帴鍒濆绔?涓鑸槸瀹㈡埛绔?鐨勫垵濮嬪簭鍒楃紪鍙楓傚湪榪欓噷錛屽彲浠ユ妸TCP搴忓垪緙栧彿鐪嬩綔鏄竴涓寖鍥翠粠0鍒?錛?94錛?67錛?95鐨?2浣嶈鏁板櫒銆傞氳繃TCP榪炴帴浜ゆ崲鐨勬暟鎹腑姣忎竴涓瓧鑺傞兘緇忚繃搴忓垪緙栧彿銆傚湪TCP鎶ュご涓殑搴忓垪緙栧彿鏍忓寘鎷簡(jiǎn)TCP鍒嗘涓涓涓瓧鑺傜殑搴忓垪緙栧彿銆?
銆銆FIN錛氱粨鏉熸爣蹇?
銆銆甯︽湁璇ユ爣蹇楃疆浣嶇殑鏁版嵁鍖呯敤鏉ョ粨鏉熶竴涓猅CP鍥炶瘽錛屼絾瀵瑰簲绔彛浠嶅浜庡紑鏀劇姸鎬侊紝鍑嗗鎺ユ敹鍚庣畫(huà)鏁版嵁銆傛湇鍔$澶勪簬鐩戝惉鐘舵侊紝瀹㈡埛绔敤浜庡緩绔嬭繛鎺ヨ姹傜殑鏁版嵁鍖?IP packet)鎸夌収TCP/IP鍗忚鍫嗘爤緇勫悎鎴愪負(fù)TCP澶勭悊鐨勫垎孌?segment)銆?
鍒嗘瀽鎶ュご淇℃伅錛?TCP灞傛帴鏀跺埌鐩稿簲鐨凾CP鍜孖P鎶ュご錛屽皢榪欎簺淇℃伅瀛樺偍鍒板唴瀛樹(shù)腑銆?
媯(gè)鏌CP鏍¢獙鍜?checksum)錛氭爣鍑嗙殑鏍¢獙鍜屼綅浜庡垎孌典箣涓?Figure錛?)銆傚鏋滄楠屽け璐ワ紝涓嶈繑鍥炵‘璁わ紝璇ュ垎孌典涪寮冿紝騫剁瓑寰呭鎴風(fēng)榪涜閲嶄紶銆?
銆銆鏌ユ壘鍗忚鎺у埗鍧?PCB{})錛歍CP鏌ユ壘涓庤榪炴帴鐩稿叧鑱旂殑鍗忚鎺у埗鍧椼傚鏋滄病鏈夋壘鍒幫紝TCP灝嗚鍒嗘涓㈠純騫惰繑鍥濺ST銆?榪欏氨鏄疶CP澶勭悊娌℃湁绔彛鐩戝惉鎯呭喌涓嬬殑鏈哄埗)
濡傛灉璇ュ崗璁帶鍒跺潡瀛樺湪錛屼絾鐘舵佷負(fù)鍏抽棴錛屾湇鍔$涓嶈皟鐢╟onnect()鎴杔isten()銆傝鍒嗘涓㈠純錛屼絾涓嶈繑鍥濺ST銆傚鎴風(fēng)浼?xì)灏濊瘯閲嶆柊寰忕珛杩炴帴璇锋眰銆?
銆銆寤虹珛鏂扮殑socket錛氬綋澶勪簬鐩戝惉鐘舵佺殑socket鏀跺埌璇ュ垎孌墊椂錛屼細(xì)寤虹珛涓涓瓙socket錛屽悓鏃惰繕鏈塻ocket{}錛宼cpcb{}鍜宲ub{}寤虹珛銆傝繖鏃跺鏋滄湁閿欒鍙戠敓錛屼細(xì)閫氳繃鏍囧織浣嶆潵鎷嗛櫎鐩稿簲鐨剆ocket鍜岄噴鏀懼唴瀛橈紝TCP榪炴帴澶辮觸銆傚鏋滅紦瀛橀槦鍒楀浜庡~婊$姸鎬侊紝TCP璁や負(fù)鏈夐敊璇彂鐢燂紝鎵鏈夌殑鍚庣畫(huà)榪炴帴璇鋒眰浼?xì)琚嫆缁濄傝繖閲屽彲浠ョ湅鍑篠YN Flood鏀誨嚮鏄浣曡搗浣滅敤鐨勩?
涓㈠純錛氬鏋滆鍒嗘涓殑鏍囧織涓篟ST鎴朅CK錛屾垨鑰呮病鏈塖YN鏍囧織錛屽垯璇ュ垎孌典涪寮冦傚茍閲婃斁鐩稿簲鐨勫唴瀛樸?
鍙戦佸簭鍒楀彉閲?
SND.UNA 錛?鍙戦佹湭紜
SND.NXT 錛?鍙戦佷笅涓涓?
SND.WND 錛?鍙戦佺獥鍙?
SND.UP 錛?鍙戦佷紭鍏堟寚閽?
SND.WL1 錛?鐢ㄤ簬鏈鍚庣獥鍙f洿鏂扮殑孌靛簭鍒楀彿
SND.WL2 錛?鐢ㄤ簬鏈鍚庣獥鍙f洿鏂扮殑孌電‘璁ゅ彿
ISS 錛?鍒濆鍙戦佸簭鍒楀彿
銆 鎺ユ敹搴忓垪鍙?
RCV.NXT 錛?鎺ユ敹涓嬩竴涓?
RCV.WND 錛?鎺ユ敹涓嬩竴涓?
RCV.UP 錛?鎺ユ敹浼樺厛鎸囬拡
IRS 錛?鍒濆鎺ユ敹搴忓垪鍙?
褰撳墠孌靛彉閲?
SEG.SEQ 錛?孌靛簭鍒楀彿
SEG.ACK 錛?孌電‘璁ゆ爣璁?
SEG.LEN 錛?孌甸暱
SEG.WND 錛?孌電獥鍙?
SEG.UP 錛?孌電揣鎬ユ寚閽?
SEG.PRC 錛?孌典紭鍏堢駭
CLOSED琛ㄧず娌℃湁榪炴帴錛屽悇涓姸鎬佺殑鎰忎箟濡備笅錛?
LISTEN 錛?鐩戝惉鏉ヨ嚜榪滄柟TCP绔彛鐨勮繛鎺ヨ姹傘?
SYN-SENT 錛?鍦ㄥ彂閫佽繛鎺ヨ姹傚悗絳夊緟鍖歸厤鐨勮繛鎺ヨ姹傘?
SYN-RECEIVED 錛?鍦ㄦ敹鍒板拰鍙戦佷竴涓繛鎺ヨ姹傚悗絳夊緟瀵硅繛鎺ヨ姹傜殑紜銆?
ESTABLISHED 錛?浠h〃涓涓墦寮鐨勮繛鎺ワ紝鏁版嵁鍙互浼犻佺粰鐢ㄦ埛銆?
FIN-WAIT-1 錛?絳夊緟榪滅▼TCP鐨勮繛鎺ヤ腑鏂姹傦紝鎴栧厛鍓嶇殑榪炴帴涓柇璇鋒眰鐨勭‘璁ゃ?
FIN-WAIT-2 錛?浠庤繙紼婽CP絳夊緟榪炴帴涓柇璇鋒眰銆?
CLOSE-WAIT 錛?絳夊緟浠庢湰鍦扮敤鎴峰彂鏉ョ殑榪炴帴涓柇璇鋒眰銆?
CLOSING 錛?絳夊緟榪滅▼TCP瀵硅繛鎺ヤ腑鏂殑紜銆?
LAST-ACK 錛?絳夊緟鍘熸潵鍙戝悜榪滅▼TCP鐨勮繛鎺ヤ腑鏂姹傜殑紜銆?
TIME-WAIT 錛?絳夊緟瓚沖鐨勬椂闂翠互紜繚榪滅▼TCP鎺ユ敹鍒拌繛鎺ヤ腑鏂姹傜殑紜銆?
CLOSED 錛?娌℃湁浠諱綍榪炴帴鐘舵併?
TCP榪炴帴榪囩▼鏄姸鎬佺殑杞崲錛屼績(jī)浣垮彂鐢熺姸鎬佽漿鎹㈢殑鏄敤鎴瘋皟鐢細(xì)OPEN錛孲END錛孯ECEIVE錛孋LOSE錛孉BORT鍜孲TATUS銆備紶閫佽繃鏉ョ殑鏁版嵁孌碉紝鐗瑰埆閭d簺鍖呮嫭浠ヤ笅鏍囪鐨勬暟鎹SYN錛孉CK錛孯ST鍜孎IN銆傝繕鏈夎秴鏃訛紝涓婇潰鎵璇寸殑閮戒細(xì)鏃禩CP鐘舵佸彂鐢熷彉鍖栥?
銆 搴忓垪鍙鳳細(xì)璇鋒敞鎰忥紝鎴戜滑鍦═CP榪炴帴涓彂閫佺殑瀛楄妭閮芥湁涓涓簭鍒楀彿銆傚洜涓虹紪浜?jiǎn)鍙峰Q屾墍浠ュ彲浠ョ‘璁ゅ畠浠殑鏀跺埌銆傚搴忓垪鍙風(fēng)殑紜鏄瘡縐х殑銆俆CP蹇呴』榪涜鐨勫簭鍒楀彿姣旇緝鎿嶄綔縐嶇被鍖呮嫭浠ヤ笅鍑犵錛?
銆 鈶犲喅瀹氫竴浜涘彂閫佷簡(jiǎn)鐨勪絾鏈‘璁ょ殑搴忓垪鍙楓?
銆 鈶″喅瀹氭墍鏈夌殑搴忓垪鍙烽兘宸茬粡鏀跺埌浜?jiǎn)銆?
鈶㈠喅瀹氫笅涓涓涓簲璇ュ寘鎷殑搴忓垪鍙楓?
瀵逛簬鍙戦佺殑鏁版嵁TCP瑕佹帴鏀剁‘璁わ紝紜鏃跺繀欏昏繘琛岀殑錛?
SND.UNA = 鏈鑰佺殑紜浜?jiǎn)鐨勫簭鍒楀彈鱻?
SND.NXT = 涓嬩竴涓鍙戦佺殑搴忓垪鍙楓?
SEG.ACK = 鎺ユ敹TCP鐨勭‘璁わ紝鎺ユ敹TCP鏈熷緟鐨勪笅涓涓簭鍒楀彿銆?
SEG.SEQ = 涓涓暟鎹鐨勭涓涓簭鍒楀彿銆?
SEG.LEN = 鏁版嵁孌典腑鍖呮嫭鐨勫瓧鑺傛暟銆?
SEG.SEQ+SEG.LEN-1 = 鏁版嵁孌電殑鏈鍚庝竴涓簭鍒楀彿銆?
濡傛灉涓涓暟鎹鐨勫簭鍒楀彿灝忎簬絳変簬紜鍙風(fēng)殑鍊鹼紝閭d箞鏁翠釜鏁版嵁孌靛氨琚‘璁や簡(jiǎn)銆傝屽湪鎺ユ敹鏁版嵁鏃朵笅闈㈢殑姣旇緝鎿嶄綔鏄繀欏葷殑錛?
RCV.NXT = 鏈熷緟鐨勫簭鍒楀彿鍜屾帴鏀剁獥鍙g殑鏈浣庢部銆?
RCV.NXT+RCV.WND錛? = 鏈鍚庝竴涓簭鍒楀彿鍜屾帴鏀剁獥鍙g殑鏈楂樻部銆?
SEG.SEQ = 鎺ユ敹鍒扮殑絎竴涓簭鍒楀彿銆?
SEG.SEQ+SEG.LEN錛? = 鎺ユ敹鍒扮殑鏈鍚庝竴涓簭鍒楀彿

]]>