Mobile Ad Hoc Networks (MANETs) by definition operate without pre-established infrastructure. On the one hand side, this can be seen as an advantage since it makes them usable in situations where an infrastructure is not available, such as, e.g., in settings of emergency response. On the other hand, the lack of infrastructure poses difficult challenges to protocol design and software architecture for such networks. One example is wireless media access. In contrast to traditional wireless networks where nodes communicate through base stations, there is no dedicated network component to control the media access of the nodes in MANETs. This makes scheduling wireless transmissions complicated and affects the overall throughput capacity of the network. Another example are application level services. Many advanced applications on MANETs require basic services such as, e.g., DNS, SIP and SLP to operate. These services, however, typically rely on centralized components for storing the required networking information, components that are not available in MANETS. In this thesis, we study several problems occurring in MANETs at different places in the network stack.