TCP和UDP的區(qū)別于聯(lián)系
TCP為傳輸控制層協(xié)議,為面向連接励翼、可靠的蜈敢、點(diǎn)到點(diǎn)的通信;
UDP為用戶(hù)數(shù)據(jù)報(bào)協(xié)議汽抚,非連接的不可靠的點(diǎn)到多點(diǎn)的通信抓狭;
TCP側(cè)重可靠傳輸,UDP側(cè)重快速傳輸造烁。
TCP連接的三次握手
第一次握手:客戶(hù)端發(fā)送syn包(syn=j)到服務(wù)器否过,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)惭蟋;
第二次握手:服務(wù)器收到syn包苗桂,必須確認(rèn)客戶(hù)的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包告组,即SYN+ACK包煤伟,此時(shí)服務(wù)器進(jìn)入SYN+RECV狀態(tài);
第三次握手:客戶(hù)端收到服務(wù)器的SYN+ACK包惹谐,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)持偏,此發(fā)送完畢驼卖,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)氨肌,完成三次狀態(tài)。
Scoket連接和HTTP連接的區(qū)別:
HTTP協(xié)議是基于TCP連接的酌畜,是應(yīng)用層協(xié)議怎囚,主要解決如何包裝數(shù)據(jù)。Socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議恳守,而是一個(gè)調(diào)用接口(API)考婴,通過(guò)Socket,我們才能使用TCP/IP協(xié)議催烘。
HTTP連接:短連接沥阱,客戶(hù)端向服務(wù)器發(fā)送一次請(qǐng)求,服務(wù)器響應(yīng)后連接斷開(kāi)伊群,節(jié)省資源考杉。服務(wù)器不能主動(dòng)給客戶(hù)端響應(yīng)(除非采用HTTP長(zhǎng)連接技術(shù)),iPhone主要使用類(lèi)NSURLConnection舰始。
Socket連接:長(zhǎng)連接崇棠,客戶(hù)端跟服務(wù)器端直接使用Socket進(jìn)行連接,沒(méi)有規(guī)定連接后斷開(kāi)丸卷,因此客戶(hù)端和服務(wù)器段保持連接通道枕稀,雙方可以主動(dòng)發(fā)送數(shù)據(jù),一般多用于游戲.Socket默認(rèn)連接超時(shí)時(shí)間是30秒谜嫉,默認(rèn)大小是8K(理解為一個(gè)數(shù)據(jù)包大形馈)。
HTTP協(xié)議的特點(diǎn)骄恶,關(guān)于HTTP請(qǐng)求GET和POST的區(qū)別
GET和POST的區(qū)別:
HTTP超文本傳輸協(xié)議食铐,是短連接,是客戶(hù)端主動(dòng)發(fā)送請(qǐng)求僧鲁,服務(wù)器做出響應(yīng)虐呻,服務(wù)器響應(yīng)之后,鏈接斷開(kāi)寞秃。HTTP是一個(gè)屬于應(yīng)用層面向?qū)ο蟮膮f(xié)議斟叼,HTTP有兩類(lèi)報(bào)文:請(qǐng)求報(bào)文和響應(yīng)報(bào)文。
HTTP請(qǐng)求報(bào)文:一個(gè)HTTP請(qǐng)求報(bào)文由請(qǐng)求行春寿、請(qǐng)求頭部朗涩、空行和請(qǐng)求數(shù)據(jù)4部分組成。
HTTP響應(yīng)報(bào)文:由三部分組成:狀態(tài)行绑改、消息報(bào)頭谢床、響應(yīng)正文。
GET請(qǐng)求:參數(shù)在地址后拼接厘线,沒(méi)有請(qǐng)求數(shù)據(jù)识腿,不安全(因?yàn)樗袇?shù)都拼接在地址后面),不適合傳輸大量數(shù)據(jù)(長(zhǎng)度有限制造壮,為1024個(gè)字節(jié))渡讼。
GET提交、請(qǐng)求的數(shù)據(jù)會(huì)附在URL之后擎勘,即把數(shù)據(jù)放置在HTTP協(xié)議頭中顶考。
以?分割URL和傳輸數(shù)據(jù)独悴,多個(gè)參數(shù)用&連接蹬昌。如果數(shù)據(jù)是英文字母或數(shù)字混驰,原樣發(fā)送,
如果是空格皂贩,轉(zhuǎn)換為+账胧,如果是中文/其他字符,則直接把字符串用BASE64加密先紫。
POST請(qǐng)求:參數(shù)在請(qǐng)求數(shù)據(jù)區(qū)放著治泥,相對(duì)GET請(qǐng)求更安全,并且數(shù)據(jù)大小沒(méi)有限制遮精。把提交的數(shù)據(jù)放置在HTTP包的包體中.
GET提交的數(shù)據(jù)會(huì)在地址欄顯示出來(lái)居夹,而POST提交,地址欄不會(huì)改變本冲。
傳輸數(shù)據(jù)的大凶贾:
GET提交時(shí),傳輸數(shù)據(jù)就會(huì)受到URL長(zhǎng)度限制檬洞,POST由于不是通過(guò)URL傳值狸膏,理論上書(shū)不受限。
安全性:
POST的安全性要比GET的安全性高添怔;
通過(guò)GET提交數(shù)據(jù)湾戳,用戶(hù)名和密碼將明文出現(xiàn)在URL上,比如登陸界面有可能被瀏覽器緩存广料。
HTTPS:安全超文本傳輸協(xié)議(Secure Hypertext Transfer Protocol)砾脑,它是一個(gè)安全通信通道,基于HTTP開(kāi)發(fā)艾杏,用于客戶(hù)計(jì)算機(jī)和服務(wù)器之間交換信息韧衣,使用安全套結(jié)字層(SSI)進(jìn)行信息交換,即HTTP的安全版购桑。