TCP:Transmission Control Protocol-傳輸控制協議
IP:Internet Protocol-網絡協議
TCP/IP 不是一個協議,而是一個協議族的統稱,里面包括了 IP 協議、IMCP 協議、TCP 協議、以及 http、ftp、pop3 協議等。網絡中的計算機都采用這套協議族進行互聯。
網絡協議棧架構提到網絡協議棧結構,最著名的當屬 OSI 七層模型,但是 TCP/IP 協議族的結構則稍有不同,它們之間的層次結構有如圖對應關系:
TCP/IP 被分為 4 層,每層承擔的任務不一樣,各層的協議的工作方式也不一樣,每層封裝上層數據的方式也不一樣:
(1)應用層:應用程序通過這一層訪問網絡,常見 FTP、HTTP、DNS 和 TELNET 協議;
(2)傳輸層:TCP 協議和 UDP 協議;
(3)網絡層:IP 協議,ARP、RARP 協議,ICMP 協議等;
(4)網絡接口層:是 TCP/IP 協議的基層,負責數據幀的發送和接收。
1、IP 地址
網絡上每一個節點都必須有一個獨立的 IP 地址,通常使用的 IP 地址是一個 32bit 的數字,被 . 分成 4 組,例如,255.255.255.255 就是一個 IP 地址。有了 IP 地址,用戶的計算機就可以發現並連接互聯網中的另外一台計算機。
2、域名
用 12 位數字組成的 IP 地址很難記憶,在實際應用時,用戶一般不需要記住 IP 地址,互聯網給每個 IP 地址起了一個別名,習慣上稱作域名。
域名與計算機的 IP 地址相對應,並把這種對應關系存儲在域名服務系統 DNS(Domain Name Service)中,這樣用戶只需記住域名就可以與指定的計算機進行通信了。
常見的域名包括 com、net 和 org 三種頂級域名后綴,除此之外每個國家還有自己國家專屬的域名后綴(比如我國的域名后綴為 cn)。目前經常使用的域名諸如百度(www.baidu.com)、Linux 組織(www.lwn.net)等等。
3、MAC 地址
MAC(Media Access Control)地址,或稱為物理地址、硬件地址,用來定義互聯網中設備的位置。
在 TCP/IP 層次模型中,網絡層管理 IP 地址,鏈路層則負責 MAC 地址。因此每個網絡位置會有一個專屬於它的 IP 地址,而每個主機會有一個專屬於它 MAC 地址。
4、端口號
IP 地址是用來發現和查找網絡中的地址的,但是不同程序如何互相通信呢,這就需要端口號來識別了。如果把 IP 地址比作一間房子 ,端口就是出入這間房子的門。真正的房子只有幾個門,但是端口采用 16 比特的端口號標識,一個 IP 地址的端口可以有 65536(即:216)個之多!
服務器的默認程序一般都是通過人們所熟知的端口號來識別的。例如,對於每個 TCP/IP 實現來說,SMTP(簡單郵件傳輸協議)服務器的 TCP 端口號都是 25,FTP(文件傳輸協議)服務器的 TCP 端口號都是 21,TFTP(簡單文件傳輸協議)服務器的 UDP 端口號都是 69。任何 TCP/IP 實現所提供的服務都用眾所周知的 1-1023 之間的端口號。這些人們所熟知的端口號由 Internet 端口號分配機構(Internet Assigned Numbers Authority, IANA)來管理。
5、封裝和分用
封裝:當應用程序發送數據的時候,數據在協議層次當中從頂向下通過每一層,每一層都會對數據增加一些首部或尾部信息,如下圖所示,傳輸層傳給網絡層的數據單元稱作 TCP 報文段(TCP segment) 或 UDP數據報(UDP datagram) 。網絡層傳給鏈路層的數據單元稱作 IP 數據報(IP datagram)。鏈路層上的傳輸單元稱作幀(Frame)。
分用:當主機收到一個數據幀時,數據就從協議層底向上升,通過每一層時,檢查並去掉對應層次的報文首部或尾部,與封裝過程正好相反。
6、RFC
RFC(Request for Comment)文檔是所有以太網協議的正式標准,並在其官網上面公布,由 IETF 標准協會制定。大量的 RFC 並不是正式的標准,出版的目的只是為了提供信息。RFC 的篇幅不一,從幾頁到幾百頁不等。每一種協議都用一個數字來標識,如 RFC 3720 是 iSCSI 協議的標准,數字越大說是 RFC 的內容越新或者是對應的協議(標准)出現的比較晚。所有的 RFC 文檔都可以從網絡上找到,其官網為IETF。在網站上面可以通過分類以及搜索快速找到目標協議的 RFC 文檔。
參考:https://cnbin.github.io/blog/2015/07/03/tcp-slash-ip-xie-yi/