第二章、常見的協議和標準
1. DNS協議
DNS協議的作用就是將域名解析為IP。
2.TCP/IP協議和Socket
TCP在傳輸前會有三次握手,傳完數據端口需要四次揮手。理解過程需要先理解TCP中的兩個序號和三個標誌位的含義。
seq :sequence number,表示所傳輸數據的序號。TCP傳輸時每一個字節都有一個序號。發送數據時會將數據的第一個序號發送給對方,接收方會按序號檢查是否接受完整。
ack:ackonledgement number,確認號。接收端用它來給發送端反饋已經成功接受到數據信息,它的值為希望接受的下一個數據包起始序號,也就時ack值所代表的序號前面的數據已經成功接受了。
ACK:確認位。只有ACK=1的時候ack才起作用。正常通信時ACK=1,第一次發起請求時因為沒有需要確認接受的數據所以ACK為0;
SYN:同步位,用於在建立連接時同步序號。剛開始建立連接時並沒有歷史接受的數據,所以ack也就沒有辦法設置,這時按照正常的機制就無法運行了,SYN的作用就時解決這個問題的,當接受端接受到SYN=1的報文時就會直接將ack設置為接受到的seq+1的值。SYN會在兩次握手時都為1,因為通信雙方的ack都需要設置一個初始值。
FIN:終止位,用來在傳輸數據完畢後釋放連接。
TCP/IP協議只是一套規則,並不能具體工作,就像是程序中的接口一樣,而Socket是TCP/IP協議的一個具體的實現。
3.HTTP協議
HTTP協議是應用層的協議,在TCP/IP協議接受到數據之後需要通過HTTP協議來解析才可以使用。電報中的編碼和解碼就相當於網絡傳輸中的HTTP協議。
HTTP報文:請求報文,響應報文。都包含三部分:首行、頭部、主體。
4.Servlet與java web開發
Servlet 是java web開發的標準。通過TCP/IP協議、HTTP協議已經可以得到數據了,servlet的作用就是對接受到的數據進行處理並生成要返回給客戶端的結果。標準和協議一樣不能真正幹活,要想使用servlet需要有常見的servlet容器才行,例如Tomcat。
第二章、常見的協議和標準