1.TCP協(xié)議中三次握手,四次揮手?
三次握手:(1)客戶(hù)端發(fā)送請(qǐng)求連接報(bào)文(SYN);
??????????????? (2)服務(wù)端接受連接后回復(fù)ACK報(bào)文,并為連接分配資源;
??????????????? (3)客戶(hù)端接受ACK報(bào)文后也向服務(wù)端發(fā)送ACK報(bào)文,并分配資源;
一般是客戶(hù)端先向服務(wù)器發(fā)送請(qǐng)求:
??????????????? 第一次握手發(fā)送一個(gè)序列號(hào);
??????????????? 第二次握手的序列號(hào)是單獨(dú)發(fā)送的,第二次握手的確認(rèn)號(hào)是第一次握手序列號(hào)+1;
??????????????? 第三次握手的序列號(hào)是第二次握手的確認(rèn)號(hào),第三次握手的確認(rèn)號(hào)是是第二次握手的序列號(hào)+1;
四次揮手:
???? 客戶(hù)端: (1)客戶(hù)端給服務(wù)端發(fā)送一個(gè)FIN;(我要關(guān)了)
????????????????? (2)服務(wù)端接收到FIN返回ACK報(bào)文;(等等,我還沒(méi)準(zhǔn)備好)
????????????????? (3)服務(wù)端發(fā)送給客戶(hù)端一個(gè)FIN(我準(zhǔn)備好了);
????????????????? (4)客戶(hù)端接受FIN,并發(fā)送ACK報(bào)文(我斷了);
總體梳理:從連接到斷開(kāi)的過(guò)程:
(1)客戶(hù)端:發(fā)送SYN到服務(wù)端(2)服務(wù)端:接收SYN,返回ACK到客戶(hù)端,為連接分配資源(3)客戶(hù)端:接收ACK,也發(fā)送一個(gè)ACK給服務(wù)端,并分配資源;(4)客戶(hù)端:發(fā)送一個(gè)FIN給服務(wù)端并計(jì)入等待狀態(tài)1(5)服務(wù)端:接收FIN,發(fā)送一個(gè)ACK給客戶(hù)端,進(jìn)入等待狀態(tài)2;(6)服務(wù)端:發(fā)送FIN給客戶(hù)端;(7)客戶(hù)端:接收FIN,給客戶(hù)端發(fā)送一個(gè)ACK到服務(wù)端,服務(wù)端不發(fā)送任何消息,等待30S后客戶(hù)端關(guān)閉;
TCP關(guān)閉的過(guò)程中:處于TIME_WAIT狀態(tài)的連接等待2MSL后真正關(guān)閉連接;
2.輸入一個(gè)網(wǎng)址后發(fā)生什么?
(1).在瀏覽器上輸入一個(gè)網(wǎng)址;
(2).瀏覽器查找域名的IP地址;DNS查找過(guò)程如下:
????? ~查看瀏覽器緩存,未果轉(zhuǎn)下一步
????? ~查看系統(tǒng)緩存(windows里是gethostbyname,由此獲得系統(tǒng)緩存的記錄)
????? ~路由器緩存:前面的查詢(xún)請(qǐng)求發(fā)送到路由器,一般會(huì)有路由器DNS緩存
????? ~ISP DNS緩存:check ISP緩存DNS的服務(wù)器
?? ??? ~遞歸搜索:ISP 的DNS服務(wù)器從跟域名服務(wù)器開(kāi)始進(jìn)行遞歸搜索;
(3)瀏覽器給web服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求,通過(guò)GET方式
GET? http://facebook.com/HTTP/1.1
??????????? Accept: appliation/x-ms-application,image/jpeg,application/xaml+xml,[...]
??????????? User-Agent: Mozilla/4.0(compatible;MSIE 8.0;Windows NT 6.1;WOW64;[...]);
??????????? Accept-Encoding: gzip,deflate
??????????? Connection: Keep-Alive???? //要求服務(wù)器為了后面的請(qǐng)求不要關(guān)閉TCP連接
??????????? Host: fackbook.com
??????????? Cookie: datr=1265834934-[.....]
(4).web服務(wù)器的永久重定向響應(yīng)301,web服務(wù)器發(fā)送給瀏覽器一個(gè)響應(yīng);
? ? ? ? ? ?? HTTP/1.1 301 Moved Permanently
??????? ? ?? Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
???????????? pre-check=0
???????????? Expires: Sat, 01 Jan 2000 00:00:00 GMT
???????????? Location: http://www.facebook.com/
???????????? P3P: CP="DSP LAW"
????????????? Pragma: no-cache
?????????????? Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
?????????????? path=/; domain=.facebook.com; httponly
?????????????? Content-Type: text/html; charset=utf-8
?????????????? X-Cnection: close
?????????????? Date: Fri, 12 Feb 2010 05:09:51 GMT
?????????????? Content-Length: 0
???????????? 重定向和服務(wù)器的搜索引擎排名有關(guān)
(5)瀏覽器跟蹤重定向地址,瀏覽器知道要訪問(wèn)的正確地址后會(huì)發(fā)送另一個(gè)獲取請(qǐng)求:
? ? ? ? ? GET http://www.facebook.com/ HTTP/1.1
???????? Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
???????? Accept-Language: en-US
???????? User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
???????? Accept-Encoding: gzip, deflate
???????? Connection: Keep-Alive
???????? Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
???????? Host: www.facebook.com
??????? 頭信息以之前請(qǐng)求中的意義相同。
(6).服務(wù)器'處理'請(qǐng)求
????????? 服務(wù)器接收到獲取請(qǐng)求,然后處理并返回一個(gè)響應(yīng)
(7).服務(wù)器發(fā)回一個(gè)HTML響應(yīng) 200
??????? 服務(wù)器生成并返回一個(gè)響應(yīng)
???????? HTTP/1.1 200 OK
???????? Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
???????? pre-check=0
???????? Expires: Sat, 01 Jan 2000 00:00:00 GMT
???????? P3P: CP="DSP LAW"
???????? Pragma: no-cache
???????? Content-Encoding: gzip
???????? Content-Type: text/html; charset=utf-8
???????? X-Cnection: close
????????? Transfer-Encoding: chunked
????????? Date: Fri, 12 Feb 2010 09:05:55 GMT
????????? 2b3Tn@[...]
(8). 瀏覽器開(kāi)始顯示HTML
(9). 瀏覽器發(fā)送獲取嵌入在HTML中的對(duì)象
(10). 瀏覽器發(fā)送異步(AJAX)請(qǐng)求
3.瀏覽器的內(nèi)核差異
trident(IE內(nèi)核),兼容瀏覽模式
webkit(safari內(nèi)核,chrome內(nèi)核圓形);
gecko(ff)
presto(opera內(nèi)核)