Kezdjük az egyszerűbb protokollal, az UPD-vel. "A User Datagram Protocol (UDP) az internet egyik alapprotokollja. Feladata datagram alapú szolgáltatás biztosítása, azaz rövid, gyors üzenetek küldése. Jellemzően akkor használják, amikor a gyorsaság fontosabb a megbízhatóságnál, mert az UDP nem garantálja a csomag megérkezését. Ilyen szolgáltatások például a DNS, a valós idejű multimédia átvitelek, vagy a hálózati játékok." - Wikipedia
# based on python.org example
import socket
import sys
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind the socket to the port
server_address = ("localhost", 5002)
#sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(server_address)
print("-- UDP server starts -- \n Waiting to receive message - %s, %d" % (server_address[0], server_address[1]))
while True:
data, address = sock.recvfrom(4096)
print(" New message: %s" %(data))
print(" Received %d bytes from %s" % (len(data), address))
if len(data) >= 1:
print("-- UDP server finishes --\n")
exit()
# based on python.org example
import socket
import sys
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = ("localhost", 5002)
message = b"Hello UDP"
print("-- UPD client starts --")
try:
# Send data
print(" Sending %s" %(message))
sent = sock.sendto(message, server_address)
finally:
print("-- UPD client finishes, closing socket -- ")
sock.close()
-- UPD client starts --
Sending b'Hello UDP'
-- UPD client finishes, closing socket --
-- UDP server starts --
Waiting to receive message - localhost, 5002
New message: b'Hello UDP'
Received 9 bytes from ('127.0.0.1', 58537)
-- UDP server finishes --
"A TCP egy kapcsolat-orientált protokoll, amely az OSI modell szállítási rétegében helyezkedik el. Fő feladata egy megbízható, és biztonságos kapcsolat kiépítése (és fenntartása) két folyamat között. Menetét alapvetően három részre bonthatjuk: Létrejön a megbízható kapcsolat két állomás között Megkezdődik a tényleges adatátvitel A kapcsolat lezárása, és a számára elkülönített erőforrások felszabadítása. A protokoll a hibamentes átvitelhez az úgynevezett pozitív nyugtázás újraküldéssel (positive acknowledgement with retransmission) néven ismert eljárást használja. A TCP kapcsolatok egyes lépéseit állapotoknak nevezzük. A kapcsolat élettartama alatt különböző állapotváltozásokon megy keresztül:[1] A leírásban szereplő három rövidítés TCP üzenettípusokat jelöl, melyeket a fejlécben szereplő megfelelő bitek segítségével lehet változtatni.
Szerencsére a python a protokoll nagyrészét elfedi előlünk.
TODO