模拟网页请求流程
- 当我点击一个网页想要浏览的时候,首先会发送HTTP请求(应用层),发送请求,在网络上跑的肯定是报文,这个时候,报文会加上HTTP头和HTTP正文,然后往传输层发送,因为这里是浏览网页,传输层上会加上TCP头和端口号,然后发往网络层,在这一层,报文会加上IP头,里面含有目标IP地址,然后发往物理层,在物理层,会加上MAC头,里面含有目标MAC或者网关MAC还有源MAC地址,之后这个包就在网络中传输。
- 当一个网络包从一个网口经过的时候,首先看看看要不要请进来,处理一下。 拿进来以后,就交给一段程序进行处理。 首先,会摘掉MAC头,看一下是否和这个网口的MAC地址相符,如果不是,就丢弃,不处理。如果MAC地址和网口的相符,就说明是发给它的,于是它就会继续摘掉IP头,看看到底是发送给自己的,还是希望自己转发出去的。
3.如果目标IP地址不是自己的,那么就是转发出去的;如果IP地址是自己的,那么就是发给自己的,就会进行下一层的处理,我们这里是TCP的,所以会摘掉TCP头,这个时候,就需要查看TCP的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。
4.如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层进行处理,这个时候会交给一个应用来进行处理,可是交给哪个应用呢?这个时候,TCP的头里面就有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那么程序就会把包发给浏览器,交给浏览器处理。
5.浏览器自然是解析HTML,页面就显示出来了。