网络分层模型和TCP/IP协议族——网络传输哪里难
实习完回家后,准备来回顾一下网络基础的相关知识点。
网络传输
先举一个简单易懂的例子。

网络传输,我们可以比喻为2个人:甲 和 乙。然后他们之间需要传递一张图片picture。因为现在的图片还是挺大的,差不多几M的样子,这时候,就像是把一栋house传送过去。
如何传送呢?
需要知道目标地址
寻址和路由
需要有一条到目标地址的路
数据链路
需要把大楼拆成包装箱能放下的大小
分片
需要将每一个部分进行编号
序列码
需要将包装箱装车
封装
车队运输时可能会堵车
拥塞控制
检查每一车是否完整
错误检验和校正
处理在运输路上丢失和损毁的部分
数据重发
拆成包装,将每一部分重新组装起来
重组
协议
接着上面说的,我们肯定需要一些 流程规范、运输指南的使用说明,比如:
如何查找目的地
如何选择运输路线
如何拆分和重建大楼
这些规范被称为协议
协议需要注意这些:
协议有很多种
不同的协议处理不同层次的问题
发送方和接收方要使用相同的协议,才能还原数据
网络分层模型和TCP/IP协议族——协议的战争
继续上一部分,讲讲网络协议的东西。
之前主要分为2 part,一边是osi,一边是tcp/ip。可以形象地称为 协议斗争。
什么是OSI?
OSI就是有国际标准化组织ISO提出的Open System Interconnection Reference Model(开放式系统互联通信参考模型)

他们主要提出了layer 7.

媒介层主要是做比较基础的部分,主机层是基于媒介层做了一些上层建筑封装等...相对单一
物理层
物理层 -> (不一定可靠) 点对点的数据直链,传输的是bit比特。
数据链路层
一个可靠的点对点数据直链。
检错和纠错(CRC码)
多路访问
寻址
传递的是frame 数据帧
网络层
在网络的各个节点之间进行地址分配、路由和(不一定可靠的)报文分发。
路由
拥塞控制
传递的是package 数据包
传输层
被称为4层 / L4
在网络的各个节点之间可靠地分发数据包
所有传输遗留问题
复用
流量
可靠
传输的是segment 数据段
在传输层之上的有会话层和表示层,但是用的不太多
应用层
称为7层 / L7
网络进程到应用程序。
针对特定应用,规定各层协议、时序、表示等,进行封装。
在端系统中用软件来实现,比如http等。
TCP/IP

它是怎么工作的?

ARP也就是通过ip地址来反查以太网mac地址。

我们来看看它到底包装了哪些?

我们再来看看OSI的渊源

为什么失败了?
进程缓慢
过于复杂
收费
TCP/IP的渊源

最后还是TCP/IP赢了
网络分层模型和TCP/IP协议——以太网
以太网其实讲的就是:怎么传
IP协议讲的就是:解决往哪里传的问题
UDP和TCP:解决可靠性的问题
怎么传输的?
最初是通过同轴电缆。

然后发现了一种算法来解决这个问题。
CSMA/CD也就是载波监听多路访问/冲突检测
我用大白话来讲解一下,大概就是这样的:
一条同轴电缆上,串联着许多台计算机,如果说computerA想发送数据(data),那么它会这样做:
先检查一下这个网络有没有人在使用
如果有人使用,它就不传了,避免冲突
没人使用,那就可以传数据。
如果说,存在这么一个情况:2个计算器同时检测到网络没人使用,然后他们准备同时发数据,这个时候会出现什么事呢?
computer在发送数据前,它会检查电压,一旦电压超过指定值,它就会停止传输数据,通过物理知识我们可以知道,串联是电流处处相等,电压=各处相加。
一旦检测到电压超值,那么computer会stop send data,然后等待一段时间,再继续传值,这个等待的时间是随机产生的。
最后,梅特卡夫把这套系统名为以太网
以太网发展过程

网卡和mac地址

二层交换机
交换机是根据mac地址来转发数据的
以太网数据帧格式

这里提到的FCS帧检验序列,也就是用于检验是否丢帧。