赞
踩
了解网络发展背景,对局域网/广域网的概念有基本认识;
了解网络协议的意义,重点理解TCP/IP五层结构模型;
学习网络传输的基本流程,理解封装和分用;
独立模式:计算机之间相互独立
网络互联:多台计算机连接在一起,完成数据共享
局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起
广域网WAN:将远隔千里的计算机都连在一起
所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如,我们有 "天朝特色" 的广域网,也可以看做一个比较大的局域网。
“协议”本质就是一种约定,通信双方只要曾经做过某种约定,之后就可以使用这种约定来完成某种事情。这里我们可以举一个例子:人和人之间之所以能够通过语言交流,是因为人一出生就要学习汉语,而汉语本质上就是一种约定的协议,通过语言我们就能够交流,而网络协议是通信计算机双方必须共同遵从的一组约定,因此我们一定要将这种约定用计算机语言表达出来,此时双方计算机才能识别约定的相关内容从而成某种事情。
这里我们来举一个例子,你在网上买了一个洗面奶,快递员不会直接将洗面奶直接送到你面前吧,你在网上下单的时候,首先供货商会根据你下单的相关信息填写到快递单号上,然后将你所买的商品用盒子包装起来,然后再交给快递员将快递送给你,然后你再打开快递盒子就能拿到你的洗面奶。其实你想要的只是洗面奶,但是你还多得到了快递单号,商家、快递员和你都知道快递单号上的信息,这个多出来的快递单就是定好的协议,你们都知道快递单的格式、信息等等,这就是我们在快递方面上定好的协议。
你和商家在快递单上填写的相关信息在计算机看来都是属性,而属性在计算机中使用结构体来描述的,所有的协议都是在计算机上都是提前设定好并且使传输双方都能认识的相关属性的结构体。而我们使用的是同样的网络,采用的是同一套协议,这样A主机定义的结构体对象,B主机使用同样的当然能认识这个A主机定义的结构体对象,这就是计算机中协议的理解。
计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。
思考: 只要通信的两台主机, 约定好协议就可以了么?
计算机生产厂商有很多; 计算机操作系统, 也有很多; 计算机网络硬件设备, 还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议,而两台主机之间约定的协议是网络协议标准的一个子集,仅仅只是一部分。
分层的目的就是为了降低耦合度,方便维护代码,也就是高内聚,每一层之间的关系紧密,低耦合层与层之间联系不要太紧密。为什么网络这里是层状的呢?因为网络通信的项目规模一般非常大,同时问题是层状的,此时每一层的问题都要通过不同的协议来解决,所以网络也是层状的。
⭐真实情况:我们人其实在和电话沟通
⭐逻辑情况:我们认为人和人(语义层)、电话和电话(通信设备层)在沟通
⭐在这个例子中,我们的协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次。分层最大的好处在于 "封装",做到了低耦合高内聚。
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
- 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解.
⭐TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
⭐TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(放大衰减的信号)(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层.
由于物理层我们考虑的比较少,因此很多时候也可以称为 TCP/IP四层模型。网络协议栈和我们之前学习的OS有什么关系?
一般而言
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);
参考资料
同一个网段内的两台主机进行文件传输
两台计算机通过TCP/IP协议通讯的过程如下所示
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议 字段" 将数据交给对应的上层协议处理.
下图为数据封装的过程
下图为数据分用的过程
⭐当用户要将文件传输给另一台主机前,该文件数据需要先通过网络协议栈进行封装:
- 文件数据先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层。
- 传输层收到数据后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
- 网络层收到数据后,再添加上对应网络层协议的报头信息,接着将数据再交给链路层。
- 链路层收到数据后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕。
⭐数据封装完毕后就可以通过局域网将其发送给对端主机了,而当对端主机收到数据后,对应也需要通过网络协议栈对该数据进行解包与分用:
- 链路层收到数据后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下的数据交给网络层。
- 网络层收到该数据后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下的数据继续向上进行交付。
- 传输层收到该数据后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据再交付给应用层。
- 应用层收到数据后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据的解包与分用。
也就是说,任何一台主机在发送数据之前,该数据都要先自顶向下贯穿协议栈来完成数据的封装,在这个过程中,每一层协议都会添加上对应的报头信息;而任何一台主机收到数据后,都要先自底向上贯穿协议栈来完成数据的解包和分用,在这个过程中,每一层协议都会将对应的报头信息提取出来。
⭐以太网通信:每台主机在局域网上, 都要有自己的唯的一个标识
以太网通信的原理:局域网内某台主机(老师)发送信息,经过多层协议进行封装,在进行网络通信的时候,该局域网内的其他主机都接收到该封装的信息,这些主机都根据协议进行解包,根据发送信息里面的报头进行对比(张三),对比成功继续解包分用,对比不成功,丢弃该信息。
每一个局域网都可以看作是一个碰撞域,如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰,我们就称这两台主机在该碰撞域中发生了碰撞。
那如何看待局域网呢?
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
网络通信的基本脉络示意图
如何在Linux中查看自己的MAC地址?ifconfig
命令可以查看当前主机所对应的网卡信息。
我们用到的大部分局域网都是以太网标准,其中ether
对应就有”以太“的意思,而ether
后面的这个地址就是当前云服务器所对应的MAC地址。那Windows下呢?使用ipconfig可以查看当前主机所对应的网卡信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。