六. 请求到达Web服务器,响应返回浏览器
1. 服务器概览
网络包到达服务器后,服务器会接受并处理,在这之前它会做一些准备;服务器程序结构如下图:
服务器操作系统具有多任务、多线程功能,可以同时运行多个程序,服务器程序的设计正是利用了这一功能。可以在客户端连接上之后在启动一个模块并移交套接字,也可以事先建立好模块,当客户端来连接时直接移交套接字(线程池);
2. 服务器的接收操作
介绍服务器的协议栈是如何接收数据的:首先看服务器怎么接收电信号并将其还原成数字形式的网络包,然后从里面提取出Http消息;
之后看协议栈是如何将接受的消息通过Socket库传递给Web服务器程序的;
1)网卡将接收到的电信号转换成数字信号
网卡接收到的是电信号或者光信号,她会先转成数字信号,然后根据校验公式计算出数字信息并与包末尾的FCS值进行对比,如果不一致就说明这个包可能收到噪声影响而失真并需要丢弃,然后对方会超时重传;(包末尾的FCS值是在发送方将数字信号转换成电信号之前计算得出的);
如果FCS值一致,就开始检查MAC头部的接收方MAC值,确认此包是不是发给自己的,不是就直接丢弃;是就将还原好的数字信息包存在网卡的缓存区中;这些都是网卡中的MAC模块完成的ÿ