《深入理解计算机系统》网络编程——读书笔记

本文详细介绍了客户端-服务器编程模型的基本概念、网络的硬件组成、物理层次结构,以及全球IP因特网的原理。同时,阐述了套接字接口的功能和使用方法,还探讨了web服务器的工作原理及HTTP协议。最后,通过TINYWeb服务器的实例,展示了网络编程的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、客户端——服务器编程模型

    1、每个网络应用都是基于客户端——服务器模型的。一个应用是由一个服务器进程和多个客户端进程组成。服务端管理某种资源,并通过操作这种资源来为它的客户端提供某种服务。

    2、该模型中的基本操作是事务,事务由四步构成的,如下图:

                                                             

   3、客户端和服务器指进程,而不是机器或主机。

二、网络

   1、一个网络主机的硬件组成

                                          

      对于主机而言,网络是一种I/O设备,一个插到I/O总线扩展槽的适配器提供了到网络的物理接口。从网络上接收到的数据从适配器经过I/O和存储器总线拷贝到存储器。

   2、物理上而言,网络是一个按照地理远近组成别的层次系统。最低层是LAN(局域网),最流行的局域网技术是以太网。

        以太网段结构图如下:

                                             

     集线器不加分辨地将从一个端口上收到的每个位复制到其他所有的端口上。

     桥接以太网如下图所示:

                                          

     局域网的概念视图:(为了简化局域网的表示,把集线器和网桥以及连接他们的电缆画成一根水平线)

                                                                     

    多个不兼容的局域网可以通过路由器连接起来:

                                          

三、全球IP因特网

               

    IP协议提供主机间不可靠通信;UDP稍稍扩展了IP协议,提供进程间不可靠通信;TCP提供进程间可靠的全双工通信。

    1、IP地址。

         一个IP地址是一个32位的无符号整型,网络程序讲IP地址存放在如下IP地址结构中:

                                                                                                        

      网络字节序(大端字节顺序);主机字节顺序是小端序。大端序意思是高位数字放在低地址上。

     以下是主机字节序和网络字节序转换的函数:

                                            

    IP地址通常以点十进制的形式表示。如,128.2.194.242是0x8002c2f2的点十进制表示形式。以下函数实现IP地址和点十进制字符串之间的转换:

                           

    2、因特网域名

         因特网域名层次结构如下图所示:

                                               一旦一个组织得到了一个二级域名,就可以在这一子域中创建任何新的域名了。

     因特网定义了域名集合和IP地址之间的映射,这个映射通过DNS来维护,DNS数据库有上百万的主机条目结构组成:

                                                      

    因特网通过以下两个函数从DNS数据库中检索任意主机条目:

                                          

四、套接字

    套接字接口描述如下图所示:

                                                                            

    1、套接字结构地址

                                             

    2、相关函数

        客户端和服务器端都是用的函数:socket函数创建一个套接字描述符:

                                        

      客户端函数,connect函数:

                                      

      把以上两个函数封装为如下open_clientfd函数: int  open_clientfd(char *hostname, int port);

                                                                

    服务器端:bind、listen、accept函数:

   

              

               

    把bind和accept封装成一个函数,即open_listenfd函数:

                     

                                          

    一个简单的echo客户端和服务器的示例:

                                                              

                                                  

                                                 

五、web服务器

      1、web基础

          web客户端和服务器之间的交互用的是一个基于文本的应用级协议,叫HTTP(超文本传输协议)。

          web服务和常规的文件检索服务(例如FTP)的区别在于,web内容可以用HTML(超文本标记语言)语言编写。

      2、web内容

         web服务器以两种不同的方式向客户端提供内容:

         取一个磁盘文件,并将它的内容返回给客户端。静态内容,静态服务。

        运行一个可执行文件,并将它的输出返回给客户端。动态内容,动态服务。

         

     3、HTTP事务

          

       请求:

      

    响应:

   

六、综合实例:TINY Web服务器

   

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值