مقدمات قبل از شروع يادگيری هک

ترمينولوژی (اصطلاح‌شناسی)
Hacker کيست ؟
هکر کسی است که با سيستم های کامپيوتری آشناست و می‌تواند با روش‌هايی خاص (بدون اجازه) وارد آنها شود… اين انسان می‌تواند خوب يا بد باشد ( در هر حال هکر است )
– سوال: يک هکر از چه راهی وارد يک سيستم می‌شود؟
از راه شبکه (نه بابا ! )

بايد توجه کنيد که هر سيستم کامپيوتری (به عبارت بهتر هر سيستم عامل) به هر حال محصول کار تعدادی انسان است و حتما دارای تعدادی bug (خطاهايی که بعد از ارائه محصول به بازار به تدريج کشف می‌شوند) خواهد بود. بعد از اينکه يک باگ مشخص شد، شرکت ها نرم‌افزارهايی را به‌سرعت (در عرض چند ساعت ) ايجاد می‌کنند تا مشکل رفع شود اين‌ها را patch می‌گويند. و بعد مديران شبکه (Wbemasters) در عرض چند روز تا چند سال (آين آخری در مورد ايرانه) آنها را download کرده و مشکل را حل می‌کنند. در اين فاصله هکرها دمار از روزگار اين سايت‌ها در می‌اورند…
– تعريف چند اصطلاح:

*** Hacker واقعی = سامورايی :
کسی که هدفش از نفوذ به سيستم‌ها نشان دادن ضعف سيستم‌های کامپيوتری است نه سوءاستفاده …
*** Wacker (واکر):
کسی که هدفش از نفوذ به سيستم‌ها، استفاده از اطلاعات آن سيستم‌هاست (جرو هکر‌های کلاه‌ سياه )

*** Cracker (کراکر):
کسی که هدفش از نفوذ به سيستم‌ها، خرابکاری و ايجاد اختلال در سيستم‌های کامپيوتری است. (جرو هکر‌های کلاه‌ سياه )
*** Preaker :
از قديمي‌ترين هکرها هستند که برای کارشان نياز (و دسترسی) به کامپيوتر نداشتند و کارشان نفوذ به خطوط تلفن برای تماس مجانی، استراق‌سمع و … بود. اين جزو آموزش من نيست چون کار خيلی بديه (-;

– زنگ ‌تفريح
– تقسيم بندی من برای هکر ها:
۱- جوجه‌هکرها (احمق کوچولوها):
توانايی‌ها: بلدند از Sub 7 , 187 استفاده کنند و فکر کنند ديگه همه‌چی رو ياد گرفته‌اند !
۲- خروس‌هکر‌ها يا مرغ‌هکرها (احمق‌های بزرگتر):
توانايی‌ها: Mail Box را هم می‌توانند Bomb کنند … ماشاءالله !
۳- هکرهای قابل‌احترام ( مثل خود شما):
دارند ياد می‌گيرند و هنوز ۲،۳ سال کار دارند.
۴- هکرهای پيش‌کسوت:
ديگه آفتاب لبه بومه … هکرهای قابل احترام را دوس دارند

تقسيم‌بندی
– انواع کامپيوتر‌های شبکه:
=> کامپيوترهای Server : کامپيوترهايی که کارشان تامين اطلاعات در شبکه است، مثلآ کامپيوترهايی که سايت‌ها را نگه می‌دارند.
=> کامپبوتر‌های Client : کامپيوترهايی که استفاده کننده هستند مثل همين کامپيوتر خودتان که داريد ازش کار می‌کشيد.
انواع سيستم‌ عامل‌هايی که Server ها از آن استفاده‌ می‌کنند:

=> سيستم‌های فعلی:
* خانواده Unix (مثل FreeBSD, Linux, Sun Solaris )
* خانواده Windows (مثل WinNT, Win2000 )
* OsMac

=> سيستم‌های قديمی (منقرض شده – آخيش ! ):
AIX, IRIS, DEC10, DEC20 , …
– سوال: کدام‌ها را بايد ياد گرفت؟
Win2000, Unix(Linux) را بايد ياد بگيريد. پيشنهاد من اين است که Win2000و RedHat Linux را روی کامپيوتر خود همزمان داشته باشيد.
برای شروع چه چيزی لازم است؟
۱- Win2000 , Linux را روی کامپيوتر خود نصب کرده و شروع به يادگيری کنيد.
۲- شروع به يادگيری زبان C کنيد.

۳- شروع به يادگيری TCP/IP کنيد. (يک کتاب بخريد )
۴- مهمترين چيز علاقه به طی کردن يک را بسييييييار طوووووولانی
– تقسيم‌بندی انواع حملات
ولين نکته‌ای که لازم است بگويم اينه که وقت خود را برای هک کردن کامپيوتر‌های کلاينت هدر ندهيد (اگرچه برای افراد مبتدی کار با نرم‌افزاری مثل Sub7 زياد هم بد نيست ولی نبايد زياده‌روی کرد) علت هم اينه که هربار که به اينترنت وصل می‌شوند ip جديدی به‌ آنها اختصاص پيدا می‌کنه و زحماتتون هدر می‌ره (البته برای جلوگيری از اين امر هم روشهايی هست که در آينده ايشالله ميگم).

حالا تقسيم‌بندی:
۱- حمله به روش Denial of Service Attack) DoS)
۲- حمله به روش Exploit
۳- حمله به روش Info Gathering (تلنت کردن يکی از مثالهای آن است که امروز آموختيد)
۴- حمله به روش Disinformation
در مورد هرکدام به‌زودی توضيح می‌دم.

۱۳۳t Speak چيست؟
گاهی هکرها در هنگام نوشتن به جای تعدادی از حروف انگليسی معادل‌های قراردادی به کار می‌روند که ليست آنها را در زير می‌بينيد:
۰ <= O
1 <= L; I
2 <= Z
3 <= E
4 <= A
5 <= S
6 <= G
7 <= T
8 <= B
| <= L; I
@ <= at (duh)
$ <= S
)( <= H
}{ <= H
/\/ <= N
\/\/ <= W
/\/\ <= M
|> <= P; D
|< <= K
ph <= f
z <= s
مثلا he Speaks می‌شود:
}{۳ $|>34|< z

توصيه من اينه که از اين معادل‌ها تا جايی که می‌تونيد استفاده نکنيد. فقط ياد بگيريد که کم نياريد.
ترسيم مسير برای آينده
۱- اولين و مهمترين تصميم انتخاب نوع کامپيوتری است که می‌خواهيد هک کنيد ( کلاينت يا سرور )، زيرا روش‌هک کردن اين‌دو بجز در مراحل ابتدايی کاملا متفاوت است.

۲- دومين گام انتخاب يک کامپيوتر مشخص (مثلا کامپيوتری که فلان سايت را نگه می‌دارد که مثالی برای کامپيوتر سرور است و يا کامپیوتر فلان شخصی که با او چت می‌کنيد که مثالی برای کامپيوتر کلاينت است) و جمع‌آوری اطلاعات در مورد آن است. اين جمع‌آوری اطلاعات از قربانی (Victim) را Footprinting گويند. اولين مشخصه‌ای که بايد کشف شود، ip اوست. يکی ديگر از اطلاعات مهم که معمولا دنبالش هستيم، پيدا کردن نوع سيستم‌عامل و نيز برنامه‌هايی است که کامپيوتر شخص از آنها بهره می‌برد. يکی از مهمترين ( و گاه خطرناک‌ترين) کارها، تست‌کردن پورت‌های آن کامپيوتر برای ديدن اينکه کدام پورت‌ها باز و کدام‌ها بسته هستند.

۳- مرحله بعدی در واقع شروع تلاش برای نفوذ به سيستم است. اين نفوذ سطوح مختلف دارد و بالاترين آن که در کامپيوترهای سرور روی می‌دهد، حالتی است که بتوان username و password مربوط به مدير کامپيوتر (administrator) يا superuser را به‌دست آورده و از طريق اين Shell Account به نهايت نفوذ دست‌ يابيم ولی گاه به‌دلايل مختلف (مربوط به سطح علمی خود و … ) نمی‌توان به اين سطح دست‌يافت اما به هر حال برای مرحله بعدی می‌تواند استفاده شود. اين مرحله جايی است که هنر شما يه عنوان يک هکر آغاز شده و نيز به پايان می‌رسد.

۴- اين مرحله بعد از نفوذ روی می‌دهد که در آن به يک سطحی از کنترل سيستم رسيده‌ايد.رفتار شما در اين مرحله مشخص می‌کند که چه نوع هکر هستيد(سامورايی، واکر و يا کراکر) و اينکه آيا جنبه ياد گرفتن را داشته‌ايد يا نه، همينجا مشخص خواهد شد.

۵- مرحله آخر پاک کردن ردپاست تا گير نيفتيم (البته بعضی وقتها برای کلاس گذاشتن بايد گير بيفتيم، هه هه …). بعضی از سيستم‌ها آمار login را نگه می‌دارند که در مورد آنها اين مرحله بسيار مهم است.
خلاصه مطالب بالا به اين صورت است:
Selection -> FootPrinting -> Penetration -> [Changings] -> Cleaning

تعريف ip و port
IP
شماره‌ ايست که به هر کامپيوتر متصل به اينترنت داده می‌شود تا بتوان به‌کمک آن شماره به آن کامپيوترها دسترسی داشت. اين عدد برای کامپيوترهايی که حالت سرور دارند (مثلا سايت‌ها) و نيز کامپيوتر‌های کلاينتی که معمولا به روشی غير از شماره‌گيری (Dial Up) به اينترنت وصل هستند، عددی ثابت و برای ديگران عددی متغير است. مثلا هر بار که شما با شرکت ISP خود تماس گرفته و به اينترنت وصل می‌شويد، عددی جديد به شما نسبت داده می‌شود.
اين عدد يک عدد ۳۲ بيتی (۴ بايتی) است و برای راحتی به‌صورت زير نوشته می‌شود:
xxx.xxx.xxx.xxx که منظور از xxx عددی بين ۰ تا ۲۵۵ است (البته بعضی شماره‌ها قابل استفاده نيست که بعدا علت را توضيح خواهم داد). مثلا ممکن است آدرس شما به صورت ۱۹۵٫۲۱۹٫۱۷۶٫۶۹ باشد. حتی اسم‌هايی مثل www.yahoo.com که برای اتصال استفاده می‌کنيد، در نهايت بايد به يک IP تبديل شود، تا شما سايت ياهو را ببينيد.
در IP معمولا xxx اولی معنای خاصی دارد، که بعدا توضيح می‌دهم… فقط اين را بگويم که اگر به روش Dial Up به اينترنت وصل شويد، معمولا عددی که به عنوان xxx اول می‌گيريد، مابين ۱۹۲ تا ۲۲۳ خواهد بود.اين توضيح برای تشخيص کامپيوترهای کلاينت از سرور (حداقل در ايران) بسيار می‌تواند مفيد باشد.
بعد از اتصال به اينترنت برای به دست آوردن IP خود، از دستور IPCONFIG در command prompt استفاده کنيد. (البته يک سری نکات فنی داريم که بعدا می‌گم)
– Port
در ساده ترين تعريف، محلی است که داده‌ها وارد با خارج می‌شوند. در مبحث هک معمولا با پورت‌های نرم‌افزاری سروکار داريم که به هر کدام عددی نسبت می‌دهيم. اين اعداد بين ۱ و ۶۵۵۳۵ هستند. معمولا به يک سری از پورت‌ها کار خاصی را نسبت می‌دهند و بقيه به‌صورت پيش‌فرض برای استفاده شما هستند. پورت‌های که فعال هستند، هرکدام توسط يک نرم‌افزار خاص مديريت می‌شوند. مثلا پورت ۲۵ برای ارسال Email است، بنابراين بايد توسط يک نرم‌افزار اين کار انجام شود و اين نرم‌افزار بر روی پورت ۲۵ منتظر (فال‌گوش) می‌ماند. اينجا ممکن است شخصی از فلان نرم‌افزار و ديگری از بهمان نرم‌افزار استفاده کند ولی به‌هر حال پورت ۲۵ هميشه برای ارسال Email است.
در پايين ليستی از مهمترين پورت‌ها و کاربردشان را می‌بينيد:
Port Num Service Why it is phun!
——– ——- —————————————-
7 echo Host repearts what you type
9 discard Dev/null
11 systat Lots of info on users
13 daytime Time and date at computers location
15 netstat Tremendous info on networks
19 chargen Pours out a stream of ASCII characters.
21 ftp Transfers files
23 telnet Where you log in.
25 smpt Forge email
37 time Time
39 rlp Resource location
43 whois Info on hosts and networks
53 domain Nameserver
70 gopher Out-of-date info hunter
79 finger Lots of info on users
80 http Web server
110 pop Incoming email
119 nntp Usenet news groups — forge posts, cancels
443 shttp Another web server
512 biff Mail notification
513 rlogin Remote login
who Remote who and uptime
514 shell Remote command, no password used!
syslog Remote system logging
520 route Routing information protocol

از ميان اين پورت‌ها شماره‌های ۷، ۱۵، ۲۱، ۲۳، ۲۵، ۷۹، ۸۰، ۱۱۰و ۱۱۹ فعلا برای ما مهم‌ترند و به‌تدريج با آنها آشنا خواهيد شد.
بحث ip
Command Prompt چيست؟

در بسياری از درس‌های آينده از Command Prompt (خط فرمان) ويندوز استفاده خواهيم کرد. برای باز کردن آن يکی از روش‌های زير را به کار بريد:

۱- مسير زير را در ويندوز طی کنيد:
Start > Programs > Accessories > Command Prompt
در قسمت Run بنويسيد: command يا cmd
– پيدا کردن ip يک سايت با دانستن آدرس اينترنتی آن (پيدا کردن ip سرور)

برای اين کار روشهای مختلفی هست:
۱- در (Internet Explorer (IE آدرس را تايپ کنيد و Enter را فشار دهيد. در قسمت پايين مرورگر يعنی Status Bar پس از چند لحظه برای مدت کوتاهی ip نمايش داده می‌شود و می‌توانيد آنرا يادداشت کنيد. اگر طول اين مدت بسيار کوتاه است می‌توانيد از صفحه عکس بگيريد ( با دکمه Print Screen ) و در يک نرم‌افزار گرافيکی بعد از باز کردن يک صفحه خالی به کمک Ctrl+V آنرا مشاهده کنيد. [ عجب راه احمقانه‌ای 😉
اگر اين کار را برای www.yahoo.com انجام دهيم:

که همان شماره ip برای www.yahoo.com است.
نکته بسيار مهم اين است که به‌دليل ضريب اشتباه بسيار بالای آن هيچ‌گاه از اين روش استفاده نکنيد. نتايج ممکن است کاملا اشتباه باشد که بعدا ميگم چرا.

۲- دستور ping را در command prompt صادر کنيد:
ping domain
در اين حالت می‌توانم ip آن سايت را ملاحظه کنم. (البته کار اصلی ping يک چيز ديگست و ميشه گفت داريم ازش سوءاستفاده می‌کنيم). مثلا برای پيدا کردن ip سازين می‌نويسم:
ping sazin.com
و جواب می‌شنوم:

Pinging sazin.com [63.148.227.65] with 32 bytes of data:

Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=822ms TTL=111
Reply from 63.148.227.65: bytes=32 time=811ms TTL=111
Ping statistics for 63.148.227.65:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 811ms, Maximum = 822ms, Average = 818ms

ملاحظه می‌فرماييد که ip سازين ۶۳٫۱۴۸٫۲۲۷٫۶۵ است.
اگر دستور ping را به‌جای sazin.com برای www.sazin.com صادر کنيد، جواب همان است. البته برای سايت‌های بزرگ جواب‌های حاصل متفاوت خواهد بود.
۳- روش بعدی و کامل‌ترين روش whois کردن به بعضی سايت‌های خاص است. بعدا اين را کامل‌تر توضيح می‌دم ولی فعلا روشش رو می‌گم. آدرس زير را در مرورگر خود تايپ کنيد:
http://www.samspade.org/t/ipwhois?a=xxxxxx
که به‌جای xxxxxx آدرس مورد نظر را تايپ کنيد. مثلا برای sazin.com يکی از دو آدرس زير را بايد تايپ کرد:
http://www.samspade.org/t/ipwhois?a=sazin.com
http://www.samspade.org/t/ipwhois?a=www.sazin.com
چيزی که در صفحه ظاهر می‌شود به صورت زير است:
whois -h magic 63.148.227.65
sazin.com resolves to 63.148.227.65

Trying whois -h whois.arin.net 63.148.227.65
Qwest Communications NET-QWEST-BLKS-2 (NET-63-144-0-0-1)
63.144.0.0 – 63.151.255.255
Neutron Digital Media Corp. QWST-63-148-224 (NET-63-148-224-0-1)
63.148.224.0 – 63.148.231.255

# ARIN Whois database, last updated 2002-09-04 19:05
# Enter ? for additional hints on searching ARIN”s Whois database.
که آدرس ip در سطر اول و دوم ذکر شده است.
اگر دو روش آخر را برای سايت بزرگ yahoo انجام دهيم، نتايج زير را می‌بينيم:
–> روش ping :
www.yahoo.com ====> 64.58.76.229
yahoo.com ====> 66.218.71.198
–> روش whois :
…و www.yahoo.com ====> 66.218.71.86
64.58.79.230 و yahoo.com ====> 66.218.71.198
نتايج حاصل گويای آن است که چرا بهتر است از whois استفاده کنيم.
– تقسيم بندی آدرس‌های ip

آدرس‌های ip به ۵ کلاس تقسيم‌بندی می‌شوند که A تا E نام‌ دارند ولی از اين بين سه کلاس اول (يعنی C,B,A) کاربرد عملی دارند که آنها را شرح می‌دهيم:
۱- کلاس A: اگر ip را به‌صورت xxx.yyy.yyy.yyy در نظر بگيريد، اين کلاس تمام ipهايی را شامل می‌شود که xxx بين ۱ تا ۱۲۶ است. اين کلاس ويژه backbone های بزرگ اينترنتی است و در هنگام ثبت domain برای گرفتن ip از آنها استفاده می‌شود. بنابراين اکثر سايت‌ها چنين ipهايی دارند. اين کلاس را ۸/ هم می‌گويند.
۲- کلاس B: اين کلاس تمام ipهايی را شامل می‌شود که xxx بين ۱۲۸ و ۱۹۱ است. اين کلاس هم از جمله کلاس‌های پرکاربرد است. اين کلاس را ۱۶/ هم می‌گويند.

۳- کلاس C: اين اين کلاس تمام ipهای را شامل می‌شود که xxx بين ۱۹۲ و ۲۲۳ است. اين کلاس معمولا به ISP هايی که خدمات dial-up ارائه می‌دهند، تعلق می‌گيرد (اين جمله چندان مستند نيست.). بنابراين اگر به‌صورت dial-up به اينترنت متصل شويد، چنين ip می‌گيريد. اين کلاس را ۲۴/ هم می‌گويند.
سوالی که پيش می‌آيد اين است که xxx چرا نه در کلاس A و نه در B، عدد ۱۲۷ را شامل نمی‌شود؟ جواب اين‌ است که ۱۲۷ برای کامپيوتر خودمان رزرو شده است. مثلا ۱۲۷٫۰٫۰٫۱ معمولا يعنی localhost يعنی خودمان.

– به‌دست آوردن ip خودتان بعد از اتصال به اينترنت
برای اين‌کار راههای متفاوتی وجود دارد:
۱- راحت‌ترين راه استفاده از دستور ipconfig است. من با تايپ کردن آن به نتايج زير رسيدم:
Windows 2000 IP Configuration

PPP adapter neda:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 217.66.198.116
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 217.66.198.116
که آدرس ip تان را می‌توانيد در سطر Ip Address ببينيد. (مسئله پروکسی را فعلا ناديده بگيريد)

۲- بعد از اتصال به اينترنت حداقل يک صفحه باز کنيد و بعد دستور netstat -n را در command prompt تايپ کنيد. من با تايپ اين دستور به نتايج زير رسيدم:
Active Connections

Proto Local Address Foreign Address State
TCP 217.66.198.116:2469 64.58.76.177:80 ESTABLISHED
TCP 217.66.198.116:2471 66.163.175.130:80 ESTABLISHED
TCP 217.66.198.116:2473 212.73.194.143:80 ESTABLISHED
TCP 217.66.198.116:2474 212.73.194.143:80 ESTABLISHED
TCP 217.66.198.116:2476 212.73.194.136:80 SYN_SENT

ستونی که زير عبارت Local Address قرار دارد، ip من در آن اتصال است. بنابراين ip من در آن اتصال ۲۱۷٫۶۶٫۱۹۸٫۱۱۶ بوده است.
پيدا کردن ip طرف مقابل هنگام chat با yahoo messenger – اين روش قديمی شده، الان ديگه کار نمی‌کنه
می‌خواهيم درباره يک کلاينت مثلا کسی که مثل شما يک اتصال مثلا dial-up به اينترنت دارد و فرضا دارد با شما chat می‌کند، کسب اطلاعات کرد.
در اين مورد هم اولين نکته‌ای که بايد کشف شود، ip اوست. در اين جلسه می‌خوام بهتون ياد بدم که وقتی با يه نفر از طريق yahoo messenger به صورت pm چت می‌کنيد، چطوری می‌تونيد ip اش رو پيدا کنيد. البته بايد توجه کرد که اين روش گاهی کار نمی‌کند. نيز فرض می‌کنم که فقط با يک نفر داريد چت می‌کنيد.

يکی از دستور‌های زير را تايپ می‌کنيد:
netstat -n
دستور اولی برای پيدا کردن ip طرف مقابل است و دستور دوم گاه می‌تواند اسم کامپيوتر او را برای شما نشان دهد.
من دستور netstat -n را تايپ کردم و به نتايج زير رسيدم:

Active Connections

Proto Local Address Foreign Address State
TCP 195.219.176.126:1296 66.163.173.77:5050 ESTABLISHED
TCP 195.219.176.126:1341 66.218.75.149:80 LAST_ACK
TCP 195.219.176.126:1325 212.234.112.74:5101 SYN_SENT
اولين کاری که می‌کنيد اين است که سطری را پيدا می‌کنيد که در Local Address يا Foreign Address آن، پورت ۵۱۰۱ داشته باشد. در اين مثال سطر آخر، سطر مورد نظر ماست. زيرا در ستون Foreign Address از سطر آخر، پورت آن ۵۱۰۱ است. البته اگر در ستون Local Address هم بود، فرقی نمی‌کرد. وقتی آن سطر را پيدا کرديد، ip طرف مقابل را از ستون Foreign Address از همان سطر پيدا می‌کنيم. در اين مثال ip طرف مقابل ۲۱۲٫۲۳۴٫۱۱۲٫۷۴ است.
اگر به‌جای netstat -n ، از netstat استفاده می‌کردم، به نتايج زير می‌رسيدم:
Active Connections

Proto Local Address Foreign Address State
TCP artawill…:1296 cs55.msg.sc5.yahoo.com:5050 ESTABLISHED
TCP artawill…:1298 dl3.yahoo.com:http TIME_WAIT
TCP artawill…:1325 Majid:5101 SYN_SENT
ملاحظه می‌فرماييد که همه ip ها به معادل های اسمی تبديل شده‌اند و در مورد همان سطر آخر به جای ip طرف مقابل اسم کامپيوتر فرد را می‌نويسد (البته در حالتی که طرف مقابل dial-up نباشد، قضيه فرق می‌کند.)
حالا فرض کنيد که يک pm ديگر هم اضافه می‌شود. و دوباره دستور netstat -n را تايپ می‌کنم. حالا نتايج زير را می‌بينم:
Active Connections

Proto Local Address Foreign Address State
TCP 195.219.176.126:1296 66.163.173.77:5050 ESTABLISHED
TCP 195.219.176.126:1344 64.58.77.197:80 ESTABLISHED
TCP 195.219.176.126:5101 212.234.112.74:3735 ESTABLISHED
TCP 195.219.176.126:5101 194.225.184.95:1460 ESTABLISHED

الان دوتا سطر دارم که دارای پورت ۵۱۰۱ باشد، و چون می‌دانم که ۲۱۲٫۲۳۴٫۱۱۲٫۷۴ مربوط به نفر قبلی بود، پس ۱۹۴٫۲۲۵٫۱۸۴٫۹۵ مربوط به pm دومی است.

بحث port ها و telnet
TCP و UDP چيست؟

مدل TCP/IP که برای ارتباط اينترنتی به‌کار می‌رود، می‌توان به لايه‌های مختلفی تقسيم‌بندی کرد که بعدا بيشتر توضيح می‌دم، اما يکی از اين لايه‌ها، لايه ارتباط host2host است که خود شامل دو پروتکل است به نامهای TCP و UDP :

۱- (TCP (Transmission Control Protocol :
اين پروتکل قوی‌تر و قابل اعتمادتر است و اصولا پروتکل مهمتری نسبت به UDP محسوب می‌شود. اين پروتکل توانايی بازبينی بسته‌هاو کنترل خطا را هم دارد.
۲- (UDP (User Datagram Protocol :
اين پروتکل برای کاهش overflow طراحی شده است و در خيلی از موارد وابسته به TCP است.

نکته مهم اين است که وقتی با يک پورت خاص روی يک کامپيوتر ديگر ارتباط برقرار می‌کنيم، اين ارتباط می‌تواند از نوع TCP يا UDP باشد. بنابراين وقتی می‌خواهيم يک کامپيوتر خاصی را از نظر پورت‌ها بررسی کنيم، هردو بايد بررسی شود.
– تقسيم‌بندی پورت‌ها از روی شماره آنها
۱- پورت‌های ۰ تا ۱۰۲۳ :
مشهورترين پورت‌ها هستند و معمولا هرکدام برای يک سرويس خاص استفاده می‌شود. با تعدادی از اين پورت‌ها در جلسات قبل آشنا شده‌ايد.
۲- پورت‌های ۱۰۲۴ تا ۴۹۱۵۱ :
اين سری از پورت‌ها مشخصا با هيچ‌يک از سرويس‌های اينترنتی مرتبط نيستند بلکه وقتی که با يک ابزار شبکه مانند مرورگر اينترنت(مثل Internet Explore يا Netscape Navigator )، نرم‌افزار ارسال و دريافت E-mail (مثل Outlook يا Edura )، نرم‌افزارهای FTP (مثل WS-FTP يا Cute-FTP ) کار می‌کنيد، يکی از اين پورت‌ها به صورت random باز شده و يک ارتباط با سرور (با توجه به‌نوع سرويس اينترنتی که می‌دهد که يکی از پورت‌های ۰ تا ۱۰۲۳ است) برقرار شده و داده‌ها ارسال و دريافت می‌شوند. يعنی پورت شما يکی از پورت‌های اين قسمت است و پورت سرور يکی از پورت‌های بالايی.اين سری پورت‌ها را پورت‌های register شده هم می‌گويند.

۳- پورت‌های ۴۹۱۵۲ تا ۶۵۵۳۵ :
اين سری از پورت‌ها به‌ندرت استفاده می‌شوند. کاربرد اساسی آنها برای يک سری سرويس‌های خاص اينترنتی است و يا توسط trojanها (که برای Hack کردن کامپيوتر است) است. البته خيلی از trojanهای معروف از پورت‌های رديف ۲ هم استفاده می‌کنند و اين تقسيم‌بندی‌ها هميشه برقرار نيست و به‌همين علت است که گاهی پورت‌ها را به دو‌دسته زير ۱۰۲۴ و بالای ۱۰۲۴ تقسيم‌ می‌کنند.