深入理解计算机系统第11章笔记

on under auxilary
1 minute read

网络编程

1.认识到客户端和服务器是进程,而不是常常提到的机器或主机,这是很重要的.无论客户端和服务器是怎样映射到主机上的,客户 端-服务器模型是相同的.

2.因为因特网主机可以有不同的主机字节顺序,TCP/IP为任意整数数据项定义了统一的网络字节顺序(大端字节顺序),例如IP地址. htonl函数将32位整数由主机字节顺序转换为网络字节顺序,ntohl函数将32位整数从网络字节顺序转换为主机字节,htons和ntohs 函数为16位的整数执行相应的转换.(不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序 ),网络程序使用inet_aton和inet_ntoa函数来实现IP地址和点分十进制之间的转换.以上python版本

3.linux中hostname -I可得到ip地址

4.一旦一个组织得到了一个二级域名,那么它就可以在这个子域中创建任何新的域名了,从数学意义上讲,可以认为每条主机条目就 是一个域名和IP地址的等价类

5.每台主机都有本地定义的域名localhost,这个域名总是映射为本地回送地址(loopback address)127.0.0.1

6.在unix机器上,文件/etc/services包含一张这台机器提供的服务以及它们的知名端口号的综合列表

7.socket连接中监听描述符和已连接描述符之间的区别使很多人感到迷惑,监听描述符是作为客户端连接请求的一个端点.它被创 建一次,并存在于服务器的整个生命周期.已连接描述符是客户端和服务器之间已经建立起来了的连接的一个端点,服务器每次接受 连接请求时都会创建一次,它只存在于服务器为一个客户端服务的过程中.图11-18展示了监听描述符和已连接描述符的关系,其中 的3和4表示描述符值(0~2描述符是预留给标准文件的)

8.内核在一个进程终止时会自动关闭所有打开的描述符

9.http请求头中的host字段在HTTP/1.1请求中是需要的,而在HTTP/1.0请求中是不需要的.代理缓存(proxy cache)会使用host字段 ,这个代理缓存有时作为浏览器和管理被请求文件的原始服务器(origin server)的中介[这里的1.1和1.0的区别可能可以成为绕过 waf和漏洞挖掘的思路]

10.图11-24是一些http状态码

11.cgi理解

csapp
home
github
archive
category