TCP.pdf

‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪190‬‬
‫‪ (1‬ﻻﯾﮥ اﻧﺘﻘﺎل‪ 1‬در ﺷﺒﮑﮥ اﯾﻨﺘﺮﻧﺖ‬
‫ﺑﮕﻮﻧﻪای ﮐﻪ در ﻓﺼﻞ ﻗﺒﻞ اﺷﺎره ﺷﺪ ﭘﺮوﺗﮑــﻞ ‪ IP‬وﻇﯿﻔـﮥ ﻫﺪاﯾـﺖ و ﻣﺴـﯿﺮﯾﺎﺑﯽ ﺑﺴـﺘﻪ ﻫـﺎی‬
‫اﻃﻼﻋﺎﺗﯽ را از ﯾﮏ ﻣﺎﺷﯿﻦ ﻣﯿﺰﺑﺎن ﺑﻪ ﻣﺎﺷﯿﻨﯽ دﯾﮕﺮ ﺑﺮﻋﻬﺪه دارد و ﻣﺸــﮑﻼﺗﯽ ﮐـﻪ در ﻃـﯽ ﻣﺴـﯿﺮ‬
‫ﻣﻤﮑﻦ اﺳﺖ ﺑﺮای ﯾﮏ ﺑﺴﺘﮥ ‪ IP‬اﺗﻔﺎق ﺑﯿﻔﺘﺪ ‪ ،‬ﺗﻮﺳﻂ اﯾﻦ ﻻﯾﻪ ﻗﺎﺑﻞ ﺣﻞ ﻧﯿﺴﺖ‪.‬‬
‫وﻇﯿﻔﮥ ﻻﯾﮥ اﻧﺘﻘﺎل در ﺷﺒﮑﻪ ‪ ” ،‬ﻓﺮاﻫﻢ آوردن ﺧﺪﻣﺎت ﺳﺎزﻣﺎﻧﺪﻫﯽ ﺷﺪه ‪ ،‬ﻣﻄﻤﺌﻦ و ﻣﺒﺘﻨــﯽ ﺑـﺮ‬
‫اﺻﻮل ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ‪ ،‬ﺑﺮای ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی در ﻻﯾﮥ ﺑﺎﻻﺗﺮ اﺳﺖ ‪ ،‬ﺑﮕﻮﻧﻪای ﮐــﻪ ﻣﺸـﮑﻼت و‬
‫ﻧﺎﮐﺎرآﻣﺪی ﻻﯾﮥ ‪ IP‬ﺟﺒﺮان و ﺗﺮﻣﯿﻢ ﺷﻮد “‪.‬‬
‫در ﻣﻘﺎم ﻣﻘﺎﯾﺴﻪ ‪ ،‬وﻇﯿﻔﻪای را ﮐﻪ ﻻﯾﮥ اﻧﺘﻘﺎل ﺑﺮ ﻋﻬﺪه دارد ‪ ،‬ﻣﯽﺗﻮان ﺑﺎ وﻇﺎﯾﻔﯽ ﮐــﻪ ”ﺳﯿﺴـﺘﻢ‬
‫ﻣﺪﯾﺮﯾﺖ ﻓﺎﯾﻞ“‪ 2‬ﺑﻪ ﻋﻨﻮان ﺑﺨﺸﯽ از ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺮ ﻋﻬﺪه دارد ‪ ،‬ﻗﯿﺎس ﮐــﺮد‪ .‬ﺳﯿﺴـﺘﻢ ﻣﺪﯾﺮﯾـﺖ‬
‫ﻓﺎﯾﻞ از ﯾﮏ ﻃﺮف ﺑﺎ اﺑﺰارﻫﺎی ذﺧﯿﺮه ﺳﺎزی اﻃﻼﻋﺎت ﮐﻪ ذاﺗﺎً ﺳﺨﺖ اﻓﺰاری ‪ ،‬ﻣﺘﻨﻮع و ﻧﺎﻫﻤﮕﻮن‬
‫ﻫﺴﺘﻨﺪ ‪ ،‬ﺳﺮ و ﮐﺎر دارد و از ﻃﺮف دﯾﮕﺮ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی در ارﺗﺒﺎط اﺳﺖ ﮐﻪ ﺑﺮای ذﺧﯿﺮه‬
‫و ﺑﺎزﯾﺎﺑﯽ اﻃﻼﻋﺎت ﻓﻘﻂ ﻣﻔﻬﻮﻣﯽ ﺑﻪ ﻧﺎم ﻓﺎﯾﻞ ‪ ،‬در اﺧﺘﯿﺎر دارد و از دﯾﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﻧﻮع اﺑـﺰار و‬
‫ﭼﮕﻮﻧﮕﯽ و ﻣﺤﻞ ﻓﯿﺰﯾﮑﯽ ذﺧﯿﺮۀ داده ﻫﺎﯾﺶ ﻣﻬﻢ ﻧﯿﺴــﺖ ‪ ،‬ﺑﻠﮑـﻪ ﻓﻘـﻂ ﻋﻤﻠﯿـﺎت ﻻزم را ﺑﺮﻧﺎﻣـﻪ‬
‫رﯾﺰی ﻣﯿﮑﻨﺪ‪ .‬از دﯾﺪﮔﺎهِ اﺑﺰارﻫﺎی ذﺧﯿﺮه و ﺑﺎزﯾﺎﺑﯽ اﻃﻼﻋﺎت ‪ ،‬ﭼﯿﺰی ﺑــﻪ ﻧـﺎم ﻓـﺎﯾﻞ ‪ ،‬دراﯾﻮﻫـﺎی‬
‫ﻣﻨﻄﻘﯽ )ﻣﺠﺎزی( و ﺟﺪول ‪ 3FAT‬ﻣﻌﻨﺎﯾﯽ ﻧﺪارد ‪ ،‬ﺑﻠﮑﻪ اﯾﻦ اﺑﺰار ﻣﯿﺘﻮاﻧﻨــﺪ ﯾـﮏ ﺑﻠـﻮک داده را ﺑـﺎ‬
‫اﻧﺪازۀ ﺛﺎﺑﺖ ‪ ،‬ﺗﺤﻮﯾﻞ ﮔﺮﻓﺘﻪ و ﺑﺮ روی ﻣﺤﻞ ﻣﺸﺨﺼﯽ از ﻓﻀﺎی ﻓﯿﺰﯾﮑﯽ ذﺧﯿﺮه ﺳﺎزی اﻃﻼﻋــﺎت‬
‫ﺑﻨﻮﯾﺴﻨﺪ ) ﯾﺎ ﺑﺨﻮاﻧﻨﺪ ( ‪ .‬ﺳﯿﺴﺘﻢ ﻣﺪﯾﺮﯾﺖ ﻓﺎﯾﻞ ﮐﻪ ﺑﯿﻦ اﯾﻦ اﺑﺰار ﻓﯿﺰﯾﮑﯽ و ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐــﺎرﺑﺮدی‬
‫ﻗﺮار ﻣﯿﮕﯿﺮد از ﯾﮏ اﺑﺰار ﻓﯿﺰﯾﮑﯽِ ﺧﺎم ‪ ،‬ﯾﮑﭙﺎرﭼﻪ و ﭘﯿﭽﯿﺪه ‪ ،‬ﺧﺪﻣﺎﺗﯽ را در ﻗﺎﻟﺐ ﻣﻔﻬﻮم ﻓﺎﯾﻞ ﺑــﻪ‬
‫ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی اراﺋﻪ ﻣﯿﮑﻨﺪ ﮐﻪ ﮐﺎﻣﻼً ﻗــﺎﺑﻞ اﻋﺘﻤـﺎد ‪ ،‬ﺷـﻔﺎف ‪ ،‬ﺳـﺎده و ﻋـﺎری از ﻫـﺮﮔﻮﻧـﻪ‬
‫ﭘﯿﭽﯿﺪﮔﯽ ﺳﺨﺖ اﻓﺰاری اﺳﺖ‪ .‬ﺳﯿﺴﺘﻢ ﻣﺪﯾﺮﯾﺖ ﻓﺎﯾﻞ ﺑﺮای اراﺋــﮥ ﭼﻨﯿـﻦ ﺧﺪﻣـﺎﺗﯽ ﺑـﺎﯾﺪ ﺟـﺪاول‬
‫‪ ، FAT‬ﺟﺪول دراﯾﻮﻫﺎی ﻣﻨﻄﻘﯽ‪ ، 4‬ﺳﯿﺴﺘﻢ ﻓﻬﺮﺳﺖ ﻓﺎﯾﻠﻬﺎ‪ 5‬و … را اﯾﺠﺎد و ﺳــﺎزﻣﺎﻧﺪﻫﯽ ﻧﻤـﺎﯾﺪ‪.‬‬
‫ﺗﻨﻬﺎ ﮐﺎری ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺑﺮای ﺑﻬﺮه ﮔﯿﺮی از ﺧﺪﻣﺎت ﺳﯿﺴﺘﻢ ﻓﺎﯾﻞ ﺑﺎﯾﺪ اﻧﺠﺎم ﺑﺪﻫﺪ آﻧﺴﺖ ﮐــﻪ‬
‫ﻓﺎﯾﻠﯽ را ﺑﮕﺸﺎﯾﺪ و ﺗﻘﺎﺿﺎی ﺧﻮاﻧﺪن از آن ﯾﺎ ﻧﻮﺷﺘﻦ در آن را ﺑﺪﻫﺪ‪ .‬ﭘﯿﭽﯿﺪﮔﯽ ﻫﺎﯾﯽ ﮐــﻪ در اﯾـﻦ‬
‫ﺑﯿﻦ وﺟﻮد دارد ﺗﻮﺳﻂ ﻣﺪﯾﺮ ﻓﺎﯾﻞ ﺣﻞّ و ﻓﺼﻞ ﻣﯽﺷﻮد‪.‬‬
‫وﻇﯿﻔﮥ ﻻﯾﻪ اﻧﺘﻘﺎل ﻫﻤﯿﻦ ﻣﻔﻬﻮم را دﻧﺒﺎل ﻣﯿﮑﻨﺪ ﯾﻌﻨﯽ ‪ ” :‬ﺑﻬﺮه ﮔﯿﺮی از ﺧﺪﻣــﺎت ﻻﯾـﮥ ‪ IP‬ﮐـﻪ‬
‫ﺳﺮﯾﻊ و ﺳﺎده و در ﻋﯿﻦ ﺣﺎل ﻏﯿﺮﻣﻄﻤﺌﻦ و ﻧﺎﮐﺎرآﻣﺪ اﺳﺖ و اراﺋﮥ ﺧﺪﻣﺎﺗﯽ ﻣﻄﻤﺌﻦ ‪ ،‬ﺳـﺎﺧﺘﺎرﯾﺎﻓﺘﻪ‬
‫‪Transport Layer‬‬
‫‪File Management System‬‬
‫‪File Allocation Table‬‬
‫‪Partition Table‬‬
‫‪Root Directory‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪191‬‬
‫و ﺷﻔﺎف ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی در ﻻﯾﮥ ﺑﺎﻻﺗﺮ ‪ ،‬ﺑﻪ ﮔﻮﻧﻪای ﮐــﻪ ﺑﺮﻧﺎﻣـﻪ ﻧﻮﯾـﺲ از درﮔـﯿﺮی ﺑـﺎ‬
‫ﺟﺰﯾﯿﺎت زﯾﺮﺷﺒﮑﻪ و ﻣﺸﮑﻼت ﮐﺎﻧﺎﻟﻬﺎی اﻧﺘﻘﺎل و ﻣﺴﺎﯾﻠﯽ از اﯾﻦ ﻗﺒﯿﻞ ﺑﻪ دور ﺑﺎﺷﺪ“‪.‬‬
‫ﺑﺮای ﺗﺸﺮﯾﺢ وﻇﺎﯾﻒ ﻻﯾﮥ اﻧﺘﻘﺎل ﺑﺎﯾﺪ ﮐﺎﺳﺘﯽ ﻫﺎی ﻻﯾﮥ ‪ IP‬را ﺑﺮرﺳﯽ ﮐﺮده و ﺳﭙﺲ روﺷــﯽ را‬
‫ﮐﻪ ﻻﯾﮥ اﻧﺘﻘﺎل ﺑﺮای ﺟﺒﺮان آﻧﻬﺎ ﺑﺮﮔﺰﯾﺪه اﺳﺖ ‪ ،‬ﺗﻮﺿﯿﺢ ﺑﺪﻫﯿﻢ‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﻣﻨﺸﺄ ﮐﺎﺳﺘﯽ ﻫــﺎی‬
‫ﻻﯾﮥ ‪ ، IP‬ذاتِ ﮐﺎﻧﺎﻟﻬﺎی اﻧﺘﻘﺎل و ﻣﺸﮑﻼت ﻓﯿﺰﯾﮑﯽ در زﯾﺮﺷﺒﮑﮥ ارﺗﺒﺎﻃﯽ اﺳﺖ‪ .‬ﻋﻤﺪۀ اﯾﻦ ﮐﺎﺳﺘﯽ‬
‫ﻫﺎ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫½ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد وﻗﺘﯽ ﺑﺴﺘﻪای ﺑﺮای ﯾﮏ ﻣﺎﺷﯿﻦ ﻣﻘﺼﺪ ارﺳــﺎل ﻣﯿﺸـﻮد آن ﻣﺎﺷـﯿﻦ آﻣـﺎدۀ‬
‫درﯾﺎﻓﺖ آن ﺑﺴﺘﻪ ﺑﺎﺷﺪ و ﺑﺘﻮاﻧﺪ آﻧﺮا درﯾﺎﻓﺖ ﮐﻨﺪ‪.‬‬
‫½ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد وﻗﺘﯽ ﭼﻨﺪ ﺑﺴﺘﮥ ﻣﺘﻮاﻟﯽ ﺑﺮای ﯾﮏ ﻣﺎﺷﯿﻦ ارﺳﺎل ﻣﯽﺷﻮد ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﯿﺒــﯽ‬
‫ﮐﻪ ﺑﺮ روی ﺷﺒﮑﻪ ارﺳﺎل ﺷﺪهاﻧﺪ ‪ ،‬در ﻣﻘﺼﺪ درﯾﺎﻓﺖ ﺷﻮﻧﺪ‪.‬‬
‫½ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد ﮐﻪ وﻗﺘﯽ ﺑﺴﺘﻪای ﺑﺮای ﯾﮏ ﻣﻘﺼﺪ ارﺳﺎل ﻣﯽﺷﻮد ‪ ،‬ﺑﻪ دﻟﯿﻞ دﯾــﺮ رﺳـﯿﺪن‬
‫ﻣﺠﺪداً ارﺳﺎل ﻧﺸﻮد و در ﭼﻨﯿﻦ ﺣﺎﻟﺘﯽ ﻣﻤﮑﻦ اﺳﺖ ﺑﺴﺘﻪای ﺑﻪ اﺷﺘﺒﺎه دو ﺑﺎر‪ 1‬در ﻣﻘﺼﺪ درﯾـﺎﻓﺖ‬
‫ﺷﻮد‪ .‬ﻻﯾﮥ ‪ IP‬ﻗﺎدر ﻧﯿﺴﺖ ﺗﻤﺎﯾﺰی ﺑﯿﻦ دو ﺑﺴﺘﮥ ﻋﯿﻦ ﻫﻢ ‪ ،‬ﮐﻪ ﯾﮑﯽ از آﻧﻬﺎ زاﺋﺪ اﺳﺖ ﻗﺎﺋﻞ ﺷــﻮد و‬
‫ﻫﺮ دو را ﺗﺤﻮﯾﻞ ﻣﺎﺷﯿﻦ ﻣﻘﺼﺪ ﻣﯽدﻫﺪ‪.‬‬
‫½ ﻻﯾﮥ ‪ IP‬ﻫﯿﭻ وﻇﯿﻔﻪای در ﻗﺒﺎل ﺗﻮزﯾﻊ ﺑﺴﺘﻪ ﻫﺎ ﺑﯿﻦ ﭘﺮوﺳﻪ ﻫﺎی ﻣﺨﺘﻠﻔﯽ ﮐﻪ ﺑﺮ روی ﯾﮏ ﻣﺎﺷﯿﻦ‬
‫واﺣﺪ اﺟﺮا ﺷﺪهاﻧﺪ ﻧﺪارد‪ .‬در ﯾﮏ ﻣﺤﯿﻂ ”ﭼﻨﺪ ﮐﺎرﺑﺮه“‪ 2‬ﯾﺎ ”ﭼﻨﺪ وﻇﯿﻔﻪای“‪ 3‬ﻣﻤﮑﻦ اﺳﺖ ﭼﻨﺪﯾﻦ‬
‫ﭘﺮوﺳﮥ ﻣﺘﻔﺎوت ﺗﻘﺎﺿﺎی ارﺳﺎل ﯾﺎ درﯾﺎﻓﺖ داده داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ .‬ﺣﺎل ﻓﺮض ﮐﻨﯿﺪ ﺑﺴﺘﻪای ﺑﻪ ﻻﯾــﮥ ‪IP‬‬
‫از ﯾﮏ ﻣﺎﺷﯿﻦ واﺣﺪ ‪ ،‬ﺗﺤﻮﯾﻞ داده ﺷﻮد‪ .‬داده ﻫﺎی درون اﯾﻦ ﺑﺴﺘﻪ ﻣﺘﻌﻠﻖ ﺑﻪ ﮐﺪاﻣﯿﻦ ﭘﺮوﺳــﮥ در‬
‫ﺣﺎل اﺟﺮا روی آن ﻣﺎﺷﯿﻦ اﺳﺖ؟ از دﯾﺪﮔﺎه ﻻﯾﮥ ‪ IP‬ﻣﻔﻬﻮﻣﯽ ﺑﻪ ﻧﺎم ”ﭘﺮوﺳﻪ ﻫﺎی ﻣﺘﻔﺎوتِ در ﺣﺎل‬
‫اﺟﺮا“ ‪ ،‬رﺳﻤﯿّﺖ و ﻫﻮﯾّﺖ ﻧﺪارد‪.‬‬
‫½ ﻻﯾﮥ ‪ IP‬ﻫﯿﭻ وﻇﯿﻔﻪای در ﻗﺒﺎل ﺗﻨﻈﯿﻢ ﺳﺮﻋﺖ ﺗﺤﻮﯾﻞ ﺑﺴﺘﻪ ﻫﺎ ﺑﻪ ﯾﮏ ﻣﺎﺷﯿﻦ ﻧﺪارد‪ .‬ﻣﺜﻼً ﻣﻤﮑــﻦ‬
‫اﺳﺖ ﯾﮏ ﻣﺎﺷﯿﻦ ﺑﺎ ﺳﺮﻋﺖ ﺑﺴﯿﺎر زﯾﺎد ﺑﺴﺘﻪ ﻫﺎﯾﯽ را ﺗﻮﻟﯿﺪ ﮐﺮده و ﺗﺤﻮﯾــﻞ ﻻﯾـﮥ ‪ IP‬ﺑﺪﻫـﺪ وﻟـﯽ‬
‫ﻣﺎﺷﯿﻦ ﻣﻘﺼﺪ ﻗﺎدر ﻧﺒﺎﺷﺪ ﺑﺴﺘﻪ ﻫﺎ را ﺑﺎ اﯾﻦ ﺳﺮﻋﺖ درﯾﺎﻓﺖ ﮐﻨﺪ و ﺑﺴﺘﻪ ﻫــﺎ در ﻣﻘﺼـﺪ ﺑـﻪ دﻟﯿـﻞ‬
‫ﻋﺪم ﺗﻮاﻧﺎﯾﯽ در درﯾﺎﻓﺖ ‪ ،‬از ﺑﯿﻦ ﺑﺮوﻧﺪ‪.‬‬
‫در ﻻﯾﮥ اﻧﺘﻘﺎل دو ﭘﺮوﺗﮑﻞ ﺑﻪ ﻧﺎﻣﻬﺎی ‪ TCP4‬و ‪ UDP1‬ﺗﻌﺮﯾﻒ ﺷﺪهاﻧﺪ ﮐﻪ اﺑﺘﺪا ﭘﺮوﺗﮑــﻞ ‪ TCP‬را‬
‫ﮐﻪ ﺗﻤﺎم ﮐﺎﺳﺘﯽ ﻫﺎی ﻋﻨﻮان ﺷﺪه را ﺟﺒﺮان ﮐﺮده ﻣﻌﺮﻓــﯽ ﻣﯽﮐﻨﯿـﻢ و ﻧـﻬﺎﯾﺘﺎً ﺑـﻪ ﭘﺮوﺗﮑـﻞ ‪ UDP‬و‬
‫ﻣﺸﺨﺼﺎت آن ﺧﻮاﻫﯿﻢ ﭘﺮداﺧﺖ‪.‬‬
‫‪Duplication Problem‬‬
‫‪Multi User‬‬
‫‪Muti Task‬‬
‫‪Transmission Control Protocol‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪192‬‬
‫‪ (2‬راﻫﮑﺎرﻫﺎی ﭘﺮوﺗﮑﻞ ‪ TCP‬ﺑﺮای ﺟﺒﺮان ﮐﺎﺳﺘﯽ ﻫﺎی ﻻﯾﮥ ‪IP‬‬
‫در اﯾﻦ ﺑﺨﺶ ﻣﻔﻬﻮم ﻋﻤﻠﯿﺎﺗﯽ ﮐﻪ ﭘﺮوﺗﮑﻞ ‪ TCP‬ﺑﺮای ﺟﺒﺮان ﮐﺎﺳﺘﯿﻬﺎی ﻻﯾﮥ ‪ IP‬اﻧﺠﺎم ﻣﯿﺪﻫﺪ ‪،‬‬
‫ﺑﺮرﺳﯽ ﻣﯽﺷﻮد و ﺳﭙﺲ ﺟﺰﺋﯿﺎت اﯾﻦ ﻋﻤﻠﯿﺎت را در ﺑﺨﺸﻬﺎی آﺗﯽ اراﺋﻪ ﻣﯽدﻫﯿﻢ‪.‬‬
‫اوﻟﯿﻦ ﮐﺎﺳﺘﯽ در ﻻﯾﮥ ‪ ، IP‬ﻋﺪم ﺗﻀﻤﯿﻦ در آﻣﺎده ﺑــﻮدن و ﺗﻮاﻧـﺎﯾﯽ درﯾـﺎﻓﺖ داده ﻫـﺎ ﺗﻮﺳـﻂ‬
‫ﻣﺎﺷﯿﻦ ﻣﻘﺼﺪ ‪ ،‬ﻋﻨﻮان ﺷﺪ‪ .‬در ﭘﺮوﺗﮑﻞ ‪ TCP‬راﻫﮑﺎری ﺳﺎده وﮐﺎرآﻣﺪ ﺑــﺮای اﯾـﻦ ﻣﺸـﮑﻞ اﺗﺨـﺎذ‬
‫ﺷﺪه اﺳﺖ‪ ” :‬ﺑﺮﻗﺮاری ﯾﮏ ارﺗﺒﺎط و اﻗﺪام ﺑﻪ ﻫﻤﺎﻫﻨﮕﯽ ﺑﯿﻦ ﻣﺒﺪأ و ﻣﻘﺼﺪ ‪ ،‬ﻗﺒﻞ از ارﺳﺎل ﻫﺮﮔﻮﻧﻪ‬
‫داده“‪.‬‬
‫ﺑﺮای ﺗﺸﺮﯾﺢ اﯾﻦ راه ﺣﻞ ‪ ،‬ﻓﺮض ﮐﻨﯿﺪ ﭘﺮوﺳﮥ ‪ A‬ﺗﻤﺎﯾﻞ داﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺮای ﭘﺮوﺳﮥ ‪ B‬ﺑــﺮ روی‬
‫ﯾﮏ ﻣﺎﺷﯿﻦ ﻣﺸﺨﺺ ‪ ،‬داده ﻫﺎﯾﯽ را ارﺳﺎل ﮐﻨﺪ؛ ﻗﺒﻞ از اﻗﺪام ﺑﻪ ارﺳﺎل داده ﺑﻪ ﺻﻮرت زﯾﺮ ﻋﻤــﻞ‬
‫ﻣﯽﮐﻨﺪ‪:‬‬
‫اﻟﻒ( ‪ A‬ﯾﮏ ﺑﺴﺘﮥ ﺧﺎص را ﺑﻪ ﻋﻨﻮان درﺧﻮاﺳﺖ ﺑﺮای ارﺗﺒﺎط ‪ ،‬ﺑﻪ آدرس ﻣﺎﺷﯿﻦ ‪ B‬ﻣﯽﻓﺮﺳﺘﺪ‬
‫و ﻣﻨﺘﻈﺮ ﻣﯽﻣﺎﻧﺪ‪.‬‬
‫ب ( ‪ B‬درﺧﻮاﺳﺖ ارﺗﺒﺎط را درﯾﺎﻓﺖ ﮐﺮده و ﺑﺮ ﺣﺴﺐ ﺷﺮاﯾﻂ ‪ ،‬آﻣﺎدﮔﯽ ﯾﺎ ﻋــﺪم آﻣـﺎدﮔـﯽ‬
‫ﺧﻮد را ﺑﻪ ‪ A‬اﻋﻼم ﻣﯿﻨﻤﺎﯾﺪ‪ ) .‬ﻣﻤﮑﻦ اﺳﺖ ‪ B‬اﺻﻼً وﺟﻮد ﺧﺎرﺟﯽ ﻧﺪاﺷــﺘﻪ ﺑﺎﺷـﺪ و ﻃﺒﻌـﺎً ﻫﯿـﭻ‬
‫ﭘﺎﺳﺨﯽ ﺑﺮ ﻧﻤﯿﮕﺮدد‪( .‬‬
‫ج ( در ﺻﻮرﺗﯽ ﮐﻪ ‪ A‬در ﯾﮏ ﻣﻬﻠﺖ زﻣﺎن ﻣﺸﺨﺺ ‪ ،‬ﭘﺎﺳﺦ ﻣﺜﺒـﺖ ﻣﺒﻨـﯽ ﺑـﺮ آﻣـﺎده ﺑـﻮدن ‪B‬‬
‫درﯾﺎﻓﺖ ﻧﻤﺎﯾﺪ ﻣﯿﺘﻮاﻧﺪ ﺑﻪ ارﺳﺎل داده ﻫﺎ اﻗﺪام ﻧﻤﺎﯾﺪ‪.‬‬
‫ﺑﻪ ﭘﺮوﺗﮑﻠﻬﺎﯾﯽ ﮐﻪ ﻗﺒﻞ از ﻣﺒﺎدﻟﮥ داده ﻫﺎ ﺳﻌﯽ در ﺑﺮﻗﺮاری ﯾــﮏ ارﺗﺒـﺎط و اﯾﺠـﺎد ﻫﻤـﺎﻫﻨﮕﯽ‬
‫ﻗﺒﻠﯽ ﻣﯽﻧﻤﺎﯾﻨﺪ ﭘﺮوﺗﮑﻠﻬﺎی ”اﺗﺼﺎل ﮔﺮا“‪ 2‬ﮔﻔﺘﻪ ﻣﯿﺸﻮد‪ .‬در اﯾﻦ ﭘﺮوﺗﮑﻠﻬﺎ ﺧﺎﺗﻤﮥ ﻣﺒﺎدﻟﮥ داده ﻫﺎ ﻧـﯿﺰ‬
‫ﺑﺎﯾﺴﺘﯽ در ﯾﮏ روﻧﺪ ﻫﻤﺎﻫﻨﮓ و ﺑﺎ اﻃﻼع ﻗﺒﻠﯽ اﻧﺠﺎم ﺷﻮد‪:‬‬
‫اﻟﻒ( ‪ A‬ﺧﺎﺗﻤﮥ ارﺳﺎل داده ﻫﺎی ﺧﻮد را اﻋﻼم ﻣﯽﮐﻨﺪ وﻟﯽ ﺑﺎﯾﺪ ﻣﻨﺘﻈــﺮ ﺑﻤـﺎﻧﺪ و ﺑـﻪ درﯾـﺎﻓﺖ‬
‫داده ﻫﺎی ارﺳﺎﻟﯽ از ﻃﺮف ‪ B‬اداﻣﻪ ﺑﺪﻫﺪ ﺗﺎ آ ﻧﮑﻪ ‪ B‬ﻧﯿﺰ اﻋﻼم ﺧﺘﻢ ارﺗﺒﺎط را ﺗﺎﯾﯿﺪ ﮐﻨﺪ‪.‬‬
‫ب ( ‪ B‬ﻧﯿﺰ اﻋﻼم ﺧﺘﻢ ارﺗﺒﺎط ﮐﺮده و ارﺗﺒﺎط ‪ ،‬در ﯾﮏ روﻧﺪ ﻫﻤﺎﻫﻨﮓ ﺧﺎﺗﻤﻪ ﻣﯽﯾﺎﺑﺪ‪.‬‬
‫اﻟﺒﺘﻪ ﻣﻤﮑﻦ اﺳﺖ اﺗﻔﺎﻗﺎﺗﯽ در ﺧﻼل ﻣﺒﺎدﻟﮥ داده ﻫﺎ رخ ﺑﺪﻫﺪ ﮐﻪ ﺗﻮﺳﻂ ﻻﯾﮥ ‪ TCP‬ﻗــﺎﺑﻞ ﺣـﻞ‬
‫ﻧﺒﺎﺷﺪ ) ﻣﺜﻞ ﺧﺮاﺑﯽ ﺧﻂ ﯾﺎ ﺧﺎﺗﻤﻪ ﻧﺎﻫﻨﮕﺎم ﯾﮑﯽ از ﺑﺮﻧﺎﻣﻪ ﻫﺎی ‪ A‬ﯾﺎ ‪ B‬ﺗﻮﺳﻂ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ در اﺛﺮ‬
‫‪1‬‬
‫‪User‬‬
‫‪2‬‬
‫‪Datagram Protocol‬‬
‫‪Connectuion Oriented‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪193‬‬
‫ﺑﺮوز ﯾﮏ ﻣﺸﮑﻞ داﺧﻠﯽ‪ ،1‬ﯾﺎ ﻫﺮ اﺗﻔﺎق دﯾﮕﺮ ( اﯾﻦ ﻣﺸﮑﻼت در ﭘﺮوﺗﮑﻞ ‪ TCP‬ﺗﻮﺳﻂ زﻣﺎن ﺳــﻨﺞ‬
‫ﻫﺎی ﺧﺎﺻّﯽ ﮐﺸﻒ و ﻣﺪﯾﺮﯾﺖ ﻣﯽﺷﻮﻧﺪ ﮐﻪ در ﺑﺨﺸﯽ ﻣﺠﺰا ﺑﻪ آﻧﻬﺎ ﺧﻮاﻫﯿﻢ ﭘﺮداﺧﺖ‪.‬‬
‫ﻣﻌﻀﻼت ﺑﻌﺪی در ﻻﯾﮥ ‪ IP‬ﺗﻀﻤﯿﻦ ﺑﻪ ﺗﺮﺗﯿﺐ رﺳﯿﺪن داده ﻫﺎ و ﺻﺤّﺖ آﻧﻬﺎﺳــﺖ‪ .‬ﺣـﻞّ اﯾـﻦ‬
‫ﻣﺴﺎﯾﻞ ﭼﻨﺪان ﻣﺸﮑﻞ ﻧﯿﺴﺖ‪ .‬ﻣﺠﺪداّ ﻓﺮض ﮐﻨﯿﺪ ﭘﺮوﺳﮥ ‪ A‬ﺗﻤﺎﯾﻞ داﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺮای ﭘﺮوﺳﮥ ‪ B‬ﺑــﺮ‬
‫روی ﯾﮏ ﻣﺎﺷﯿﻦ ﻣﺸﺨﺺ ‪ ،‬داده ﻫﺎﯾﯽ را ارﺳﺎل ﮐﻨﺪ و ﻗﺒﻞ از اﻗﺪام ﺑﻪ ارﺳﺎل داده ﻫﺎ ﯾﮏ ارﺗﺒﺎط‬
‫ﻣﻮﻓﻖ ﺑﺮﻗﺮار ﮐﺮده ﺑﺎﺷﺪ‪ .‬ﺑﺮای ﺗﻀﻤﯿﻦ ﺻﺤّﺖ و ﺗﺮﺗﯿﺐ داده ﻫﺎ روﻧﺪ زﯾﺮ ﻗﺎﺑﻞ اﻧﺠﺎم اﺳﺖ‪:‬‬
‫اﻟﻒ( ‪ A‬ﺑﺨﺸﯽ از داده ﻫﺎﯾﯽ ﮐﻪ ﺑﺎﯾﺪ ارﺳﺎل ﺷﻮﻧﺪ را در ﻗﺎﻟﺐ ﯾﮏ ﺑﺴﺘﻪ ﺳﺎزﻣﺎﻧﺪﻫﯽ ﮐــﺮده و‬
‫در ﺳﺮآﯾﻨﺪ آن ﯾﮏ ”ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ“‪ 2‬ﺗﻨﻈﯿﻢ ﻣﯽﻧﻤﺎﯾﺪ؛ ﺳﭙﺲ ﺿﻤﻦ ﻧﮕﻬﺪاری آن ﺑﺴﺘﻪ درون ﯾــﮏ‬
‫ﺑﺎﻓﺮ ‪ ،‬آن را ﺟﻬﺖ ﻫﺪاﯾﺖ ﺑﻪ ﺳﻤﺖ ﻣﻘﺼﺪ ‪ ،‬ﺗﺤﻮﯾﻞ ﻻﯾﮥ ‪ IP‬ﻣﯽدﻫﺪ و ﯾﮏ ”زﻣﺎن ﺳــﻨﺞ“ ﺗﻨﻈﯿـﻢ‬
‫ﻣﯿﻨﻤﺎﯾﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺮای ﻧﻈﺎرت ﺑﺮ ﺧﻄﺎﻫﺎی اﺣﺘﻤﺎﻟﯽ ﯾﮏ ﮐﺪ ‪ 16‬ﺑﯿﺘــﯽ ﮐﺸـﻒ ﺧﻄـﺎ در ﺳـﺮآﯾﻨﺪ‬
‫ﺑﺴﺘﻪ ﻗﺮار ﻣﯽدﻫﺪ‪.‬‬
‫ب ( در ﺻﻮرﺗﯽ ﮐﻪ ‪ B‬ﺑﺴﺘﮥ ارﺳﺎﻟﯽ از ‪ A‬را ﺳﺎﻟﻢ درﯾﺎﻓﺖ ﮐﺮد ‪ ،‬ﯾــﮏ ”ﭘﯿﻐـﺎم ﺗﺼﺪﯾـﻖ“ ﮐـﻪ‬
‫‪3‬‬
‫اﺧﺘﺼﺎراً ‪ Ack‬ﻧﺎﻣﯿﺪه ﻣﯿﺸﻮد ﺑﺮای ‪ A‬ﭘﺲ ﻣﯽﻓﺮﺳﺘﺪ‪.‬‬
‫ج ( اﮔـﺮ ‪ A‬در زﻣـﺎن ﻣﻘـﺮّر ﭘﯿﻐـﺎم ‪ Ack‬را درﯾـﺎﻓﺖ ﮐـﺮد ‪ ،‬ﺑـﺎﻓﺮ ﻣﺮﺑـﻮط ﺑـــﻪ آن ﺑﺴــﺘﻪ را‬
‫آزاد ﮐﺮده و اﻗــﺪام ﺑـﻪ اداﻣـﮥ ارﺳـﺎل داده ﻫـﺎ ﺑـﻪ ﻫﻤﯿـﻦ روال ﻣﯿﻨﻤـﺎﯾﺪ‪ .‬اﮔـﺮ ﺑـﻪ دﻟﯿـﻞ ﺧﺮاﺑـﯽ‬
‫داده ﻫـﺎ ) ﯾـﺎ ﺧﺮاﺑـﯽ ﭘﯿﻐـﺎم ‪ Ack‬در ﻣﺴـﯿﺮ ﺑـﺮﮔﺸـــﺖ ( در ﻣــﻬﻠﺖ ﻣﻘــﺮر ﭘﯿﻐــﺎم ﺗﺼﺪﯾــﻖ‬
‫‪4‬‬
‫درﯾﺎﻓﺖ ﻧﺸﻮد ‪ ،‬ﺑﺴﺘﻪ ﺑﺎﻓﺮﺷــﺪه از ﻧـﻮ ارﺳـﺎل ﻣﯿﺸـﻮد‪.‬‬
‫ﺑﺎ ﻗــﺮار دادن ﺷـﻤﺎرۀ ﺗﺮﺗﯿـﺐ ﺑـﺮای داده ﻫـﺎ ﻣﯽﺗـﻮان ﺗﻀﻤﯿـﻦ ﮐـﺮد ﮐـﻪ ﺟﺮﯾـﺎن داده ﻫـﺎ ﺑـﻪ‬
‫ﺗﺮﺗﯿﺐ ﻣﯽرﺳــﻨﺪ و ﺑـﻪ ﻫـﺮ دﻟﯿﻠـﯽ اﮔـﺮ ﺑﺴـﺘﻪای دو ﺑـﺎر درﯾـﺎﻓﺖ ﺷـﻮﻧﺪ ‪ ،‬ﺑـﺎ ﻣﻘﺎﯾﺴـﮥ ﺷـﻤﺎره‬
‫ﻫﺎی ﺗﺮﺗﯿﺐ ‪ ،‬ﯾﮑــﯽ از آﻧـﻬﺎ دور اﻧﺪاﺧﺘـﻪ ﻣﯽﺷـﻮد‪.‬‬
‫ﺑـﺎ ﺗﻨﻈﯿـﻢ ﯾـﮏ ﮐـﺪ ‪ 16‬ﺑﯿﺘـﯽ ﮐﺸـﻒ ﺧﻄـــﺎ در ﻣﺒــﺪأ و ﺑﺮرﺳــﯽ ﻣﺠــﺪّد آن در ﻣﻘﺼــﺪ ‪،‬‬
‫ﻣﯽﺗـﻮان از ﺻﺤـﺖ داده ﻫـﺎ ﻧـﯿﺰ ﻣﻄﻤﺌـﻦ ﺷـﺪ‪ .‬ﺟﺰﺋﯿـﺎت اﯾـﻦ ﻋﻤﻠﯿـﺎت ﺑـﺎ ﺗﺸـﺮﯾﺢ ﭘﺮوﺗﮑـــﻞ‬
‫‪ TCP‬ﻣﺸﺨﺺ ﺧﻮاﻫــﺪ ﺷـﺪ‪.‬‬
‫‪Bug‬‬
‫‪Sequence Number‬‬
‫‪1‬‬
‫‪2‬‬
‫‪ 3‬ارﺳﺎل ‪ Ack‬ﻣﻌﻤﻮﻻ ﺑﺼـﻮرت ﻣﺠـﺰا ارﺳـﺎل ﻧﻤﯿﺸـﻮد ﺑﻠﮑـﻪ ﺿﻤﯿﻤـﮥ اﻃﻼﻋـﺎﺗﯽ ﻣﯿﺸـﻮد ﮐـﻪ ﻗـﺮار اﺳـﺖ در ﭘﺎﺳـﺦ ‪،‬‬
‫ارﺳﺎل ﺷﻮد ‪ ،‬ﻣﮕﺮ آﻧﮑﻪ داده ای ﺑﺮای ارﺳﺎل وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ؛ ﺑﻪ اﯾﻦ روش ‪ Piggy Backing‬ﮔﻔﺘﻪ ﻣﯿﺸﻮد‪.‬‬
‫‪ 4‬ﺑﻪ ﭘﺮوﺗﮑﻬﺎﯾﯽ ﮐﻪ ﻓﻘﻂ در ﻫﻨﮕﺎم درﯾﺎﻓﺖ ﺻﺤﯿﺢ داده ﻫﺎ ﭘﯿﻐﺎم ‪ Ack‬ﺑﺮﻣﯿﮕﺮداﻧﻨﺪ و در ﺻﻮرت درﯾﺎﻓﺖ ﺑﺴﺘﮥ‬
‫ﺧﺮاب ﺳﺎﮐﺖ ﻣﯿﻤﺎﻧﻨﺪ ‪ ،‬ﭘﺮوﺗﮑﻠﻬﺎی ‪ -Positive Acknowledgement with Retransmission- PAR‬ﮔﻔﺘﻪ ﻣﯿﺸﻮد‪.‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪194‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫در ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﺑـﺮای ﺑـﻪ رﺳـﻤﯿّﺖ ﺷـﻨﺎﺧﺘﻦ ﭘﺮوﺳـﻪ ﻫـﺎی ﻣﺨﺘﻠﻔـﯽ ﮐـﻪ ﺑـــﺮ روی ﯾــﮏ‬
‫ﻣﺎﺷﯿﻦ در ﺣﺎل اﺟﺮا ﻫﺴﺘﻨﺪ راه ﺣــﻞ زﯾـﺮ اراﺋـﻪ ﺷـﺪه اﺳـﺖ‪:‬‬
‫ﻫـﺮ ﭘﺮوﺳـﻪ ﺑـﺮای ﺗﻘﺎﺿـﺎی ﺑﺮﻗـﺮاری ﯾـﮏ ارﺗﺒـﺎط ﺑـﺎ ﭘﺮوﺳـﻪای دﯾﮕـﺮ روی ﺷـﺒﮑﻪ ‪ ،‬ﯾــﮏ‬
‫ﺷﻤﺎرۀ ﺷﻨﺎﺳﺎﯾﯽ ﺑــﺮای ﺧـﻮد ﺑﺮﻣـﯽﮔﺰﯾﻨـﺪ‪ .‬ﺑـﻪ اﯾـﻦ ﺷـﻤﺎرۀ ﺷﻨﺎﺳـﺎﯾﯽ ”آدرس ﭘـﻮرت“‪ 1‬ﮔﻔﺘـﻪ‬
‫ﻣﯽﺷـﻮد‪ .‬در ﺳـﺮآﯾﻨﺪ ﺑﺴـﺘﻪای ﮐـﻪ ﺗﻮﺳـﻂ ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﺳـﺎزﻣﺎﻧﺪﻫﯽ ﻣﯽﺷـﻮد آدرس ﭘــﻮرت‬
‫ﭘﺮوﺳـﮥ ﻓﺮﺳـﺘﻨﺪه و آدرس ﭘـﻮرت ﭘﺮوﺳـﮥ ﮔـﯿﺮﻧﺪۀ آن درج ﻣﯽﺷـــﻮد‪ .‬ﯾﮑﺘــﺎ ﺑــﻮدن ﺷــﻤﺎره‬
‫ﻫـﺎی ﭘـﻮرت ﮐـﻪ ﺑـﻪ ﭘﺮوﺳـﻪ ﻫـﺎ رﺳـﻤﯿﺖ و ﻫﻮﯾـﺖ ﻣﯽﺑﺨﺸـﺪ ‪ ،‬ﺗﻮﺳـﻂ ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﺑـــﻪ‬
‫ﻋﻨـﻮان ﺟﺰﺋـﯽ از ﺳﯿﺴـﺘﻢ ﻋـﺎﻣﻞ ﻧﻈـﺎرت ﺧﻮاﻫـﺪ ﺷـﺪ‪ .‬ﺳﯿﺴـﺘﻢ ﻋـﺎﻣﻞ ﺟﺪوﻟـﯽ را ﻧﮕـــﻬﺪاری‬
‫ﻣﯿﮑﻨﺪ ﮐﻪ ﺷــﻤﺎره ﺷﻨﺎﺳـﺎﯾﯽ ﺗﻘﺎﺿـﺎ دﻫﻨـﺪۀ ارﺗﺒـﺎط در آن وﺟـﻮد دارد‪.‬‬
‫ﺑـﻪ ﺷـﮑﻞ )‪ (5-1‬دﻗـﺖ ﮐﻨﯿـﺪ‪ .‬آدرس ‪ ، IP‬ﯾـﮏ ﻣﺎﺷـﯿﻦ ﯾﮑﺘـﺎ را در ﮐـﻞ ﺷـــﺒﮑﻪ ﻣﺸــﺨﺺ‬
‫ﻣﯽﻧﻤﺎﯾﺪ؛ ﺷﻤﺎرۀ ﭘــﻮرت ﻧـﯿﺰ از ﺑﯿـﻦ ﭘﺮوﺳـﻪ ﻫـﺎی اﺟـﺮا ﺷـﺪه ﺑـﺮ روی آن ﻣﺎﺷـﯿﻦ ‪ ،‬ﯾﮑـﯽ از‬
‫آﻧﻬﺎ را ﺑــﻪ ﻋﻨـﻮان ﻣﺒـﺪأ )ﯾـﺎ ﻣﻘﺼـﺪ( ﺗﻌﯿﯿـﻦ ﻣﯽﮐﻨـﺪ‪ .‬ﺑﻨـﺎﺑﺮاﯾﻦ زوجِ آدرس ‪ IP‬و آدرس ﭘـﻮرت‬
‫ﻣﯽﺗﻮاﻧـﺪ ﯾـﮏ ﭘﺮوﺳـﮥ ﯾﮑﺘـﺎ و واﺣـﺪ را ﺑـﺮ روی ﻫـﺮ ﻣﺎﺷـﯿﻦ در دﻧﯿـﺎ ﻣﺸـــﺨﺺ ﻧﻤــﺎﯾﺪ‪ .‬در‬
‫ادﺑﯿﺎت ﺷــﺒﮑﻪ ﺑـﻪ اﯾـﻦ زوج آدرس ‪” ،‬آدرس ﺳـﻮﮐﺖ“ ﮔﻔﺘـﻪ ﻣﯽﺷـﻮد‪:‬‬
‫‪( IP Address : Port Number ) = Socket Address‬‬
‫‪193.142.22.121:80‬‬
‫ﻣﺜﺎل ‪:‬‬
‫) اﻟﺒﺘـﻪ اﺻﻄـﻼح ”آدرس ﺳـﻮﮐﺖ“ ﻧﺒـﺎﯾﺪ ﺑـﺎ ﻣﻔـﻬﻮم ”ﺑﺮﻧﺎﻣـﻪ ﻧﻮﯾﺴـﯽ ﺳـﻮﮐﺖ“ اﺷـﺘﺒﺎه ﺷــﻮد ‪،‬‬
‫آﻧﺮا در ﻓﺼﻠﯽ ﺟﺪاﮔﺎﻧﻪ ﺑــﻪ ﺗﻔﺼﯿـﻞ ﺑﺮرﺳـﯽ ﺧﻮاﻫﯿـﻢ ﮐـﺮد‪(.‬‬
‫ﺷﮑﻞ )‪ (5-1‬آدرس دﻫﯽ ﭘﺮوﺳﻪ ﻫﺎ ﺑﻮﺳﯿﻠﮥ ﺷﻤﺎره ﭘﻮرت روی ﯾﮏ ﻣﺎﺷﯿﻦ واﺣﺪ‬
‫‪Port Number‬‬
‫‪1‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪195‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﺑـﺮای ﺣـﻞ ﻣﺴـﺌﻠﮥ ﻫﻤـﺎﻫﻨﮕﯽ ﺳـﺮﻋﺖ ارﺳـﺎل و درﯾـــﺎﻓﺖ در ﭘﺮوﺗﮑــﻞ ‪ TCP‬اﻟﮕﻮرﯾﺘﻤــﯽ‬
‫ﭘﻮﯾﺎ ﺑﺮای ﺗﻨﻈﯿﻢ ﻣﺠﻤﻮﻋــﮥ زﻣـﺎن ﺳـﻨﺠﻬﺎﯾﯽ ﮐـﻪ در اﯾـﻦ راﺑﻄـﻪ اﻧﺠـﺎم وﻇﯿﻔـﻪ ﻣﯽﻧﻤـﺎﯾﻨﺪ ﺑﮑـﺎر‬
‫ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ ﮐﻪ در ﺑﺨﺸــﯽ ﻣﺠـﺰا ﺗﺸـﺮﯾﺢ ﺧﻮاﻫـﺪ ﺷـﺪ‪.‬‬
‫ﻗﺒﻞ از وارد ﺷــﺪن ﺑـﻪ ﺟﺰﺋﯿـﺎت ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﺑـﻬﺘﺮ اﺳـﺖ ﺳـﺎﺧﺘﺎر ﺑﺴـﺘﻪ ای را ﮐـﻪ اﯾـﻦ‬
‫ﭘﺮوﺗﮑﻞ ﺑﺮای ﺗﺤﻮﯾــﻞ ﺑـﻪ ﻻﯾـﮥ ‪ IP‬ﺗﻨﻈﯿـﻢ و ﺳـﺎزﻣﺎﻧﺪﻫﯽ ﻣﯿﮑﻨـﺪ ‪ ،‬ﻣـﻮرد ﺑﺮرﺳـﯽ ﻗـﺮار ﺑﺪﻫﯿـﻢ‬
‫ﭼﺮا ﮐﻪ ﺑﺴﯿﺎری از ﻣﺴﺎﺋﻞ ﺑﺎ ﺑﺮرﺳــﯽ ﺳـﺎﺧﺘﺎر اﯾـﻦ ﺑﺴـﺘﻪ آﺷـﮑﺎر ﺧﻮاﻫـﺪ ﺷـﺪ‪ ) .‬ﺑﺴـﺘﻪای ﮐـﻪ‬
‫در ﻻﯾـﮥ اﻧﺘﻘـﺎل ﺗﻮﻟﯿـﺪ و ﺗﻨﻈﯿـﻢ ﻣﯽﺷـﻮد ‪” ،‬ﻗﻄﻌـــﮥ ‪ 1“TCP‬ﯾــﺎ ‪ TPDU2‬ﻧــﺎم دارد ‪ ،‬ﮐــﻪ ﺑــﻪ‬
‫اﺧﺘﺼﺎر ﺑﻪ آن ﺑﺴــﺘﮥ ‪ TCP‬ﺧﻮاﻫﯿـﻢ ﮔﻔـﺖ‪( .‬‬
‫ﭘﺮوﺗﮑــﻞ ‪TCP‬‬
‫‪ (3‬ﺳـﺎﺧﺘﺎر ﺑﺴـﺘﻪ ﻫـﺎی‬
‫در اﯾﻦ ﺑﺨﺶ ﯾــﮏ دﯾـﺪ ﮐﻠـﯽ از ﭘﺮوﺗﮑـﻞ ‪ TCP‬اراﺋـﻪ ﻣﯽﻧﻤـﺎﺋﯿﻢ و ﺳـﺎﺧﺘﺎر ﺳـﺮآﯾﻨﺪ ﺑﺴـﺘﻪ‬
‫ﻫﺎ را در اﯾـﻦ ﭘﺮوﺗﮑـﻞ ‪ ،‬ﺗﻮﺿﯿـﺢ ﺧﻮاﻫﯿـﻢ داد‪ .‬در ﺷـﮑﻞ )‪ (5-2‬ﺳـﺎﺧﺘﺎر ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ﺑـﻪ‬
‫ﺗﺼﻮﯾﺮ ﮐﺸﯿﺪه ﺷــﺪه اﺳـﺖ‪.‬‬
‫‪31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0‬‬
‫‪Source Port‬‬
‫‪Destination Port‬‬
‫‪Sequence Number‬‬
‫‪Acknowledgement Number‬‬
‫‪Window Size‬‬
‫‪U A P R S F‬‬
‫‪R C S S Y I‬‬
‫‪G K H T N N‬‬
‫‪Urgent Pointer‬‬
‫‪TCP‬‬
‫‪Header‬‬
‫‪Length‬‬
‫‪Checksum‬‬
‫)‪Options (0 or more 32-bit words‬‬
‫)‪Data (optional‬‬
‫ﺷﮑﻞ )‪ (5-2‬ﺳﺎﺧﺘﺎر ﯾﮏ ﺑﺴﺘﮥ‬
‫‪TCP‬‬
‫‪TCP Segment‬‬
‫‪Transport Protocol Data Unit‬‬
‫‪1‬‬
‫‪2‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪196‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : Source Port‬در اﯾـﻦ ﻓﯿﻠـﺪ ﯾـﮏ ﺷـﻤﺎرۀ ‪ 16‬ﺑﯿﺘـﯽ ﺑﻌﻨـﻮان آدرس ﭘـﻮرت ﭘﺮوﺳــﮥ‬
‫ﻣﺒﺪأ ﮐﻪ اﯾﻦ ﺑﺴﺘﻪ را ﺟﻬﺖ ارﺳــﺎل ‪ ،‬ﺗﻮﻟﯿـﺪ ﮐـﺮده ‪ ،‬ﻗـﺮار ﺧﻮاﻫـﺪ ﮔﺮﻓـﺖ‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪: Destination Port‬در اﯾـﻦ ﻓﯿﻠـﺪ ‪ ،‬آدرس ﭘـﻮرتِ ﭘﺮوﺳـﮥ ﻣﻘﺼـﺪ ﮐـﻪ آﻧـﺮا ﺗﺤﻮﯾــﻞ‬
‫ﺧﻮاﻫﺪ ﮔﺮﻓﺖ ‪ ،‬ﺗﻌﯿﯿــﻦ ﺧﻮاﻫـﺪ ﺷـﺪ ‪.‬‬
‫ﻫﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در ﺑﺨﺶ ﻗﺒﻠــﯽ اﺷـﺎره ﺷـﺪ اﯾـﻦ دو آدرس ﻣﺸـﺨﺺ ﻣﯽﮐﻨﻨـﺪ ﮐـﻪ اﯾـﻦ ﺑﺴـﺘﮥ از‬
‫ﭼـﻪ ﺑﺮﻧﺎﻣـﮥ ﮐـﺎرﺑﺮدی در ﻻﯾـﻪ ﺑـﺎﻻﺗﺮ ﺗﻮﻟﯿـﺪ و ﺑـﺎﯾﺪ ﺑـﻪ ﭼـــﻪ ﺑﺮﻧﺎﻣــﻪای در ﻣﺎﺷــﯿﻦ ﻣﻘﺼــﺪ‬
‫ﺗﺤﻮﯾـﻞ داده ﺷـﻮد‪ .‬ﺑﺮﺧـﯽ از ﭘﺮوﺳـﻪ ﻫـﺎی ﮐـــﺎرﺑﺮدی و اﺳــﺘﺎﻧﺪارد دارای ﺷــﻤﺎره ﭘــﻮرت‬
‫اﺳﺘﺎﻧﺪارد و ﺟــﻬﺎﻧﯽ ﻫﺴـﺘﻨﺪ؛ ﻣﺜـﻼًُ ﺳـﺮوﯾﺲ دﻫﻨـﺪه ﭘﺴـﺖ اﻟﮑـﺘﺮوﻧﯿﮑﯽ دارای ﺷـﻤﺎره ﭘـﻮرت‬
‫‪ 25‬اﺳﺖ‪ .‬ﺑﻪ ﺟﺪول ﺷﻤﺎره ﭘﻮرﺗــﻬﺎی اﺳـﺘﺎﻧﺪارد در اﻧﺘـﻬﺎی اﯾـﻦ ﻓﺼـﻞ ﻧﮕـﺎﻫﯽ ﺑﯿﻨﺪازﯾـﺪ‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : Sequence Number‬اﯾـﻦ ﻓﯿﻠـﺪ ﺳـﯽ و دو ﺑﯿﺘـﯽ ‪ ،‬ﺷـﻤﺎرۀ ﺗﺮﺗﯿـﺐ آﺧﺮﯾـﻦ ﺑـــﺎﯾﺘﯽ‬
‫را ﮐﻪ در ”ﻓﯿﻠﺪ داده“ از ﺑﺴــﺘﮥ ﺟـﺎری ﻗـﺮار دارد ‪ ،‬ﻧﺸـﺎن ﻣﯽدﻫـﺪ‪.‬‬
‫در ﭘﺮوﺗﮑﻞ ‪ TCP‬ﺷــﻤﺎرۀ ﺗﺮﺗﯿـﺐ ‪ ،‬ﺑـﺮ ﺣﺴـﺐ ﺷـﻤﺎرۀ آﺧﺮﯾـﻦ ﺑـﺎﯾﺘﯽ اﺳـﺖ ﮐـﻪ در ﺑﺴـﺘﮥ‬
‫ﺟـﺎری ﻗـﺮار ﮔﺮﻓﺘـﻪ و ارﺳـﺎل ﺷـﺪه اﺳـﺖ‪ .‬ﺑﻌﻨـﻮان ﻣﺜـﺎل اﮔـﺮ در اﯾـﻦ ﻓﯿﻠـﺪ ﻋـﺪدی ﻣﻌــﺎدل‬
‫‪ 19341‬ﻗﺮار ﺑﮕــﯿﺮد ﺑـﻪ اﯾـﻦ ﻣﻌﻨﺎﺳـﺖ ﮐـﻪ داده ﻫـﺎ ﺗـﺎ ﺑـﺎﯾﺖ ﺷـﻤﺎرۀ ‪ 19341‬درون ﻓﯿﻠـﺪ داده‬
‫ﻗﺮار دارد ‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐــﻪ اﯾـﻦ ﻋـﺪد ﺑﻤﻌﻨـﺎی آن ﻧﯿﺴـﺖ ﮐـﻪ ﺑـﻪ ﺗﻌـﺪادِ ‪ 19341‬ﺑـﺎﯾﺖ ‪ ،‬درون‬
‫ﻗﺴـﻤﺖ داده ﻗـﺮار دارد ‪ ،‬ﺑﻠﮑـﻪ ﻫﻤﯿﺸـﻪ ﺑـــﻪ ﺷــﻤﺎرۀ ﺗﺮﺗﯿــﺐ آﺧﺮﯾــﻦ ﺑــﺎﯾﺖ داده ‪ ،‬اﺷــﺎره‬
‫ﻣﯿﻨﻤﺎﯾﺪ‪ .‬ﯾﻌﻨﯽ ﻣﻤﮑﻦ اﺳــﺖ ﮐـﻪ ﮐـﻼً درون ﻓﯿﻠـﺪ داده ﻓﻘـﻂ ﯾـﮏ ﺑـﺎﯾﺖ ﻗـﺮار داﺷـﺘﻪ ﺑﺎﺷـﺪ در‬
‫ﺣﺎﻟﯽ ﮐــﻪ در ﻓﯿﻠـﺪ ﺷـﻤﺎرۀ ﺗﺮﺗﯿـﺐ ﻋـﺪد ‪ 19341‬ﻗـﺮار داﺷـﺘﻪ ﺑﺎﺷـﺪ‪ .‬دﻗّـﺖ ﺷـﻮد ﮐـﻪ ﺷـﻤﺎرۀ‬
‫ﺗﺮﺗﯿﺐِ اوﻟﯿــﻦ ﺑـﺎﯾﺖ ‪ ،‬از ﺻﻔـﺮ ﺷـﺮوع ﻧﻤﯽﺷـﻮد ﺑﻠﮑـﻪ از ﯾـﮏ ﻋـﺪد ﺗﺼـﺎدﻓﯽ ﮐـﻪ در ﻫﻨﮕـﺎم‬
‫ﺑﺮﻗﺮاری ارﺗﺒﺎط ﺑﻪ اﻃﻼع ﻃﺮﻓﯿــﻦ ﻣﯿﺮﺳـﺪ ‪ ،‬ﺷـﺮوع ﺧﻮاﻫـﺪ ﺷـﺪ‪.‬‬
‫♦ ﻓﯿﻠـﺪ‪ : Acknawledgement Number‬اﯾـﻦ ﻓﯿﻠـﺪ ‪ 32‬ﺑﯿﺘـﯽ ﻧـﯿﺰ ﺷـﻤﺎرۀ ﺗﺮﺗﯿـﺐ ﺑـﺎﯾﺘﯽ ﮐــﻪ‬
‫ﻓﺮﺳـﺘﻨﺪۀ ﺑﺴـﺘﻪ ﻣﻨﺘﻈـﺮِ درﯾـﺎﻓﺖ آن اﺳـﺖ را ﺗﻌﯿﯿـﻦ ﻣﯽﮐﻨـﺪ‪ .‬ﺑﻌﻨـﻮان ﻣﺜـﺎل اﮔـﺮ دراﯾـﻦ ﻓﯿﻠـــﺪ‬
‫ﻋـﺪدی ﻣﻌـﺎدل ‪ 342310‬ﻗـﺮار ﮔﺮﻓﺘـﻪ ﺑﺎﺷـﺪ ﺑﺪﯾـﻦ ﻣﻌﻨﺎﺳـــﺖ ﮐــﻪ از رﺷــﺘﻪ داده ﻫــﺎ )ﮐــﻪ‬
‫ﻣﺸـﺨﺺ ﻧﯿﺴـﺖ ﭼﻨـﺪ ﺑـﺎﯾﺖ اﺳـﺖ( ﺗـﺎ ﺷـﻤﺎره ‪ 342310‬ﺻﺤﯿـﺢ و ﮐـﺎﻣﻞ درﯾـــﺎﻓﺖ ﺷــﺪه‬
‫اﺳﺖ و ﻣﻨﺘﻈﺮ ﺑﺎﯾﺘــﻬﺎی از ‪ 342311‬ﺑـﻪ ﺑﻌـﺪ ﻣﯽﺑﺎﺷـﺪ ‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : TCP Header Length‬ﻋـﺪدی ﮐـﻪ در اﯾـﻦ ﻓﯿﻠـﺪ ﻗـﺮار ﻣـﯽﮔـﯿﺮد ‪ ،‬ﻃـﻮل ﺳـﺮآﯾﻨﺪ‬
‫ﺑﺴـﺘﮥ ‪ TCP‬را ﺑـﺮ ﻣﺒﻨـﺎی ﮐﻠﻤـﺎت ‪ 32‬ﺑﯿﺘـﯽ ﺗﻌﯿﯿـﻦ ﻣﯽﮐﻨـﺪ ‪ .‬ﺑﻌﻨـﻮان ﻣﺜـﺎل اﮔـﺮ در اﯾـﻦ ﻓﯿﻠــﺪ‬
‫ﻋﺪد ‪ 7‬ﻗﺮار ﺑﮕﯿﺮد ﻃﻮل ﺳــﺮآﯾﻨﺪ ﻣﻘـﺪار ‪ 4×7=28‬ﺑـﺎﯾﺖ ﺧﻮاﻫـﺪ ﺑـﻮد‪ ) .‬اﯾـﻦ ﻓﯿﻠـﺪ ﮐـﻼً ﭼـﻬﺎر‬
‫ﺑﯿﺘﯽ اﺳﺖ ( دﻗّﺖ ﮐﻨﯿــﺪ ﮐـﻪ ﻗﺴـﻤﺖ ﺛـﺎﺑﺖ و اﺟﺒـﺎری در ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ﺣﺪاﻗـﻞ ‪ 20‬ﺑـﺎﯾﺖ‬
‫اﺳـﺖ وﻟـﯽ در ﻓﯿﻠـﺪ اﺧﺘﯿـﺎری ‪ Options‬ﻣﯽﺗﻮاﻧـﺪ اﻃﻼﻋـﺎﺗﯽ ﻗـﺮار و ﺑﻨـــﺎﺑﺮاﯾﻦ ﮔــﯿﺮﻧﺪۀ ﯾــﮏ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪197‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﺑﺴـﺘﮥ ‪ TCP‬ﺑـﺎﯾﺪ ﺑﺘﻮاﻧـﺪ ﻣـﺮز ﺑﯿـﻦ ﺳـﺮآﯾﻨﺪِ ﺑﺴـﺘﻪ و ﻗﺴـﻤﺖ داده را ﺗﺸـﺨﯿﺺ ﺑﺪﻫـﺪ ‪ .‬ﭘـــﺲ‬
‫ﻋﺪدی ﮐﻪ در اﯾــﻦ ﻓﯿﻠـﺪ ﻗـﺮار ﻣـﯽﮔـﯿﺮد ﻣﯽﺗﻮاﻧـﺪ ﺑﻌﻨـﻮان ﯾـﮏ ”اﺷـﺎره ﮔـﺮ“‪ ، 1‬ﻣﺤـﻞ ﺷـﺮوع‬
‫داده ﻫـﺎ را در ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ﺗﻌﯿﯿـﻦ ﮐﻨـﺪ )ﺗﻮﺟـﻪ دارﯾـﺪ ﮐـﻪ ﻣﺒﻨـﺎی اﯾـﻦ ﻋـﺪد ﮐﻠﻤــﺎت ‪32‬‬
‫ﺑﯿﺘﯽ ) ﭼﻬﺎر ﺑــﺎﯾﺘﯽ ( ﻫﺴـﺘﻨﺪ(‬
‫♦ ‪ 6‬ﺑﯿﺖ ﺑــﻼ اﺳـﺘﻔﺎده ‪ :‬ﭘـﺲ از ﻓﯿﻠـﺪ ‪ TCP Header Length‬ﺷـﺶ ﺑﯿـﺖ ﺑـﻼ اﺳـﺘﻔﺎده رﻫـﺎ‬
‫ﺷﺪه اﺳﺖ ﮐﻪ ﺷــﺎﯾﺪ ﺑـﺮای اﺳـﺘﻔﺎده در آﯾﻨـﺪه رزرو ﺷـﺪهاﻧﺪ ‪.‬‬
‫♦ ﺑﯿﺘﻬﺎی ‪ : Flag‬ﺷﺶ ﺑﯿﺖ ﺑﻌــﺪی در ﺑﺴـﺘﮥ ‪ TCP‬ﻫـﺮ ﮐـﺪام ﻧﻘـﺶ ﯾـﮏ ﺑﯿـﺖ ﭘـﺮﭼـﻢ را ﮐـﻪ‬
‫ﻣﻌﻨﺎ و ﮐﺎرﺑﺮد ﻣﺨﺘﻠﻔــﯽ دارﻧـﺪ را ﺑـﺎزی ﻣﯿﮑﻨﻨـﺪ‪.‬‬
‫‪F‬‬
‫‪I‬‬
‫‪N‬‬
‫‪S‬‬
‫‪Y‬‬
‫‪N‬‬
‫‪R‬‬
‫‪S‬‬
‫‪T‬‬
‫‪U A P‬‬
‫‪R C S‬‬
‫‪G K H‬‬
‫ﺗﮏ ﺗﮏ اﯾﻦ ﺑﯿﺘﻬﺎ و ﻣﻌﻨﺎی آﻧﻬﺎ را ﺑﻪ ﺗﺮﺗﯿﺐ ﺑﺮرﺳﯽ ﻣﯽﮐﻨﯿﻢ‪:‬‬
‫• ﺑﯿﺖ ‪ : URG‬در ﺻﻮرﺗﯽ ﮐﻪ اﯾﻦ ﺑﯿﺖ ﻣﻘﺪار ‪ 1‬داﺷﺘﻪ ﺑﺎﺷﺪ ‪ ،‬ﻣﻌﯿﻦ ﻣﯽﮐﻨــﺪ ﮐـﻪ در ﻓﯿﻠـﺪ‬
‫‪ Urgent Pointer‬ﮐﻪ در اداﻣﻪ ﻣﻌﺮﻓﯽ ﺧﻮاﻫﺪ ﺷﺪ ﻣﻘﺪاری ﻗــﺎﺑﻞ اﺳـﺘﻨﺎد و ﻣﻌﺘـﺒﺮ ﻗـﺮار دارد و‬
‫ﺑﺎﯾﺴﺘﯽ ﻣﻮرد ﭘﺮدازش ﻗﺮار ﮔﯿﺮد ‪ .‬درﺻﻮرﺗﯽ ﮐﻪ اﯾﻦ ﺑﯿﺖ ﺻﻔﺮ ﺑﺎﺷﺪ ﻓﯿﻠــﺪ ‪Urgent Pointer‬‬
‫ﺷﺎﻣﻞ ﻣﻘﺪار ﻣﻌﺘﺒﺮ و ﻗﺎﺑﻞ اﺳﺘﻨﺎدی ﻧﯿﺴﺖ و از آن ﭼﺸﻤﭙﻮﺷﯽ ﻣﯽﺷﻮد‪.‬‬
‫• ﺑﯿﺖ ‪ : ACK‬اﮔﺮ در اﯾﻦ ﺑﯿﺖ ﻣﻘﺪار ‪ 1‬ﻗﺮار ﮔﺮﻓﺘﻪ ﺑﺎﺷﺪ ‪ ،‬ﻧﺸﺎن ﻣﯽدﻫﺪ ﮐـﻪ ﻋـﺪدی ﮐـﻪ‬
‫در ﻓﯿﻠﺪ ‪ Acknowledgement Number‬ﻗﺮار ﮔﺮﻓﺘﻪ اﺳﺖ ‪ ،‬دارای ﻣﻘﺪاری ﻣﻌﺘﺒﺮ و ﻗﺎﺑﻞ اﺳﺘﻨﺎد‬
‫اﺳﺖ ‪ .‬ﺑﯿﺖ‪ ACK‬و ﺑﯿﺖ ‪ SYN‬ﻧﻘﺶ دﯾﮕﺮی ﻧﯿﺰ دارﻧﺪ ﮐﻪ در اداﻣﻪ ﺑﺪان اﺷﺎره ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫• ﺑﯿﺖ ‪ : PSH2‬اﮔﺮ در اﯾﻦ ﺑﯿﺖ ﻣﻘﺪار ‪ 1‬ﻗﺮار ﮔﺮﻓﺘﻪ ﺑﺎﺷــﺪ ﻓﺮﺳـﺘﻨﺪۀ اﻃﻼﻋـﺎت از ﮔـﯿﺮﻧﺪه‬
‫ﺗﻘﺎﺿﺎ ﻣﯽﮐﻨﺪ ﮐﻪ داده ﻫﺎی ﻣﻮﺟﻮد در اﯾﻦ ﺑﺴﺘﻪ را ﺑﺎﻓﺮ ﻧﮑﻨﺪ و در اﺳﺮع وﻗــﺖ آﻧـﺮا ﺟـﻬﺖ‬
‫ﭘﺮدازﺷﻬﺎی ﺑﻌﺪی ﺗﺤﻮﯾﻞ ﺑﺮﻧﺎﻣﮥ ﮐﺎرﺑﺮدی ﺻﺎﺣﺐ آن ﺑﺪﻫﺪ‪ .‬اﯾﻦ ﻋﻤﻞ ﮔــﺎﻫﯽ ﺑـﺮای ﺑﺮﻧﺎﻣـﻪ‬
‫ﻫﺎﺋﯽ ﻣﺸﺎﺑﻪ ‪ Telnet‬ﺿﺮوری اﺳﺖ؛ ﺑﻌﻨﻮان ﻣﺜﺎل ﻓﺮض ﮐﻨﯿﺪ ﯾﮏ ﮐﺎرﺑﺮ ﺑﺎ ﮐــﺎﻣﭙﯿﻮﺗﺮ ﺷـﺨﺼﯽ‬
‫ﺧﻮد از ﻧﻮع ﺳﺎزﮔﺎر ﺑﺎ ‪ IBM‬ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮی در ﻓﺎﺻﻠﻪ ﻫﺰاران ﮐﯿﻠﻮﻣﺘﺮی ﺧﻮد وﺻــﻞ ﺷـﺪه و‬
‫ﺗﺼﻤﯿﻢ دارد از ﻃﺮﯾﻖ ﯾﮏ ﻣﺤﯿﻂ ﺷﺒﯿﻪ ﺳﺎزی ﺷﺪه ﺑﺎ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺳﺮوﯾﺲ دﻫﻨﺪه ارﺗﺒﺎط ﺑﺮﻗﺮار‬
‫ﮐﺮده و دﺳﺘﻮرات ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ‪ UNIX‬را ﺗﻤﺮﯾﻦ ﻧﻤﺎﯾﺪ‪ .‬ﻓﺮض ﮐﻨﯿﺪ ﮐﺎرﺑﺮ دﺳﺘﻮر ‪) ls‬ﻣﻌــﺎدل‬
‫‪ dir‬در ‪ ( DOS‬را اﺟﺮا ﻣﯽﮐﻨﺪ و ﺑﺎﻟﻄﺒﻊ ﺗﻮﻗﻊ دارد ﭘﺲ از ارﺳﺎل اﯾﻦ دو ﮐــﺎراﮐﺘﺮ و ﺗﺤﻮﯾـﻞ‬
‫آن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ‪ Telnet‬ﺳﺮﯾﻌﺎً ﭘﺎﺳﺦ ﻻزم را روی ﺻﻔﺤﮥ ﻧﻤﺎﯾﺸﺶ ﺑﺒﯿﻨﺪ وﻟــﯽ ﻧـﺮم اﻓـﺰار ‪TCP‬‬
‫‪1‬‬
‫‪Pointer‬‬
‫‪2‬‬
‫‪Push‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪198‬‬
‫ﻣﻌﻤﻮﻻً در ﻫﻨﮕﺎم درﯾﺎﻓﺖ ﺑﺴﺘﻪ ﻫﺎی ﮐﻮﭼﮏ ‪ ،‬آﻧﻬﺎ را ﺑﺎﻓﺮ ﮐﺮده ﺗﺎ وﻗﺘﯽ ﺣﺠﻢ ﺑﺎﻓﺮ ﺑﻪ اﻧﺪازۀ‬
‫ﻣﺸﺨﺼﯽ ﭘﺮ ﺷﺪ ‪ ،‬آﻧﺮا ﯾﮑﺠﺎ ﺗﺤﻮﯾﻞ ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی ﺑﺪﻫﺪ‪ .‬در ﭼﻨﯿﻦ ﺣﺎﻟﺘﯽ ﻓﺮﺳﺘﻨﺪۀ ﺑﺴﺘﻪ ﺑﺎ‬
‫‪ 1‬ﮐﺮدن ﺑﯿﺖ ‪ ، PSH‬از ﮔﯿﺮﻧﺪۀ آن ﻣﯽﺧﻮاﻫﺪ ﮐﻪ آﻧﺮا ﺑﺎﻓﺮ ﻧﮑﻨﺪ‪.‬‬
‫• ﺑﯿﺖ ‪ : RST‬اﮔﺮ در اﯾﻦ ﺑﯿﺖ ﻣﻘﺪار ‪ 1‬ﻗﺮار ﺑﮕﯿﺮد ارﺗﺒﺎط ﺑﺼﻮرت ﯾﮑﻄﺮﻓﻪ و ﻧﺎﺗﻤﺎم ﻗﻄــﻊ‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ ،1‬ﺑﺪﯾﻦ ﻣﻌﻨﺎ ﮐﻪ ﺑﻪ ﻫﺮ دﻟﯿﻠﯽ ) اﻋﻢ از ﻧﻘــﺺ ﺳـﺨﺖ اﻓـﺰاری ﯾـﺎ ﻧـﺮم اﻓـﺰاری(‬
‫اﺷﮑﺎﻟﯽ ﺑﻮﺟﻮد آﻣﺪه ﮐﻪ ﯾﮑﯽ از ﻃﺮﻓﯿﻦ ارﺗﺒﺎط ﻣﺠﺒﻮر ﺑﻪ ﺧﺎﺗﻤﻪ ارﺗﺒﺎط ﻓﻌﻠــﯽ ﺷـﺪه اﺳـﺖ‪.‬‬
‫ﻫﻤﭽﻨﯿﻦ ﺑﯿﺖ ‪ RST‬ﻣﯽﺗﻮاﻧﺪ ﺑﻌﻨﻮان ﻋﻼﻣﺖ ﻋﺪم ﭘﺬﯾﺮش ﺑﺮﻗﺮاری ارﺗﺒــﺎط ﺑﮑـﺎر ﺑـﺮود‪.‬اﮔـﺮ‬
‫ﯾﮑﯽ از ﻃﺮﻓﯿﻦ ارﺗﺒﺎط ﯾﮏ ﺑﺴﺘﻪ درﯾﺎﻓﺖ ﮐﻨﺪ ﮐﻪ در آن ﺑﯿــﺖ ‪ RST‬ﻣﻘـﺪار‪ 1‬داﺷـﺘﻪ ﺑﺎﺷـﺪ ‪،‬‬
‫ارﺗﺒﺎط ﺑﺼﻮرت ﻧﺎﻫﻤﺎﻫﻨﮓ و ﻧﺎﻣﺘﻌﺎدل ‪ ،‬ﻗﻄﻊ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫• ﺑﯿﺖ ‪ : SYN‬اﯾﻦ ﺑﯿﺖ ﻧﻘﺶ اﺳﺎﺳﯽ در ﺑﺮﻗﺮاری ﯾﮏ ارﺗﺒﺎط ﺑﺎزی ﻣﯽﮐﻨﺪ ‪ .‬ﺑﺮﻗﺮاریِ ﯾﮏ‬
‫ارﺗﺒﺎطِ ‪ TCP‬از روﻧﺪ زﯾﺮ ﺗﺒﻌﯿﺖ ﻣﯿﮑﻨﺪ‪:‬‬
‫اﻟـﻒ( ﺷـﺮوع ﮐﻨﻨـﺪه ارﺗﺒـﺎط ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ﺑـﺪون ﻫﯿﭽﮕﻮﻧـﻪ داده و ﺑـﺎ ﺗﻨﻈﯿـﻢ ﺑﯿﺘـــﻬﺎی‬
‫)‪ ، (ACK=0, SYN=1‬ﺑـﺮای ﻃـﺮف ﻣﻘـﺎﺑﻞ ارﺳـﺎل ﻣﯽﮐﻨـﺪ ‪ .‬در ﺣﻘﯿﻘـــﺖ ارﺳــﺎل ﭼﻨﯿــﻦ‬
‫ﺑﺴﺘﻪ ای ﺑﻪ ﻣﻌﻨﺎی ”ﺗﻘﺎﺿــﺎی ﺑﺮﻗـﺮاری ارﺗﺒـﺎط“‪ 2‬ﺗﻠﻘـﯽ ﻣﯽﺷـﻮد‪.‬‬
‫ب( در ﭘﺎﺳـﺦ ﺑـﻪ درﺧﻮاﺳـﺖ ارﺗﺒـﺎط ‪ ،‬در ﺻﻮرﺗﯿﮑـﻪ ﻃـﺮف ﻣﻘـﺎﺑﻞ ﺑـﻪ ﺑﺮﻗـﺮاری ارﺗﺒــﺎط‬
‫ﺗﻤـﺎﯾﻞ داﺷـﺘﻪ ﺑﺎﺷـﺪ ﺑﺴـﺘﻪ ای ﺑـﺮ ﻣـﯽﮔﺮداﻧـﺪ ﮐـﻪ در آن ﺑﯿـﺖ ‪ SYN=1‬و ﺑﯿـــﺖ ‪ACK=1‬‬
‫اﺳﺖ ‪ .‬اﯾﻦ ﺑﺴﺘﻪ ﻧﻘﺶ ”ﭘﺬﯾــﺮش ﯾـﮏ ارﺗﺒـﺎط“‪ 3‬را ﺑـﺎزی ﻣﯽﮐﻨـﺪ‪.‬‬
‫ﺑﺮﻗﺮاری ارﺗﺒــﺎط را ﺑﯿﺸـﺘﺮ ﺗﻮﺿﯿـﺢ ﺧﻮاﻫﯿـﻢ داد‪.‬‬
‫• ﺑﯿـﺖ ‪ : FIN‬اﮔـﺮ ﯾﮑـﯽ از ﻃﺮﻓﯿـﻦ ارﺗﺒـﺎط ‪ ،‬داده دﯾﮕـﺮی ﺑـﺮای ارﺳـﺎل ﻧﺪاﺷـﺘﻪ ﺑﺎﺷــﺪ‬
‫در ﻫﻨﮕـﺎم ارﺳـﺎل آﺧﺮﯾـﻦ ﺑﺴـﺘﮥ ﺧـﻮد اﯾـﻦ ﺑﯿـــﺖ را ‪ 1‬ﻣﯽﮐﻨــﺪ و در ﺣﻘﯿﻘــﺖ ارﺳــﺎل‬
‫اﻃﻼﻋـﺎت ﺧـﻮدش را ﯾﮑﻄﺮﻓـﻪ ﻗﻄـﻊ ﻣﯽﮐﻨـﺪ‪ .‬در اﯾـﻦ ﺣـﺎﻟﺖ اﮔـﺮ ﭼـﻪ ارﺳـﺎل اﻃﻼﻋــﺎت‬
‫ﻗﻄﻊ ﺷﺪه و ﻟﯿﮑﻦ ﻃﺮف ﻣﻘــﺎﺑﻞ ﻫﻨـﻮز ﻣﻤﮑـﻦ اﺳـﺖ ﺑـﻪ ارﺳـﺎل اﻃﻼﻋـﺎت ﻣﺸـﻐﻮل ﺑﺎﺷـﺪ‪.‬‬
‫زﻣﺎﻧﯽ ارﺗﺒﺎط ﮐﺎﻣﻼً ﺧﺎﺗﻤﻪ ﻣﯽﯾـﺎﺑﺪ ﮐـﻪ ﻃـﺮف ﻣﻘـﺎﺑﻞ ﻧـﯿﺰ در ﯾـﮏ ﺑﺴـﺘﻪ ﺑـﺎ ‪ 1‬ﮐـﺮدن ﺑﯿـﺖ‬
‫‪ ، FIN‬ارﺳﺎل اﻃﻼﻋــﺎت را ﺧﺎﺗﻤـﻪ ﺑﺪﻫـﺪ‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : Windows Size‬ﻣﻘـﺪار ﻗـﺮار ﮔﺮﻓﺘـﻪ در اﯾـﻦ ﻓﯿﻠـﺪ ﻣﺸـﺨﺺ ﻣﯽﮐﻨـﺪ ﮐـﻪ ﻓﻀـــﺎی‬
‫ﺑﺎﻓﺮِ ﮔﯿﺮﻧﺪه ﭼﻨﺪ ﺑﺎﯾﺖ دﯾﮕــﺮ ﻇﺮﻓﯿـﺖ ﺧـﺎﻟﯽ دارد‪ .‬ﯾﻌﻨـﯽ ﺑـﻪ ﻃـﺮف ﻣﻘـﺎﺑﻞ اﻋـﻼم ﻣﯽﮐﻨـﺪ ﮐـﻪ‬
‫ﻣﺠـﺎز اﺳـﺖ از ﺑـﺎﯾﺖ ﺑـﺎ ﺷـﻤﺎرۀ ﺗﺮﺗﯿﺒـﯽ ﮐـﻪ در ﻓﯿﻠـﺪ ‪ Acknowledgement‬ﻣﺸـــﺨﺺ ﺷــﺪه‬
‫‪1‬‬
‫‪Abnormaly‬‬
‫‪2‬‬
‫‪Connection‬‬
‫‪3‬‬
‫‪Ended‬‬
‫‪Request‬‬
‫‪Connection Accept‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪199‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫اﺳﺖ‪ ،‬ﺣﺪاﮐــﺜﺮ ﺑـﻪ اﻧـﺪازۀ ﻣﻘـﺪاری ﮐـﻪ در اﯾـﻦ ﻓﯿﻠـﺪ درج ﺷـﺪه ‪ ،‬ارﺳـﺎل داﺷـﺘﻪ ﺑﺎﺷـﺪ و در‬
‫ﻏﯿﺮ اﯾﻨﺼــﻮرت ﻓﻀـﺎی ﮐـﺎﻓﯽ ﺑـﺮای درﯾـﺎﻓﺖ داده ﻫـﺎ وﺟـﻮد ﻧﺪاﺷـﺘﻪ و ﻧـﺎﮔﺰﯾـﺮ دور رﯾﺨﺘـﻪ‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬اﮔﺮ ﻣﻘﺪار اﯾﻦ ﻓﯿﻠﺪ ﺻﻔﺮ ﺑﺎﺷــﺪ ﺑﺪﯾـﻦ ﻣﻌﻨﺎﺳـﺖ ﮐـﻪ ﺑـﺎﻓﺮ ﮔـﯿﺮﻧﺪه ﺗﻤﺎﻣـﺎً ﭘـﺮ ﺷـﺪه‬
‫اﺳﺖ و اﻣﮑــﺎن درﯾـﺎﻓﺖ داده ﻫـﺎی ﺑﻌـﺪی وﺟـﻮد ﻧـﺪارد و ﭘﺮوﺳـﮥ ﻓﺮﺳـﺘﻨﺪه ﻣﺘﻮﻗـﻒ ﺧﻮاﻫـﺪ‬
‫ﺷﺪ؛ در اﯾﻦ ﻣﻮرد ﻧــﯿﺰ ﺑﯿﺸـﺘﺮ ﺗﻮﺿﯿـﺢ ﺧﻮاﻫﯿـﻢ داد‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : Checksum‬در اﯾـﻦ ﻓﯿﻠـﺪ ‪ 16‬ﺑﯿﺘـﯽ ‪ ،‬ﮐـﺪ ﮐﺸـﻒ ﺧﻄـﺎ ﻗـﺮار ﻣـﯽﮔـــﯿﺮد‪ .‬ﻃﺮﯾﻘــﻪ‬
‫ﻣﺤﺎﺳﺒﻪ اﯾﻦ ﮐﺪ اﻧﺪﮐــﯽ ﻣﺘﻔـﺎوت از روﺷـﻬﺎی ﻣﻌﻤـﻮل اﺳـﺖ‪:‬‬
‫اﻟـﻒ( ﮐـﻞّ ﺑﺴـﺘﮥ ‪ TCP‬ﺷـﺎﻣﻞ ﻗﺴـﻤﺖ ﺳـﺮآﯾﻨﺪ ﺑﺴـﺘﻪ و ﻗﺴـﻤﺖ داده ‪ ،‬در ﻗـﺎﻟﺐ ﮐﻠﻤــﺎت ‪16‬‬
‫ﺑﯿﺘﯽ در ﻧﻈــﺮ ﮔﺮﻓﺘـﻪ ﻣﯽﺷـﻮد‪ ) .‬ﻣﻨـﻬﺎی ﻗﺴـﻤﺖ ‪( Checkum‬‬
‫ب ( ﯾﮏ ”ﺳﺮآﯾﻨﺪ ﻓﺮﺿﯽ“‪ 1‬ﮐــﻪ در ﺑﺴـﺘﮥ ‪ TCP‬وﺟـﻮد ﻧـﺪارد ‪ ،‬ﺑـﺎ ﻗـﺎﻟﺐ زﯾـﺮ ﺳـﺎﺧﺘﻪ ﺷـﺪه و‬
‫ﺑﺼﻮرت ﮐﻠﻤﺎت ‪ 16‬ﺑﯿﺘــﯽ در ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ ﻣﯽﺷـﻮد‪.‬‬
‫ج ( ﺗﻤﺎﻣﯽ ﮐﻠﻤــﺎت در ”ﻣﺒﻨـﺎی ﻣﮑﻤـﻞ ‪ 2“1‬ﺑـﺎ ﻫـﻢ ﺟﻤـﻊ ﺷـﺪه و ﺳـﭙﺲ ﻋـﺪد ﺑﺪﺳـﺖ آﻣـﺪه‬
‫در ﻣﺒﻨﺎی ﻣﮑﻤﻞ ‪ 1‬ﻣﻨﻔﯽ ﻣﯽﺷﻮد‪ .‬اﯾــﻦ ﻋـﺪد ﻧـﻬﺎﯾﺘﺎً در ﻓﯿﻠـﺪ ‪ Checksum‬ﻗـﺮار ﻣـﯽﮔـﯿﺮد‪.‬‬
‫اﮔﺮ در ﺣﯿﻦ ارﺳﺎل داده ﻫــﺎ ﺧﻄـﺎﺋﯽ ﺑـﺮوز ﻧﮑﻨـﺪ ‪ ،‬ﭘـﺲ از درﯾـﺎﻓﺖ ﺑﺴـﺘﻪ در ﻣﻘﺼـﺪ ‪ ،‬ﺟﻤـﻊ‬
‫ﮐـﻞ ﮐﻠﻤـﺎت ‪ 16‬ﺑﯿﺘـﯽ ﻣﻮﺟـﻮد در ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ﺑـﻪ اﻧﻀﻤـﺎم ”ﺳـﺮآﯾﻨﺪ ﻓﺮﺿـﯽ“ ﺑﺎﯾﺴــﺘﯽ‬
‫ﺻﻔﺮ ﺷﻮد ‪ ،‬در ﻏــﯿﺮ اﯾﻨﺼـﻮرت داده ﻫـﺎی ﻏﯿﺮﻣﻌﺘـﺒﺮ و ﺧـﺮاب ﻫﺴـﺘﻨﺪ‪.‬‬
‫ﺳﺎﺧﺘﺎر ”ﺳﺮآﯾﻨﺪ ﻓﺮﺿﯽ“ ﮐﻪ ﺑﺼــﻮرت ﺳـﺎﺧﺘﮕﯽ ﺗﻮﻟﯿـﺪ ﻣﯽﺷـﻮد ﺑﺼـﻮرت زﯾـﺮ اﺳـﺖ‪:‬‬
‫‪31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0‬‬
‫‪Source IP Address‬‬
‫‪Destination IP Address‬‬
‫‪TCP Segment Length‬‬
‫‪00000110‬‬
‫‪00000000‬‬
‫ﻫﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ دﯾﺪه ﻣﯽﺷﻮد اﯾــﻦ ﺳـﺮآﯾﻨﺪ ﺳـﺎﺧﺘﮕﯽ ﺷـﺎﻣﻞ ﻓﯿﻠﺪﻫـﺎی زﯾـﺮ اﺳـﺖ‪:‬‬
‫• ‪ 32‬ﺑﯿﺖ آدرس ‪ IP‬ﻣﺮﺑــﻮط ﺑـﻪ ﻣﺎﺷـﯿﻦ ﻣﺒـﺪأ‬
‫• ‪ 32‬ﺑﯿﺖ آدرس ‪ IP‬ﻣﺮﺑــﻮط ﺑـﻪ ﻣﺎﺷـﯿﻦ ﻣﻘﺼـﺪ‬
‫• ﯾﮏ ﻓﯿﻠﺪ ﻫﺸﺖ ﺑﯿﺘــﯽ ﮐـﺎﻣﻼً ﺻﻔـﺮ‬
‫• ﻓﯿﻠﺪ ﻫﺸﺖ ﺑﯿﺘﯽ ﭘﺮوﺗﮑــﻞ ﮐـﻪ ﺑـﺮای ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﯾﻘﯿﻨـﺎً ﻣﻘـﺪار ‪ 6‬دارد‪.‬‬
‫‪Pseudo Header‬‬
‫‪1’s Compelement‬‬
‫‪1‬‬
‫‪2‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪200‬‬
‫• ﻓﯿﻠﺪ ‪ TCP Segment Length‬ﮐـﻪ در آن ﻃـﻮل ﮐـﻞ ﺑﺴـﺘﮥ ‪ TCP‬ﻣﺸـﺨﺺ ﻣﯽﺷـﻮد‪.‬‬
‫♦ ﻓﯿﻠـﺪ‪ : Urgent Pointer‬در اﯾـﻦ ﻓﯿﻠـﺪ ﯾـﮏ ﻋـﺪد ﺑﻌﻨـﻮان اﺷـﺎره ﮔـﺮ ﻗـﺮار ﻣـﯽﮔـﯿﺮد ﮐــﻪ‬
‫ﻣﻮﻗﻌﯿـﺖ داده ﻫـﺎی اﺿﻄـﺮاری را درون ﺑﺴـﺘﮥ ‪ TCP‬ﻣﻌﯿـﻦ ﻣﯽﮐﻨـﺪ ‪ .‬اﯾـــﻦ داده ﻫــﺎ ‪ ،‬زﻣــﺎﻧﯽ‬
‫اﺗﻔﺎق ﻣﯽاﻓﺘﻨﺪ و ارﺳــﺎل ﻣﯽﺷـﻮﻧﺪ ﮐـﻪ ﻋﻤﻠـﯽ ﺷـﺒﯿﻪ وﻗـﻮع وﻗﻔـﻪ ﻫـﺎ در ﻫﻨﮕـﺎم اﺟـﺮای ﯾـﮏ‬
‫ﺑﺮﻧﺎﻣـﮥ ﮐـﺎرﺑﺮدی رخ ﺑﺪﻫـﺪ‪ .‬ﺑـﺪون آﻧﮑـﻪ ارﺗﺒـﺎط ﻗﻄـﻊ ﺷـﻮد داده ﻫـﺎی ﻻزم در ﻫﻤﯿـﻦ ﺑﺴــﺘﮥ‬
‫ﺟﺎری ارﺳﺎل ﺧﻮاﻫﺪ ﺷــﺪ‪ .‬دﻗّـﺖ ﮐﻨﯿـﺪ ﮐـﻪ داده ﻫـﺎی اﺿﻄـﺮاری ﺗﻮﺳـﻂ ﺑﺮﻧﺎﻣـﮥ ﮐـﺎرﺑﺮدی در‬
‫ﻻﯾﮥ ﺑﺎﻻﺗﺮ ﭘﺮدازش ﺧﻮاﻫــﺪ ﺷـﺪ و ﺑـﺮای ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﮐـﺎرﺑﺮدی ﻧـﺪارد‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪ : Options‬در اﯾـﻦ ﻓﯿﻠـﺪ اﺧﺘﯿـﺎری اﺳـﺖ و ﻣﻘـﺪاری ﻧﻈـﯿﺮ ﺣﺪاﮐـــﺜﺮ ﻃــﻮل ﺑﺴــﺘﮥ‬
‫‪ TCP‬در آن ﻗﺮار ﻣﯿﮕــﯿﺮد‪ .‬ﺑـﺮای آﻧﮑـﻪ ﻃـﻮل ﺑﺴـﺘﻪ ﺿﺮﯾﺒـﯽ از ‪ 4‬ﺑـﺎﻗﯽ ﺑﻤـﺎﻧﺪ از اﯾـﻦ ﻓﯿﻠـﺪ ﺑـﺎ‬
‫ﮐﺪﻫـﺎی ﺑـﯽ ارزش اﺳـﺘﻔﺎده ﻣﯽﺷـﻮد‪ .‬ﮔﺰﯾﻨـﮥ ﺧـﺎص دﯾﮕـﺮی در اﯾـﻦ ﻓﯿﻠـﺪ ﺗﻌﺮﯾـــﻒ ﻧﺸــﺪه‬
‫اﺳـﺖ‪.‬‬
‫‪ (4‬روش ﺑﺮﻗـﺮاری ارﺗﺒـﺎط در ﭘﺮوﺗﮑـــﻞ ‪TCP‬‬
‫ﺑـﺮای ﺑﺮﻗـﺮاری ارﺗﺒـــﺎط در ﭘﺮوﺗﮑــﻞ ‪ TCP‬از روش ”دﺳــﺖ ﺗﮑــﺎﻧﯽ ﺳــﻪ ﻣﺮﺣﻠــﻪ ای“‬
‫اﺳﺘﻔﺎده ﻣﯽﺷﻮد ‪ .‬اﻟﺒﺘﻪ ﺑﺮﻗﺮاری ارﺗﺒﺎط ﻣﻨــﻮط ﺑـﻪ اﯾـﻦ ﻗﻀﯿـﻪ اﺳـﺖ ﮐـﻪ ﻃﺮﻓﯿـﻦ ارﺗﺒـﺎط آﻣـﺎدۀ‬
‫ﺑﺮﻗﺮاری ﯾــﮏ ارﺗﺒـﺎط ﺑﺎﺷـﻨﺪ ﯾﻌﻨـﯽ ﯾﮑﻄـﺮف ﮐـﻪ ﻓﻌـﻼً آﻧـﺮا ﺳـﺮوﯾﺲ دﻫﻨـﺪه ﻣﯽﻧـﺎﻣﯿﻢ ﺑـﺮای‬
‫ﺑﺮﻗـﺮاری ارﺗﺒـﺎط از ﻃﺮﯾـﻖ ﺗﻮاﺑـﻊ ﺳﯿﺴـﺘﻤﯽ )(‪ listen‬و )(‪ accept‬اﻋـﻼم آﻣـﺎدﮔـﯽ ﮐـﺮده ﺑﺎﺷــﺪ‬
‫و ﻃـﺮف ﻣﻘـﺎﺑﻞ ﻧـﯿﺰ ﯾﻌﻨـﯽ ﻣﺸـﺘﺮی ﺑـﺎ ﻓﺮاﺧﻮاﻧـﯽ ﺗـﺎﺑﻊ ﺳﯿﺴـﺘﻤﯽ )(‪ connect‬و ﺗﻌﯿﯿـــﻦ آدرس‬
‫‪ IP‬و آدرس ﭘﻮرت ﭘﺮوﺳــﮥ ﻣﻘﺼـﺪ ‪ ،‬ﺗﻤـﺎﯾﻞ ﺧـﻮد را ﺑـﺮای ارﺗﺒـﺎط ‪ ،‬اﺑـﺮاز ﻧﻤـﺎﯾﺪ‪ .‬اﯾـﻦ ﺗﻮاﺑـﻊ‬
‫در ﻓﺼـﻞ ﺑﺮﻧﺎﻣـﻪ ﻧﻮﯾﺴـﯽ ﺗﺤـﺖ ﺷـﺒﮑﻪ ﺑﻄـﻮر ﻣﺒﺴـﻮط ﺗﻮﺿﯿـﺢ داده ﺧﻮاﻫـﺪ ﺷـﺪ‪ .‬در ﭼﻨﯿــﻦ‬
‫ﺣﺎﻟﺘﯽ ﺑﯿﻦ ﻃﺮﻓﯿﻦ اﺗﻔﺎﻗــﺎت ‪ 3‬ﻣﺮﺣﻠـﻪ ای زﯾـﺮ ﺧﻮاﻫـﺪ اﻓﺘـﺎد )در ﺣـﺎﻟﺖ ﻃﺒﯿﻌـﯽ(‪.‬‬
‫در ﺷﮑﻞ )‪ (5-3‬اﯾﻦ ﻣﺮاﺣﻞ ﺑــﻪ ﺗﺼﻮﯾـﺮ ﮐﺸـﯿﺪه ﺷـﺪه اﺳـﺖ‪.‬‬
‫در ﻣﺮﺣﻠﻪ اوّل ‪ ،‬از ﻃﺮف ﺷﺮوع ﮐﻨﻨــﺪۀ ارﺗﺒـﺎط ‪ ،‬ﯾـﮏ ﺑﺴـﺘﮥ ‪) TCP‬ﺧـﺎﻟﯽ از داده ( ارﺳـﺎل‬
‫ﺧﻮاﻫﺪ ﺷﺪ ﮐﻪ در آن ﺑﯿﺖ ‪ SYN=1‬و ﺑﯿﺖ ‪ ACK=0‬اﺳﺖ و درون ﻓﯿﻠــﺪ ﺷـﻤﺎره ﺗﺮﺗﯿـﺐ ﻋـﺪد ‪x‬‬
‫ﻗﺮار داده ﺷﺪه ﮐﻪ در آن ‪ x‬ﯾﮏ ﻋﺪد ﺗﺼﺎدﻓﯽ اﺳﺖ‪ .‬در ﺣﻘﯿﻘﺖ ﺑﺎ اﯾﻦ ﺷﻤﺎره ﺑــﻪ ﻃـﺮف ﻣﻘـﺎﺑﻞ‬
‫اﻃﻼع داده ﻣﯽﺷﻮد ﮐﻪ ﺗﺮﺗﯿﺐ داده ﻫﺎی ارﺳﺎﻟﯽ از ﺷﻤﺎره ‪ x+1‬ﺷﺮوع ﻣﯽﺷﻮد ‪ .‬در ﭘﺮوﺗﮑﻞ ‪TCP‬‬
‫ﺷﻤﺎره ﺗﺮﺗﯿﺐ ‪ 32‬ﺑﯿﺘﯽ اﺳﺖ ﻟﺬا ﺑﺮای ﭘﯿﺸﮕﯿﺮی از ﻣﺸﮑﻼت اﺣﺘﻤــﺎﻟﯽ ﻧﺎﺷـﯽ از ﻣﺴـﺎوی ﺑـﻮدن‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ ﺑﺴﺘﻪ ﻫﺎی ارﺳﺎﻟﯽ ‪ ،‬داده ﻫﺎ از ﺷــﻤﺎره ‪ 0‬ﺷـﺮوع ﻧﻤﯽﺷـﻮﻧﺪ ‪ ،‬ﺑﻠﮑـﻪ از ﯾـﮏ ﻋـﺪد‬
‫ﺗﺼﺎدﻓﯽ )ﮐﻪ ﺑﺼﻮرت ﺧﻮدﮐﺎر ﺗﻮﻟﯿﺪ ﻣﯽﺷﻮد( ‪ ،‬ﺷﺮوع ﻣﯽﮔﺮدد و در ﻫﻤﺎن ﻣﺮﺣﻠﮥ اول ‪ ،‬اﯾﻦ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪201‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫‪1‬‬
‫‪SYN=1‬‬
‫‪Sequence Number=x‬‬
‫‪SYN=1, ACK=1‬‬
‫‪Sequence Number=y‬‬
‫‪Sequence Number=x+1‬‬
‫‪SYN=1, ACK=1‬‬
‫‪Sequence Number=y+1‬‬
‫‪Sequence Number=x+1‬‬
‫‪2‬‬
‫‪3‬‬
‫ﺷﮑﻞ )‪ (5-3‬ﻣﺮاﺣﻞ دﺳﺖ ﺗﮑﺎﻧﯽ ﺳﻪ ﻣﺮﺣﻠﻪ ای ﺑﺮای ﺑﺮﻗﺮاری ارﺗﺒﺎط در ﭘﺮوﺗﮑﻞ‬
‫‪TCP‬‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿــﺐ ﺑـﻪ ﻃـﺮف ﻣﻘـﺎﺑﻞ اﻋـﻼم ﺧﻮاﻫـﺪ ﺷـﺪ‪ .‬ﺑﻌﻨـﻮان ﻣﺜـﺎل اﮔـﺮ ‪ SEQ=145500‬ﺑﺎﺷـﺪ‬
‫ﺑﺪﯾﻦ ﻣﻌﻨﺎﺳﺖ ﮐﻪ داده ﻫــﺎﺋﯽ ﮐـﻪ ﻗـﺮار اﺳـﺖ ارﺳـﺎل ﺷـﻮﻧﺪ ﺷـﻤﺎره ﺗﺮﺗﯿـﺐ آﻧـﻬﺎ از ‪145501‬‬
‫آﻏﺎز ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻃﺮف ﻣﻘﺎﺑﻞ ﺣﺘﻤــﺎً ﺑـﺎﯾﺪ از اﯾـﻦ ﻣﻮﺿـﻮع ﺑـﺎﺧﺒﺮ ﺑﺎﺷـﺪ‪.‬‬
‫در ﻣﺮﺣﻠـﮥدوم ‪ ،‬ﻃـﺮف ﻣﻘـﺎﺑﻞ ﺑـﺎ درﯾـﺎﻓﺖ ﺑﺴـﺘﻪ ای ﺑـﺎ ﻣﺸـــﺨﺼﺎت ﻓــﻮق اﻟﺬﮐــﺮ اﮔــﺮ‬
‫ﺗﻤﺎﯾﻞ ﺑﻪ ﺑﺮﻗﺮاری ارﺗﺒﺎط ﻧﺪاﺷﺘﻪ ﺑﺎﺷــﺪ ﺑـﺎ ارﺳـﺎل ﯾـﮏ ﺑﺴـﺘﮥ ﺧـﺎﻟﯽ ﮐـﻪ در آن ﺑﯿـﺖ ‪ RST‬ﺑـﻪ‬
‫‪ 1‬ﺗﻨﻈﯿﻢ ﺷــﺪه ‪ ،‬اﯾـﻦ ﺗﻘﺎﺿـﺎ را ردّ ﻣﯽﮐﻨـﺪ وﻟـﯽ اﮔـﺮ ﻣﺘﻤـﺎﯾﻞ ﺑـﻪ ﺑﺮﻗـﺮاری ارﺗﺒـﺎط ﺑـﻮد ﯾـﮏ‬
‫ﺑﺴﺘﮥ ﺧﺎﻟﯽ از داده ﺑﺎ ﻣﺸــﺨﺼﺎت زﯾـﺮ ﺗﻮﻟﯿـﺪ ﻣﯽﮐﻨـﺪ‪:‬‬
‫♦ ﺑﯿﺖ ‪ SYN‬را ﯾﮏ ﻣﯽﮐﻨﺪ‪.‬‬
‫♦ ﺑﯿـﺖ ‪ ACK‬را ﯾـﮏ ﻣﯽﮐﻨــﺪ‪.‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪202‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫♦ ﻣﻘﺪار ﻓﯿﻠﺪ ‪ Acknowledgement Number‬را ‪ x+1‬ﻗﺮار‬
‫♦ ﻣﻘﺪار ﻓﯿﻠﺪ ‪ Sequence Number‬را ﻣﻘﺪار ﺗﺼﺎدﻓﯽ ‪ y‬ﻗﺮار ﻣﯽدﻫﺪ‪.‬‬
‫در اﯾﻦ ﻣﺮﺣﻠــﻪ ﮐـﻪ ﺑـﻪ ﻣﻌﻨـﺎی ﭘﺬﯾـﺮش ارﺗﺒـﺎط اﺳـﺖ ﻃـﺮف ﻣﻘـﺎﺑﻞ ﺑـﺎ ﻗـﺮار دادن ﻣﻘـﺪار‬
‫ﻓﯿﻠـﺪ ‪ Ack=x+1‬ﻧﺸـﺎن ﻣﯽدﻫـﺪ ﮐـﻪ ﺷـﻤﺎره ﺗﺮﺗﯿـﺐ ‪ x‬را ﭘﺬﯾﺮﻓﺘـﻪ و ﻣﻨﺘﻈـﺮداده ﻫـﺎ از ﺷـــﻤﺎره‬
‫ﺗﺮﺗﯿـﺐ ‪ x+1‬ﺑـﻪ ﺑﻌـﺪ اﺳـﺖ ‪ .‬در ﺿﻤـﻦ ﺧـﻮدش ﻋـﺪد ﺗﺼـﺎدﻓﯽ ‪ y‬را در ﻓﯿﻠـﺪ ‪ Seq.No.‬ﻗــﺮار‬
‫ﻣﯽدﻫﺪ و ﺑﻪ ﻃﺮف ﻣﻘــﺎﺑﻞ اﻋـﻼم ﻣﯽﮐﻨـﺪ ﮐـﻪ ﺷـﻤﺎره ﺗﺮﺗﯿـﺐ داده ﻫـﺎی ارﺳـﺎﻟﯽ از ‪ y‬ﺧﻮاﻫـﺪ‬
‫ﺑـﻮد‪.‬‬
‫در ﻣﺮﺣﻠـﮥ ﺳـﻮّم ‪ ،‬ﺷـﺮوع ﮐﻨﻨـﺪه ارﺗﺒـﺎط ﺑـﺎ ﻗـﺮار دادن ﻣﻘـﺎدﯾﺮ زﯾـــﺮ ﺷــﺮوع ارﺗﺒــﺎط را‬
‫ﺗﺼﺪﯾﻖ ﻣﯽﮐﻨــﺪ ‪:‬‬
‫♦ ﺑﯿﺖ ‪ SYN‬را ﯾﮏ ﻣﯽﮐﻨﺪ‪.‬‬
‫♦ ﺑﯿﺖ ‪ ACK‬را ﯾــﮏ ﻣﯽﮐﻨـﺪ‪.‬‬
‫♦ ﻓﯿﻠﺪ ‪ Seq. No.=x+1‬را ﻗﺮار ﻣﯽدﻫﺪ‪.‬‬
‫♦ ﻓﯿﻠﺪ ‪ Ack‬را ‪ y+1‬ﻗﺮار ﻣﯽدﻫﺪ‪.‬‬
‫ﻣﯽدﻫﺪ‪.‬‬
‫ﺑـﺎ ﻗـﺮار دادن ‪ Seq.No.=x+1‬و ‪ Ack=y+1‬ﺷـﺮوع ﮐﻨﻨـﺪۀ ارﺗﺒـﺎط اﻋـﻼم ﻣﯽﮐﻨـﺪ ﮐـــﻪ ﺑــﺮ‬
‫روی ﭘﺎراﻣﺘﺮﻫـﺎی ﺷـﻤﺎره ﺗﺮﺗﯿـﺐ ﺗﻮاﻓـﻖ ﺷـﺪه اﺳـﺖ و او ﭘﺬﯾﺮﻓﺘـــﻪ ﮐــﻪ داده ﻫــﺎی ﻃــﺮف‬
‫ﻣﻘـــﺎﺑﻞ را از ﺷـــﻤﺎره ‪ y+1‬ﺑﭙﺬﯾـــﺮد‪ .‬ﭘـــﺲ از اﯾـــﻦ ﻣﺮﺣﻠـــــﻪ ارﺳــــﺎل و درﯾــــﺎﻓﺖ‬
‫داده ﻫـﺎ ﺗﻮﺳـﻂ ﻃﺮﻓﯿـﻦ ﺗـﺎ ﻫﻨﮕـﺎﻣﯽ ﮐـﻪ ارﺗﺒـﺎط ﺑـﺎ اﻃـﻼع ﻃﺮﻓﯿـﻦ ﺧﺎﺗﻤـﻪ داده ﻧﺸـﺪه اﺳـﺖ‬
‫آزاد اﺳــﺖ‪.‬‬
‫ﺑﺮای ﺧﺎﺗﻤﻪ ارﺗﺒﺎط روﻧﺪ زﯾــﺮ ﺻـﻮرت ﻣـﯽﮔـﯿﺮد‪:‬‬
‫ﻃﺮﻓﯽ ﮐﻪ داده ﻫــﺎﯾﺶ ﺑـﺮای ارﺳـﺎل ﺗﻤـﺎم ﺷـﺪه اﺳـﺖ ﯾـﮏ ﺑﺴـﺘﮥ ‪ TCP‬ارﺳـﺎل ﻣﯽﻧﻤـﺎﯾﺪ‬
‫ﮐـﻪ در ﺳـﺮآﯾﻨﺪ آن ﺑﯿـﺖ ‪ FIN‬را ﯾـﮏ ﻗـﺮار داده اﺳـﺖ‪ .‬ﻃـﺮف ﻣﻘـــﺎﺑﻞ اﯾــﻦ درﺧﻮاﺳــﺖ را‬
‫درﯾـﺎﻓﺖ ﻣﯽﮐﻨـﺪ و ﺑـﺎ ﺧﺘـﻢ ﯾـﮏ ﻃﺮﻓـﮥ آن ﻣﻮاﻓﻘـﺖ ﻣﯽﮐﻨـﺪ‪ .‬وﻟـﯽ ﭼـﻮن ارﺗﺒـﺎط ﺑﺼـــﻮرت‬
‫ﯾﮑﻄﺮﻓﻪ ﺧﺘــﻢ ﻣﯽﺷـﻮد ﻃـﺮف ﻣﻘـﺎﺑﻞ ﻣﯽﺗﻮاﻧـﺪ ﺗـﺎ ﺟﺎﺋﯿﮑـﻪ داده دارد ‪ ،‬آﻧـﻬﺎ را ارﺳـﺎل ﮐﻨـﺪ و‬
‫ﻧـﻬﺎﯾﺘﺎً در آﺧﺮﯾـﻦ ﺑﺴـﺘﻪ ‪ ،‬ﺑﯿـﺖ ‪ FIN‬را ﯾـﮏ ﺑﮕـﺬارد ﺗـﺎ ﭘـﺲ از ﺗﺼﺪﯾـــﻖِ آن ‪ ،‬ارﺗﺒــﺎط ﺑــﻪ‬
‫ﺻﻮرت دو ﻃﺮﻓﻪ ﺧﺘــﻢ ﺷـﻮد‪.‬‬
‫ﻧﮑﺘﻪ ای ﮐــﻪ وﺟـﻮد دارد آﻧﺴـﺖ ﮐـﻪ اﮔـﺮ ﯾﮑـﯽ از ﻃﺮﻓﯿـﻦ ارﺗﺒـﺎط در اﺛـﺮ ﺑـﺮوز ﻣﺸـﮑﻠﯽ‬
‫ﺳـﺨﺖ اﻓـﺰاری ﯾـﺎ ﻧـﺮم اﻓـﺰاری ارﺗﺒـﺎط را ﺑـﺪون ﻫﻤـﺎﻫﻨﮕﯽ ﻗﻄـﻊ ﮐﻨـﺪ ﺣـﻖ ﻧـﺪارد ﺗــﺎ ‪120‬‬
‫ﺛﺎﻧﯿﻪ ﺑﻪ ارﺗﺒﺎط ﻣﺠﺪد ﺑﺎ ﻫﻤﺎن ﭘﺮوﺳــﻪ اﻗـﺪام ﮐﻨـﺪ و اﯾـﻦ ﻧﮑﺘـﻪ ﻧﺎﺷـﯽ از آن اﺳـﺖ ﮐـﻪ ﻣﻄﻤﺌـﻦ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪203‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﺑﺎﺷﺪ ﺑﺴﺘﻪ ﻫــﺎی ﻗﺒﻠـﯽ ﮐـﻪ ارﺳـﺎل ﮐـﺮده ﯾـﺎ آﻧﮑـﻪ ﺑﺮاﯾـﺶ ارﺳـﺎل ﺷـﺪه از زﯾﺮﺷـﺒﮑﻪ ﺣـﺬف‬
‫ﺷـﺪهاﻧﺪ ‪.‬‬
‫‪ (5‬ﮐﻨﺘﺮل ﺟﺮﯾﺎن در ﭘﺮوﺗﮑﻞ ‪TCP‬‬
‫در اﯾﻨﺠـﺎ ﺑـﺪ ﻧﯿﺴـﺖ ﮐـﻪ اﻧﺪﮐـﯽ در ﻣـــﻮرد ﻧﻘــﺶ ﻓﯿﻠــﺪ ‪ Window size‬ﺑﺤــﺚ ﮐﻨﯿــﻢ ‪.‬‬
‫ﻫﻤﺎﻧﮕﻮﻧـﻪ ﮐـﻪ ﻗﺒـﻼً اﺷـﺎره ﺷـﺪ در ﭘﺮوﺗﮑـﻞ ‪ TCP‬ﺑـﺮای ﮐﻨـــﺘﺮل ﺟﺮﯾــﺎن داده ﻫــﺎ از ﺑــﺎﻓﺮ‬
‫اﺳـﺘﻔﺎده ﻣﯽﺷـﻮد و داده ﻫـﺎ ﻗﺒـﻞ از ارﺳـﺎل ﺑـﻪ ﺑﺮﻧﺎﻣـﻪ ﮐـﺎرﺑﺮدی ﻻﯾـﻪ ﺑـﺎﻻﺗﺮ ﺑـــﺎﻓﺮ ﺷــﺪه و‬
‫ﺑﺼـﻮرت دﺳـﺘﻪ ای ﺗﺤﻮﯾـﻞ ﺧﻮاﻫـﺪ ﺷـﺪ و ﮔﺎﻫـﺎً ﻣﻤﮑـﻦ اﺳـﺖ ﺑﺮﻧﺎﻣـﮥ ﮐـﺎرﺑﺮدی اﻗـﺪام ﺑـــﻪ‬
‫درﯾﺎﻓﺖ داده ﻫﺎی ﺑﺎﻓﺮ ﺷــﺪۀ ﺧـﻮد در ﻣـﻬﻠﺖ ﻣﻘـﺮر ﻧﮑـﺮده و ﺑـﺎﻓﺮ ﭘـﺮ ﺷـﻮد‪ .‬در اﯾـﻦ ﺣـﺎﻟﺖ‬
‫ﮔﯿﺮﻧﺪه دﯾﮕﺮ ﻗﺎدر ﺑــﻪ درﯾـﺎﻓﺖ و ذﺧـﯿﺮۀ داده ﻫـﺎ در ﺑـﺎﻓﺮش ﻧﺨﻮاﻫـﺪ ﺑـﻮد ‪ ،‬ﺑـﻬﻤﯿﻦ دﻟﯿـﻞ در‬
‫ﻫﺮ ﺑﺴﺘﮥ ‪ TCP‬ﮐــﻪ ﺑـﻪ ﻃـﺮف دﯾﮕـﺮ ارﺳـﺎل ﻣﯽﺷـﻮد ﺣﺠـﻢ ﻓﻀـﺎی آزاد ﺑـﺎﻓﺮ ‪ ،‬در اﯾـﻦ ﻓﯿﻠـﺪ‬
‫اﻋـﻼم ﺧﻮاﻫـﺪ ﺷـﺪ‪ .‬ﺑﻌﻨـﻮان ﻣﺜـﺎل اﮔـﺮ در ﯾـﮏ ﺑﺴـﺘﮥ درﯾـﺎﻓﺘﯽ ﻣﻘـﺪار ﻓﯿﻠـــﺪ ‪Window Size‬‬
‫ﻣﻘﺪار ‪ 4096‬ﺑﺎﺷﺪ ﺑﺪﯾــﻦ ﻣﻌﻨﺎﺳـﺖ ﮐـﻪ از ﮐـﻞ ﻓﻀـﺎی ﺑـﺎﻓﺮ ﻣﻮﺟـﻮد ‪ ،‬ﻓﻌـﻼً ﭼـﻬﺎر ﮐﯿﻠﻮﺑـﺎﯾﺖ‬
‫از آن ﺧﺎﻟﯽ اﺳﺖ‪ .‬ﺑﺮای روﺷﻦ ﺷــﺪن ﻗﻀﯿـﻪ ﺑـﻪ ﺷـﮑﻞ )‪ (5-5‬ﺗﻮﺟـﻪ ﮐﻨﯿـﺪ‪.‬‬
‫ﻧﺎم ﻣﺘﻐﯿﺮ‬
‫ﺗﻮﺿﯿﺢ‬
‫ﻣﺘﻐﯿﺮﻫﺎی ﻧﻈﺎرت ﺑﺮ ارﺳﺎل داده ﻫﺎ‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ ﺑﺴﺘﻪ ای ﮐﻪ ارﺳﺎل ﺷﺪه وﻟﯽ ﻫﻨﻮز ﭘﯿﻐﺎم ‪ Ack‬آن ﺑﺮﻧﮕﺸﺘﻪ اﺳﺖ‪.‬‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ ﺑﺎﯾﺖ ﮐﻪ داده ﻫﺎ از آن ﺷﻤﺎره ﺑﻪ ﺑﻌﺪ در ﺑﺴﺘﮥ ﺑﻌﺪی ﮐﻪ ﺑﺎﯾﺪ ارﺳﺎل ﺷﻮد‪.‬‬
‫ﻣﯿﺰان ﻓﻀﺎی آزاد در ﺑﺎﻓﺮ ارﺳﺎل‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ داده ﻫﺎی اﺿﻄﺮاری ﮐﻪ ﺗﺤﻮﯾﻞ ﺑﺮﻧﺎﻣﮥ ﮐﺎرﺑﺮدی ﺷﺪه اﺳﺖ‪.‬‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ داده ﻫﺎﯾﯽ ﮐﻪ ﺑﺎﯾﺪ آﻧﯽ ﺑﻪ ﺑﺮﻧﺎﻣﮥ ﮐﺎرﺑﺮدی ﮔﺴﯿﻞ )‪ (Push‬ﺷﻮد‪.‬‬
‫ﻣﻘﺪار اوﻟﯿﮥ ﺷﻤﺎرﻧﺪۀ ﺗﺮﺗﯿﺐ داده ﻫﺎی درﯾﺎﻓﺘﯽ ﮐﻪ در ﺣﯿﻦ ارﺗﺒﺎط ﺑﺮ روی آن ﺗﻮاﻓﻖ ﻣﯽﺷﻮد‪.‬‬
‫ﻣﺘﻐﯿﺮﻫﺎی ﻧﻈﺎرت ﺑﺮ درﯾﺎﻓﺖ داده ﻫﺎ‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ ﺑﺎﯾﺖ در ﺑﺴﺘﮥ ﺑﻌﺪی ﮐﻪ از آن ﺷﻤﺎره ﺑﻪ ﺑﻌﺪ اﻧﺘﻈﺎر درﯾﺎﻓﺖ آﻧﺮا دارد‪.‬‬
‫ﻣﯿﺰان ﻓﻀﺎی آزاد در ﺑﺎﻓﺮ درﯾﺎﻓﺖ‬
‫ﺷﻤﺎرۀ ﺗﺮﺗﯿﺐ آﺧﺮﯾﻦ داده ﻫﺎی اﺿﻄﺮاری ﮐﻪ ﺑﺮای ﺑﺮﻧﺎﻣﮥ ﻃﺮف ﻣﻘﺎﺑﻞ ارﺳﺎل ﺷﺪه اﺳﺖ‪.‬‬
‫ﻣﻘﺪار اوﻟﯿﮥ ﺷﻤﺎرﻧﺪۀ ﺗﺮﺗﯿﺐ داده ﻫﺎی ارﺳﺎﻟﯽ ﮐﻪ در ﺣﯿﻦ ارﺗﺒﺎط ﺑﺮ روی آن ﺗﻮاﻓﻖ ﻣﯽﺷﻮد‪.‬‬
‫ﺟﺪول )‪ (5-4‬ﺑﺮﺧﯽ از ﻣﺘﻐﯿﺮﻫﺎی ﺳﺎﺧﺘﻤﺎن دادۀ‬
‫‪SND.UNA‬‬
‫‪SND.NXT‬‬
‫‪SND.WND‬‬
‫‪SND.UP‬‬
‫‪SND .WL1‬‬
‫‪SND.WL2‬‬
‫‪SND.PUSH‬‬
‫‪SND.ISS‬‬
‫‪RCV.NXT‬‬
‫‪RCV.WND‬‬
‫‪RCV.UP‬‬
‫‪RCV.IRS‬‬
‫‪TCB‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪204‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻓﻀﺎی ﺑﺎﻓﺮﮔﯿﺮﻧﺪه‬
‫ﮔﯿﺮﻧﺪه‬
‫ﻓﺮﺳﺘﻨﺪه‬
‫‪4 Kbyte‬‬
‫ارﺳﺎل ‪ 2 Kbyte‬داده‬
‫‪Window Size=2048‬‬
‫ارﺳﺎل ‪ 2 Kbyte‬داده‬
‫ﮔﯿﺮﻧﺪه‬
‫‪ 2KB‬از ﺑﺎﻓﺮ ﻣﯿﺨﻮاﻧﺪ‬
‫‪Window Size=0‬‬
‫ﻓﺮﺳﺘﻨﺪه ﻣﺘﻮﻗﻒ‬
‫ﻣﯿﺸﻮد‬
‫‪Window Size=2048‬‬
‫ﻓﺮﺳﺘﻨﺪه ﻣﺠﺪدآ‬
‫اﺣﯿﺎ ﻣﯿﺸﻮد‬
‫ارﺳﺎل ‪ 1 Kbyte‬داده‬
‫ﺷﮑﻞ )‪ (5-5‬ﻣﺜﺎﻟﯽ از روﻧﺪ ﮐﻨﺘﺮل ﺟﺮﯾﺎن در ﭘﺮوﺗﮑﻞ‬
‫‪TCP‬‬
‫در اﯾﻦ ﭘﺮوﺗﮑﻞ ﺑﻪ ازای ﻫﺮ ارﺗﺒﺎط ‪ TCP‬ﮐﻪ ﻣﻮﻓﻘﯿﺖ آﻣﯿﺰ ﺑﺮﻗﺮار ﺷﻮد ‪ ،‬ﯾــﮏ ”ﺳـﺎﺧﺘﻤﺎن دادۀ“‬
‫ﺧﺎص ﺑﺮای آن اﯾﺠﺎد ﺧﻮاﻫﺪ ﺷﺪ ﮐﻪ اﻃﻼﻋﺎﺗﯽ از آﺧﺮﯾﻦ وﺿﻌﯿﺖ ارﺳﺎل ﯾﺎ درﯾﺎﻓﺖ ﺟﺮﯾﺎن داده‬
‫ﻫﺎ در آن ﻧﮕﻬﺪاری ﻣﯽﺷﻮد‪ .‬اﯾﻦ ﺳﺎﺧﺘﻤﺎن داده ‪” ،‬ﺑﻠﻮک ﻧﻈﺎرت ﺑــﺮ اﻧﺘﻘـﺎل“‪ 1‬ﯾـﺎ اﺧﺘﺼـﺎراً ‪TCB‬‬
‫ﻧﺎﻣﯿﺪه ﻣﯽﺷﻮد‪ .‬ﺑﺮﺧﯽ از ﻣﺘﻐﯿﺮﻫﺎی ﺗﻌﺮﯾﻒ ﺷــﺪه درون ﺳـﺎﺧﺘﻤﺎن دادۀ ‪ TCB‬در ﺟـﺪول )‪(5-4‬‬
‫ﻣﻌﺮﻓﯽ ﺷﺪه اﺳﺖ‪.‬‬
‫ﻋﻤﻠﮑﺮد اﯾﻦ ﻣﺘﻐﯿﺮﻫﺎ ﺑﺎ ﺗﻌﺮﯾﻔﯽ ﮐﻪ از ﻓﯿﻠﺪﻫﺎی ﯾﮏ ﺑﺴﺘﮥ ‪ TCP‬داﺷﺘﯿﻢ واﺿﺢ و ﻣﺸﺨﺺ اﺳﺖ‪.‬‬
‫‪Transmission Control Block‬‬
‫‪1‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪205‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫‪1‬‬
‫‪TCP‬‬
‫‪ (6‬زﻣﺎن ﺳﻨﺠﻬﺎ در ﭘﺮوﺗﮑﻞ‬
‫ﻋﻤﻠﮑﺮد ﺻﺤﯿﺢ ﭘﺮوﺗﮑﻞ ‪ TCP‬واﺑﺴﺘﮕﯽ ﺷﺪﯾﺪی ﺑﻪ اﺳﺘﻔﺎدۀ درﺳﺖ و ﻣﻨﻄﻘﯽ از زﻣــﺎن ﺳـﻨﺠﻬﺎ‬
‫دارد‪ .‬در اﯾﻦ ﺑﺨﺶ ﻣﻬﻤﺘﺮﯾﻦ زﻣﺎن ﺳﻨﺠﻬﺎی ﺑﮑﺎر رﻓﺘﻪ در اﯾﻦ ﭘﺮوﺗﮑﻞ را ﺑﺮرﺳﯽ ﻣﯽﻧﻤﺎﯾﯿﻢ ‪:‬‬
‫½ ‪ : Retransmission Timer‬ﺑﻪ ﮔﻮﻧﻪ ای ﮐﻪ اﺷﺎره ﺷﺪ ﭘﺲ از ﺑﺮﻗﺮاری ﯾﮏ ارﺗﺒــﺎط ‪ ،‬وﻗﺘـﯽ‬
‫ﺑﺴﺘﻪ ای ﺑﺮای ﭘﺮوﺳﮥ ﻣﻘﺼﺪ ارﺳﺎل ﻣﯿﺸﻮد ‪ ،‬ﺿﻤﻦ ﻧﮕﻬﺪاری ﻣﻮﻗﺖ آن در ﯾــﮏ ﺑـﺎﻓﺮ ‪ ،‬ﺑـﺮای آن‬
‫ﯾﮏ زﻣﺎن ﺳﻨﺞ ﺗﻨﻈﯿﻢ و ﻓﻌّﺎل ﻣﯿﺸﻮد و اﮔﺮ در ﻣﻬﻠﺖ ﻣﻘﺮّر ﭘﯿﻐﺎم درﯾــﺎﻓﺖ آن )‪ (Ack‬ﻧﺮﺳـﯿﺪ ‪ ،‬آن‬
‫ﺑﺴﺘﻪ از ﻧﻮ ﺑﺮای ﻣﻘﺼﺪ ارﺳﺎل ﺧﻮاﻫﺪ ﺷﺪ‪ .‬اﯾﻦ زﻣﺎن ﺳﻨﺞ ﮐﻪ اﺧﺘﺼــﺎراً ‪ RT‬ﻧـﺎﻣﯿﺪه ﻣﯿﺸـﻮد ﺑـﻪ‬
‫ﯾﮏ ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض ‪ ،‬ﻣﻘﺪاردﻫﯽ ﻣﯿﺸﻮد و ﺷﺮوع ﺑﻪ ﺷﻤﺎرش ﻣﻌﮑﻮس زﻣﺎن ﻣﯽﻧﻤﺎﯾﺪ؛ ﻫــﺮﮔـﺎه‬
‫ﻣﻘﺪار آن زﻣﺎن ﺳﻨﺞ ﺑﻪ ﺻﻔﺮ ﺑﺮﺳﺪ وﻟﯽ ﭘﯿﻐﺎم درﯾﺎﻓﺖ ﺑﺴﺘﻪ ﺑﺮﻧﮕــﺮدد ‪” ،‬رﺧـﺪاد اﻧﻘﻀـﺎی زﻣـﺎنِ‬
‫ﺗﮑﺮار“‪ 2‬ﺣﺎدث ﺷﺪه و ﭘﺮوﺳﮥ ‪ TCP‬را وادار ﺑﻪ ارﺳﺎل ﻣﺠﺪد آن ﺑﺴﺘﻪ ﻣﯽﮐﻨﺪ و ﻣﺮاﺣــﻞ ﻗﺒﻠـﯽ از‬
‫ﻧﻮ ﺗﮑﺮار ﻣﯽﺷﻮد‪.‬‬
‫ﻋﻤﻠﮑﺮد اﯾﻦ زﻣﺎن ﺳﻨﺞ ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ وﻟﯽ ﻣﺴــﺌﻠﮥ ﺑﻐﺮﻧـﺞ در ﺷـﺒﮑﻪ آﻧﺴـﺖ ﮐـﻪ ‪ :‬اوﻻً ﭘﯿـﺶ‬
‫ﻓﺮض اﯾﻦ زﻣﺎن ﺳﻨﺞ ﭼﻪ ﻣﻘﺪاری ﺑﺎﺷﺪ؟ ﺛﺎﻧﯿﺎً ﻋﻤﻞ ارﺳﺎلِ ﻣﺠﺪّد ﯾﮏ ﺑﺴﺘﻪ ﭼﻨﺪ ﺑﺎر ﺗﮑﺮار ﺷﻮد؟‬
‫در ﺷﺒﮑﻪ ﻫﺎی ﻣﺤﻠﯽ ﺳﺮﯾﻊ ‪ ،‬زﻣﺎن رﻓﺖ ﯾﮏ ﺑﺴﺘﻪ و ﺑﺮﮔﺸﺖ ﭘﯿﻐــﺎم درﯾـﺎﻓﺖِ آن ‪ ،‬ﺣـﺪود ﭼﻨـﺪ‬
‫ﻫﺰارم ﺛﺎﻧﯿﻪ ﻃﻮل ﺧﻮاﻫﺪ ﮐﺸﯿﺪ در ﺣﺎﻟﯽ ﮐﻪ در ﺷﺒﮑﮥ ‪ WAN‬اﯾﻦ زﻣﺎن رﻓﺖ و ﺑﺮﮔﺸﺖ ﻣﯿﺘﻮاﻧﺪ ﺗﺎ‬
‫ﭼﻨﺪﯾﻦ ﺛﺎﻧﯿﻪ ﻃﻮل ﺑﮑﺸﺪ‪.‬‬
‫اﮔﺮ ﻗﺮار ﺑﺎﺷﺪ زﻣﺎن ﭘﯿﺶ ﻓﺮض زﻣﺎن ﺳﻨﺞ ‪ RT‬ﺑﻪ ﻣﻘﺪاری ﮐﻢ ﺗﻨﻈﯿﻢ ﺷﻮد ‪ ،‬آﻧﮕــﺎه وﻗﺘـﯽ ﻣﻘﺼـﺪ‬
‫روی ﯾﮏ ﺷﺒﮑﮥ راه دور واﻗﻊ اﺳﺖ ‪ ،‬ﻗﺒﻞ از آﻧﮑﻪ ﺑﺴﺘﻪ ﺑﺘﻮاﻧﺪ ﺑﻪ ﻣﻘﺼﺪ ﺑﺮﺳﺪ ‪ ،‬ﻣﻬﻠﺖ اﯾﻦ زﻣــﺎن‬
‫ﺳﻨﺞ ﻣﻨﻘﻀﯽ ﺷﺪه و ﺑﺴﺘﻪ ﻣﺠﺪداً ارﺳﺎل ﻣﯿﺸﻮد و اﯾﻦ ﮐﺎر ﺑﺮای ﻫــﺮ ﺑﺴـﺘﻪ ﺑﻄـﻮر ﻣﺘﻮاﻟـﯽ ﺗﮑـﺮار‬
‫ﻣﯽﺷﻮد و ﺗﺮاﻓﯿﮏ زاﺋﺪ و ﺑﯿﻬﻮده ای را ﺑﻪ ﺷﺒﮑﻪ ﺗﺤﻤﯿﻞ ﻣﯿﮑﻨﺪ‪.‬‬
‫از ﻃﺮف دﯾﮕﺮ اﮔﺮ ﻗﺮار ﺑﺎﺷﺪ زﻣﺎن ﭘﯿﺶ ﻓﺮض اﯾﻦ زﻣﺎن ﺳﻨﺞ ﺑﺎ ﻣﻘﺪاری ﺑﺰرگ ﺗﻨﻈﯿــﻢ ﺷـﻮد در‬
‫ﺷﺒﮑﻪ ﻫﺎی ﻣﺤﻠﯽ و ﺳﺮﯾﻊ ‪ ،‬ﻫﻨﮕﺎم ﺑﺮوز ﯾﮏ ﺧﻄﺎ ﺗﺎﺧﯿﺮ زﯾﺎدی ﺑﻮﺟﻮد ﺧﻮاﻫﺪ آﻣﺪ‪.‬‬
‫ﺑﻬﺘﺮﯾﻦ راه ﺗﻨﻈﯿﻢ زﻣﺎن ﺳﻨﺞ اﺳﺘﻔﺎده از روﺷﻬﺎی وﻓﻘﯽ و ﭘﻮﯾﺎ اﺳﺖ ﭼﺮاﮐﻪ راﻧﺪﻣﺎن ﭘﺮوﺗﮑﻞ ‪TCP‬‬
‫ﺑﻪ ﺷﺪت ﺑﻪ آن واﺑﺴﺘﻪ اﺳﺖ‪ .‬اﻟﮕﻮرﯾﺘﻢ ﭘﻮﯾﺎﯾﯽ ﮐﻪ ﻣﻌﻤﻮﻻً در ﭘﯿﺎده ﺳﺎزی ‪ TCP‬ﺑﮑﺎرﮔﺮﻓﺘﻪ ﻣﯿﺸﻮد‬
‫در زﯾﺮ ﻣﻌﺮﻓﯽ ﺷﺪه اﺳﺖ‪: 3‬‬
‫‪ 3‬اﯾــﻦ اﻟﮕﻮرﯾﺘــﻢ در ﺳــﺎل ‪ 1988‬ﺗﻮﺳــﻂ ‪ Jacobson‬ﻣﻌﺮﻓــﯽ ﺷــــﺪ‪.‬‬
‫‪TCP Timers‬‬
‫‪Retransmission Timeout Event‬‬
‫‪1‬‬
‫‪2‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪206‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫اﻟﻒ( وﻗﺘﯽ ﯾﮏ ارﺗﺒﺎط ‪ TCP‬ﺑﺮﻗﺮار ﻣﯿﺸﻮد ﯾﮏ ﻣﺘﻐﯿﺮ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧــﺎم ‪ RTT‬ﻣﺘﻨـﺎﻇﺮ ﺑـﺎ آن اﯾﺠـﺎد‬
‫ﺷﺪه و ﺑﻪ ﯾﮏ ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض ﻣﻘﺪاردﻫﯽ ﻣﯿﺸﻮد‪ .‬اﯾﻦ ﻣﻘﺪار ﮐــﻪ ﺣﺪﮐـﺜﺮ زﻣـﺎن اﻧﺘﻈـﺎر ﺑـﺮای‬
‫ﺑﺮﮔﺸﺖ ﭘﯿﻐﺎم درﯾﺎﻓﺖ ﺑﺴﺘﻪ ﻣﺤﺴﻮب ﻣﯿﺸﻮد ﻣﻤﮑﻦ اﺳﺖ اﺻﻼً ﺑﻬﯿﻨﻪ و ﻣﻨﺎﺳﺐ ﻧﺒﺎﺷﺪ‪.‬‬
‫ب ( ﺑﻪ ازای ﻫﺮ ﺑﺴﺘﻪ ﮐﻪ ارﺳﺎل ﻣﯿﺸﻮد ﯾﮏ زﻣﺎن ﺳﻨﺞ ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ﺑﺴﺘﻪ ﺗﻨﻈﯿﻢ ﻣﯽﺷﻮد ﮐﻪ زﻣﺎن‬
‫رﻓﺖ ﺑﺴﺘﻪ و ﺑﺮﮔﺸﺖ ﭘﯿﻐﺎم درﯾﺎﻓﺖ آﻧﺮا اﻧﺪازه ﻣﯿﮕﯿﺮد؛ ﻓﺮض ﮐﻨﯿﺪ ﺑﺮای ﯾــﮏ ﺑﺴـﺘﻪ اﯾـﻦ زﻣـﺎن‬
‫ﻣﻘﺪار ‪ M‬ﻣﺤﺎﺳﺒﻪ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬
‫ج ( ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض زﻣﺎن ﺳﻨﺞ ﻃﺒﻖ راﺑﻄﮥ زﯾﺮ ﺑﻬﻨﮕﺎم ﻣﯿﺸﻮد‪:‬‬
‫‪RTTnew=RTTold+4*Dnew‬‬
‫)‪Dnew=α.Dold+(1-α).(RTTold-M‬‬
‫‪ ، α=7/8‬ﻣﻘﺪار اوﻟﯿﮥ ‪ D‬ﻣﯽﺗﻮاﻧﺪ ﺻﻔﺮ ﺑﺎﺷﺪ‪.‬‬
‫ﺗﺒﺼﺮه ‪ :‬ﻣﻘﺪار ﺟﺪﯾﺪ ﺑﺮای زﻣﺎن ﺳﻨﺞ ﻓﻘﻂ ﺑﻪ ﺷﺮﻃﯽ اﻋﻤﺎل ﻣﯽﺷﻮد ﮐﻪ ارﺳﺎل ﺑﺴﺘﮥ ‪ TCP‬ﺗﮑــﺮار‬
‫ﻧﺸﺪه ﺑﺎﺷﺪ و ﻓﻘﻂ ﯾﮑﺒﺎر ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ‪.1‬‬
‫½ ‪ : Keep-Alive Timer‬ﻣﻤﮑﻦ اﺳﺖ ﻃﺮﻓﯿﻦ ﯾﮏ ارﺗﺒﺎط ﺑﻪ ﻫﺮ دﻟﯿﻠﯽ ارﺳﺎل اﻃﻼﻋﺎت را ﻣﻮﻗﺘ ًﺎ‬
‫ﻣﺘﻮﻗﻒ ﮐﻨﻨﺪ و ﻫﯿﭻ دادﻫﺎی ﻣﺒﺎدﻟﻪ ﻧﺸﻮد ‪ ،‬ﻫﺮﭼﻨﺪ ارﺗﺒﺎط ‪ TCP‬ﻓﻌّﺎل و ﺑﺎز ﺑﺎﺷﺪ‪ .‬از ﺳﻮی دﯾﮕــﺮ‬
‫ﻣﻤﮑﻦ اﺳﺖ ﯾﮑﯽ از ﻃﺮﻓﯿﻦ ﺑﻪ دﻟﯿﻠﯽ ﻣﺜﻞ ﺧﺮاﺑﯽ ﺳﺨﺖ اﻓﺰاری ﯾﺎ ﻧﺮم اﻓــﺰاری ‪ ،‬ﺑـﺪون اﻃـﻼع ‪،‬‬
‫ارﺗﺒﺎط را رﻫﺎ ﮐﺮده ﺑﺎﺷﺪ‪ .‬ﺑﺮای ﺗﻤﺎﯾﺰ ﺑﯿﻦ اﯾﻦ دو ﺣﺎﻟﺖ ‪ ،‬ﻓﺮﺳﺘﻨﺪۀ اﻃﻼﻋﺎت ﺑــﺎ اﺳـﺘﻔﺎده از اﯾـﻦ‬
‫زﻣﺎن ﺳﻨﺞ در ﺑﺎزﻫﻬﺎی زﻣﺎﻧﯽ ﻣﻨﻈﻢ ﯾﮏ ﺑﺴﺘﮥ ‪ TCP‬ﮐﻪ ﺧﺎﻟﯽ از ﻫﺮﮔﻮﻧــﻪ دادﻫﺎی ﻣﯽﺑﺎﺷـﺪ ﺑـﺮای‬
‫ﻣﻘﺼﺪ ارﺳﺎل ﻣﯽﺷﻮد و در ﺻﻮرﺗﯽ ﮐﻪ ﭘﯿﻐﺎم درﯾﺎﻓﺖ آن ﺑﺎز ﮔﺸــﺖ ‪ ،‬ﻧﺸـﺎن دﻫﻨـﺪۀ آﻧﺴـﺖ ﮐـﻪ‬
‫ارﺗﺒﺎط ‪ TCP‬ﻓﻌﺎل و ﺑﺎز اﺳﺖ؛ در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ارﺗﺒﺎط ‪ TCP‬ﺑﺼﻮرت ﯾﮑﻄﺮﻓﻪ ﻗﻄــﻊ ﺷـﺪه و‬
‫ﺗﻤﺎم ﺑﺎﻓﺮﻫﺎ و ﻓﻀﺎی اﯾﺠﺎد ﺷﺪه آزاد ﻣﯽﺷﻮﻧﺪ‪ .‬زﻣﺎن ﭘﯿﺶ ﻓﺮض اﯾﻦ زﻣﺎن ﺳﻨﺞ ﻣﻘﺪاری ﺑﯿﻦ ‪ 5‬ﺗﺎ‬
‫‪ 45‬ﺛﺎﻧﯿﻪ ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫½ ‪ : Persistence Timer‬در ﭘﺮوﺗﮑﻞ ‪ TCP‬وﻗﺘﯽ ﯾﮑﯽ از ﻃﺮﻓﯿﻦ ارﺗﺒﺎط ‪ ،‬ﻣﻘﺪار ﻓﻀﺎی ﺑـﺎﻓﺮ آزاد‬
‫ﺧﻮد را در ﻓﯿﻠﺪ ‪ Window Size‬ﺻﻔﺮ اﻋﻼم ﮐﻨﺪ ‪ ،‬ﻧﺎﮔﺰﯾﺮ ﭘﺮوﺳﮥ ﻃــﺮف ﻣﻘـﺎﺑﻞ ﻣﺘﻮﻗـﻒ )ﺑﻠﻮﮐـﻪ(‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در ﭼﻨﯿﻦ ﺣﺎﻟﺘﯽ ﭘﺲ از آﻧﮑﻪ ﻣﻘﺪاری از ﻓﻀــﺎی ﺑـﺎﻓﺮ ﭘـﺮ ﺷـﺪه ﺗﺨﻠﯿـﻪ ﺷـﺪ ‪ ،‬اﯾـﻦ‬
‫ﻣﻮﺿﻮع ﺑﺎﯾﺪ ﺑﻪ ﻃﺮف ﻣﻘﺎﺑﻞ ﮔﺰارش ﺷﻮد ﺗﺎ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ‪ ،‬ﭘﺮوﺳﮥ ﺑﻠﻮﮐﻪ ﺷــﺪه را اﺣﯿـﺎ ﮐـﺮده و‬
‫اداﻣﮥ ارﺳﺎل ﻣﻤﮑﻦ ﺑﺎﺷﺪ‪ .‬در ﻏﯿﺮ اﯾﻨﺼﻮرت ”ﺑﻦ ﺑﺴﺖ“‪ 2‬و ﺗﺎﺧﯿﺮ ﺑﯿﻨﻬﺎﯾﺖ ﺑــﺮای ﭘﺮوﺳـﻪ ﺑﻮﺟـﻮد‬
‫ﺧﻮاﻫﺪ آﻣﺪ‪.‬‬
‫‪Karn’s Algorithm‬‬
‫‪Deadlock‬‬
‫‪1‬‬
‫‪2‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪207‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ زﻣﺎن ﺳﻨﺞ ﭘﺲ از آزاد ﺷﺪن ﻓﻀﺎی ﺑﺎﻓﺮ ‪ ،‬در ﻓﻮاﺻﻞ زﻣــﺎﻧﯽ ﻣﻨﻈـﻢ ﯾـﮏ ﺑﺴـﺘﮥ‬
‫‪ TCP‬ﺑﺮای ﭘﺮوﺳﮥ ﺑﻠﻮﮐﻪ ﺷﺪه ارﺳﺎل ﻣﯽﺷﻮد ﺗﺎ ﺿﻤﻦ آﮔﺎﻫﯽ از آﺧﺮﯾﻦ وﺿﻌﯿــﺖ ﻓﻀـﺎی ﺑـﺎﻓﺮ‬
‫ﭘﺮوﺳﻪ ﺑﺘﻮاﻧﺪ اﺣﯿﺎ ﺷﻮد‪.‬‬
‫½ ‪ : Quiet Timer‬ﻣﻤﮑﻦ اﺳﺖ ﯾﮏ ارﺗﺒﺎط ‪ TCP‬ﺑﺴﺘﻪ ﺷﻮد وﻟﯽ ﻫﻨﻮز ﺑﺴﺘﻬﻬﺎﯾﯽ ﺳﺮﮔــﺮدان ﺑـﺮ‬
‫روی ﺷﺒﮑﻪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﮐﻪ ﭘﺲ از ﺑﺴﺘﻪ ﺷﺪن ارﺗﺒﺎط ‪ TCP‬ﺑﻪ ﻣﻘﺼﺪ ﺑﺮﺳﻨﺪ ‪ ،‬ﻟــﺬا در اﯾـﻦ‬
‫ﭘﺮوﺗﮑﻞ ﭘﺲ از ﺑﺴﺘﻪ ﺷﺪن ﯾﮏ ارﺗﺒﺎط ﺑﺎ ﺷﻤﺎرۀ ﭘﻮرت ﺧﺎص ‪ ،‬ﺑﻘﯿﮥ ﭘﺮوﺳﻪ ﻫﺎ ﺣــﻖ اﺳـﺘﻔﺎده از‬
‫ﺷﻤﺎرۀ ﭘﻮرﺗﯽ ﮐﻪ اﺧﯿﺮاً ﺑﺴﺘﻪ ﺷﺪه را ﻧﺪارﻧﺪ‪ .‬ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض اﯾﻦ زﻣــﺎن ﺳـﻨﺞ دﻗﯿﻘـﺎً دو ﺑﺮاﺑـﺮ‬
‫ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض زﻣﺎن ﺣﯿﺎت ﺑﺴﺘﮥ ‪ IP‬ﺑﺮ ﺣﺴﺐ ﺛﺎﻧﯿﻪ اﺳﺖ‪ ) .‬ﭼﯿﺰی ﺑﯿﻦ ‪ 30‬ﺗﺎ ‪ 120‬ﺛﺎﻧﯿﻪ (‬
‫½ ‪ : Idle Timer‬اﯾﻦ زﻣﺎن ﺳﻨﺞ ﺑﺮای آن اﺳﺖ ﮐﻪ اﮔﺮ ﺗﻼش ﺑﺮای ﺗﮑﺮار ارﺳﺎل ﯾﮏ ﺑﺴﺘﻪ ﺑﯿــﺶ‬
‫از ﺣﺪ ﻣﺘﻌﺎرف اﻧﺠﺎم ﺷﻮد ارﺗﺒﺎط ‪ TCP‬را ﺑﺼﻮرت ﯾﮑﻄﺮﻓﻪ رﻫﺎ و ﻗﻄﻊ ﻧﻤﺎﯾﺪ‪ .‬ﻣﻘﺪار ﻣﻌﻤﻮل اﯾـﻦ‬
‫زﻣﺎن ﺳﻨﺞ ‪ 360‬ﺛﺎﻧﯿﻪ ) ‪ 6‬دﻗﯿﻘﻪ ( اﺳﺖ‪.‬‬
‫‪ (7‬ﭘﺮوﺗﮑﻞ ‪UDP‬‬
‫ﭘﺮوﺗﮑﻞ ‪ TCP‬ﭘﺮوﺗﮑﻠﯽ ”اﺗﺼﺎﻟﮕﺮا“ اﺳﺖ و ﻟﺰوم ﺑﺮﻗﺮاری ﯾﮏ ارﺗﺒﺎط ﻗﺒﻞ از ﻫﺮﮔﻮﻧـﻪ ﻣﺒﺎدﻟـﮥ‬
‫داده ‪ ،‬ﻣﯽﺗﻮاﻧﺪ ﺑﯿﻦ ﭼﻨﺪ ﻣﯿﻠﯽ ﺛﺎﻧﯿﻪ ) ﺑﺮای ﺷﺒﮑﻪ ﻫﺎی ﻣﺤﻠﯽ ﺳــﺮﯾﻊ ( ﺗـﺎ ﭼﻨﺪﯾـﻦ ﺛﺎﻧﯿـﻪ ) ﺑـﺮای‬
‫ﺷﺒﮑﻪ ﻫﺎی ‪ ( WAN‬ﻃﻮل ﺑﮑﺸﺪ؛ در ﺿﻤﻦ ﺗﺎﻣﻞ ﺑﺮای ﺑﺎزﮔﺸــﺖ ﭘﯿﻐﺎﻣـﻬﺎی ‪ ، Ack‬ﯾـﮏ ﭘﺮوﺳـﮥ‬
‫ﮐﺎرﺑﺮدی را ﺑﺎ ﺗﺎﺧﯿﺮ ﻣﻮاﺟﻪ ﺧﻮاﻫﺪ ﮐﺮد‪ .‬ﺑﺮای ﺑﺮﺧﯽ از ﮐﺎرﺑﺮدﻫﺎ اﯾﻦ زﻣﺎن ﻗﺎﺑﻞ ﺗﺤﻤﻞ ﻧﯿﺴــﺖ و‬
‫ﺳﺮﻋﺖ در رﺳﯿﺪن ﯾﮏ ﺑﺴﺘﻪ ﺑﻪ ﻣﻘﺼﺪ ‪ ،‬ﺿﺮورﯾﺘﺮ از ﭘﺮداﺧﺘﻦ ﺑﻪ ﻣﺴﺎﺋﻠﯽ از ﻗﺒﯿﻞ ﺑﺮرﺳﯽ ﺷــﻤﺎرۀ‬
‫ﺗﺮﺗﯿﺐ و ارﺳﺎل ﭘﯿﻐﺎﻣﻬﺎی ﮐﻨﺘﺮﻟﯽ ﻣﺤﺴﻮب ﻣﯿﺸﻮد‪ ) .‬ﮐﺎرﺑﺮدﻫﺎﯾﯽ ﻣﺜﻞ ﺳﯿﺴﺘﻢ ‪ DNS‬ﯾﺎ ‪ TFTP‬ﮐـﻪ‬
‫در ﺑﺨﺸﻬﺎی آﺗﯽ ﺑﺮرﺳﯽ ﻣﯿﺸﻮﻧﺪ‪(.‬‬
‫در ﻻﯾﮥ اﻧﺘﻘﺎل از ﻣﺪل ‪ TCP/IP‬ﺑﺮای ﭼﻨﯿﻦ ﮐﺎرﺑﺮدﻫﺎﯾﯽ ﯾﮏ ﭘﺮوﺗﮑﻞ ﺳــﺎده و ﺳـﺮﯾﻊ ﺑـﻪ ﻧـﺎم‬
‫‪ UDP‬ﻣﻌﺮﻓﯽ ﺷﺪه اﺳﺖ ﮐﻪ ﺑﻪ ﺻﻮرت ذاﺗﯽ ”ﺑﺪون اﺗﺼﺎل“‪ 1‬اﺳﺖ ‪ ،‬ﯾﻌﻨﯽ ﺑﺪون ﻫﯿﭻ اﻃﻼﻋــﯽ از‬
‫ﺳﺮﻧﻮﺷﺘﯽ ﮐﻪ در اﻧﺘﻈﺎر ﯾﮏ ﺑﺴﺘﻪ اﺳﺖ ‪ ،‬ﺑﻪ ﺳﻤﺖ ﻣﻘﺼﺪ ارﺳــﺎل ﻣﯿﺸـﻮد‪ .‬ﻫـﺮﮔﻮﻧـﻪ اﻃﻼﻋـﯽ از‬
‫رﺳﯿﺪن ﯾﺎ ﻧﺮﺳﯿﺪن داده ﻫﺎ ﺑﺎﯾﺪ در ﻻﯾﻪ ﺑﺎﻻﺗﺮ ﺑﺮرﺳﯽ و ﻣﺪﯾﺮﯾﺖ ﺷﻮد‪.‬‬
‫ﭘﺮوﺗﮑﻞ ‪ ، UDP‬ﺗﻤﺎم ﮐﺎﺳﺘﯽ ﻫﺎی ﻻﯾﮥ ‪ IP‬را دارد ) ﺑﻪ ﻏﯿﺮ از ﻧﻈــﺎرت ﺑـﺮ ﺧﻄـﺎی ﮐﺎﻧـﺎل ﮐـﻪ‬
‫ﻣﯿﺘﻮاﻧﺪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ( و ﺗﻨﻬﺎ ارﻣﻐﺎن اﯾﻦ ﭘﺮوﺗﮑﻞ ﺑﺮای ﭘﺮوﺳــﻪ ﻫـﺎ ﺳـﺮﻋﺖ ارﺳـﺎل و ﮐـﻢ‬
‫ﺷﺪن ﺗﺄﺧﯿﺮات ﻧﺎﺷﯽ از ﻧﻈﺎرت ﺑﺮ ﺟﺮﯾﺎن ﺑﺴﺘﻪ ﻫﺎﺳﺖ‪.‬‬
‫‪Connectionless‬‬
‫‪1‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪208‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫در اداﻣـﻪ ﺳـﺎﺧﺘﺎر ﺑﺴـﯿﺎر ﺳـﺎدۀ ﯾـﮏ ﺑﺴـﺘﮥ ‪ UDP‬را ﺑﺮرﺳـــﯽ ﻣﯿﮑﻨﯿــﻢ‪ .‬در ﺷــﮑﻞ )‪(5-6‬‬
‫ﺳﺎﺧﺘﺎر ﯾﮏ ﺑﺴﺘﮥ ‪ UDP‬ﺑﻪ ﺗﺼﻮﯾــﺮ ﮐﺸـﯿﺪه ﺷـﺪه اﺳـﺖ‪.‬‬
‫‪31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0‬‬
‫‪Destination Port‬‬
‫‪Source Port‬‬
‫‪UDP checksum‬‬
‫‪UDP Length‬‬
‫‪Data‬‬
‫ﺷﮑﻞ )‪ (5-6‬ﺳﺎﺧﺘﺎر ﯾﮏ ﺑﺴﺘﮥ‬
‫‪UDP‬‬
‫♦ ﻓﯿﻠﺪ ‪ : Source Port‬در اﯾـﻦ ﻓﯿﻠـﺪ ‪ ،‬ﯾـﮏ ﺷـﻤﺎرۀ ‪ 16‬ﺑﯿﺘـﯽ ﺑﻌﻨـﻮان آدرس ﭘـﻮرت ﭘﺮوﺳـﮥ‬
‫ﻣﺒﺪأ ﮐﻪ اﯾﻦ ﺑﺴﺘﻪ را ﺟﻬﺖ ارﺳــﺎل ‪ ،‬ﺗﻮﻟﯿـﺪ ﮐـﺮده ‪ ،‬ﻗـﺮار ﺧﻮاﻫـﺪ ﮔﺮﻓـﺖ‪.‬‬
‫♦ ﻓﯿﻠـﺪ ‪: Destination Port‬در اﯾـﻦ ﻓﯿﻠـﺪ ‪ ،‬آدرس ﭘـﻮرتِ ﭘﺮوﺳـﮥ ﻣﻘﺼـﺪ ﮐـﻪ آﻧـﺮا ﺗﺤﻮﯾــﻞ‬
‫ﺧﻮاﻫﺪ ﮔﺮﻓﺖ ‪ ،‬ﺗﻌﯿﯿــﻦ ﺧﻮاﻫـﺪ ﺷـﺪ ‪.‬‬
‫ﻫﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در ﺑﺨﺶ ﻗﺒﻠــﯽ اﺷـﺎره ﺷـﺪ اﯾـﻦ دو آدرس ﻣﺸـﺨﺺ ﻣﯽﮐﻨﻨـﺪ ﮐـﻪ اﯾـﻦ ﺑﺴـﺘﻪ از‬
‫ﮐـﺪام ﺑﺮﻧﺎﻣـﮥ ﮐـﺎرﺑﺮدی در ﻻﯾـﻪ ﺑـﺎﻻﺗﺮ ﺗﻮﻟﯿـﺪ و ﺑـﺎﯾﺪ ﺑـﻪ ﭼـﻪ ﺑﺮﻧﺎﻣـﻪ ای در ﻣﺎﺷـــﯿﻦ ﻣﻘﺼــﺪ‬
‫ﺗﺤﻮﯾﻞ داده ﺷــﻮد‪.‬‬
‫♦ ﻓﯿﻠﺪ ‪ : UDP Length‬در اﯾﻦ ﻓﯿﻠﺪ ﻃﻮل ﺑﺴﺘﮥ ‪ UDP‬ﺑﺮﺣﺴﺐ ﺑﺎﯾﺖ ‪ ،‬ﺷﺎﻣﻞ ﺳﺮآﯾﻨﺪ و داده ﻫﺎ‬
‫‪ ،‬درج ﻣﯿﺸﻮد‪.‬‬
‫♦ ﻓﯿﻠﺪ ‪ : UDP Checksum‬در اﯾﻦ ﻓﯿﻠﺪِ ‪ 16‬ﺑﯿﺘﯽ ﮐﺪ ﮐﺸﻒ ﺧﻄــﺎ درج ﻣﯿﺸـﻮد‪ .‬روش ﻣﺤﺎﺳـﺒﮥ‬
‫اﯾﻦ ﮐﺪ دﻗﯿﻘﺎً ﻫﻤﺎﻧﻨﺪ روﺷﯽ اﺳﺖ ﮐﻪ در ﭘﺮوﺗﮑﻞ ‪ TCP‬ﻣﻌﺮﻓﯽ ﺷﺪ‪ .‬ﺗﻨﻬﺎ ﺗﻔــﺎوت در آﻧﺴـﺖ ﮐـﻪ‬
‫ﺑﮑﺎرﮔﯿﺮی اﯾﻦ ﻓﯿﻠﺪ اﺧﺘﯿﺎری اﺳﺖ و در ﺻﻮرت ﻋﺪم ﻧﯿﺎز ﺑﻪ آن ‪ ،‬ﺗﻤﺎم ﺑﯿﺘﻬﺎی آن ﺑﻪ ﺻﻔﺮ ﺗﻨﻈﯿــﻢ‬
‫ﻣﯽﺷﻮد‪ ) .‬ﺑﺮای ﮐﺎرﺑﺮدﻫﺎﯾﯽ ﻣﺜﻞ ارﺳﺎل دﯾﺠﯿﺘﺎل ﺻﺪا ﯾﺎ ﺗﺼﻮﯾﺮ (‬
‫ﻣﻨﺎﺳﺒﺘﺮﯾﻦ ﮐﺎرﺑﺮدِ ﭘﺮوﺗﮑﻞ ‪ UDP‬ﺑﺮای ﭘﺮوﺳﻪ ﻫﺎﯾﯽ اﺳﺖ ﮐﻪ ﻋﻤﻠﯿﺎﺗﺸﺎن ﻣﺒﺘﻨﯽ ﺑﺮ ﯾﮏ ﺗﻘﺎﺿــﺎ‬
‫و ﯾﮏ ﭘﺎﺳﺦ اﺳﺖ‪) .‬ﺳﯿﺴﺘﻢ ‪(DNS‬‬
‫ﻧﮑﺎت ﺑﮑﺎرﮔﯿﺮی و ﻇﺮاﺋﻒ ﭘﺮوﺗﮑﻠﻬﺎی ‪ TCP‬و ‪ UDP‬در ﻓﺼﻞ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴــﯽ ﺗﺤـﺖ ﺷـﺒﮑﻪ‬
‫ﻣﺠﺪداً ﺑﺮرﺳﯽ ﻣﯽﺷﻮﻧﺪ‪.‬‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪209‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫‪ (8‬ﻣﺎﺷﯿﻨﻬﺎی ‪ Big Endian‬و ‪Little Endian‬‬
‫ﺳﺎﺧﺘﺎر ﺑﺴﺘﻪﻫﺎی ‪ IP‬و ‪ TCP‬در ﻗــﺎﻟﺐ ﮐﻠﻤـﺎت ‪ 32‬ﺑﯿﺘـﯽ ﺳـﺎزﻣﺎﻧﺪﻫﯽ ﻣﯽﺷـﻮﻧﺪ‪ .‬ﻣﺎﺷـﯿﻨﻬﺎی‬
‫ﻣﺘﻔﺎوﺗﯽ ﮐﻪ در دﻧﯿﺎ وﺟﻮد دارد ﮐﻠﻤﺎت دوﺑﺎﯾﺘﯽ و ﭼﻬﺎرﺑﺎﯾﺘﯽ )‪ 32‬ﺑﯿﺘــﯽ( را ﺑـﻪ ﯾـﮏ ﻧﺤـﻮ درون‬
‫ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﻧﻤﯽﮐﻨﻨﺪ ‪ .‬در ﺑﺮﺧﯽ از ﻣﺎﺷﯿﻨﻬﺎ ﺑﺮای ذﺧﯿﺮه ﯾﮏ ﮐﻠﻤﻪ در ﺣﺎﻓﻈﻪ اﺑﺘــﺪا ﺑـﺎﯾﺖ ﮐـﻢ‬
‫ارزش در ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﺷﺪه و ﭘﺸﺖ ﺳﺮ آن ﺑﺎﯾﺖ ﭘﺮارزش ذﺧﯿﺮه ﻣﯽﺷــﻮد ‪ ،‬در ﺣـﺎﻟﯽ ﮐـﻪ در‬
‫ﺑﺮﺧﯽ دﯾﮕﺮ دﻗﯿﻘﺎً ﺑﺮﻋﮑﺲ اﺳﺖ‪ .‬ﺑﻌﻨﻮان ﻣﺜﺎل ﻓﺮض ﮐﻨﯿــﺪ ﮐﻠﻤـﮥ ‪ 2‬ﺑـﺎﯾﺘﯽ )‪ (0x1A48‬ﺑـﺎ دﺳـﺘﻮر‬
‫‪ Mov‬ﺑﻪ ﺣﺎﻓﻈﮥ اﺻﻠﯽ ﻣﻨﺘﻘﻞ ﺷﻮد‪ .‬ﻣﺎﺷﯿﻨﻬﺎ ﺑﻪ دو روش آﻧﺮا در ﺣﺎﻓﻈﮥ ﺧﻮد ذﺧﯿﺮه ﻣﯽﮐﻨﻨﺪ ‪:‬‬
‫½ ﻣﺎﺷﯿﻨﻬﺎﯾﯽ ﮐﻪ اﺑﺘﺪا ﺑﺎﯾﺖ ﮐﻢ ارزش و ﺳﭙﺲ ﺑﺎﯾﺖ ﭘﺮارزش را ذﺧﯿﺮه ﻣﯽﮐﻨﻨﺪ ‪ ،‬ﻣﺎﺷﯿﻨﻬﺎی‬
‫‪ Little Endian‬ﻧﺎﻣﯿﺪه ﻣﯽﺷﻮﻧﺪ‪ .‬ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎی ﺷﺨﺼﯽ ﺑﺎ ﭘﺮدازﻧﺪه ﺳــﺮی ‪ 80X86‬و ﭘﻨﺘﯿـﻮم از‬
‫اﯾﻦ دﺳﺘﻪ ﻫﺴﺘﻨﺪ‪ .‬در ﻣﺜﺎل زﯾﺮ ﻃﺮﯾﻘﮥ ذﺧﯿﺮهﺳﺎزی ﯾﮏ ﮐﻠﻤﮥ ‪ 16‬ﺑﯿﺘﯽ در ﻓﻀﺎی ﺣﺎﻓﻈﮥ ﯾـﮏ‬
‫ﻣﺎﺷﯿﻦ ‪ L.E.‬ﺑﻪ ﺗﺼﻮﯾﺮ ﮐﺸﯿﺪه ﺷﺪه اﺳﺖ‪.‬‬
‫‪0001101001001000‬‬
‫ﺑﺎﯾﺖ ﮐﻢارزش‬
‫ﺑﺎﯾﺖ ﭘﺮارزش‬
‫آدرس ﺣﺎﻓﻈﻪ‬
‫‪0A5F1319‬‬
‫‪01001000‬‬
‫‪0A5F1320‬‬
‫‪00011010‬‬
‫‪0A5F1321‬‬
‫‪0A5F1322‬‬
‫½ ﻣﺎﺷﯿﻨﻬﺎﯾﯽ ﮐﻪ اﺑﺘﺪا ﺑﺎﯾﺖ ﭘﺮارزش و ﺳﭙﺲ ﺑﺎﯾﺖ ﮐﻢارزش را ذﺧﯿﺮه ﻣﯽﮐﻨﻨﺪ ‪ ،‬ﻣﺎﺷــﯿﻨﻬﺎی‬
‫‪ Big Endian‬ﻧﺎﻣﯿﺪه ﻣﯽﺷﻮد‪ .‬ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎی ﺳﺮی ‪ SUN‬از اﯾــﻦ دﺳـﺘﻪ ﻫﺴـﺘﻨﺪ‪ .‬در ﻣﺜـﺎل زﯾـﺮ‬
‫ﻃﺮﯾﻘﮥ ذﺧﯿﺮهﺳﺎزی ﯾﮏ ﮐﻠﻤﮥ ‪ 16‬ﺑﯿﺘﯽ در ﻓﻀﺎی ﺣﺎﻓﻈﮥ ﯾﮏ ﻣﺎﺷﯿﻦ ‪ B.E.‬ﺑﻪ ﺗﺼﻮﯾﺮ ﮐﺸــﯿﺪه‬
‫ﺷﺪه اﺳﺖ‪.‬‬
‫‪0001101001001000‬‬
‫ﺑﺎﯾﺖ ﮐﻢارزش‬
‫آدرس ﺣﺎﻓﻈﻪ‬
‫‪0A5F1319‬‬
‫‪00011010‬‬
‫‪0A5F1320‬‬
‫‪01001000‬‬
‫‪0A5F1321‬‬
‫‪0A5F1322‬‬
‫ﺑﺎﯾﺖ ﭘﺮارزش‬
‫ﻻﯾﮥ اﻧﺘﻘﺎل ‪210‬‬
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
‫از آﻧﺠﺎﯾﯽ ﮐﻪ ﺑﺴﺘﻪﻫﺎی ‪ IP‬اﺑﺘﺪا در ﺣﺎﻓﻈﻪ ﺗﺸﮑﯿﻞ و ﺳﭙﺲ از ﻃﺮﯾﻖ ﺳﺨﺖاﻓﺰار ﮐﺎرتِ ﺷﺒﮑﻪ‬
‫ارﺳﺎل ﻣﯽﺷﻮﻧﺪ ﻟﺬا اﮔﺮ ﺑﺴﺘﻪ ‪ IP‬ﮐﻪ ﺑﺼﻮرت ﺳﺮﯾﺎل روی ﺧﻂ ارﺳــﺎل ﻣﯽﺷـﻮد از ﯾـﮏ ﻣﺎﺷـﯿﻦ‬
‫‪ Little Endian‬ﺗﻮﻟﯿﺪ و ﺗﻮﺳﻂ ﯾﮏ ﻣﺎﺷﯿﻦ ‪ Big Endian‬درﯾﺎﻓﺖ ﺷﻮد ‪ ،‬ﻣﻤﮑﻦ اﺳــﺖ ﺟـﺎی ﺑﺎﯾﺘـﻬﺎ‬
‫ﻋﻮض ﺷﺪه و ﻣﺤﺘﻮی ﺑﺴﺘﻪﻫﺎ اﺷﺘﺒﺎه و ﻓﺎﻗﺪ ارزش درﯾﺎﻓﺖ ﺷﻮﻧﺪ‪.‬‬
‫ﭘﺮوﺗﮑـﻞ ‪ ، TCP/IP‬اﺳـﺘﺎﻧﺪارد ﻣﺎﺷـﯿﻨﻬﺎی ‪ Big Endian‬را ﻣﺒﻨـﺎ ﻗـﺮار داده اﺳـﺖ ‪ ،‬ﻟـﺬا در ﺗﻤــﺎم‬
‫ﻣﺎﺷﯿﻨﻬﺎی ‪ ، Little Endian‬ﻗﺒﻞ از ارﺳﺎل ﺑﺴﺘﻪﻫﺎی ‪ IP‬ﺑﺎﯾﺪ ﻓﯿﻠﺪﻫﺎی دوﺑــﺎﯾﺘﯽ و ﭼـﻬﺎرﺑﺎﯾﺘﯽ درون‬
‫ﺣﺎﻓﻈﻪ ‪ ،‬ﺑﮕﻮﻧﻪای ﺗﻨﻈﯿﻢ و ﻣﻘﺪاردﻫﯽ ﺷﻮﻧﺪ ﺗﺎ در ﻫﻨﮕﺎم ارﺳــﺎل ﺑﺴـﺘﻪ روی ﺧـﻂ ‪ ،‬اﺑﺘـﺪا ﺑـﺎﯾﺖ‬
‫ﭘﺮارزش ارﺳﺎل ﺷﺪه و اﺳﺘﺎﻧﺪارد ﻣﺎﺷﯿﻨﻬﺎی ‪ B.E.‬رﻋﺎﯾﺖ ﺷﻮد‪.‬‬
‫‪ (9‬ﺷﻤﺎرۀ ﭘﻮرﺗﻬﺎی اﺳﺘﺎﻧﺪارد‬
‫در ﺟﺪول )‪ (5-7‬ﺷﻤﺎرۀ ﭘﻮرﺗﻬﺎی اﺳﺘﺎﻧﺪارد ﮐﻪ ﺗﻮﺳﻂ ‪ IETF‬ﺑــﻪ ﻋﻨـﻮان اﺳـﺘﺎﻧﺪارد ﭘﺬﯾﺮﻓﺘـﻪ‬
‫ﺷﺪهاﻧﺪ ‪ ،‬اراﺋﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫ﻧﺎم ﭘﺮوﺳﻪ‬
‫‪TCP Port Service Multiplexer‬‬
‫‪Remote Job Entry‬‬
‫‪Echo‬‬
‫‪Discard‬‬
‫‪Active Users‬‬
‫‪Daytime‬‬
‫‪Quote of the Day‬‬
‫‪Character Generator‬‬
‫)‪File Transfer (Data Channel‬‬
‫)‪File Transfer (Control Channel‬‬
‫‪TELNET‬‬
‫‪Simple Mail Transfer‬‬
‫‪NSW User System FE‬‬
‫‪MSG-ICP‬‬
‫‪MSG Authentication‬‬
‫‪Display Support Protocol‬‬
‫‪Private Printer Server‬‬
‫‪Time‬‬
‫‪Resource Location Protocol‬‬
‫‪Graphics‬‬
‫‪Host Name Server‬‬
‫‪Who Is‬‬
‫‪Login Host Protocol‬‬
‫‪Domain Name Server‬‬
‫ﻧﺎم اﺧﺘﺼﺎری‬
‫‪TCPMUX‬‬
‫‪RJE‬‬
‫‪ECHO‬‬
‫‪DISCARD‬‬
‫‪USERS‬‬
‫‪DAYTIME‬‬
‫‪Quote‬‬
‫‪CHARGEN‬‬
‫‪FTP-DATA‬‬
‫‪FTP‬‬
‫‪TELNET‬‬
‫‪SMTP‬‬
‫‪NSW-FE‬‬
‫‪MSG-ICP‬‬
‫‪MSG-AUTH‬‬
‫‪DSP‬‬
‫‪PPS‬‬
‫‪TIME‬‬
‫‪RLP‬‬
‫‪GRAPHICS‬‬
‫‪NAMESERVER‬‬
‫‪NICNAME‬‬
‫‪LOGIN‬‬
‫‪DOMAIN‬‬
‫ﭘﻮرت‬
‫‪1‬‬
‫‪5‬‬
‫‪7‬‬
‫‪9‬‬
‫‪11‬‬
‫‪13‬‬
‫‪17‬‬
‫‪19‬‬
‫‪20‬‬
‫‪21‬‬
‫‪23‬‬
‫‪25‬‬
‫‪27‬‬
‫‪29‬‬
‫‪31‬‬
‫‪33‬‬
‫‪35‬‬
‫‪37‬‬
‫‪39‬‬
‫‪41‬‬
‫‪42‬‬
‫‪43‬‬
‫‪49‬‬
‫‪53‬‬
211 ‫ﻻﯾﮥ اﻧﺘﻘﺎل‬
67
68
69
79
101
102
103
104
105
109
110
111
137
138
139
146
147
150
153
156
160
161
162
163
164
165
179
‫اﺻﻮل ﻣﻬﻨﺪﺳﯽ اﯾﻨﺘﺮﻧﺖ‬
BOOTPS
BOOTPC
TFTP
FINGER
HOSTNAMENIC
ISO-TSAP
X400
X400SND
CSNET-NSCSNET
POP2
POP3
SUNRPC
NETBIOS-NS
NETBIOS-DGMNET
NETBIOS-SSNNET
ISO-TP0
ISO-IP
SQL-NET
SGMP
SQLSRV
SGMP-TRAP5
SNMP
SNMPTRAP
CMIP-MANAGE
CMIP-AGENT
XNS-COURIER
BGP
Bootstrap Protocol Server
Bootstrap Protocol Client
Trivial File Transfer Protocol
Finger
Host Name Server
ISO TSAP
X.400
X.400 SND
Mailbox Name Server
Post Office Protocol v2
Post Office Protocol v3
SUN RPC Portmap
NETBIOS Name Service
BIOS Datagram Service
BIOS Session Service
ISO TP0
ISO IP
SQL-NET
SGMP
SQL Service
SGMP TRAPS
SNMP
SNMPTRAP
CMIP/TCP Manager
CMIP/TCP Agent
Xerox Network
Border Gateway Protocol
‫( ﺷﻤﺎرۀ ﭘﻮرﺗﻬﺎی اﺳﺘﺎﻧﺪارد‬5-7)
‫( ﻣﺮاﺟﻊ اﯾﻦ ﻓﺼﻞ‬10
‫ﻣﺠﻤﻮﻋﮥ ﻣﺮاﺟــﻊ زﯾـﺮ ﻣﯽﺗﻮاﻧﻨـﺪ ﺑـﺮای دﺳـﺖ آوردن ﺟﺰﯾﯿـﺎت دﻗﯿـﻖ و ﺗﺤﻘﯿـﻖ ﺟـﺎﻣﻊ در‬
.‫ﻣﻮرد ﻣﻔﺎﻫﯿﻢ ﻣﻌﺮﻓﯽ ﺷﺪه در اﯾــﻦ ﻓﺼـﻞ ﻣﻔﯿـﺪ واﻗـﻊ ﺷـﻮﻧﺪ‬
RFC 1072
RFC 896
RFC 879
RFC 813
RFC 793
RFC 768
"TCP Extensions for Long-Delay Paths," Jacobson, V.; Braden, R.T.; 1988
"Congestion Control in IP/TCP Internetworks," Nagle, J.; 1984
"TCP Maximum Segment Size and Related Topics," Postel, J.B.; 1983
"Window and Acknowledgment Strategy in TCP," Clark, D.D.; 1982
"Transmission Control Protocol," Postel, J.B.; 1981
"User Datagram Protocol," Postel, J.B.; 1980