网络协议
一、OSI七层模型
物理层:比特;
数据链路层:帧,PPP(点对点协议)
网络层:数据报,IP(网络互联协议)、ICMP(网络控制报文协议)、IGMP(网络组织管理协议)、ARP(物理地址解析协议)、RARP(反向地址转换协议);
传输层:TCP(传输控制协议)、UDP(用户数据包协议)
应用层协议:HTTP(超文本传输协议)、TCP(文件传输协议)、SMTP(小型邮件传输协议)、POP3(邮局协议版本3)、TELNET(Internet远程登录服务标准协议)、DNS(域名传输协议)
二:当输入一个域名之后浏览器发生的执行的全部过程
1、浏览器根据域名找IP
(DNS域名解析系统,应用层。)首先查看浏览器缓存中是否有域名对应的IP,没有则查看操作系统中是否有,没有则查看操作系统中的hosts中是否有,没有则向本地域名服务器中发送域名,若有,返回IP,若没有,则本地域名服务器向根域名服务器中发送域名,根域名服务器根据域名,向本地域名服务器返回其对应的顶级域名服务器的IP,本地域名服务器向顶级域名服务器发送域名,顶级域名服务器返回对应的限制权限域名服务器的IP,本地域名服务器则向限制权限域名服务器发送域名,限制权限域名服务器返回目标域名的IP。至此,IP已找到。
2、浏览器与服务器建立TCP连接
(TCP协议,传输层)TCP三次握手:第一次浏览器向服务器发送SYN(seq=k)包,此时为连接状态;第二次,服务器向浏览器发送ACK(ack=k+1)包(回应,表示确认收到SYN包),同时发送自己的SYN包(seq=j),所以就是发送了SYN+ACK包,此时为发送状态;第三次,浏览器向服务器发送ACK(ack=j+1)包(回应服务器发的SYN,表示确认收到其SYN包),此时进入连接状态。
3、浏览器向web服务器发送http请求
数据打包:应用层数据,从上往下,在传输层加上TCP/UDP头部,在网络层加上IP头部,在数据链路层加上以太网头部和尾部,以太网头部中包含MAC地址;数据传输到服务器之后,服务器从下往上进行解包。
4、web服务请响应http请求
服务器的响应文件自上而下进行打包而后发给浏览器
5、浏览器对web的响应进行解码
浏览器自下而上进行解包。
6、渲染浏览器
html边解析边显示,然后继续解析外部文件。(css\js)
构建DOM树,CSS解析,构建渲染树(DOM+CSS),渲染树布局,渲染树绘制。
7、保持异步连接
Ajax(异步javascript和xml)。
8、关闭TCP连接
四次挥手:主动关闭方向被动方,发送一个FIN表示我不再向你发送数据,被动关闭方发送ACK(值为序号加一)表示确认收到,被动关闭方向主动关闭放发送一个FIN请求表示我也不再向你发送数据,主动关闭方发送ACK表示确认收到。
为什么不能是两次挥手,因为主动方还可以接收数据,被动方也许有数据没发完。