In Internet Model there are four layers: Link -> Networking -> Transport -> Application.
I don\'t really know the difference between networking layer and transport layer
These are levels of abstraction.
Transport Layer is where the decision to use TCP/UDP is made. Among commonly used protocols in this layer, TCP is reliable, UDP isn't. Depending upon the choice made, the respective headers are attached to your packet. TCP for example just knows about SYN-ACK, Three-way handshake mechanisms, but does not know the address of the remote-endpoint, or the mechanism of getting the packet across the network.
Congestion control, Flow control help ensure that the network isn't flooded with packets, by regulating the number of packets being sent.
Now, after TCP/UDP header being appended, it moves on to the Network Layer. Till this step, the remote end-point's IP address wasn't a part of the packet at all. It is at this step that the Source & Destination IP addresses are added to the packet. This layer actually knows the remote-endpoint.
Sender Receiver
----------- ------------
| | virtual link | |
| Transport | -----------------> | Transport |
| | | |
----------- ------------
| |
| |
----------- -----------
| | virtual link | |
| Network | ------------------> | Network |
| | | |
----------- -----------
| |
| |
----------- -----------
| | | |
| Physical | | Physical |
| | | |
----------- -----------
↓ ↑
|____________real link____________|
The sender's Transport Layer data, is the exact data received by the receiver's transport layer.
As the packet travels down the sender, each layer is adding its own header information, but all of that is removed by the corresponding layer on the receiver.
The advantage is that a virtual link is established, like the one shown above, whereas the real link is only in the physical layer.