CGI指的不是CGI程序本身,而是连接程序与Web服务器程序的接口规格。

服务器概览

服务器可以分为很多种类,其硬件和操作系统与客户端是有所不同的。但是,网络相关的部分,如网卡、协议栈、Socket库等功能和客户端却并不二致。不过他们二者调用的Socket组件不同

服务器程序的结构:程序分成两个模块,即等待连接模块负责与客户端通信的模块。当服务器程序启动并读取配置文件完成初始化操作后,就会运行等待连接模块。这个模块会创建套接字,然后进入等待连接的暂停状态。

每次有新的客户端发起连接时,都会启动一个新的客户端通信模块,因些与客户端是一对一的关系。启动新的程序会花费一点时间,一般会事先启动几个客户端通信模块。

服务器端的套接字和端口号:服务器上可能存在多个端口号相同的套接字,但客户端有套接字都是对不同的端口号的,因此我们可以通过客户端的端口号来确认服务器上的套接字。

不过,使用不同端口号的规则仅限一台客户端的内部,当有多个客户端连接时,它们之间端口号是可能重复的。因此,我们还必须要加上客户端的IP地址才能进行判断。

使用描述符来指代套接字的原因如下:等待连接的套接字中没有客户端的IP地址和端口号使用描述符这一信息比较简单

服务器的接收操作

网卡将接收到的信号转换成数字的信息,网卡的MAC模块将网络包从信号还原为数字信息,校验FCS并存入缓冲区。网卡驱动会根据MAC头部判断协议类型,并将包交给相应的协议栈。

协议栈的IP模块会检查IP头部(1)判断是不是发给自己的;(2)判断网络包是否经过分片;(3)将包转交给TCP模块或UDP模块。

如果接收的是发起连接的包,则TCP模块会(1)确认TCP头部的控制位SYN;(2)检查接收方的端口号;(3)为相应的等待连接套接字复制一个新的副本;(4)记录发送方IP地址端口号待信息。

收到数据包时,TCP模块会(1)根据收到的包的发送方IP地址、发送方端口号、接收方IP地址、接收方端口号找到相对应的套接字;(2)将数据块拼合起来并保存在接收缓冲区中;(3)向客户端返回ACK.

Web服务器程序解释请求消息并作出响应

将请求的URI转换为实际的文件名。如果URI指定的文件内容为HTML文档或图片,那么只要直接将文件内容作为响应消息返回客户端就可以了。

但URI指定的文件内容不仅限于HTML文档,也有可能是一个程序(例cgi程序)。在这个情况下,服务器不会直接返回文件内容,而是会运行这个程序,然后将程序输出的数据返回给客户端。

如果判断为程序文件,Web服务器会委托操作系统运行这个程序,然后从请求消息中取出数据并交给运行的程序。运行的程序收到数据后会进行一系列处理,并将输出的数据返回给Web服务器

web服务器还可以检查事先设置的一些规则,并根据规则允许或禁止访问。这种根据规则判断是否允许访问的功能称为访问控制

访问控制规则主要有3种:客户端的IP地址、客户端的域名、用户名和密码

浏览器接收响应消息并显示内容

只要根据数据类型调用用于显示内容的程序,将数据显示出来就可以了。对于HTML文档、纯文本、图片这些基本数据类型,浏览器自身具有显示这边内容的功能,因此由浏览器自身负责显示。

套接字没有连接并且没有提供地址_网络是怎样连接的 -- web服务器接到请求后将会做什么...相关推荐

  1. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

  2. 网络摄像机ip修改工具_网络监控怎么连接网络

    网络摄像机是现在市场上比较受欢迎的一种安防产品.现在向大家介绍一下网络监控怎么连接网络 工具原料摄像头 方法/步骤分步阅读 1.连接 网络摄像机是用网络线连接到PC机或者路由器上. 2.安装网络视频软 ...

  3. 在一个非套接字上尝试了一个操作。_鼠标+键盘上一个键,Excel操作效率瞬间提高一个档次,这也太神了...

    周末,来给大家分享几个Excel技巧吧,你可能会觉得:平时上班已经够累了,好不容易到了周末,你还让我看这些东西,是不是有毛病?先别急着喷我,你要相信,只要你花1分钟学会以下这些技巧,往后的工作效率直接 ...

  4. 连接远程mysql数据库命令_如何用命令连接远程mysql数据库

    繁星点点滴滴 一.连接远程数据库:1.显示密码如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码&quo ...

  5. 计算机本地连接怎么找不到了,网络,本地连接不见了解决办法

    没有本地连接或者本地连接丢失都是是我们常见的一种计算机故障,没有了本地连接,有的时候能正常上网,可有的时候我们是无法上网的.还有的时候,需要变动IP设定,而找不到本地连接则是无法设定的.本文从最简单的 ...

  6. mysql许多连接错误而被阻止_怎样解决mysql连接过多的错误?

    设置max_execution_time 来阻止太长的读SQL.那可能存在的问题是会把所有长SQL都给KILL 掉.有些必须要执行很长时间的也会被误杀. 自己写个脚本检测这类语句,比如order by ...

  7. python连接mysql查询一个数据_使用Connector / Python连接MySQL/查询数据

    使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...

  8. 华为手机连接电脑用什么软件_屏幕镜像怎么连接电脑?使用这款软件,轻松投屏苹果手机到电脑...

    原标题:屏幕镜像怎么连接电脑?使用这款软件,轻松投屏苹果手机到电脑 此前小峰在介绍如何通过让安卓手机投屏到电脑的时候,就有很多网友来私信小峰,说介绍了安卓手机,为什么就不介绍苹果手机呢?当时小峰这边确 ...

  9. linux台式机双屏幕怎么连接,台式机怎么分屏_台式机双显示器连接方法-太平洋IT百科手机版...

    现如今随着人们的要求提高,双屏显示成为用户越来越关注的对象,比如看盘的时候看看电影或是其它事情,工作娱乐两不耽误,那么台式机怎么分屏呢?那么问题来了,家里需要配备两台显示器,不过现在现如今显示器比较便 ...

最新文章

  1. 快速解决mongodb出现id重复问题
  2. 基于深度学习的OCR-from 美團技術團隊
  3. 《Cacti实战》——3.1 检索流程
  4. Mysql5.6主从复制-基于binlog
  5. 关于tomcat无法启动问题详解
  6. 全国信息化工程师院校IT双证书职业课程认证
  7. 【trie树】HDU1247Hat’s Words
  8. LeetCode Algorithm 507. 完美数
  9. VC6获取硬盘序列号、型号、修订版本号
  10. 电脑上怎么做pdf文件_图片怎么输出为PDF文件?两种办法教你,手机电脑都能转...
  11. Android播放器框架分析之AwesomePlaye
  12. python3.9新特性_Python3.9又更新了:dict内置新功能
  13. 各种版本的Visual C++编译器
  14. Apache Storm技术实战之2 -- BasicDRPCTopology
  15. 【Android工具】更新QMD音乐下载软件,MP3音乐下载器
  16. POI 实现Word表格合并单元格(行合并)
  17. 胶水语言概述(以Python为例)
  18. 新西兰梅西大学有计算机专业吗,【新西兰梅西大学计算机专业】 - 教外新西兰留学网...
  19. java区分无线网卡,无线网卡种类有什么区别
  20. 为何敢称万物追焦?小米12 系列CyberFocus技术详解

热门文章

  1. 如何实现CSS居中?–CSS居中常用方法
  2. 学习几个“××在内存中占几份”的若干问题
  3. /usr/bin/ld: cannot find -lmysqlclient_r
  4. 单网卡Squid AS4 U5 设置
  5. xfs文件系统下扩展lvm卷组
  6. 5G为中企业解决业务上的五个挑战—Vecloud
  7. 防火墙认证的类型——Vecloud
  8. 【指标统计】删除错误遥信
  9. C时间函数ctime返回值的探讨
  10. testNG的DataProvider返回IteratorObject[]的妙用