(求助)访问网站数据包详细流程解析
TOP图很简单,就是一台PC,然后中间是路由器,外面接internet,
在PC上访问internet的网站,比如www.sina.com,我就在浏览器上键入这个域名点确定.
现在请达人帮忙分析期间数据包的详细流程,
过程要非常详细,比如首先是DNS,我输入的是sina.com,数据包如何能找到对应的ip地址,然后是ARP的过程,这个是领导说的,我也不是很清楚是什么意思.接着最重要的就是数据包在转发到路由器lan口,wan口最后到达网站服务器中的详细过程以及在本地路由做NAT的过程,比如源IP 目的IP,源MAC 目的MAC,源端口 目的端口的变化.还有数据包SYN ACK FIN 序列号的变化.
当然过程越详细越好,这是一道题目,对我来说很重要,希望达人能解答,其实大概的过程我也了解,只是希望有强人能好好的归纳总结下。
=====================================================================================================
首先,应用层的浏览器会生成一个数据包,
然后这个数据包到了传输层封装上TCP头,
其源端口为本地随机分配的端口,目的端口为80,
接着到下一层网络层封装上IP头,
这时候主机会跟公司DNS服务器通信,
请求解析www.sina.com的IP地址,
DNS服务器应答后主机就知道了新浪的IP地址。
然后主机为这个数据包封装上ip头,
其目的IP是远端服务器的IP,源IP是本地PC的IP,
然后PC会对目的IP进行判断是否为本网段的IP,
判断为非本地IP后向下一层数据链路层。
这时会发送一个ARP请求,
内容是谁是192.168.1.1(网关),
得到应答后PC就有了网关的MAC地址。
所以这时候数据链路层会封装成数据帧,
目的地址为网关的MAC地址。
当报文到达路由器后,路由器会发现这是内部主机发送到internet的报文,需要做NAT,
首先会检查网络地址转换表,看有没有该PC的转换记录,
如果没有的话就会分选择一个未使用的端口号分配给PC,
将wan口的IP地址也分配给PC,
并在网络地址转换表中创建一条转换记录,将发送报文pc的ip填到in_ip,
分配的wan口IP填到out_ip,所选择的端口号填到out_port,
这时报文的源IP也会变成分配的全局IP,源端口会变成分配的端口,目的IP不变。
路由器通过对IP地址进行判断是否为本地网段地址,如果不是又继续发送ARP请求下
一跳的MAC地址,然后封装数据帧的时候目的MAC为下一条网关的MAC,源地址会变成本地网关的MAC而不是
PC的MAC,因为帧经过路由的时候帧头会被丢弃重新封装帧头.
直到发送到服务器,服务器在接收到数据包后,会发送一个确认,其过程跟之前类似,
然后到了主机最后一个路由器的时候,
路由器接收到包后查询转换记录,把out_ip转换成in_ip,out_port转换成in_port,
然后主机就可以收到服务器返回来的SYN和ACK了,
最后再发送一个ACK给服务器双方就算是正式建立连接可以进行通信了。
各位大大帮帮忙啊,真的很急啊,能有啥完善的麻烦大家提醒下,小弟谢了。