As i've understood, the client first enters a domain name and the DNS returns it an IP address where the client sends his request and gets a response from the server. Now while sending it back, the server sends the data in tiny bits called packets with a sequence number on them. If the client hasn't received the complete data or the entire sequence of packets(they may've been lost on the way), TCP asks the client to resend the remaining data after a specific period of time ( But how does the server come to know that the client has received all the data ). Also there exist multiple protocols for sending different types of data, for eg SMTP for email, Http for webpages(hypertext), HTTPS for secure or encrypted web pages etc.. And there are different port numbers for identifying the specific server on an ip(of the specific protocol). IS THERE ANY MISTAKE IN MY UNDERSTANDING YET? And also can someone recommend me a resource to learn more about networking in a detailed manner that is as good as David Malan's teaching?