1.服务器端通信
服务器的不同模块和所有客户端通信
服务器端的收发操作:
(1)创建套接字
(2)等待连接,调用bind将端口号写入套接字。调用listen写入等待连接状态的控制信息,
(3)建立连接:协议栈调用accept来接受连接
(4)收发操作
(5)断开连接
服务器程序的通信操作:
2.服务器的接收操作
接收步骤:
(1)网卡收到信号,将其还原为数字信息。
(2)网卡根据帧校验序列(FCS)校验错误
(3)网卡检查MAC头部中的MAC地址,看是不是发给自己的
(4)网卡驱动判断协议类型,调用相应的协议栈来处理
(5)转交到协议栈后,IP模块开始工作。检查IP头部格式,判断IP包是不是发给自己的,若是,检查有没有分片,若有,重组,完成接收。
(6)IP模块转交给TCP或是UDP模块。
服务器的工作过程:
3. 服务器的响应
(1)read获取HTTP请求消息,请求消息包括方法(比如GET,POST)和URI(文件路径名)
(2)处理后生成响应消息,
(3)然后通过write返回给客户端
服务器的工作方式:
4.浏览器的响应
(1)根据响应消息开头的Content Type字段来判断数据类型
(2)根据数据类型调用对应的显示程序
Q&A
1.包收发操作中,服务器和客户端的区别是什么?
没有区别
2.当包到达服务器时,网卡会接收信号并通知 CPU,此时使用的机制叫什么?
中断
3. 当需要对 Web 服务器的访问进行限制的时候,可以根据哪些条件来判断是否允许访问?
访问控制:web服务器用来判断是否允许客户端访问
判断条件:(1)客户端的iP地址(2)客户端的域名(3)用户名和密码
补充:
网络包的旅程: