Буфер у сокета таки циклический, на столько пакетов сколько хватит по памяти. Старые затираются в случае UDP (с TCP чуть иначе, там перестают приходить подтверждения приема и передающая сторона приостанавливает передачу потока).
В подтверждение посмотрите на приложенный код, демонстрирующий мои слова
import socket
s1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
s2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
ADDR = ('', 1234)
s1.bind(ADDR)
for i in range(10):
s2.sendto(("%4d\n" % i).encode('ascii'), ADDR)
for i in range(10):
data, addr = s1.recvfrom(5)
print (data.decode('ascii'), addr)