在浏览器中输入www.qq.com后执行的全部过程
- step1 浏览器向DNS服务器发出解析域名的请求;
- step2 DNS服务器将域名解析为对应的IP地址,并返回给客户端;
- step3 浏览器与服务器建立TCP连接(默认端口为80);
- step4 浏览器发出HTTP请求报文;
- step5 服务器回复HTTP响应报文;
- step6 浏览器解析响应报文,并显示在Web页上;
- step7 收发报文结束,释放TCP连接。
具体过程解析:
1.HTTP请求报文在传输层被封装为TCP报文段:把HTTP会话请求分成报文段,添加源和目的端口;
2.TCP报文段在网络层被封装为IP数据包,然后使用IP层的IP地址查找目的主机;
客户端通过这个IP地址找到客户端到服务器的路径
3.服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口(比如5000)与服务器进行交换数据。服务器把相应的请求返回给客户端的5000端口
4.客户端的网络层不用关心应用层或者传输层的东西,其主要工作是:通过查找路由表,来确定通过哪个路径到达目的主机。
5.客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
注意:
HTTP/1.0是短连接
HTTP/1.1是长连接,不会立马释放的,应该会等Connection:keepAlive时间过了才会释放掉TCP连接。
过程中涉及到的协议
1.应用层:HTTP(WWW访问协议),DNS(域名解析服务)
2.传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)
3.网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将目的主机的IP地址映射成MAC地址)