# নেটওয়ার্ক পরীক্ষণ এবং পর্যবেক্ষন

নাম দেখে ভয় পাওয়ার কিছু নাই । এই অংশে আপনাদের নেটওয়ার্কিং সম্পর্কিত কিছু কমান্ড দেখানো হবে যেগুলো ব্যবহার করে আপনি খুব সহজেই আপনার নেটওয়ার্ক সম্পর্কে জানতে পারবেন । সহজে ফাইল আদান প্রদান করতে পারবেন । সব থেকে বড় কথা আপনি একটা পরিষ্কার ধারনা পাবেন যে কিভাবে ইন্টারনেট কাজ করে ।

## পিং (ping)

`ping` হচ্ছে সব থেকে বেসিক নেটওয়ার্কিং কমান্ড। এটি নেটওয়ার্ক হোস্ট এর কাছে একটি স্পেশাল রিকুয়েস্ট পাঠায়। ping কমান্ড এর সাথে একটি নেটওয়ার্ক হোস্ট দিতে হয়। মানে হচ্ছে ping কমান্ড দিতে হয় এইভাবে:

```
ping your_specified_network_host( website address, ip address )
```

ping কমান্ডটি আপনার নির্ধারিত নেটওয়ার্ক হোস্ট এর কাছে IMCP ECHO\_REQUEST নামক একটি বিশেষ নেটওয়ার্ক প্যাকেট পাঠায় । আপনার নেটওয়ার্ক ঠিক থাকলে আপনি মোটামুটি সব নেটওয়ার্ক ডিভাইস থেকে প্রতিউত্তর পাবেন। তো চলুন দেখা যাক আমাদের পিসি তে ping কমান্ড দিলে কি ঘটে।

আমি ping এর সাথে নেটওয়ার্ক হোস্ট হিসেবে [www.github.com](http://www.github.com) ব্যবহার করেছি। আপনি ইচ্ছা করলে অন্য সাইট এমনকি অন্য কারো আইপি এড্রেস ও ব্যবহার করতে পারেন।

```
me@howtocodepc:~$ ping www.github.com
PING github.com (192.30.252.130) 56(84) bytes of data.
64 bytes from github.com (192.30.252.130): icmp_seq=1 ttl=53 time=269 ms
64 bytes from github.com (192.30.252.130): icmp_seq=2 ttl=53 time=253 ms
64 bytes from github.com (192.30.252.130): icmp_seq=3 ttl=53 time=254 ms
64 bytes from github.com (192.30.252.130): icmp_seq=4 ttl=53 time=249 ms
64 bytes from github.com (192.30.252.130): icmp_seq=5 ttl=53 time=257 ms
64 bytes from github.com (192.30.252.130): icmp_seq=6 ttl=53 time=259 ms
64 bytes from github.com (192.30.252.130): icmp_seq=7 ttl=53 time=251 ms
64 bytes from github.com (192.30.252.130): icmp_seq=8 ttl=53 time=256 ms
64 bytes from github.com (192.30.252.130): icmp_seq=9 ttl=53 time=264 ms
64 bytes from github.com (192.30.252.130): icmp_seq=10 ttl=53 time=266 ms

--- github.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9011ms
```

একবার ping কমান্ড দেয়ার পর আপনি যতক্ষণ না ম্যানুয়ালি কমান্ড বন্ধ করবেন ততক্ষণ আপনার পিসি থেকে নির্দিষ্ট সময় পর পর( ডিফল্ট 1s ) প্যাকেট নেটওয়ার্ক হোস্ট এর কাছে যেতে থাকবে। ping কমান্ডটি যখন আপনি ctrl + C চেপে কমান্ডটিকে ইন্টারাপ্ট করবেন (আমার উদাহরনে ১০ম প্যাকেট ) তখন পর্যন্ত পারফরমেন্স এর পরিসংখ্যান দেখাবে। আপনার নেটওয়ার্ক যদি পারফেক্ট হয় তাহলে ০ পারসেন্ট প্যাকেট লস দেখাবে।

লিনাক্স হোস্ট সহ যেকোনো ডিভাইসকে আপনি এমনভাবে কনফিগার করতে পারবেন যেন তা ping রিকুয়েস্ট কে ইগনোর করে । এটি মূলত করা হয় নেটওয়ার্ক সিকিউরিটি নিশ্চিত করতে।

## রাউটার ট্রেসিং

একজন ইউজার যখন কোনো সার্ভারের সাথে যোগাযোগ করে তখন তাকে কয়েকটি রাউটার ঘুরে যেতে হয়। এই মধ্যবর্তী রাউটার সম্পর্কিত তথ্যের জন্য `traceroute` কমান্ডটি ব্যবহার করা হয়। আমরা যদি gitbook.com এর রাউটার ট্রেস করতে চাই তাহলে লিখতে হবে:

```
me@howtocode-pc:~$ traceroute gitbook.com
```

এবং আমরা এরকম একটি ফলাফল পেয়েছি:

```
me@howtocode-pc:~$ traceroute to gitbook.com (216.239.32.21), 30 hops max, 60 byte packets
 1  * * *
 2  10.26.206.193 (10.26.206.193)  99.166 ms  109.373 ms  119.094 ms
 3  10.26.206.244 (10.26.206.244)  139.325 ms  139.507 ms  139.705 ms
 4  202.4.173.34 (202.4.173.34)  149.646 ms  150.007 ms  159.432 ms
 5  103.7.249.69 (103.7.249.69)  80.005 ms  89.957 ms  90.246 ms
 6  xe-cig-010-jag-110.pico.net.bd (103.7.251.121)  90.441 ms  91.980 ms  82.035 ms
 7  xe-jig-120-cig-120.pico.net.bd (103.7.251.77)  71.758 ms  60.009 ms  59.706 ms
 8  103.7.251.138 (103.7.251.138)  79.648 ms  69.523 ms  69.430 ms
 9  103.7.249.250 (103.7.249.250)  159.567 ms  140.180 ms  140.004 ms
10  72.14.232.110 (72.14.232.110)  139.844 ms  149.779 ms 72.14.233.204 (72.14.233.204)  148.932 ms
11  72.14.239.22 (72.14.239.22)  138.316 ms  148.782 ms 209.85.243.245 (209.85.243.245)  151.337 ms
12  209.85.248.25 (209.85.248.25)  150.106 ms 72.14.239.61 (72.14.239.61)  130.583 ms 209.85.246.83 (209.85.246.83)  130.820 ms
13  * * *
14  any-in-2015.1e100.net (216.239.32.21)  129.580 ms  139.720 ms  139.401 ms
```

আমরা দেখতে পাচ্ছি প্রথম লাইনে বলা হচ্ছে:

```
traceroute to gitbook.com (216.239.32.21), 30 hops max, 60 byte packets
```

অর্থাৎ gitbook.com যার IP address 216.239.32.21 এর জন্য রাউট খুঁজবে। সর্বোচ্চ ৩০টি হপ(hop) বা রাউটার পর্যন্ত সে আমলে নেবে এবং এর জন্য 60 বাইটের ডাটা প্যাকেট ব্যবহার করবে।

তারপরেই প্রতি লাইনে হপ এর নম্বরসহ একটি করে রেজাল্ট পাচ্ছি। যার শুরুতে সার্ভারের নাম তারপর ব্রাকেটে তার এড্রেস। যেক্ষেত্রে সার্ভার এসব তথ্য দিতে অস্বীকৃতি জানায় সেক্ষেত্রে আমরা '\*' চিহ্ন দেখছি।

## নেটস্ট্যাট (netstat)

নেটওয়ার্ক সম্পর্কিত বিভিন্ন তথ্য আমরা নেটস্ট্যাট দিয়ে দেখতে পারি। যেমন বর্তমান নেটওয়ার্ক ইন্টারফেসগুলো দেখতে আমরা ব্যবহার করবো:

```
me@howtocode-pc:~$ netstat -ie                                                                     
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:1e:33:97:47:c8  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1007 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1007 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:160385 (160.3 KB)  TX bytes:160385 (160.3 KB)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.128.191.139  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2784 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3204 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:1277912 (1.2 MB)  TX bytes:345401 (345.4 KB)

wlan0     Link encap:Ethernet  HWaddr 00:22:fa:1e:cd:44  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
```

এখানে আমরা কয়েকটি ইন্টারফেস দেখতে পাচ্ছি। এবং দেখতে পাচ্ছি তাদের সম্পর্কিত বিভিন্ন তথ্য। আমাদের ইন্টারফেসের নামের অর্থগুলো জানা দরকার কেননা পরবর্তীতে কাজে লাগবে। এখানকার চারটি ইন্টারফেস হল:

* **eth0**: ইথারনেট ইন্টারফেস।
* **lo**: লোকাল লুপব্যাক যা আপনাকে লোকালহোস্ট প্রোভাইড করে।
* **ppp0**: মোবাইল ব্রডব্যান্ড যা ইউএসবিতে কানেক্ট করেছি।
* **wlan0**: ওয়াইফাই ইন্টারফেস।

একই তথ্য আমরা `ifconfig` কমান্ড দিয়ে দেখতে পারি।

আমরা কার্নেল আইপি টেবিল দেখতে পারি এভাবে:

```
me@howtocode-pc:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.64.64.64     0.0.0.0         UG        0 0          0 ppp0
10.64.64.64     *               255.255.255.255 UH        0 0          0 ppp0
```

## iftop

`iftop` কমান্ডের সাহায্যে আমরা সহজেই নেটওয়ার্ক ট্রাফিক দেখতে পারি। ডিফল্টভাবে এটি eth0 ইন্টারফেসে কাজ করে। অর্থাৎ মোবাইল ব্রডব্যান্ড বা ওয়াইফাইতে কানেক্টেড থাকলে আপনাকে `-i` আর্গুমেন্ট দিয়ে ইন্টারফেসের নাম লিখতে হবে। যেমন ওয়াইফাই হলে লিখবো:

```
# iftop -i wlan0
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sh.howtocode.dev/3.0.0.part3intro/3.4.0.networking/3.4.1.examining-and-monitoring-a-network.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
