-
OSI
open system interconnect开放式系统互联模型,此模型把网络通信工作分为七层,物理层、数据链路层、网络层、会话层、表示层、应用层(理论上的参考)。
-
OSI 7层参考模型(参考、未实现)
(1)为何分层?层与层之间接口稳定,暴露接口,直接调接口,内部方法、逻辑可替换;可以解欧,若不分层欧额度较高,一改全改成本高。 -
TCP/IP协议(定义好的 逻辑、参数、实现方法)
(2)介绍:计算机内有两大类区域程序——Linux内核kernel(版本维护)+系统后台运行的demo程序即用户空间的application程序。
(3)区别:为什么有些层次放在内核,如qq、微信、游戏传输通信数据时很多代码不需要重复开发,使用通用的资源由开发内核的人员设计好了,内核中既有规则又有资源管理以及建立连接的过程。其余的不同程序,发送数据的表示形式、可靠性、安全性是否加密在程序的个性化中去开发,即应用层。所以分类两大层次。
(4)nc:建立连接——net connect,nc中用人的方式把协议发出后,双方能通过连接传输数据,可以正确把数据请求回来,请求功能结束。
(5)每一层都有协议:应用层包含http协议、fdp协议等 。
(6)传输控制层:tcp——面向连接的,可靠的传输(常用)、udp协议。 -
TCP的阶段:
通过三次握手建立连接,再进行数据传输,最后四次分手。
(1)实现三次握手:网络通信I/O通信是双向的,有输出就有输入,三次之后客户端与服务器端知自己的输入输出是通的。
ack:acknowledge表示接收到数据包,知道了;
连接:在双方的内存里开辟资源,切换状态,连接的过程是瞬时的数据包交互的过程;
IO模型本质上:内核给程序暴露api源自socket包装



