一、HTTP請求方式
HTTP超文本傳輸協(xié)議:是短連接,是客戶端主動發(fā)送請求笆豁,服務(wù)器作出響應(yīng),響應(yīng)之后服務(wù)器斷開赤赊。HTTP屬于應(yīng)用層面向?qū)ο髤f(xié)議闯狱,HTTP有兩類報(bào)文:請求報(bào)文和相應(yīng)報(bào)文。
請求報(bào)文包含:請求行录豺、請求頭、空行、請求數(shù)據(jù)四部分組成。
響應(yīng)報(bào)文包含:狀態(tài)行、消息報(bào)文统求、響應(yīng)正文三部分組成另假。
通常,HTTP請求方式有三種凌受,分別是:POST智蝠、GET、HEAD于宙。其中POST和GET用于數(shù)據(jù)發(fā)送。
1宵蛀、POST:它將發(fā)送的數(shù)據(jù)單獨(dú)放在一個(gè)流中進(jìn)行發(fā)送,而不是附加到URL地址后面梧宫,這樣做的好處是這些數(shù)據(jù)不會出現(xiàn)在URL地址中接谨。
2、GET:它將發(fā)送的數(shù)據(jù)直接添加到URL后面祟敛,用&鏈接疤坝,這樣的好處是不用另外的數(shù)據(jù)流來發(fā)送這些數(shù)據(jù),但是缺點(diǎn)是將用戶信息暴露出來了馆铁,不安全跑揉。
3、HEAD:它是請求資源的元數(shù)據(jù)方法埠巨。
二历谍、HTTP定義了與服務(wù)器交互的不同的方法,最基本的方法有辣垒?
1望侈、URL全程是資源描述符,我們可以這樣認(rèn)為:一個(gè)URL地址勋桶,它用于一個(gè)網(wǎng)絡(luò)上的資源脱衙,而HTTP中的GET、POST例驹、PUT捐韩、DELETE就對應(yīng)著這個(gè)資源的查、改鹃锈、增荤胁、刪四個(gè)操作。
2屎债、GET一般用于獲取/查詢資源信息仅政,而POST一般用于更新資源信息垢油。
三、socket簡介
1圆丹、socket是基于TCP/IP協(xié)議滩愁,它是一個(gè)可以連通網(wǎng)絡(luò)上不同計(jì)算機(jī)程序之間的管道,把數(shù)據(jù)從管道A端放進(jìn)去辫封,則會從管道B惊楼、C......等端冒出來。管道的端口由機(jī)器的IP和程序所使用的端口號來確認(rèn)秸讹。
2、socket可以支持?jǐn)?shù)據(jù)的發(fā)送和接收雅倒,它會定義一種稱為套接字的變量璃诀,發(fā)送數(shù)據(jù)的時(shí)候首先創(chuàng)建套接字,然后使用該套接字的send to等方法對準(zhǔn)某個(gè)IP/端口蔑匣,進(jìn)行數(shù)據(jù)發(fā)送劣欢;接收端口也首先創(chuàng)建套接字,然后將該套接字綁定到一個(gè)IP/端口上裁良,所有發(fā)向此端口的數(shù)據(jù)會被該套接字的recv等函數(shù)讀出凿将。和讀出文件中的數(shù)據(jù)一樣。
3价脾、TCP/IP的socket提供三種套接字:流式套接字牧抵、數(shù)據(jù)報(bào)式套接字、原始套接字侨把。
4犀变、常用的第三方庫:AsyncScoket。
四秋柄、APP需要加載大量的數(shù)據(jù)获枝,給服務(wù)器發(fā)送請求,但是服務(wù)器卡住了骇笔,請問怎么解決省店?
1、設(shè)置請求超時(shí)笨触。
2懦傍、給用戶提示請求超時(shí)。
3旭旭、根據(jù)用戶操作再次請求數(shù)據(jù)谎脯。
五、HTTP通信的發(fā)送請求持寄、接收相應(yīng)包含哪些內(nèi)容源梭?
一個(gè)請求包含請求行娱俺、請求頭、請求體废麻。
1荠卷、請求行:包含HTTP協(xié)議版本、狀態(tài)碼烛愧、狀態(tài)英文名稱HTTP/1.1 200 ok
2油宜、請求頭:對客戶端的環(huán)境描述、客戶端請求的主機(jī)地址等信息怜姿。
3慎冤、請求體:客戶端發(fā)送給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)沧卢。
一個(gè)響應(yīng)包括:狀態(tài)行蚁堤、響應(yīng)頭、實(shí)體內(nèi)容但狭。
1披诗、狀態(tài)行:包含HTTP協(xié)議版本、狀態(tài)碼立磁、狀態(tài)英文名:HTTP/1.1 200 ok
2呈队、響應(yīng)頭:包含對服務(wù)器的描述、對返回?cái)?shù)據(jù)的描述唱歧。(服務(wù)器類型宪摧、返回?cái)?shù)據(jù)類型、返回?cái)?shù)據(jù)長度迈喉、響應(yīng)時(shí)間)
3绍刮、實(shí)體內(nèi)容:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)挨摸。
六孩革、TCP和UDP的區(qū)別
1、UDP是用戶數(shù)據(jù)報(bào)協(xié)議:主要用在實(shí)時(shí)性相對較高以及對質(zhì)量相對較弱的地方得运,但面對現(xiàn)在高質(zhì)量的線路膝蜈,不容易丟包除非是在一些擁塞的情況下,如流媒體熔掺。
七肺素、什么是三次握手和四次揮手
更好地回答:
1、初始狀態(tài):剛開始客戶端處于close狀態(tài)宇驾,服務(wù)店處于listen狀態(tài)倍靡。
2、然后课舍,第一次握手塌西,客戶端給服務(wù)端發(fā)送一個(gè)SYN報(bào)文,并指明客戶端的初始化序列號ISN(c)筝尾,此時(shí)客戶端進(jìn)入SYN_Send狀態(tài)捡需。
3、第二次握手筹淫,服務(wù)端收到客戶端的SYN報(bào)文之后栖忠,會以自己的SYN報(bào)文作為應(yīng)答,并且指定了自己的初始化序列號ISN(c)贸街,同時(shí)會把客戶端的ISN+1作為ACK的值,表示自己收到了客戶端的SYN狸相,此時(shí)服務(wù)器處于SYN_REVD的狀態(tài)薛匪。
4、第三次握手脓鹃,客戶端收到SYN報(bào)文之后逸尖,會發(fā)送一個(gè)ACK 報(bào)文,當(dāng)然瘸右,也一樣把服務(wù)器的ISN+1作為ACK的值娇跟,標(biāo)識已經(jīng)收到了服務(wù)端的SYN報(bào)文,此時(shí)客戶端處于establised(已建立)狀態(tài)太颤。
5苞俘、服務(wù)器收到客戶端的ACK報(bào)文之后,也處于establised狀態(tài)龄章。
三次握手的作用:
1吃谣、確認(rèn)雙方的接受能力、發(fā)送能力是否正常做裙。
2岗憋、制定自己的初始化序列號,為后面的可靠傳輸做準(zhǔn)備锚贱。
3仔戈、如果是HTTPS協(xié)議的話,三次握手過程中還會有數(shù)字證書的驗(yàn)證和加密密鑰的生成。
初始化序列號ISN是非固定的监徘,防止攻擊者猜出來晋修。
什么是半連接隊(duì)列?
第一次握手之后耐量,服務(wù)端處于SYN_RCVD狀態(tài)飞蚓,此時(shí)雙方還沒有完全建立連接,服務(wù)器會把此種狀態(tài)下的請求連接放到一個(gè)隊(duì)列里廊蜒,我們把這種隊(duì)列稱之為半連接隊(duì)列趴拧。
握手期間是否可以攜帶數(shù)據(jù)?
第一次第二次握手不可以攜帶數(shù)據(jù)山叮,防止有人惡意攻擊著榴。
第三次握手可以攜帶數(shù)據(jù)。因?yàn)橐呀?jīng)建立連接了
1屁倔、三次握手實(shí)現(xiàn)過程
第一次握手:建立連接時(shí)脑又,客戶端發(fā)送同步序列編號到服務(wù)器,并進(jìn)入發(fā)送狀態(tài)锐借,等待服務(wù)器的確認(rèn)问麸。
第二次握手:服務(wù)器收到同步序列編號,確認(rèn)并同時(shí)自己也發(fā)送一個(gè)同步序列編號+確認(rèn)標(biāo)志钞翔,此時(shí)服務(wù)器進(jìn)入等待狀態(tài)严卖。
第三次握手:客戶端收到服務(wù)器發(fā)送的包,并向服務(wù)器發(fā)送確認(rèn)標(biāo)志布轿,隨后連接成功哮笆。
注意:是在鏈接成功之后再進(jìn)行數(shù)據(jù)傳輸。
2汰扭、四次揮手
第一次:客戶端向服務(wù)器發(fā)送一個(gè)帶有結(jié)束標(biāo)記的報(bào)文稠肘。
第二次:服務(wù)器收到報(bào)文之后,向客戶端發(fā)送一個(gè)確認(rèn)序號萝毛,同時(shí)通知自己相應(yīng)的程序项阴,對方要求關(guān)閉鏈接。
第三次:服務(wù)器向客戶端發(fā)送一個(gè)帶有結(jié)束標(biāo)記的報(bào)文笆包。
第四次:客戶端收到報(bào)文后鲁冯,向服務(wù)器發(fā)送一個(gè)確認(rèn)序號。鏈接關(guān)閉色查。
八薯演、JSON和XML的區(qū)別?
1、可讀性:基本相同秧了,XML的可讀性比較好跨扮。
2、可擴(kuò)展性:都有很好的可擴(kuò)展性。
3衡创、編碼難度:JSON編碼比較容易帝嗡。
4、解碼難度:JSON解碼難度基本為零璃氢,XML要考慮子節(jié)點(diǎn)和父節(jié)點(diǎn)哟玷。
5、數(shù)據(jù)體積:JSON體積較小一也,傳輸速度更快巢寡。
6、數(shù)據(jù)交互:JSON和JavaScript交互更加方便椰苟。
7抑月、數(shù)據(jù)描述:XML對數(shù)據(jù)的描述性更好。
九舆蝴、HTTP和socket的區(qū)別谦絮。
1、HTTP短連接洁仗,客戶端主動發(fā)送請求层皱,服務(wù)端才能相應(yīng),一次請求完畢后赠潦,斷開鏈接奶甘,以節(jié)省資源。服務(wù)端不能主動給客戶端相應(yīng)(除非采取HTTP長連接技術(shù))祭椰。
2、socker主要使用“套接字”鏈接疲陕,并沒有規(guī)定連接后斷開方淤,所以客戶端和服務(wù)端可以保持長連接,雙方都可以主動發(fā)送數(shù)據(jù)蹄殃。一般應(yīng)用在股票開發(fā)携茂、游戲等即時(shí)性很強(qiáng)且發(fā)送數(shù)量比較大的場合。
十诅岩、HTTP和HTTPS的區(qū)別
定義:HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer)讳苦,是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版吩谦。
1鸳谜、HTTPS是在HTTP上加入SSL層,HTTPS的安全基礎(chǔ)是SSL式廷。
2咐扭、HTTP是超文本傳輸協(xié)議,信息是明文傳輸,HTTPS則是SSL加密蝗肪。
3袜爪、HTTP連接的端口是80,HTTPS是443薛闪。
4辛馆、HTTP連接時(shí)無狀態(tài)的,HTTPS是由SSL+HTTP協(xié)議構(gòu)成的可進(jìn)行加密傳輸豁延、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議昙篙。
5、https協(xié)議需要到ca申請證書术浪,一般免費(fèi)證書很少瓢对,需要交費(fèi)。