- TCP三次握手
(1.过程;2.几个常见问题)
第一次:客户端给服务器发送syn包x;SYN_SENT
第二次:服务器接收到syn包,返回一个syn包y 和 一个ack包x+1; SYN_RECV
第三次:客户端收到syn+ack包,向服务器发送ack包。ESTABLISHED
为什么三次握手?
防止已失效的连接请求报文段重传。
- TCP四次挥手
四次挥手?
把三次握手的第二次分解,先发ack包,再发fin包。
第一次:主动关闭方发送fin包x,关闭数据传送; FIN_WAIT1
第二次:被动方发送ack包x+1; FIN_WAIT2 CLOSE_WAIT
第三次:被动方发送fin包y,关闭数据传送; LASH_ACK
第四次:主动方发送ack包y+1;TIME_WAIT
为什么四次握手?
被动方收到FIN包时,并不会立即关闭socket,所以先回复一个ack包。等到被动方所有数据发送完,再发fin包。
为什么TIME_WAIT/等待2MSL?
MSL是报文最大生存时间;主动方发出最后一个ACK包进入TIME_WAIT状态,目的是防止最后一个ACK包对方没接收到,那么对方在超时后将重发第三次握手的FIN包。 A->ACK->B,等待ACK到达对方时间MSL,等待FIN超时重传MSL,所以如果2MSL时间没有收到FIN,说明对方安全收到FIN。
- 浏览器访问一个网址的过程?
1.首先浏览器通过DNS解析网址的IP地址,通过IP找到服务器路径;
2.根据IP地址向服务器发送一个HTTP请求;
3.服务器收到请求,返回响应;
4.浏览器对网页解析,渲染显示。
涉及各层协议?
应用层:HTTP、DNS、(DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话)
传输层:TCP、 (HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作)
网际层:IP、(ARP)、ICMP、(为数据包选择路由,IP协议进行主要工作)
链路层:PPP、(ARP)(发送IP数据包到达服务器的地址,ARP协议将IP地址转成MAC地址)