協(xié)議:相互通信程序間達成的一種約定脂信,它規(guī)定了分組報文的結構移层、交換方式、包含的意義憔鬼、以及怎樣對報文進行解析龟劲。
tpc/ip協(xié)議族:
- ip:負責將數(shù)據(jù)從一臺主機傳送到另一臺主機。
- tcp:基于可靠連接的端對端傳輸協(xié)議轴或,建立和斷開需要3次握手昌跌、4次揮手,流套接字照雁,發(fā)送接收數(shù)據(jù)均無法保證一次傳輸完畢蚕愤,也無數(shù)據(jù)的長度和界定符(可以自己在傳輸?shù)臄?shù)據(jù)中添加界定符或者表明數(shù)據(jù)長度)答恶。
為了維持長連接的通信,需要發(fā)送心跳包萍诱。 - udp:不可靠連接的端對端傳輸協(xié)議悬嗓,無需建立和斷開操作,一次發(fā)送最大數(shù)據(jù)為65507字節(jié)裕坊,但是無丟包從發(fā)機制包竹,雖然在傳輸速度上比tcp快,但是丟包也較嚴重籍凝,如果在udp上再建立數(shù)據(jù)校驗機制周瞎,結果可能還沒有tcp連接速度快。
- tcp的一對多情況:當server端連接維護了較多client時饵蒂,線程間切換任務調(diào)度声诸,都會耗費較多系統(tǒng)資源。
- Java io\nio:普通io操作會阻塞線程退盯,而nio通過輪尋selector是否有更新彼乌,來避免阻塞。