Merge sort on a linked list works by splitting the list into two halves recursively until each sublist has one or zero nodes, which are inherently sorted. Then, it merges these sorted sublists back together in order. The process starts by finding the middle node to split the list. The split is done by setting the middle node's next pointer to None, separating the list into two halves. Each half is sorted recursively by the same method. Finally, the two sorted halves are merged by comparing nodes one by one and linking the smaller node first. This continues until the entire list is sorted. The recursion stops when the sublist has one or zero nodes. The final result is a fully sorted linked list.