一、熟练掌握内容
1. OSI七层模型
OSI(open system interconnection,开放系统互联) 从逻辑上对网络进行定义和规范,将网络分为7层,最主要的功能就是针对不同类型的主机实现数据传输。(ps:仅存在于教科书上) 优点:将服务、接口和协议这三个概念明确区分开来,理论完整,使不同的网络之间实现可靠通讯。 缺点:复杂不实用!so 没有落地实现。
分层名称? | OSI七层模型功能 | 对应概念 |
---|
物理层 | 以0/1表示电压高低,将二进制数据转换为光电信号,通过无线网络/光纤/网线进行信号传输 。 | 集线器,双绞线,光纤 | 数据链路层 | 完成相邻设备之间数据帧的传送和识别。 | 交换机,网卡设备驱动 | 网络层 | 负责地址管理和路由选择。针对网络上的任意两台主机,完成通讯路径规划以及具体传输细节。 | 路由器 | 传输层 | 负责两台主机之间的数据传输。只关注起点和终点,不关注具体的通讯细节。 | TCP、UDP | 会话层 | 何时建立连接、何时断开连接以及保持多久的连接(数据流动的逻辑通路),实现会话用户之间对话管理、数据流同步和重新同步。 | ASP、RPC、NFS | 表示层 | 负责协议转换、数据编码和数据压缩。(数据格式和网络标准数据格式的转换) | ASCLL、PICT、MIDI | 应用层 | 负责应用程序间的沟通。 | SMTP、FTP、Telnet |
2. TCP/IP五层(或四层)模型
实际组建网络的过程中,我们使用TCP/IP五层(或四层)模型来实现。 下层网络给上层网络提供一些功能支撑。上层协议要依赖下层协议进行实现。 ?举个栗子:淘宝买衣服流程 ①选择商品后下单,我们先要填写收件人的地址(目的IP)和电话(目的Port)。之后卖家发货,卖家填写发件人的地址(源IP)和电话(源Port)。 买家和卖家都只需要关注起点和终点信息即可。 ②商品交给快递公司打包。(快递公司充当网络层的功能,进行路径规划) ③发货后,各个快递点进行交付。(数据链路层负责相邻主机之间的数据通讯) ④最终到达目的地。人力/物力资源类似于物理层的硬件设备网络设备基础设施。
3. 封装和分用
不同的协议层对于数据包有不同的称谓,比如 传输层叫做段,网络层叫做数据报,数据链路层叫做帧。 应用层数据通过协议栈发送到网络上时,每层协议都要加上一个数据首部(header),也叫做封装。同理,解析数据的时候,相应层根据下层协议对数据进行分用。 以下是数据封装的过程: 应用层:Appl首部,打包成应用层数据包 传输层:TCP协议报头,封装成传输层数据报(假设使用TCP协议) 网络层:IP报头(源IP/目的IP),网络层数据报 数据链路层:此处应用以太网协议,添加帧头和帧尾 物理层:把数据以二进制形式转换为0/1这样的光电信号,并通过无线网络/光纤/网线进行数据传输。
以下是数据分用的过程: 物理层:光电信号发送至接收端主机之后(不考虑中间的转发过程)先到达接收端的物理层,对其进行翻译,转换为0/1二进制序列,得到以太网数据帧,将其交给数据链路层。 数据链路层:对以太网数据帧进行分析,去掉帧头和帧尾,把中间负载交给上层协议。 网络层:按照协议格式解析,去掉IP报头,将负载交给上层协议。 传输层:解析数据,去掉TCP报头,将负载交给应用程序。 应用层:按应用层协议解析,显示/执行操作。
二、其他知识补充
1. 网络互连
起初,计算机之间是独立存在的,每个终端都各自持有不同用户的数据(独立模式)。随着时代的发展,越来越多的计算机需要协同工作,共享网络和数据,于是就有了网络互联。 网络互连:多台计算机连接在一起,完成数据共享。 数据共享本质是数据传输,即计算机之间通过网络来传输数据,也叫做网络通信。
2. 网络划分
根据网络规模的不同,我们可以将网络划分为局域网(LAN)和广域网(WAN)。 局域网(Local Area Network):也叫内网,它是局部组建的一种私有网络。在某一区域内,用户可以很方便的进行网络通信。这里的“某一区域”可以是一间教室、一栋办公楼、一所学校等,距离一般是方圆几千里以内。 广域网(Wide Area Network):也叫公网、外网。它是一种地域范围覆盖广的计算机网络的集合,通常所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家。由于其超长的覆盖范围,发送介质主要是政府或者大型企业部署的电话线或光纤,同时,广域网内部的局域网都属于其子网。
这里所谓的WAN和LAN是相对的概念,那么,你是否会问我们平时所使用的到的wifi是属于哪一种呢? 其实,局域网按照是否使用导线或传输电缆连接网络设备,分为有线局域网、和无线局域网(WLAN)。 无线局域网(Wireless LAN):它是不使用任何导线或传输电缆连接的局域网,其使用无线电波或电场与磁场作为数据传送的介质,传送距离一般只有几十米。 有线局域网,是使用导线或传输电缆连接的局域网,传送距离可达几千米。 实际上,我们一般使用的WIFI、蓝牙等技术只是WLAN的标准技术之一。可以说是,后者包含前者的关系。
3. 网络通讯基础
a. IP地址
我们在进行网络通信的过程中,如何判断数据从哪个设备发送,又如何判断传输给哪个设备呢? IP地址主要是用来表示网络主机以及其他网络设备(如 路由器)的网络地址。简单来说,IP用于定位主机的网络地址。 IP地址以“点分十进制”表示,32位二进制数。 *注:127.的IP地址用于环回测试(Loop back), 通常是127.0.0.1。 本机环回主要是用于本机和本机之间的通信(系统内部为提升性能,不会走网络传输的方式),对于网络编程而言,常见的开发方式都是本机到本机的网络通讯。 还有一个问题!IP地址和MAC地址的区别是什么呢? 物理地址(MAC地址)是数据链路层和物理层使用的地址;IP地址是网络层及其以上层使用的地址。
b. 端口号
目的主机收到数据之后,如何判断该数据要由哪个应用程序接收呢? 端口号用于定位主机中的进程。
c. 协议
网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵守的一组约定、规则。最终体现为在网络上传输的数据包的格式。 知名协议的默认端口:0-1023
- 22端口:预留给SSH服务器绑定SSH协议
- 21端口:预留给FTP服务器绑定FTP协议
- 23端口:预留给Telnet服务器绑定Telnet协议
- 80端口:预留给HTTP服务器绑定HTTP协议
- 443端口:预留给HTTPS服务器绑定到HTTPS协议
协议为什么要分层? 分层最大的好处,类似于面向接口编程,定义好两层间的接口规范,双方根据规范对接。 在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务): 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。
|