二、网络通信
- OSI 7层: 物理层,数据链路层,网络层,传输层,会话层(会话连接断点续传),表示层(数据格式加密等),应用层。
- TCP/IP 4层:网络接口层(主机到网络层), 网络层, 传输层, 应用层。
- 在4层模型中,ARP是放在网络接口层的。
- TCP/IP协议部分看之前的博客吧。
- socket网络编程API:
- 网络字节序和主机字节序,也就是大小端,大小是说高低位放在起始位置(一般计算机内存是从低到高,所以大端是高位放在低地址,小端是低位在低地址)。网络都是大端字节序。
- 四种网络IO模型:阻塞,非阻塞,多路复用,异步。
- 异步IO模型 对比 非阻塞IO模型:异步IO是完全没有阻塞的,发起IO操作后直接返回,内核完成数据的拷贝,然后告诉进程数据以及拷贝到用户空间。而非阻塞模型在没有可读的时候是直接返回没有阻塞的,而在可读时,读操作将数据拷贝到用户空间的这个过程是阻塞的。
- select对比poll:poll一般被认为更好一些。1)是select的最大限额较小,一般默认只有1024,而poll则大得多。2)是select在每次进入前都需要重新置位,而poll由于其数据结构区分了输入输出,故不用;3)是poll在处理大数量时效率更高一些。4)select虽然别的不好,但是移植性较好。
- epoll:1)对比select,可打开的文件描述符多,select是1k、2k,而在1G内存空间,epoll能达到10w。2)epoll通过注册内核事件,耗时不会线性增加,而selete和epoll都是轮询。3)epoll返回的即是结果,而不需要再进行遍历。4)epoll传递结果的时候,不需要进行内核与用户空间的拷贝,是通过mmap来实现的,而select和poll需要先将事件拷贝进内核,再将结果从内核拷贝出来。
- ping命令来查看ip地址的网络通断
- tcpdump命令来截取网络包中的信息进行分析,可以按照规则,按照表达式过滤内容等。
- netstat命令用来查看网络信息,打开的连接、端口、连接状况等。
- lsof (list open file)显示打开的文件
http协议
- 在应用层,HTTPS协议也是,不过是在TLS,SSL加密协议之上。
- (1)报文头:比如“GET http://www.baidu.com/favicon.ico HTTP/1.1” 表示用 GET 方法请求 http://www.baidu.com/favicon.ico这个文件,用的HTTP/1.1协议。
(2) 0个或多个请求头(header ine ),例如 Accept-Language: en。
(3)空行(作为 header lines 的结束)。
(4)可选的消息体。 - HTTPS可以看做是加密版本的HTTP协议,通过TLS协议来进行加密(SSL协议的升级版)
- CGI说是很重要,但是没咋看懂…还有fast-CGI。
- Cookie: 弥补http无状态的缺点,提供会话跟踪等功能。Cookie是一小段文本信息,服务器发送给客户端,每次请求时都带着。服务器检查cookie信息来判断用户状态。