一、目的
详细描述PC要访问Server服务器中Web服务的全过程
二、相关知识点补充
三、具体步骤
1、首先,PC端访问服务器中的WEB服务时,会触发HTTP协议应用为用户构造一个应用数据。
2、因为HTTP是基于TCP协议的,而TCP协议是传输层协议,所以应用数据交由传输层进一步处理,在传输层上,为应用数据封装上一个TCP头部,在TCP头部中我们要重点关注的两个字段----源端口号和目的端口号,源端口号是随机产生的(0----65535之间),目的端口号是HTTP协议的端口号80,然后交由下一层处理。
3、此时应用数据在网络层,为了便于该数据能够在IP网络中被网络设备从源转发到目的,位于网络层的IP协议会为这个数据封装一个IP头部,在IP头部中要重点关注源IP、目的IP以及协议号,此时源IP为PC端的IP:192.168.1.1,目的IP是服务器的IP:192.168.2.2,协议字段为6(6对应上层的TCP协议,TCP协议默认字段为6,表示这个IP封装的上层协议为TCP协议),交由下一层处理。
4、此时数据位于数据链路层,为了能让这个数据能在二层传输以及被顺利送到对端,为其封装了一个以太网帧,以太网帧中我们要重点关注源MAC和目的MAC和协议号,源MAC为PC端的MAC:8C70-AAAA-0001,目的MAC为网关MAC:0018-0011-0001(MAC作用于同一个LAN中),但是刚开始PC可能并不知道网关的MAC地址,只知道IP地址,利用ARP协议,广播请求网关的MAC,R1的G0/0/0端口会收到请求并响应,后面将源MAC和广播得到的目的MAC写入以太网帧中,另外协议号为0X0800,代表其上层是一个IP包。
5、事实上,在物理链路中传输的是比特流或电气化的脉冲信号,但为了方便理解和更加直观的分析,我们往往会以IP包或者数据帧的形式来阐述通信过程,所以从物理上来说,最终这个以太网数据会变成一堆的0和1组成的二进制码从网线上传输给路由器R1。
6、路由器R1收到一串0101.....后,先还原成帧,差错检测是否数据帧在传输过程中有损坏,若没有,则查看目的MAC地址,发现正好是我接收此数据时的G0/0/0的MAC地址,则认为该数据时发送给自己的,查看帧头类型为0X0800,于是知道里面装的是一个IP包,剥去以太网帧,即解封装,将其交给上层处理。
7、R1利用IP协议处理此报文,先校验IP报文是否有损坏,无,查看IP头中的IP地址,对比自己的IP地址,发现不是给自己的,于是在路由表中查看是否有去往此IP的路径,有则将其从G0/0/1口送出,并将R2的G0/0/0的IP地址作为下一跳,于是不拆IP头,而是将其交还给二层处理。
8、二层继续处理上层来的数据包,为其封装一个新的以太网帧头,源MAC为R1的G0/0/1的MAC,目的MAC为R2的G0/0/0口的MAC,如若不知R2的G0/0/0口的MAC,ARP广播请求得到即可,然后把帧变为0101....给R2。
9、R2接收到0101....,进行差错检测,无,则将其还原成帧,查看目的MAC,发现是自己接收此数据的端口的MAC,确认是发给自己的,拆开以太网帧头,将其交给上层处理。
10、IP协议处理时,查看目的IP地址,发现不是自己的IP地址,查看路由表,发现自己的G0/0/1口连接目的IP,不拆IP头,于是交还给下层处理。
11、重新封装成帧,此时源MAC为R2的G0/0/1口的MAC,目的MAC为服务器的MAC,查看ARP表中是否有192.168.2.2对应的MAC,有则直接写入帧中,无则发送ARP广播请求该MAC地址,类型字段为0X0800,最终,R2将其传给Server。
12、0101....传到服务器,差错检测,无,先将其封装成帧,发现时自己接收此数据时的MAC地址,确认是交给自己的,拆以太网帧头,协议号为0X0800,知道上层数据包为IP包,交给上层处理。
13、校验,无损,网络层查看目的IP地址,发现目的IP地址是自己的IP地址,确认是发给自己的,拆IP包,协议字段为6,知道是TCP协议,交给上层处理。
14、传输层的TCP协议处理数据,发现里面的TCP头部的目的端口号为80,而服务器本地的80端口是开放的,开放给了HTTP协议应用了,剥去TCP头部,将里头的载荷交给HTTP应用。
俺是菜菜,如有错误,欢迎批评!!!