These filter, e.g., tcp, is filtering for the protocol being included in the packet details. So whenever the IPv4 dissector has a complete packet it hands that off to the TCP dissector, which passes the filter to be shown. This gets complicated when there are fragmented TCP packets. Then you'll have more packets with ip.proto==0x06 then there are TCP packets coming through the filter.