前天放话出来,昨天更新一下CS:APP第五章,虽然一直惦记着,但是还是没能看完,这里先整理一下《Unix网络编程》的心得吧,目前看到第三章,重新整理一二章。
关于《Unix 网络编程》(简称UNP): 提起Unix编程,当然要《Advanced Programming in the UNIX Environment》(APUE), 被誉为UNIX编程“圣经”。然而Unix网络编程一点也不逊色,反而我更喜欢看这本书,APUE虽然也在看,但是内容繁多而且需要大量实践,看了一章往往要消化很久,但是现在已经基本完成了网络的学习,继续深入学习Unix网络编程是很好的。
1. 关于异步回调(Asynchronous callback), 经典的Unix网络编程一般使用"客户端请求,服务器端响应"的交互模式,但是特殊情况会需要异步回调的使用(PS: Windows Phone 7 里消去了网络同步交互,几乎都使用异步回调来替代原始的请求响应模型),在后面的文章里会详细介绍。
2. Web –> Tcp –> IP 这是前面看书时候写下来的,想体现的是协议的链接调用情况。
3. 主机 –> LAN(区域网) –>WAN(广域网) 体现的是物理的链接情况。PS: 最大的广域网是Internet。
4. 比较优先级高于赋值。
5. TCP endpoint,TCP接口又被称为TCP终结点,之所以写下来是因为WCF里面也有相似的概念,看来命名上是炒冷饭了。
6. 应用程序 –> C库函数 –>系统调用
关于系统调用,和库函数的关系,APUE第一章(侥幸看完了)里有详细的解释,系统调用多而繁杂,用于最基础的实现,而库函数封装了系统调用,整理和划分了同类的实现。
但是在层次看来,系统调用在内核层,而库函数在应用层和内核层两者直接(当然书上是分在应用层里),也不排除内核层的函数直接暴露在应用层让程序调用,三者的关系在书上的连接是用双向的。
7. SYN, FIN, RST, ACK, PSH, URG, 最后一个是紧急情况的序号传递,以上是TCP连接控制消息。
8. PDU ( Protocol Data Unit) 在UNP里,译者花了一大版来描述在不同协议层下的PDU。而
PDU: 计算机网络对等实体间交换的单位信息称为协议数据单元(PDU)。
10 . Thread 线程调用出错返回Error值。
11. \r\n \r = 0x0D \n = 0x0A
12. call 指令把当前eip压栈并跳转,如果从多线程考虑,他应该是原子指令,可以确定的是他只有一条机器码。