TCP/IP协议
TCP/IP协议是整个网络的基础,我们目前使用的Internet就是基础TCP/IP协议构建的。
OSI七层模型
这是一个逻辑模型,不是物理模型。和我们程序架构中常用的MVC等等类似。
TCP/IP是四层模型。
数据链路层一般就是网卡的驱动程序。下一步一般是网关。
如果发送端和接收端不在同一个网络中,则会通过多个网关和路由。
每一个网关和路由也会按照数据链路层的规则将每一个包解开,然后按照自己的规则重新将其封装成数据链路层的包。
这个图也说明一个问题:下层对于上层传递的数据,是不需要知道具体的内容的。也不关心具体的内容。它只是按照自己的规则将数据重新封装并传递给网络的下一个节点。
TCP和UDP
tcp:传输控制协议
udp:用户数据包协议
这2个协议都是工作在传输层。
我们在访问服务器的时候,与上图类似,可以有多种路由的选择方式。
面向连接的,就是这个路由一旦选定以后,建立起来一条链接,则之后的数据都是通过该线路进行传输。
如果数据传输过程中,某个路由故障,则会设计重新选路,那这个时候这个链接包括链接所传输的所有数据都是失效了,需要重新传输。
而不是面向连击的协议,比如说udp。则是每一个数据包,进行一次选路。当前数据包传到即可。
但是UDP这个协议就可能出现一种后发先至的情况。
TCP是面向连接的,它是一个管道,后面的不可能超过前面的。
所以,使用UDP协议是需要程序里面自己调顺序的。
SNMP是一种简单的网络管理协议。像ping之类的都属于SNMP协议。
现在有些应用是TCP和UDP都是用的,特别是一些即时通信工具,比如微信、QQ等。
有一个TCP链接会一直和服务器链接,用于传输一些比较重要的信息。
而具体的聊天信息,则是通过UDP协议来进行传输。
TCP传输数据,服务器收到后会给出确认。
UDP不需要服务器确认,效率比较高,但是具体收到没收到,缺少确认。