💥 INTRODUCING 💫 𝘾𝙊𝙉𝙉𝙀𝘾𝙏𝙀𝘿 💫
🌚 What We Offer ❔
🔌 Create Your Own Configurations
⚙️ Effortless Configs Management
🛠 Real-Time Usage and Connection Status
🗳 Custom Sing-Box Configurations 🛠
✨ Exciting Events and Offers Await!
⚡️VPN Info ⚡️
🎯Easily Create & Mange Configs using Our Bot 🧩
🎯 See Usage Status With Our Bot 📊
🎯 Support For Torrent Downloading 📥
🎯 Latest Sing-Box Core Running on Server Side 🚀
🎯 Optimized Routing For Low Latancy ⚡️
🎯 Can Use 20+ SurfShark Premium WireGuard Outbound
🎯 Guaranteed:😼 Your configuration works As long as Our service is live 🗿
🎯 Your configs works until your usage ends and renews automatically in 30 days! 🎉
And More! 📂 Customize features to perfectly match your needs. 📝
🎉 EVERYTHING YOU NEED, ALL IN ONE PLACE! FOR FREE! 🎉
❤1👍1
🟢 lk outbound එකක් ආයෙ ඇඩ් කරලා තියෙන්නෙ කලිම් පාර වගෙ ගොඩක් Outbound දීලා නැ acc එක ban වෙන නිසා. හැමෝටම ඕනෙ lk නිසා lk දුන්නා
තව proton වලින් NL & JP දීලා තියෙන්නෙ
🌟 Steps to Configure Your Outbound: 🌟
▫️Send the /configure command.
▫️Select your config.
▫️Choose Change Outbound from the options.
▫️Confirm your selection and close.
✅ Now, go to whatismyipaddress.com and verify your IP address.
🌐 That's All 🎉
තව proton වලින් NL & JP දීලා තියෙන්නෙ
🌟 Steps to Configure Your Outbound: 🌟
▫️Send the /configure command.
▫️Select your config.
▫️Choose Change Outbound from the options.
▫️Confirm your selection and close.
✅ Now, go to whatismyipaddress.com and verify your IP address.
🌐 That's All 🎉
❤1
connected_bot දැන් opensource කැමති කෙනෙක්ට ඔයාලගෙ ග්රෘප් එකට කැමති විදියකට දාගන්න පුලුවන්.
ප්රශ්ණයක් තිබ්බොත් අහන්න.
https://github.com/sadeepa24/connected_bot
ප්රශ්ණයක් තිබ්බොත් අහන්න.
https://github.com/sadeepa24/connected_bot
GitHub
GitHub - sadeepa24/connected_bot: can you connect ?
can you connect ? Contribute to sadeepa24/connected_bot development by creating an account on GitHub.
❤1👍1🔥1
ඉතින් හැමෝටම ප්රශ්නයක්නෙ මේ free Internet vpn කතන්දරය වැඩ කරන්නෙ කොහොමද 😐?
🌝 ඉතින් මේ Article එකෙන් මම ඒක සරලව විස්තර කරලා තියෙනවා.
ඒ වගේම මම මීට කලිම් Article ලියලා නැ 🙊. හෙ හේ මේ පලවෙනි එක 🙃 නිකමට ලිව්වෙ මොකද මේක ගැන කිසිම තැනක හරියට තිබ්බෙ නැති නිසා ගොඩක් අය
Free internet කියන්නෙ මොකක්ද කියලා විස්තර කරන්න පටන් අරගෙන කරන්නෙ ඒක use කරන හැටි හරි මොකක් හරි app එකක් ගැන හරි කියන එක.
〽️ ඇත්තටම මේ free internet කියන එක දැම් විහිලුවක් 🥴 වගේ වෙලා තියෙන්නෙ ඒත් මේකෙ ලස්සන සංකල්ප තියෙයි එව්වා පොඩ්ඩක් හොයලා බලන්න කැමති අය.
ඒ වගේම අපේ රටවල් වල සහ ඒ රටවල් වල මේ Free internet කියලා අදහස් කරන්නෙ සම්පූර්ණයෙන්ම වෙනස් දෙයකට අපි මේක use කරලා ගාස්තු රහිතව internet යන්න භාවිතා කරාට අනෙක් රටවල් වල එයාලට govt වලින් වගේ දාල තියෙන restriction අයින් කරගන්න තමා use කරන්නෙ.
ඒව ඉතින් ඔයාල හොයලා බලන්න මම මේකෙන් විස්තර කරන්නෙ කොහොමද මේක තාක්ෂනික ⚙️ පැත්ත කියලා
👉 මෙතනින් Article එක කියවන්න ගන්න
ඔයාගෙ යාලුවන්ටත් දැනගන්න මේක share කරලා 😌 ඔයාගෙ අදහසත් පහලින් comment 💬 එකක් දාගෙන යන්න.
🌝 ඉතින් මේ Article එකෙන් මම ඒක සරලව විස්තර කරලා තියෙනවා.
ඒ වගේම මම මීට කලිම් Article ලියලා නැ 🙊. හෙ හේ මේ පලවෙනි එක 🙃 නිකමට ලිව්වෙ මොකද මේක ගැන කිසිම තැනක හරියට තිබ්බෙ නැති නිසා ගොඩක් අය
Free internet කියන්නෙ මොකක්ද කියලා විස්තර කරන්න පටන් අරගෙන කරන්නෙ ඒක use කරන හැටි හරි මොකක් හරි app එකක් ගැන හරි කියන එක.
〽️ ඇත්තටම මේ free internet කියන එක දැම් විහිලුවක් 🥴 වගේ වෙලා තියෙන්නෙ ඒත් මේකෙ ලස්සන සංකල්ප තියෙයි එව්වා පොඩ්ඩක් හොයලා බලන්න කැමති අය.
ඒ වගේම අපේ රටවල් වල සහ ඒ රටවල් වල මේ Free internet කියලා අදහස් කරන්නෙ සම්පූර්ණයෙන්ම වෙනස් දෙයකට අපි මේක use කරලා ගාස්තු රහිතව internet යන්න භාවිතා කරාට අනෙක් රටවල් වල එයාලට govt වලින් වගේ දාල තියෙන restriction අයින් කරගන්න තමා use කරන්නෙ.
ඒව ඉතින් ඔයාල හොයලා බලන්න මම මේකෙන් විස්තර කරන්නෙ කොහොමද මේක තාක්ෂනික ⚙️ පැත්ත කියලා
👉 මෙතනින් Article එක කියවන්න ගන්න
ඔයාගෙ යාලුවන්ටත් දැනගන්න මේක share කරලා 😌 ඔයාගෙ අදහසත් පහලින් comment 💬 එකක් දාගෙන යන්න.
🔥6❤3👍2🥰1
😕 පේන විදියට ගොඩක් අයට connected_bot use කරන විදිය තේරිලා නැ වගේ.
ඉතින් ඔයාලට තියෙන ඕනෙම ප්රශ්ණයක් පහලින් comment එකක් දාන්න 😌
ඉතින් ඔයාලට තියෙන ඕනෙම ප්රශ්ණයක් පහලින් comment එකක් දාන්න 😌
❤1
*Edit - දැන් මේක dzoom 224 ට වැඩ නැ. 😓
🚀 Vpn නැතුව cloudflare CDN service ඔක්කොම Direct Use කරමුද? 🌐
💻 cloudflare cdn use කරන service මොනවද:
chatgpt, leonardo.ai, speedtest විතරක් නෙමෙ, තව එදිනෙදා Use කරන websites සහ අනෙක් service බොහොමයක් cloudflare cdn use කරනව.
ඉතින් මේ සේරම vpn එකක් දාන්නෙ නැතුව. dialog 224 package එක දාල Use කරන්නෙ කොහොමද? 🤔
🌍 හැමෝම දැන් lk ip දෙන්න පටන් අරගෙනනෙ 🥴 තමන්ගෙ ip එක කෝමත් Lk නේ, කොහොමද ඒකෙන්ම internet යන්න තිබ්බොත්. එහෙනන් මෙන්න යන විදිය ( හැබැයි cloudflare cdn sites වලට විතරයි)
මේකෙන් වාසි මොනවද? 💡
◽️ Geo restrictions: ලංකාවෙ ඔක්කොම වගේ edu sites, edu platforms, cloudflare cdn ඒ නිසා එව්ව කිසිම ප්රශ්ණයක් නැතුව Use කරන්න පුලුවන්. 🎓
◽️ Bandwidth: vps එකේ bandwidth පාවිච්චි වෙන්නෙ නැ. cdn service වලින් unlimited download/upload කරන්න පුලුවන්. 📈
◽️ Latency: vpn server එකක් එක හරහා යන්නෙ නැහැ. direct ඔයාගෙ device එකේ ඉදල end service එකට යන්නෙ ඒ නිසා අමතර latency එකක් add වෙන්නෙ නැ. video streaming වලදි එහෙම. 🎬
🚀 Simple: cdn service වලට ඔයාNormal Data දාලා යනවා වගේ තමා වෙන්නෙ.
අවාසි? ❌
අවාසියක් නැ. 🙌
🚶♂️ Quick & Simple Method (for Browser Only) 🌐
1️⃣ open the chrome browser
2️⃣ go to chrome://settings/security
3️⃣ Scroll down to "Use secure DNS" under Advanced settings.
4️⃣ Enable "Use secure DNS".
5️⃣ Select "Choose a custom provider" and enter below DNS servers:
👉
6️⃣ Close settings, and Chrome will now use the new DNS.
✅ Now you can access Cloudflare websites without any VPN in your Chrome browser. 🌟
ඒත් මේ විදිය කලහම ප්රශ්ණ කිහිපයක් එනව 🤦♂️:
ගොඩක් websites cloudflare cdn use කලාට ඒයාලගෙ සමහරක් frontend libraries එහෙම වෙන වෙන service වලින් load වෙන්නෙ ඒ නිසා websites එකම load වෙන්නෙ නැහැ.
සම්පූර්ණයෙන්ම web එක cdn නම් load වෙනවා. ex - chatgpt.com, speedtest.net, cloudflare.com, මෙ වගෙ එව්ව load වෙනවා සම්පූර්ණ web එකම cf cdn නිසා. 🌍
🔥 Optimized Method for the Best Experience 🚀
මේක use කරන්න මම recommend කරන්නෙ sing box, v2rayng වලිනුත් පුලුවන් ඊට වඩා මේක ලෙසි වෙයි කියලා හිතනවා.
steps:
1️⃣ connected bot ගෙන් port 80 වලින් config එකක් හදාගන්න (watch this to create config) දැනටම එකක් තියේනම් ආයෙ හදන්න ඕනෙ නැ. ඒකෙ uuid එක copy කරගන්න.
2️⃣ පහල config එක UUID කියන තැන් දෙකට ඔයාගෙ uuid එක replace කරගන්න.
3️⃣ ඒකෙම BUGHOST කියන තැනට ඔයාගෙ zoom bug host එක දාගන්න.
4️⃣ config එක video එකේ විදියට sing box වලට add කරගන්න.
5️⃣ connect it and enjoy 🎉
Cloudflare service දැන් Direct route වෙන්නෙ vpn server අදාල නැහැ. cloudflare cdn නොවන එව්වා ඔක්කොම vpn server හරහා යන්නේ. 🚀
🎥 films tv series බලන අයට පොඩි tip එකක්
vidsrc.me එකෙන් online බලන්න පුලුවන්, download කරන්නෙ නැතුව කැමැති quality එකකින් subtitle කැමැති එකක් Upload කරලා දාගන්න පුළුවන්.
ඒ වගේම මේක cloudflare cdn use කරන්නෙ ඒ හින්දා video සුපිරියට load වෙනවා. direct නිසා. 🎬
💡 cloudflare කිව්වට cloudflare විතරක් නෙමේ imperva service ත් ඔක්කොම free හැබැයි imperva use කරන service නම් මොනවද දන්නෙ නැ.
🔧 ඔයාගෙම server එකකින් මේක හදාගන්න විදියත් දාන්නම් පස්සෙ.
ඒ වගේම ඔයාල fight mode දාලා ගැලපෙන Private IP Address එකක් allocate කරගන්න ඕනෙ.
✅ පලවෙනි comment දෙක බලන්න config එකයි හදාගන්න හැටි video එකයි ඇති. 👇
🚀 Vpn නැතුව cloudflare CDN service ඔක්කොම Direct Use කරමුද? 🌐
💻 cloudflare cdn use කරන service මොනවද:
chatgpt, leonardo.ai, speedtest විතරක් නෙමෙ, තව එදිනෙදා Use කරන websites සහ අනෙක් service බොහොමයක් cloudflare cdn use කරනව.
ඉතින් මේ සේරම vpn එකක් දාන්නෙ නැතුව. dialog 224 package එක දාල Use කරන්නෙ කොහොමද? 🤔
🌍 හැමෝම දැන් lk ip දෙන්න පටන් අරගෙනනෙ 🥴 තමන්ගෙ ip එක කෝමත් Lk නේ, කොහොමද ඒකෙන්ම internet යන්න තිබ්බොත්. එහෙනන් මෙන්න යන විදිය ( හැබැයි cloudflare cdn sites වලට විතරයි)
මේකෙන් වාසි මොනවද? 💡
◽️ Geo restrictions: ලංකාවෙ ඔක්කොම වගේ edu sites, edu platforms, cloudflare cdn ඒ නිසා එව්ව කිසිම ප්රශ්ණයක් නැතුව Use කරන්න පුලුවන්. 🎓
◽️ Bandwidth: vps එකේ bandwidth පාවිච්චි වෙන්නෙ නැ. cdn service වලින් unlimited download/upload කරන්න පුලුවන්. 📈
◽️ Latency: vpn server එකක් එක හරහා යන්නෙ නැහැ. direct ඔයාගෙ device එකේ ඉදල end service එකට යන්නෙ ඒ නිසා අමතර latency එකක් add වෙන්නෙ නැ. video streaming වලදි එහෙම. 🎬
🚀 Simple: cdn service වලට ඔයාNormal Data දාලා යනවා වගේ තමා වෙන්නෙ.
අවාසි? ❌
අවාසියක් නැ. 🙌
🚶♂️ Quick & Simple Method (for Browser Only) 🌐
1️⃣ open the chrome browser
2️⃣ go to chrome://settings/security
3️⃣ Scroll down to "Use secure DNS" under Advanced settings.
4️⃣ Enable "Use secure DNS".
5️⃣ Select "Choose a custom provider" and enter below DNS servers:
👉
https://meetzoom-dns.connectedbot.site:443/dns-query
6️⃣ Close settings, and Chrome will now use the new DNS.
✅ Now you can access Cloudflare websites without any VPN in your Chrome browser. 🌟
ඒත් මේ විදිය කලහම ප්රශ්ණ කිහිපයක් එනව 🤦♂️:
ගොඩක් websites cloudflare cdn use කලාට ඒයාලගෙ සමහරක් frontend libraries එහෙම වෙන වෙන service වලින් load වෙන්නෙ ඒ නිසා websites එකම load වෙන්නෙ නැහැ.
සම්පූර්ණයෙන්ම web එක cdn නම් load වෙනවා. ex - chatgpt.com, speedtest.net, cloudflare.com, මෙ වගෙ එව්ව load වෙනවා සම්පූර්ණ web එකම cf cdn නිසා. 🌍
🔥 Optimized Method for the Best Experience 🚀
මේක use කරන්න මම recommend කරන්නෙ sing box, v2rayng වලිනුත් පුලුවන් ඊට වඩා මේක ලෙසි වෙයි කියලා හිතනවා.
steps:
1️⃣ connected bot ගෙන් port 80 වලින් config එකක් හදාගන්න (watch this to create config) දැනටම එකක් තියේනම් ආයෙ හදන්න ඕනෙ නැ. ඒකෙ uuid එක copy කරගන්න.
2️⃣ පහල config එක UUID කියන තැන් දෙකට ඔයාගෙ uuid එක replace කරගන්න.
3️⃣ ඒකෙම BUGHOST කියන තැනට ඔයාගෙ zoom bug host එක දාගන්න.
4️⃣ config එක video එකේ විදියට sing box වලට add කරගන්න.
5️⃣ connect it and enjoy 🎉
Cloudflare service දැන් Direct route වෙන්නෙ vpn server අදාල නැහැ. cloudflare cdn නොවන එව්වා ඔක්කොම vpn server හරහා යන්නේ. 🚀
🎥 films tv series බලන අයට පොඩි tip එකක්
ඒ වගේම මේක cloudflare cdn use කරන්නෙ ඒ හින්දා video සුපිරියට load වෙනවා. direct නිසා. 🎬
🔧 ඔයාගෙම server එකකින් මේක හදාගන්න විදියත් දාන්නම් පස්සෙ.
ඒ වගේම ඔයාල fight mode දාලා ගැලපෙන Private IP Address එකක් allocate කරගන්න ඕනෙ.
✅ පලවෙනි comment දෙක බලන්න config එකයි හදාගන්න හැටි video එකයි ඇති. 👇
🔥17👍10❤6
bot Up karala thibbe Linode server ekk
server eka neme account ekth ekk hoyagnna na 😂
mama thaw tikakin wena server ekkt dannm paran config ee widiytm wada karayi
server eka neme account ekth ekk hoyagnna na 😂
mama thaw tikakin wena server ekkt dannm paran config ee widiytm wada karayi
👍7🔥4❤1
𝘾𝙊𝙉𝙉𝙀𝘾𝙏𝙀𝘿
bot Up karala thibbe Linode server ekk server eka neme account ekth ekk hoyagnna na 😂 mama thaw tikakin wena server ekkt dannm paran config ee widiytm wada karayi
bot up karala thiyenne kalin config ee widiytm wada krnwa athi oya domain ek use kalanm mukuth wenas karanna one naha. ip ek use kalanm eek maru karaganna echchrayi
👍3❤1
🥏 Anatomy of an HTTP Request 🥏
මම කලිම් ලියපු එකෙත් මේක ගැන කියලා තියෙනවා කෙටියෙන්.
ඔයාල python වලින් request.Get call කරහම ඇත්තටම මොකද වෙන්නෙ. නැත්තන් go වලින් http.Get, එහෙමත් නැත්තන් browser එකේ url එක type කරලා enter කලහම.
අපි හිතමුකො මේ url එකට https://connectedbot.site/ request එකක් යවනවා කියලා.
මුලින්ම වෙන්නෙ මේකෙන් domain (fqdn එකක් නම් ඒක) name එක වෙන් කරලා ගන්නවා. ඒකියන්නෙ connectedbot.site ඊට පස්සෙ destination එක්ක කනෙක්ශන් එකක් හදාගම්න ඕනෙ ඒත් ඒකට destination දන්නෙ නැනෙ.
destination කියන්නෙ ip address එකට මෙතන
dst හොයාගන්න අපි dns server එකට quary එකක් යවනවා domain එක දාල ipv4 නම් A record එකක් ඉල්ලලා ඉතින් අපිට dns answere එකේ අදාල ip address එක තියෙනවා.
දැන් හරි dst දන්නවා http වලදි use කරන්නෙ tcp ( quic use කරනවා ඒත් මම tcp ගැන තමා කියන්නෙ ) ඉතින් මේ tcp connection එකක් හදාගන්න tcp handshake එක කරගන්න ඕනෙ මේක කරගන්න අපිට dst port එක දැනගන්න ඕනෙ සම්න්යන් port එකක් සඳහන් කරලා නැ කියන්නෙ ඒක 443
මේ ඇරුනාම කැමති විශේශ port එකක් වුණත් use කරන්න පුලුවන් ඔයාල දැකලා ඇති url
https://connectedbot.site:8080/
මේ වගේ ඒකියන්නෙ මේකෙ dst port එක 8080 ඒ වගේම මම මෙතන මේ url structure එක ගැන වැඩිය කියන්නෙ යන්නෙ නැ හොයලා බලන්න
ඊට පස්සෙ ඔයාගෙ program එකෙන් ( ඒකියන්නෙ request library එක ගොඩක් වෙලාවට request lib එකම නෙමේ request pkg එකත් වෙන std pkg එකක් use කරනවා low level handle කරන්න )
system call එකක් ගහලා socket එකක් open කරනවා system call එකක් කියන්නෙ OS එකේ kernal එකට මේ socket එක හදන්න කියලා ඉඉල්ලනවා kernal එකෙන් මේකට අවශ්ය resource වෙන් කරලා file descriptor එකක් return කරනවා මේ socket එකෙන් අපි connect කියන sys call එක ගහලා tcp connection එකක් open කරනවා.
connect කියන එකට තමා අර dst ip & port දෙන්නෙ එතකොට kernal එකෙන් තනියම tcp handshake එක syn syn-ack ack server එකත් එක්ක share කරගෙන connection එක හදාගන්නවා හදාගන්නඑආ විතරක් නෙමෙ මෙතනින් එහාටත් සියලුම tcp handling කරන්නෙ kernal එකෙන්
දැන් අර මම කියපු socket එක tcp sock එකක් මේක තේරෙන්නෙ නැත්තන් හිතන්නකො මේක file එකක් වගේ කියලා මේ socket එකට raw byte write කරන්නත් පුලුවන් read කරන්නත් පුලුවන්
ඉතින් ඔයා මේකට byte write කලොත් එව්වා read කරන්නෙ server එකෙන් server එකෙන් write කරන එව්වා ඔයා read කරනවා tcp & packetwise handling මොනවත් හිතන්න අවශ්ය නැ එව්වා ඔක්කොම kernal එකෙන් කරලා දෙනවා. (quic use කරනවනන් සිද්දිය පොඩ්ඩක් වෙනස් ඒත් මේ read write කරන්න පුලුවන් connection එකක් තමා හදන්නෙ) ඉතින් දැන් ඔයා මේ කනෙක්ශන් එක හදාගත්තාම server එකත් දැන් ready data recive කරගන්න
ඊලගට දැන් උඩ හරියට එමු ආයෙ ඒ කියන්නෙ ඇත්තම request එක මම මෙතනදි කතා කරන්නෙ http 1.1 ගැන
ඊට කලිම් tls ගැන කියන්නම්කො මේ connection එකට tls layer එකක් ඕනන්ම් ඒක වෙන්නෙ මෙතනදි
මම මේක මගේ විදියකට පැහැදිලි කරන්නම් දැන් අර උඩ මම කිව්වා අපි මොන ඩේටා දුන්නත් kernal එකෙන් ඒක අවශ්ය දේවල් කරලා tcp වලින් පහල layers ඔක්කොම handle කරගන්නවා කියලා
tls ගැනත් එහෙම හිතන්න ඔයා අර උඩ හදපු socket එක එහෙමම දෙනවා tls lib එකට මේ tls නම් kernal එකේ දුවන්නෙ නැ මේක ඔයාගෙ program එක ඒකියන්නෙ ගොඩක් වෙලාවට std lib එකක් තමයි handle කරන්නෙ මේ lib එකට අර socket එක දුන්නාම එයා ඒක තියාගෙන් අපිට වෙන එකක් දෙනවා කියලා හිතන්නකො එහෙම් දෙන අතරේ ඒ එයා තියාගත්ත socket එකෙන් serer එකත් එක්ක comunicate කරලා එයා tls handdhake එක කරගන්නවා. ඒ වගේම කියන්න ඕනෙ server එකෙත් tls run wenna one
මේක කරගන්නෙ මුලින්ම client hello කියලා ට්ල්ස් රෙකොඩ් එකක් යවනවා server එකෙන් server hello ඊට පස්සෙ pub key share කරගෙන් තව දේවල් ටිකක් වෙලා tls connection එකක් බවට පත් කරගන්නවා. tls ගැන පස්සෙ කතා කරමු.
මෙව්වා කරලා තමා එයා අර අපිට වෙන බොරු socket එකක් වගේ එක දෙන්නෙ (abstraction) මේ දෙන එකත් කලිම් වගේමයි server පැත්තෙනුත් මෙහෙමමයි වෙන්නේ. මම මෙතනදි socket කිව්වට ඒක් socket එකක් නෙමේ අර පරන එක උඩටම abstraction layer එකක් වැටෙන්නෙ තේරුම් ගැනීමෙ පහසුවට අරහෙම් කිව්වෙ
මේකටත් කලිම් වගේම අපිට raw byte read write කරන්න පුලුවන් වෙනස වෙන්නෙ කලින් එහෙම කරද්දි ඒ byte ඒ විදුයටමයි යන්නෙ දැන් හැබැයි encrypt වෙලා යන්නෙ හැබැයි server එකෙනුත් මේ වගෙ tls layer එකක් වැටිලා තියෙන්නෙ අපි write කරන එව්වා මේකට server එකෙන් read කරද්දි raw data විදියටමයි එන්නෙ මොකද අර layer එක හරහානෙ එන්නෙ
දැන් හරි ඔන්න සම්පූර්ණ connection එක හදාගෙන තියෙන්නෙ.
දැම් ඉතින් http request එක write කරන්න තමා තියෙන්නෙ.
මම කලිම් ලියපු එකෙත් මේක ගැන කියලා තියෙනවා කෙටියෙන්.
ඔයාල python වලින් request.Get call කරහම ඇත්තටම මොකද වෙන්නෙ. නැත්තන් go වලින් http.Get, එහෙමත් නැත්තන් browser එකේ url එක type කරලා enter කලහම.
අපි හිතමුකො මේ url එකට https://connectedbot.site/ request එකක් යවනවා කියලා.
මුලින්ම වෙන්නෙ මේකෙන් domain (fqdn එකක් නම් ඒක) name එක වෙන් කරලා ගන්නවා. ඒකියන්නෙ connectedbot.site ඊට පස්සෙ destination එක්ක කනෙක්ශන් එකක් හදාගම්න ඕනෙ ඒත් ඒකට destination දන්නෙ නැනෙ.
destination කියන්නෙ ip address එකට මෙතන
dst හොයාගන්න අපි dns server එකට quary එකක් යවනවා domain එක දාල ipv4 නම් A record එකක් ඉල්ලලා ඉතින් අපිට dns answere එකේ අදාල ip address එක තියෙනවා.
දැන් හරි dst දන්නවා http වලදි use කරන්නෙ tcp ( quic use කරනවා ඒත් මම tcp ගැන තමා කියන්නෙ ) ඉතින් මේ tcp connection එකක් හදාගන්න tcp handshake එක කරගන්න ඕනෙ මේක කරගන්න අපිට dst port එක දැනගන්න ඕනෙ සම්න්යන් port එකක් සඳහන් කරලා නැ කියන්නෙ ඒක 443
මේ ඇරුනාම කැමති විශේශ port එකක් වුණත් use කරන්න පුලුවන් ඔයාල දැකලා ඇති url
https://connectedbot.site:8080/
මේ වගේ ඒකියන්නෙ මේකෙ dst port එක 8080 ඒ වගේම මම මෙතන මේ url structure එක ගැන වැඩිය කියන්නෙ යන්නෙ නැ හොයලා බලන්න
ඊට පස්සෙ ඔයාගෙ program එකෙන් ( ඒකියන්නෙ request library එක ගොඩක් වෙලාවට request lib එකම නෙමේ request pkg එකත් වෙන std pkg එකක් use කරනවා low level handle කරන්න )
system call එකක් ගහලා socket එකක් open කරනවා system call එකක් කියන්නෙ OS එකේ kernal එකට මේ socket එක හදන්න කියලා ඉඉල්ලනවා kernal එකෙන් මේකට අවශ්ය resource වෙන් කරලා file descriptor එකක් return කරනවා මේ socket එකෙන් අපි connect කියන sys call එක ගහලා tcp connection එකක් open කරනවා.
connect කියන එකට තමා අර dst ip & port දෙන්නෙ එතකොට kernal එකෙන් තනියම tcp handshake එක syn syn-ack ack server එකත් එක්ක share කරගෙන connection එක හදාගන්නවා හදාගන්නඑආ විතරක් නෙමෙ මෙතනින් එහාටත් සියලුම tcp handling කරන්නෙ kernal එකෙන්
දැන් අර මම කියපු socket එක tcp sock එකක් මේක තේරෙන්නෙ නැත්තන් හිතන්නකො මේක file එකක් වගේ කියලා මේ socket එකට raw byte write කරන්නත් පුලුවන් read කරන්නත් පුලුවන්
ඉතින් ඔයා මේකට byte write කලොත් එව්වා read කරන්නෙ server එකෙන් server එකෙන් write කරන එව්වා ඔයා read කරනවා tcp & packetwise handling මොනවත් හිතන්න අවශ්ය නැ එව්වා ඔක්කොම kernal එකෙන් කරලා දෙනවා. (quic use කරනවනන් සිද්දිය පොඩ්ඩක් වෙනස් ඒත් මේ read write කරන්න පුලුවන් connection එකක් තමා හදන්නෙ) ඉතින් දැන් ඔයා මේ කනෙක්ශන් එක හදාගත්තාම server එකත් දැන් ready data recive කරගන්න
ඊලගට දැන් උඩ හරියට එමු ආයෙ ඒ කියන්නෙ ඇත්තම request එක මම මෙතනදි කතා කරන්නෙ http 1.1 ගැන
ඊට කලිම් tls ගැන කියන්නම්කො මේ connection එකට tls layer එකක් ඕනන්ම් ඒක වෙන්නෙ මෙතනදි
මම මේක මගේ විදියකට පැහැදිලි කරන්නම් දැන් අර උඩ මම කිව්වා අපි මොන ඩේටා දුන්නත් kernal එකෙන් ඒක අවශ්ය දේවල් කරලා tcp වලින් පහල layers ඔක්කොම handle කරගන්නවා කියලා
tls ගැනත් එහෙම හිතන්න ඔයා අර උඩ හදපු socket එක එහෙමම දෙනවා tls lib එකට මේ tls නම් kernal එකේ දුවන්නෙ නැ මේක ඔයාගෙ program එක ඒකියන්නෙ ගොඩක් වෙලාවට std lib එකක් තමයි handle කරන්නෙ මේ lib එකට අර socket එක දුන්නාම එයා ඒක තියාගෙන් අපිට වෙන එකක් දෙනවා කියලා හිතන්නකො එහෙම් දෙන අතරේ ඒ එයා තියාගත්ත socket එකෙන් serer එකත් එක්ක comunicate කරලා එයා tls handdhake එක කරගන්නවා. ඒ වගේම කියන්න ඕනෙ server එකෙත් tls run wenna one
මේක කරගන්නෙ මුලින්ම client hello කියලා ට්ල්ස් රෙකොඩ් එකක් යවනවා server එකෙන් server hello ඊට පස්සෙ pub key share කරගෙන් තව දේවල් ටිකක් වෙලා tls connection එකක් බවට පත් කරගන්නවා. tls ගැන පස්සෙ කතා කරමු.
මෙව්වා කරලා තමා එයා අර අපිට වෙන බොරු socket එකක් වගේ එක දෙන්නෙ (abstraction) මේ දෙන එකත් කලිම් වගේමයි server පැත්තෙනුත් මෙහෙමමයි වෙන්නේ. මම මෙතනදි socket කිව්වට ඒක් socket එකක් නෙමේ අර පරන එක උඩටම abstraction layer එකක් වැටෙන්නෙ තේරුම් ගැනීමෙ පහසුවට අරහෙම් කිව්වෙ
මේකටත් කලිම් වගේම අපිට raw byte read write කරන්න පුලුවන් වෙනස වෙන්නෙ කලින් එහෙම කරද්දි ඒ byte ඒ විදුයටමයි යන්නෙ දැන් හැබැයි encrypt වෙලා යන්නෙ හැබැයි server එකෙනුත් මේ වගෙ tls layer එකක් වැටිලා තියෙන්නෙ අපි write කරන එව්වා මේකට server එකෙන් read කරද්දි raw data විදියටමයි එන්නෙ මොකද අර layer එක හරහානෙ එන්නෙ
දැන් හරි ඔන්න සම්පූර්ණ connection එක හදාගෙන තියෙන්නෙ.
දැම් ඉතින් http request එක write කරන්න තමා තියෙන්නෙ.
❤7👍1
මම කලින් කිව්වා වගේ http1.1 ගැන තමා කියන්නෙ මේක text based protocole එකක් ඒකියන්නෙ text වලින් තමා communicate කරගන්නෙ. මේ පහල තියෙනව text ටික write
GET / HTTP/1.1\r\n Host: example.com\r\n User-Agent: RawSocketClient\r\n Connection: close\r\n \r\n
කලහම ඒක http req එකක් ඔයාලට පේනවා ඇති මේකෙ \r\n කියලා තියෙනවා මේවලින් තාමා අපි මේ req line අදුරගන්නෙ හිතන්නකො server එකෙන් read කරනවා කියලා කොච්ච්රක් read කරන්නද අපි හරියටම දන්නෙ නැනෙ ඒ හින්දා තමා මෙහෙමෙ තියෙන්නෙ \r\n එකක් හම්බුනාම next line එකක් තියෙනවා කියලා දන්නවා ඉතින් ඔයාලට පේනවා ඇති අවසානෙට තියෙනවා මේ වගෙ crlf දෙකක් එකවර \r\n\r\n කියලා ඉතින් මේක හම්බුනාම req එක ඉවරයි කියලා දන්නවා.
ඉවරයි කිව්වට ඉවර නැහැ එතනින් තමා req body එක පටන් ගන්නෙ මේ body එකේ තමා අපි යවන data තියෙන්නෙ GET req එක්ක body එකක් යවන්නෙ නැ. දැන් ඔය req එකේ GET කියලා මුලින්ම තියේනෙ මේක තමා request method එක ඒතන POST තිබ්බනන් ඒක POST එකක්
ඒ වගේම ඔයාලට තව පහල පේනවා \r\n වලින් ඉවර වෙන line ගොඩක් තියෙනවා මේ මැද තියෙන එව්වා තමා headers කියන්නෙ මෙව්වා අදාල වෙන්නෙ http req response yawan application එකට addtional information ගන්න content length header එකෙන් කියන්නෙ අදාල content එකේ දිග ඉතින් මේ header එක තිබ්බොත් අපිට ලේසියෙන්ම ඒකෙ ගාන data read කරහැකි නැත්තන් වෙන්නෙ ඒ ගාණ read කරලා timeout වෙනකන් ඉන්න අදාල දීල තියෙන් වෙලාවක් එහෙම් නැතුව මේ header එකේ වටිනාකම ඒකයි
binary protocole වලනම් මේක ලස්ස්නට වෙනවා rpc වගේ http2 කියන්නෙත් binary proto එකක් ඒ වගෙම multiplex support මම එව්ව ගැනන්ම් කියන්න යන්නෙ නැ.
ආයෙත් මාතෘකාවට ඉතින් මේක write කරලා server එකෙන් read කරාට පස්සෙ මේ req එකට අදාල response එකක් තියේනම් ඒක ආපහු connection එකට write කරනවා.
මේ response එක ඕනෙම දෙයක් වෙන්න පුලුවන් error code එකක් නැත්තන් response data. response එක්කට examole එක පහල
HTTP/1.1 200 OK\r\n
Content-Type: application/json\r\n
Content-Length: 38\r\n
Connection: close\r\n
\r\n
this is response body\r\n
ඔයාලට් http response එකක් structure එක බලාගන්න පුලුවන් 200 කියලා තියෙන්නෙ status code එක http වල මෙහෙම common status code තියෙ
404 error not found
403 forbidden
101 switching protocole (upgrading)
තව තියේ මටත් ඔය මතක් වුණ සෙට් එකක් කිව්වෙ. දැන් හිතන්නකො browser එකෙන් මේ req එක යවලා rresponse එක හම්බුනා කිය ලා එතකොට ඔයාගෙ browser එකේ පෙන්නන්නෙ මෙන්න මේ ටික
this is response body mee tika nikn text එකක් විදියට browser එකේ පෙන්නවා.
website එකක් නම් ඔතන තමා html content ටික තියෙන්නෙ එතකොට ඒක් browser එකෙන් රෙන්ඩෙර් කරලා webpage එක පෙන්නනවා.
මේ ටික උනාට පස්සෙත් අර tcp connection එක එහෙමම තියෙනවා. මේ connection එකම next request එකට reuse කරන්න පුලුවන් හැබැයි අර උඩ example req එකෙ header එක්ක තිබ්බා connection close කියලා එහෙම තිබුනොත් tcp connection එක close කරනවා. close කරනවා කියන්නෙ kernal එකෙන් එහෙම නෙමෙ http server එකෙන්මයි kernal එකට system call එකක් ගහලා close කරන්න
data send recive කරන්නෙත් system call වලින්ම තමයි.
මම මෙතනදි කියලා තියෙන්නෙ මේක වෙන standard විදිය user level tcp stack වුණත් පාවිච්චි කරලා මේක කරන්න පුලුවන් kernal එකේ එක use කරන්නෙ නැතුව.
දැන් ඉතින් ඔයාලට http req එකක lifecycle එක සරලව තේරෙන්න ඇති කියලා හිතනවා.
ඒ වගේම මම මේක http ගැන එහෙම කිව්වෙ rfc බලලත් නෙමේ 🥲ඒ හින්දා අඩුපාඩුවක් තිබ්බොත් comment එකක් දාන්න
GET / HTTP/1.1\r\n Host: example.com\r\n User-Agent: RawSocketClient\r\n Connection: close\r\n \r\n
කලහම ඒක http req එකක් ඔයාලට පේනවා ඇති මේකෙ \r\n කියලා තියෙනවා මේවලින් තාමා අපි මේ req line අදුරගන්නෙ හිතන්නකො server එකෙන් read කරනවා කියලා කොච්ච්රක් read කරන්නද අපි හරියටම දන්නෙ නැනෙ ඒ හින්දා තමා මෙහෙමෙ තියෙන්නෙ \r\n එකක් හම්බුනාම next line එකක් තියෙනවා කියලා දන්නවා ඉතින් ඔයාලට පේනවා ඇති අවසානෙට තියෙනවා මේ වගෙ crlf දෙකක් එකවර \r\n\r\n කියලා ඉතින් මේක හම්බුනාම req එක ඉවරයි කියලා දන්නවා.
ඉවරයි කිව්වට ඉවර නැහැ එතනින් තමා req body එක පටන් ගන්නෙ මේ body එකේ තමා අපි යවන data තියෙන්නෙ GET req එක්ක body එකක් යවන්නෙ නැ. දැන් ඔය req එකේ GET කියලා මුලින්ම තියේනෙ මේක තමා request method එක ඒතන POST තිබ්බනන් ඒක POST එකක්
ඒ වගේම ඔයාලට තව පහල පේනවා \r\n වලින් ඉවර වෙන line ගොඩක් තියෙනවා මේ මැද තියෙන එව්වා තමා headers කියන්නෙ මෙව්වා අදාල වෙන්නෙ http req response yawan application එකට addtional information ගන්න content length header එකෙන් කියන්නෙ අදාල content එකේ දිග ඉතින් මේ header එක තිබ්බොත් අපිට ලේසියෙන්ම ඒකෙ ගාන data read කරහැකි නැත්තන් වෙන්නෙ ඒ ගාණ read කරලා timeout වෙනකන් ඉන්න අදාල දීල තියෙන් වෙලාවක් එහෙම් නැතුව මේ header එකේ වටිනාකම ඒකයි
binary protocole වලනම් මේක ලස්ස්නට වෙනවා rpc වගේ http2 කියන්නෙත් binary proto එකක් ඒ වගෙම multiplex support මම එව්ව ගැනන්ම් කියන්න යන්නෙ නැ.
ආයෙත් මාතෘකාවට ඉතින් මේක write කරලා server එකෙන් read කරාට පස්සෙ මේ req එකට අදාල response එකක් තියේනම් ඒක ආපහු connection එකට write කරනවා.
මේ response එක ඕනෙම දෙයක් වෙන්න පුලුවන් error code එකක් නැත්තන් response data. response එක්කට examole එක පහල
HTTP/1.1 200 OK\r\n
Content-Type: application/json\r\n
Content-Length: 38\r\n
Connection: close\r\n
\r\n
this is response body\r\n
ඔයාලට් http response එකක් structure එක බලාගන්න පුලුවන් 200 කියලා තියෙන්නෙ status code එක http වල මෙහෙම common status code තියෙ
404 error not found
403 forbidden
101 switching protocole (upgrading)
තව තියේ මටත් ඔය මතක් වුණ සෙට් එකක් කිව්වෙ. දැන් හිතන්නකො browser එකෙන් මේ req එක යවලා rresponse එක හම්බුනා කිය ලා එතකොට ඔයාගෙ browser එකේ පෙන්නන්නෙ මෙන්න මේ ටික
this is response body mee tika nikn text එකක් විදියට browser එකේ පෙන්නවා.
website එකක් නම් ඔතන තමා html content ටික තියෙන්නෙ එතකොට ඒක් browser එකෙන් රෙන්ඩෙර් කරලා webpage එක පෙන්නනවා.
මේ ටික උනාට පස්සෙත් අර tcp connection එක එහෙමම තියෙනවා. මේ connection එකම next request එකට reuse කරන්න පුලුවන් හැබැයි අර උඩ example req එකෙ header එක්ක තිබ්බා connection close කියලා එහෙම තිබුනොත් tcp connection එක close කරනවා. close කරනවා කියන්නෙ kernal එකෙන් එහෙම නෙමෙ http server එකෙන්මයි kernal එකට system call එකක් ගහලා close කරන්න
data send recive කරන්නෙත් system call වලින්ම තමයි.
මම මෙතනදි කියලා තියෙන්නෙ මේක වෙන standard විදිය user level tcp stack වුණත් පාවිච්චි කරලා මේක කරන්න පුලුවන් kernal එකේ එක use කරන්නෙ නැතුව.
දැන් ඉතින් ඔයාලට http req එකක lifecycle එක සරලව තේරෙන්න ඇති කියලා හිතනවා.
ඒ වගේම මම මේක http ගැන එහෙම කිව්වෙ rfc බලලත් නෙමේ 🥲ඒ හින්දා අඩුපාඩුවක් තිබ්බොත් comment එකක් දාන්න
❤7👏2👍1
