1.TCP协议中三次握手,四次挥手?
三次握手:(1)客户端发送请求连接报文(SYN);
(2)服务端接受连接后回复ACK报文,并为连接分配资源;
(3)客户端接受ACK报文后也向服务端发送ACK报文,并分配资源;
一般是客户端先向服务器发送请求:
第一次握手发送一个序列号;
第二次握手的序列号是单独发送的,第二次握手的确认号是第一次握手序列号+1;
第三次握手的序列号是第二次握手的确认号,第三次握手的确认号是是第二次握手的序列号+1;
四次挥手:
客户端: (1)客户端给服务端发送一个FIN;(我要关了)
(2)服务端接收到FIN返回ACK报文;(等等,我还没准备好)
(3)服务端发送给客户端一个FIN(我准备好了);
(4)客户端接受FIN,并发送ACK报文(我断了);
总体梳理:从连接到断开的过程:
(1)客户端:发送SYN到服务端(2)服务端:接收SYN,返回ACK到客户端,为连接分配资源(3)客户端:接收ACK,也发送一个ACK给服务端,并分配资源;(4)客户端:发送一个FIN给服务端并计入等待状态1(5)服务端:接收FIN,发送一个ACK给客户端,进入等待状态2;(6)服务端:发送FIN给客户端;(7)客户端:接收FIN,给客户端发送一个ACK到服务端,服务端不发送任何消息,等待30S后客户端关闭;
TCP关闭的过程中:处于TIME_WAIT状态的连接等待2MSL后真正关闭连接;
2.输入一个网址后发生什么?
(1).在浏览器上输入一个网址;
(2).浏览器查找域名的IP地址;DNS查找过程如下:
~查看浏览器缓存,未果转下一步
~查看系统缓存(windows里是gethostbyname,由此获得系统缓存的记录)
~路由器缓存:前面的查询请求发送到路由器,一般会有路由器DNS缓存
~ISP DNS缓存:check ISP缓存DNS的服务器
~递归搜索:ISP 的DNS服务器从跟域名服务器开始进行递归搜索;
(3)浏览器给web服务器发送一个HTTP请求,通过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 //要求服务器为了后面的请求不要关闭TCP连接
Host: fackbook.com
Cookie: datr=1265834934-[.....]
(4).web服务器的永久重定向响应301,web服务器发送给浏览器一个响应;
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
重定向和服务器的搜索引擎排名有关
(5)浏览器跟踪重定向地址,浏览器知道要访问的正确地址后会发送另一个获取请求:
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
头信息以之前请求中的意义相同。
(6).服务器'处理'请求
服务器接收到获取请求,然后处理并返回一个响应
(7).服务器发回一个HTML响应 200
服务器生成并返回一个响应
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). 浏览器开始显示HTML
(9). 浏览器发送获取嵌入在HTML中的对象
(10). 浏览器发送异步(AJAX)请求
3.浏览器的内核差异
trident(IE内核),兼容浏览模式
webkit(safari内核,chrome内核圆形);
gecko(ff)
presto(opera内核)