a) Tracking the individual communication between applications on the source and destination hosts
b) Segementing data for and reassembling segmented data into streams of application data at the destination
c) Identifying the proper application for each communication stream