從上圖可以看到,TCP/IP是個協議組,可分為三個層次:網絡層、傳輸層和應用層。
在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。
在傳輸層中有TCP協議與UDP協議。
在應用層有FTP、HTTP、TELNET、SMTP、DNS等協議。
下圖也是描述這個關系的。
參考: https://krystalchisholm.wordpress.com/2010/11/24/chapter-17/
另外我們經常說到的 Socket 的所在位置如下圖:
Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。
在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。
參考: http://blog.csdn.net/xijiaohuangcao/article/details/6105623
從編碼角度看 TCP UDP的區別如下圖:
TCP通信需要服務器端偵聽listen、接收客戶端連接請求accept,等待客戶端connect建立連接后才能進行數據包的收發(recv/send)工作。
而UDP則服務器和客戶端的概念不明顯,服務器端即接收端需要綁定端口,等待客戶端的數據的到來。后續便可以進行數據的收發(recvfrom/sendto)工作。
參考: http://blog.csdn.net/ce123_zhouwei/article/details/8976006
http://blog.csdn.net/kerry0071/article/details/39348163