您的位置:首页 > 理论基础 > 计算机网络

一次http事务的完成过程:(web服务器端)

2014-09-11 16:32 204 查看
一次http事务的完成过程:(web服务器端) 1、建立TCP连接
2、接受请求(linux内核从网卡接受请求后,检验端口号和主机名后,发给对应web进程)
3、处理请求(web服务进程)
4、获取资源(web进程通过内核将硬盘中的数据读入linux内核的内存空间,然后再复制到web进程的内存空间中) 5、构建响应(web软件构建响应报文)
6、回送响应(报文+资源)
7、记录日志
当用户请求一个网页内容时,其数据需要从网卡进入,经过tcp拆封装后,发现是送给监听在80端口的web进程时,然后给它。web进程接受请求,发现是请求网站首页内容,于是向内核发起系统调用,要求进行I/O调取首页文件。内核进行I/O后,将文件先放到内核内存,再复制到web进程内存,web进程再进行封装,然后再发送到内核的网络模块,最后才从网卡走掉。这样响应数据从 “硬盘I/O”→“内核空间”→“web进程”→“内核空间网络模块”
多进程: 每个进程的内存地址空间都是独立的,这样从内核空间复制数据时I/O量比较大
由于进程切换的时候,需要保留进程的现场,再切换回去的时候需要回复现场。
所以不能启动过多进程
多线程: 线程共享进程的内存地址空间的资源,所以I/O量比较小。
如果对应的工作进程崩溃,那么其下所有的线程都会崩溃。
nginx的工作模式是有一个master主进程,和N个worker工作线程。master主进程只复制读取配置、按需生成、回收worker工作线程。而worker线程只负责响应用户请求。当nginx升级时只需要将二进制执行文件替换即可,当有新连接进来时,就会使用新的worker线程。而旧的连接依然会使用旧的worker线程,直到断开为止才会被回收。本文出自 “hanyun.fang” 博客,请务必保留此出处http://hanyun.blog.51cto.com/1060170/1551233
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: