一. 網絡協議
ARP(Address Resolution Protocol):地址解析協議,將IP解析成MAC地址
DNS:域名解析協議
SNMP(Simple Network Management Protocol)網絡管理協議
DHCP(Dynamic Host Configuration Protocol)動態主機配置協議,它是在TCP/IP網絡上使客戶機獲得配置信息的協議
FTP(File Transfer Protocol)文件傳輸協議,它是一個標準協議,是在計算機和網絡之間交換文件的最簡單的方法。
HTTP(Hypertext Transfer Protocol ):超文本傳輸協議
HTTPS(Secure Hypertext Transfer Protocol):安全超文本傳輸協議,它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作.
ICMP(Internet Control Message Protocol):Internet控制信息協議
SMTP(Simple Mail Transfer Protocol):簡單郵件傳送協議
TELNET Protocol:虛擬終端協議
TFTP(Trivial File Transfer Protocol):小文件傳輸協議
UDP(User Datagram Protocol):用戶數據報協議,它是定義用來在互連網絡環境中提供包交換的計算機通信的協議
TCP(TransmissionControl Protocol): 傳輸控制協議,是一種面向連接的、可靠的、基於字節流的傳輸層通信協議
二. TCP的三次握手
1. TCP被稱爲最可靠的數據傳輸協議,主要是通過許多機制來實現的,其中最重要的就是三次握手的功能了
如圖所示:
四個階段,從上而下
1. 數據包發起。
當客戶端想要對服務器端連接時,就必須要送出一個要求連接的數據包,此時客戶端必須隨機用一個大於1024的端口來作爲程序溝通的接口,然後在TCP的報頭中,就必須要帶有SYN的主動連接SYN=1(SYN—synchronous:若爲1,表示發送端希望雙方建立同步處理,也就是要求建立連接),並且記下發送出連接數據包給服務器的序列號(Sequence number=10001)
2. 數據包接收與確認數據包傳送
當服務器接到這個數據包,並且確定要接收這個數據包後,就會開始製作一個同時帶有SYN=1,ACK=1(ACK,acknowledge:若爲1代表這個數據包爲響應數據包,關聯acknowledge number),其中那個Acknowledg的號碼是要客戶端確認的,這個數據是seq+1即10002,那我們的服務器也必須要確認客戶端確實可以接收我們的數據包才行,所以也會發出一個sequence (seq=20001)給客戶端,並且開始等待客戶端給我們服務器端響應
3. 回送確認數據包
當客戶端收到來自服務器端的ACK數字後(10002)就能確認之前那個要求數據包被正確接收了,接下來如果客戶端也同意與服務器端建立連接時,就會再次發送一個確認數據包ACK=1即acknowledge=20001+1=20002
4. 取得最後確認
在服務器端收到帶有ACK=1且ack=20002序列號的數據包後,就能建立連接了
三. 無連接的UDP協議
UDP—user datagram protocol,即用戶數據報協議,UDP是一個非連接的協議,傳輸數據之前源端和終端不建立連接.
UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包的額外開銷很小。
吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的鏈接狀態表;
例如:
我們經常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送UDP數據包,然後對方主機確認收到數據包,如果數據包是否到達的消息能夠及時反饋回來,那麼網絡就是通的。
總結:
UDP傳輸的速度很快,但是不會保障是否被成功接收
四. 關於TCP和UDP的區別
1. 基於連接與無連接
2. 對系統資源要求,TCP>UDP
3. UDP程序結構較簡單
4. RCP保證數據的正確性,UDP可能存在丟包,TCP能保證數據的順序,UDP不保證