网络基础一
1.初识网络
网卡也是一种文件,所以对于网络的编程也是一种文件操作;
早期由于不同的计算机之间要根据数据进行协作,但是计算机之间是独立的,所以使用了光驱或者软盘之类的进行协作;对于将计算机连接在一起完成数据的共享是历史发展的必然;后来出现了局域网LAN,之后随着历史的推动使得子网之间继续进行集连;但是长距离传输过程中需要进行主机的定位使用IP地址MAC地址等,还有传输过程中数据的安全问题等各种问题,需要进行解决;不同的子网通过交换机和路由器连接起来;最后形成了广域网将所有的局域网全部连接了起来;
2.认识协议
由于数据经过了长距离的传输,沟通的成本变得很高;实际上在网线中传递的是光电信号;
协议本质就是一种约定,通信双方通过规定约定可以很大程度地降低成本;协议有很多种,计算机通过协议解决不同的通信问题;
通信时有如下问题,需要每一层都要设计协议进行解决:
1.如何处理发来的数据;应用层协议http/https/ftp/smtp等各种协议解决;
2.长距离传输的数据丢失问题;传输层使用TCP/UDP协议进行解决;
3.如何定位主机的问题;网络层的IP协议进行解决;
4.保证数据准确地到达下一个设备;数据链路层的协议进行解决;
网络通信的过程中会产生其他字段 ,这些字段叫做协议的报头;这些协议本质上就是一种结构体,保存着各种属性字段,将结构体对象的属性和数据拼接起来就构成了一个报文;只要通信双方都有这样的结构体对象,即可实现通信;现在的主机都是用的是TCP/IP四层体系结构,标准是一样的,所以都内置了协议,所以可以进行通信;
可以通过物理性质的区别来定制0/1信号,这样计算机就能够识别二进制序列;
必须有业内权威人士来定制一整套网络标准,所有的入网设备都遵守标准这样才能实现通信,否则标准不一样,导致协议不一样等各种问题,就无法在网络各层进行解析报文,达到通信的目的;
3.协议分层
继承和多态的实现本质上就是在做软件分层,还有线程库中线程的执行函数实现和线程的执行进行软件分层;分层可以是上下的关系也可以是左右的关系;分层后最大的特点就是每一层的修改不会影响到其他层,实现高内聚低耦合;
网络分层是因为整体规模大,长距离传输问题多所以要对网络进行分层,具体的创建每一层的协议来解决每一层的问题;
逻辑上是层内直接交互的,实际上层与层之间进行交互,贯串式地执行;正是因为从逻辑方面看待问题所以有了不同的网络层并且定制了不同的协议,使得层内通信双方可以进行通信;协议分层使得层与层之间低耦合,层内是高内聚的,当某一层要进行修改的时候并不会影响其他层,提高了可维护性和可扩展性;
4.OSI七层模型
网路是需要一套标准的,OSI组织是当时的权威组织建立了七层网络模型,从低向上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
每一层要考虑调用下层问题还要考虑给上层提供调用问题;还需要解决层内通信的问题;实践中发现有些层是不可以在操作系统中实现的,所以就剩下了物理层、数据链路层、网络层、传输层、应用层;而物理层更关心的是电器特性,所以在软件方面真正关心的是四层协议;