首先,我自己梳理一下,其實除了應對以后的筆試,還有需要應對的是自己在編程中對於api的選擇,我在滿足需求時采取哪種方案更好。
首先,我需要了解的是tcp/ip是一個協議組,有三大層:
ip 對應於網絡層
tcp 和 udp 對應於傳輸層
http 對應於應用層
socket 屬於api ,是對tcp/ip的封裝。
其中,應用層存在的意義是使tcp/ip傳輸過來的數據內容能夠識別出來。
通過socket 我們才能使用tcp/ip協議
CSDN上有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。
(從百度摘錄)
問題1:tcp 有哪三次握手?然后結束時需要握手不?
第一次:客戶端向服務的發送SYN包,等待服務端確認;
第二次:服務端收到客戶端的SYN包,確認客戶端的syn(ack=j+1),向客戶端發送確認包ACK(ack=k),即syn+ack包,發送完畢后,服務端進入SYN_RECV狀態
第三次:客戶端收到服務端的syn+ack包,向服務端發送確認包ack(ack=k+1),發送完畢后,雙方進入establish狀態,完成三次握手。
問題2:利用socket建立的網絡連接步驟
socket 鏈接至少需要一套套接字,其中客戶端的是client socket ,服務端的是server socket 。
套接字之間連接過程,三個步驟:服務器監聽,客戶端請求,連接確認。
1.服務器監聽:服務端套接字處於等待連接狀態,實時監控網絡,等待客戶端發送請求。
2.客戶端請求:客戶端套接字提出請求,要連接服務端的套接字。客戶端套接字需要指出服務端套接字的ip和端口,向服務端發出請求。
3.連接確認:當服務端套接字接收到客戶端套接字,響應客戶端套接字的要求,建立一個線程,把服務端套接字的描述發送給客戶端。一旦客戶端確認此描述,雙方建立連接。
問題3:http鏈接的特點
http 是超文本傳輸協議,最顯著特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束后,主動釋放連接。
問題4:tcp和udp的區別?
tcp是面向鏈接,三次握手是為了保持連接性。
udp是非面相鏈接,就是發送時不需要和對方建立連接,也不需要理會對方是否接收。
udp發送的數據內容,用戶是可以進行驗證的。