TCP和UDP的區(qū)別與聯(lián)系:
1.TCP為傳輸控制層協(xié)議,為面向連接吱七、可靠地汽久、點到點的通信。
2.UDP為用戶數(shù)據(jù)報協(xié)議踊餐,非連接的不可靠的點到多點的通信景醇。
3.TCP側(cè)重可靠傳輸,UDP側(cè)重快速傳輸吝岭。
TCP連接的三次握手:
1.第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器三痰,并進入SYN_SEND狀態(tài),等待服務(wù)器確認窜管。
2.第二次握手:服務(wù)器收到syn包散劫,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包幕帆,即SYN+ACK包获搏,此時服務(wù)器進入SYN+RECV狀態(tài)。
3.第三次握手:客戶端收到服務(wù)器的SYN+ACK包蜓肆,向服務(wù)器發(fā)送確認包ACK(ack=k+1)颜凯,此發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED狀態(tài)仗扬,完成三次狀態(tài)症概。
Socket連接和HTTP連接的區(qū)別:
1.HTTP協(xié)議是基于TCP連接的,是應用層協(xié)議早芭,主要解決如何包裝數(shù)據(jù)彼城,Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議退个,而是一個調(diào)用接口(API)募壕,通過socket,我們才能使用TCP/IP協(xié)議语盈。
2.HTTP連接:短連接舱馅,客戶端向服務(wù)器發(fā)送一次請求,服務(wù)器響應后連接斷開刀荒,節(jié)省資源代嗤,服務(wù)器不能主動給客戶端響應(除非采用HTTP長連接技術(shù)),iPhone主要使用類NSURLConnection缠借。
3.Socket連接:長連接干毅,客戶端跟服務(wù)器端直接使用Socket進行連接,沒有規(guī)定連接后斷開泼返,因此客戶端和服務(wù)器端保持連接通道硝逢,雙方可以主動發(fā)送數(shù)據(jù),一般多用于游戲Socket默認連接超時時間是30秒绅喉,默認大小是8K(理解為一個數(shù)據(jù)包大星搿)。
UDP:(用戶數(shù)據(jù)報協(xié)議) - 例如:短信霹疫、直播拱绑、網(wǎng)游
1.只管發(fā)送,不確認對方是否接收到丽蝎。
2.將數(shù)據(jù)及源和目的封裝成數(shù)據(jù)包中猎拨,不需要建立連接。
3.每個數(shù)據(jù)報的大小限制在64K之內(nèi)屠阻。
4.因為無需連接红省,因此是不可靠協(xié)議。
5.不需要建立連接国觉,速度快吧恃。
例如:直播,英雄聯(lián)盟游戲(出現(xiàn)丟包現(xiàn)象)麻诀。
TCP:(傳輸控制協(xié)議) - 例如:電話
1.建立連接痕寓,形成傳輸數(shù)據(jù)的通道傲醉。
2.在連接中進行大數(shù)據(jù)傳輸(數(shù)據(jù)大小不受限制)。
3.通過三次握手完成連接呻率,是可靠協(xié)議硬毕,安全送達。
4.必須建立連接礼仗,效率會稍低吐咳。
Socket(套接字層)
1.Socket就是為網(wǎng)絡(luò)服務(wù)提供的一種機制。
? ? 1)在Unix中元践,網(wǎng)絡(luò)既是Socket韭脊,并不局限在TCP/UDP。
? ? 2)Socket可以用于自定義協(xié)議单旁。
2.通信的兩端都是Socket沪羔。
3.網(wǎng)絡(luò)通信其實就是Socket間的通信。
4.數(shù)據(jù)在兩個Socket間通過IO傳輸象浑。
5.Socket開始是純C語言的任内,是跨平臺的。
通過IP加端口號進行具體app的通信融柬。