4.3.28 · D1 · HinglishComputer Networks

FoundationsSocket programming — TCP server - client, UDP server - client in Python

2,283 words10 min read↑ Read in English

4.3.28 · D1 · Coding › Computer Networks › Socket programming — TCP server - client, UDP server - clien

Kisi bhi socket code ki ek line padhne se pehle, kuch words ka magic hona band hona chahiye. Hum har ek word ko zero se build karte hain, ek picture se anchor karte hain, aur tabhi use kisi call mein aane dete hain. Neeche kuch bhi yeh nahi maanta ki tumne pehle networking dekhi hai.


1. Byte — woh ek cheez jo kabhi bhi travel karti hai

Picture: ek row mein 8 chhote lightbulbs socho. Har ek ya to on (1) hai ya off (0). Ek aisi row = ek byte. Ek message bas inhi rows ki ek lambi line hai.

Yeh topic kyun isko use karta hai: network card ko "Python string" ya "integer" ka idea samajh nahi aata — woh sirf bytes move karta hai. Isliye har socket call bytes objects bhejti aur receive karti hai, Python mein b laga ke likha jaata hai: b"hello". Woh akela b parent note ki pehli badi galti ka source hai ("Main bas ek string bhej dunga").

Figure — Socket programming — TCP server - client, UDP server - client in Python

2. Process — woh cheez jo tumhare code ko run karte waqt own karti hai

Picture: do sealed rooms. Andar har ek mein ek running program hai. Dono ke beech koi window nahi. Agar room A ko room B ko kuch dena hai, toh use darwaze ke neeche se slide karna padega — kisi aisi channel se jise baaki duniya (OS) control karti hai.

Yeh topic kyun isko use karta hai: yahi isolation sockets ke exist karne ki poori wajah hai. Agar do programs memory share karte, toh woh bas same variable padhte. Kyunki woh nahi karte, unhe ek channel chahiye — aur socket wahi channel hai.


3. Operating System (OS) aur network card

Picture: NIC building ki wall mein ek mail slot hai; OS building ka front desk hai jo akela us slot ko use kar sakta hai. Tumhare process ko front desk se mail bhejne ki request karni padti hai.

Yeh topic kyun isko use karta hai: tum wire se directly baat nahi karte. Tum OS se request karte ho. Socket API (function calls ka ek set jaise send, recv) exactly wahi language hai jo tum yeh requests karne ke liye use karte ho.

Byte 0 to 255

Bytes object b-hi

Process owns private memory

OS controls the network card

Socket the OS-given doorway

IP address which machine

Port which program

TCP stream reliable ordered

UDP datagram fast lossy

Parent topic server and client code


4. IP address — kaun si machine

Picture: ek envelope par street address. Yeh tumhara letter sahi building tak pahunchata hai.

Woh special wala, 127.0.0.1: yeh localhost hai — ek loopback address jiska matlab hai "yahi same machine". Yahan bheje gaye bytes computer kabhi nahi chodh'te; woh OS ke andar hi wapas ghoom jaate hain. Parent note isko isliye use karta hai taaki server aur client ek laptop par run kar sakein.

Yeh topic kyun isko use karta hai: ek socket ko jaanna chahiye ki kaun se computer tak pahunchna hai. IP ke bina OS ko koi idea nahi ki bytes ko kahan steer kare. Poori breakdown ke liye Ports and IP addressing dekho.


5. Port — us machine par kaun sa program

Picture: neeche. IP building hai; ports wall par numbered mailboxes hain. Ek machine par do programs do alag mailbox numbers par listen karte hain taaki replies mix na ho jayein.

Figure — Socket programming — TCP server - client, UDP server - client in Python

Parent 9000 aur 9001 kyun use karta hai: TCP demo port 9000 par listen karta hai, UDP demo 9001 par — alag mailboxes taaki do servers kabhi collide na karein. 1024 se neeche ke ports system services ke liye reserved hain; isliye examples high numbers choose karte hain.


6. Socket — doorway khud (the tuple)

Picture: ek akela labelled doorway jis par sign laga hai jisme sare paanch facts likhe hain. Jab paanchon bhar jayein, OS ko exactly pata hota hai ki bytes ki kaun si stream is doorway se belong karti hai aur kisi aur ki nahi.

Yeh topic kyun isko use karta hai: parent note mein har socket call in paanch slots mein se ek ya zyada fill kar raha hai. bind local pair fill karta hai. connect remote pair fill karta hai. Yeh samajh lene se call list arbitrary lagni band ho jaati hai.


7. Client vs Server — kaun wait karta hai, kaun chalta hai

Picture: ek dukandaar ek fixed counter ke peeche khada hai (server) versus ek customer jo andar aata hai (client). Customer ko pata hona chahiye dukaan kahan hai; dukaan bas wait karti hai.

Sirf server kyun bind karta hai: client ko fixed address ki zaroorat nahi — kisi ko use dhunddhna nahi hai, woh khud dhunddhta hai. Isliye jab client connect karta hai, OS quietly use ek throwaway ephemeral port assign kar deta hai. Yahi wajah hai ki parent note kehta hai "client normally bind nahi karta".


8. TCP vs UDP — doorway ki do personalities

Picture: neeche. TCP paani hai pipe mein daala hua — yeh ek continuous flow ki tarah nikalti hai bina kisi mark ke ki har pour kahan se shuru hua. UDP alag sealed postcards hain — har ek apne edges rakhta hai, lekin kuch mailbag se gir jaate hain.

Figure — Socket programming — TCP server - client, UDP server - client in Python

Reliability ka kuch cost kyun hota hai: order aur delivery guarantee karne ke liye, TCP pehle ek setup ritual perform karta hai (TCP three-way handshake) aur lost pieces ko track/re-send karta hai. UDP yeh sab skip karta hai, isliye woh faster hai lekin lossy.


9. "Blocking" — kyun accept aur recv pause karte hain

Picture: dukandaar freeze ho jaata hai, darwaze ko ghoorta rehta hai, kuch aur nahi karta jab tak koi customer andar nahi aata. accept() block karta hai jab tak koi client dial nahi karta; recv() block karta hai jab tak bytes nahi aatein.

Yeh topic kyun isko use karta hai: parent note ka comment # BLOCKS until a client dials tab tak sense nahi banta jab tak tum nahi jaante ki ek call pause kar sakti hai. Baad mein, is freeze se bachna exactly wahi hai jiske baare mein select / asyncio for concurrent servers hai.


10. Do leftover terms jinhe parent lean karta hai


Equipment checklist

Khud ko test karo — right side cover karo aur reveal karne se pehle jawab do.

Byte kya hai, numbers mein?
0 se 255 tak ki ek single value (aath bits).
Bhejna se pehle string ko .encode() kyun karna padta hai?
Sockets sirf bytes carry karte hain, text nahi.
Do processes ek variable kyun share nahi kar sakti?
Har process ki apni private memory hoti hai, doosre se sealed off.
Network card ko touch karne ki permission kise hoti hai?
Sirf operating system ko; tumhara code socket API ke zariye isse request karta hai.
IP address kya identify karta hai?
Network par kaun si machine.
Port kya identify karta hai?
Us machine par kaun sa program (mailbox).
127.0.0.1 ka matlab kya hai?
Localhost — yahi same machine; bytes loop back karte hain bina isko leave kiye.
Socket ko kaun se paanch slots define karte hain?
protocol, local IP, local port, remote IP, remote port.
Client usually bind kyun nahi karta?
Kisi ko use dhunddhna nahi hai; OS use ek throwaway ephemeral port deta hai.
SOCK_STREAM kaun sa protocol deta hai, aur data ki kaisi shape?
TCP — ek ordered, reliable byte stream (koi message edges nahi).
SOCK_DGRAM kaun sa protocol deta hai, aur data ki kaisi shape?
UDP — self-contained datagrams jo lost ya reordered ho sakte hain.
accept() ke liye "blocking" ka matlab kya hai?
Program wahan pause karta hai jab tak koi client connect nahi kar leta.
listen(5) mein 5 kya hai?
Backlog — max pending connections accept se pehle queued.
Server ko fast restart karna SO_REUSEADDR ke bina kyun fail karta hai?
Purana port OS ke dwara TIME_WAIT mein hold kiya gaya hai.