一、什麼是C/S架構?算法
答:C指的是client(客戶端軟件),S指的是Server(服務端軟件)設計模式
二、互聯網協議是什麼?分別介紹五層協議中每一層的功能?服務器
答:互聯網的核心就是由一堆協議組成。若是把計算機比做人,互聯網協議就是計算機界的英語。全部的計算機都學會了互聯網協議,那全部的計算機都就能夠按照統一的標準去收發信息從而完成通訊了。網絡
三、基於tcp協議通訊,爲什麼創建連接須要三次握手,而斷開連接卻須要四次揮手數據結構
答:由於當Server端收到Client端的SYN鏈接請求報文後,能夠直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。可是關閉鏈接時,當Server端收到FIN報文時,極可能並不會當即關閉SOCKET,因此只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端全部的報文都發送完了,我才能發送FIN報文,所以不能一塊兒發送。故須要四步握手。架構
四、爲什麼基於tcp協議的通訊比基於udp協議的通訊更可靠?socket
答:TCP可靠的緣故:只要不獲得確認,就從新發送數據報,直到獲得對方的確認爲止。UDP協議是盡最大努力交付,沒法保證數據準確交付到目標主機,也不須要對接收到的UDP報文進行確認。tcp
五、流式協議指的是什麼協議,數據報協議指的是什麼協議?優化
答:流式協議指的是TCP協議,數據報協議指得是UDP協議。spa
六、什麼是socket?簡述基於tcp協議的套接字通訊流程
答:Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。
服務端先初始化Socket,而後與端口綁定(bind),對端口進行監聽(listen),調用accept阻塞,等待客戶端鏈接。這時客戶端初始化一個socket,而後鏈接服務器(connect),若是鏈接成功,這時客戶端與服務端的鏈接就創建了。客戶端發送數據請求,服務端接收請求並處理請求,而後把迴應數據發給客戶端,客戶端讀取數據,最後關閉數據,一次交互結束。
七、什麼是粘包? socket 中形成粘包的緣由是什麼? 哪些狀況會發生粘包現象?
答:TCP粘包是指發送方發送的若干包數據到接收方接收時粘成一包,從接收緩衝區看,後一包數據的頭緊接着前一包數據的尾。
所謂粘包問題緣由:(1)主要仍是由於接收方不知道消息之間的界限,不知道一次性提取多少字節的數據所形成的。(2)發送方引發的粘包是由TCP協議自己形成的,TCP爲提升傳輸效率,發送方每每要收集到足夠多的數據後才發送一個TCP段。若連續幾回須要send的數據都不多,一般TCP會根據優化算法把這些數據合成一個TCP段後一次發送出去,這樣接收方就收到了粘包數據。
發生粘包的狀況:(1)發送端須要等緩衝區滿才發送出去,形成粘包(發送數據時間間隔很短,數據了很小,會合到一塊兒,產生粘包)(2)接收方不及時接收緩衝區的包,形成多個包接收(客戶端發送了一段數據,服務端只收了一小部分,服務端下次再收的時候仍是從緩衝區拿上次遺留的數據,產生粘包)
八、基於socket開發一個聊天程序,實現兩端互相發送和接收消息
九、基於tcp socket,開發簡單的遠程命令執行程序,容許用戶執行命令,並返回結果
十、基於tcp協議編寫簡單FTP程序,實現上傳、下載文件功能,並解決粘包問題
十一、基於udp協議編寫程序,實現功能
(1)執行指定的命令,讓客戶端能夠查看服務端的時間
(2)執行指定的命令,讓客戶端能夠與服務的的時間同步