Protokol bu ikki va undan ko'p qurilmalar o'rtasidagi aloqani ta'minlaydigan standart qoidalar to'plami. Demak TCP ham protokol, u ham qurilmalar o'rtasidagi aloqani ta'minlovchi bir standart deyishimiz mumkin.
TCP connection o'rnatilishi uchun 3-tomonlama handshake (qo'l siqish) bo'lishi haqida eshitgan bo'lishingiz mumkin misol uchun quyidagicha:
Keling suxbatni o'zbekchasini ko'ramiz. Suxbatni doimgidek Client boshlaydi va Server javob beradi. Avval Client SYN flag jo'natadi. Ushbu xabarda nima bo'lishini tassavur ham qila olmaysiz. Keling avval kod orqali ko'ramiz va keyin ularni parse qilamiz:
import socket
def main():
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.bind(('localhost', 1712))
sck.listen(1)
print("I am listening on port 1712")
(client_socket, address) = sck.accept()
while True:
msg = client_socket.recv(1024)
if not msg:
break
print(f"FROM: {address} \bMESSAGE: {msg}")
print()
client_socket.close()
if __name__ == "__main__":
main()
Server tomonni yozib oldik, ana endi navbat clientga. Server = quloq, client = og'iz. Kimdir gapirmaguncha quloq eshitmaydi qoidasini eslab qoling :)
import socket
def main():
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect(('localhost', 1712))
print("Sending data...")
sck.sendall(b"Hello server og'a!")
sck.close()
if __name__ == "__main__":
main()
Men yozgan kod biroz commentlardan xoli, comment yozish bir baxona edi. Comment yozish orqali ushbu kodni sizga tushuntirdim
Men yozgan kod
Va terminal orqali birinchi bo'lib Serverni keyin esa Clientni ishga tushiramiz. Server eshitib turaveradi. Client gapirib qo'ysa Server eshita olmay qolsa Client xafa bo'lishi mumkin.
Men olgan xabar
xodisalarni to'liq kuzatish uchun bizga wireshark (bu terminni ko'proq network hacking qilishda ishlatasiz, WOW!) kerak bo'ladi. Windows uchun ham, Mac uchun ham dastur bo'lishi kerak. Kelasi postda bu haqda davom etamiz...