作者: 华丞臧.
专栏:【网络】
各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注
)。如果有错误的地方,欢迎在评论区指出。
推荐一款刷题网站 LeetCode刷题网站
独立模式:在发展之初,计算机之间相互独立。
网络互联:多台计算机连接连接在一起,完成数据共享。
局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起,局域网内部没有路由器。
广域网WAN:将远隔千里的计算机都连在一起,局域网通过路由器连接形成广域网。
所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网。
重新看待计算机结构,以理解计算机通过网络互联的可能性:根据冯诺依曼体系结构,一台计算机由输入输出设备、存储器和中央处理器构成,如下图:
那么上图中计算机上的硬件如何进行数据交互的呢?毫无疑问设备和设备之间一定要有线连接起来,只不过这些线比较短并且藏在计算机内部通常用户是看不见的;那么计算机体系结构本质上也可以看做一个小型网络。其次我们也可以使用多主机互相连通,构建宏观的冯诺依曼体系结构,而多主机连接本质上也是通过“线
”连接起来的–我们称之为网线(也有用无限WAN连接)。
跨主机与主机内的小型网络不同的是跨主机连接线变长了,线变长了相应地数据传输的可靠性、效率降低了,如何寻找对方的难度上升了,为了保证长距离传输的可靠性、效率,各种新的设备诞生了,如:路由器、交换机。
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息,要想传递各种不同的信息,计算机之间进行通信需要约定好双方的数据格式。在计算机当中把这种约定称为协议,协议是一种约定。
思考:只要通信的两台主机约定好协议就可以了吗?
并不是,计算机的生产厂商有很多如联想、华硕、小米、华为等,计算机操作系统也有很多如windows、苹果、Linux等,计算机网络硬件设备同样有很多,要让这些不同的品牌的计算机实现相互顺畅的通信,就必须制定一个共同的标准大家都来遵守,这就是网络协议。
软件是可以分层的:在学习编程之初,比如学习C语言时,起初我们编写代码都是放在一个.c
文件中;随着学习的深入,我们知道可以将函数的声明和定义分离,并且在主函数文件中包含声明文件即可使用自己编写好的函数,这就是在软件上的分层:main函数是一层,声明定义是第二层。
为什么要分层?
- 软件在分层的同时,也把问题归类了,方便排查问题;
- 分层可以让代码逻辑更加简单;
- 分层的本质:软件上对代码进行解耦;
- 便于工程师进行软件维护;
- 网络本身的代码就是层状结构,层状结构是软件中非常重要的结构,几乎任何软件都离不开层状结构。
层状结构下的网络协议,我们认为:同层协议都可以认为自己在和对方直接通行,忽略底层细节;因此同层之间,一定都要有自己的协议。
分层名称 | 功能 | |
---|---|---|
7 | 应用层 | 针对特定应用的协议 |
6 | 表示层 | 设备固有数据格式和网络标准数据格式的转换 |
5 | 会话层 | 通信管理,负者建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层 |
4 | 传输层 | 管理两个节点之间的数据传输。负者可靠传输(确保三个月后又被可靠地传送到目标地址) |
3 | 网络层 | 地址管理与路由选择 |
2 | 数据链路层 | 互连设备之间传送和识别数据帧 |
1 | 物理层 | 以“0”、“1”代表电压的高低。灯光的闪灭。界定连接器和网线的规格。 |
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
物理层考虑的比较少,因此很多时候也可以称为 TCP/IP四层模型,一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器, 它实现了从网络层到物理层;
- 对于一台交换机, 它实现了从数据链路层到物理层;
- 对于集线器, 它只实现了物理层;
体系结构直接决定:数据包在主机内进行流动的时候,一定要进行自顶向下或者自底向上进行流动的。
计算机发数据需要底层硬件转发,用户层数据无法直接抵达硬件必须贯穿操作系统,而网络协议栈隶属于操作系统,因此必须自顶向下交付给硬件;发数据一般是用户发给用户,底层硬件没办法直接将数据发给用户,必须贯穿操作系统和协议栈才能将数据交给用户。,因此需要自底向上。
如果两台局域网处于同一个局域网,这两台主机是可以直接通信的(以太网,最常见的一种局域网标准)。站在系统的角度,以太网就是临界资源。
局域网通信的原理:
- 每一台主机都要有唯一的标识,该主机对应的MAC地址,MAC地址主要工作在局域网中用来标识主机的唯一性;
- 在同一碰撞域中,各个主机发送的信息会发生碰撞,无法准确的接收对应的信息;每一台主机都能够识别域中发生了碰撞,每台主机都会检测域中有无碰撞(碰撞避免),检测到无碰撞发生时再发送信息。
- 碰撞域:在一局域网中,任何一台主机,在任何时候,都可以随时发消息。
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
在上图的过程中,MAC地址用于在局域网中标定主机的唯一性;而IP地址用来在广域网(公网)标定主机的唯一性。在远距离传输中,数据传输会经过多个局域网,在数据通过不同的局域网时MAC地址是在不断变化的,因为数据需要通过不同路由器传输,路由器用于连接两个不同的局域网,而数据中的IP地址是不变的。从上图可以得出结论,IP网络屏蔽了底层网络的差异,所有的IP层向上的协议发送和接收主机看到的数据是一模一样的。
例子:假如张三在长沙读大学,放假了张三要回家,所以张三买了去武汉的高铁票,那么张三的起点就是长沙,目的地就是武汉;在上了高铁之后,高铁会经过一个一个的站,直到到了武汉张三才会下高铁。那么在这个过程中,源IP地址就是起点长沙,目的IP地址就是武汉,源MAC地址是高铁在中途停留的某个高铁站,而目的MAC地址就是高铁下一个将要停留的高铁站。
下图为数据封装的过程:
下图为数据分用的过程:
通过数据封装和分用的过程可以得出以下两个结论:
IP协议有两个版本, IPv4和IPv6。目前一般的使用的都是IPV4。