一、TCP/IP五层(或四层)模型
TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
❍ 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
❍ 数据链路层:负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
❍ 网络层:负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
❍ 传输层:负责两台主机之间的数据传输. 如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
❍ 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
物理层我们考虑的比较少,我们只考虑软件相关的内容,因此很多时候我们直接称为TCP/IP四层模型
一般而言:
-
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容
-
对于一台路由器,它实现了从网络层到物理层
-
对于一台交换机,它实现了从数据链路层到物理层
-
对于集线器,它只实现了物理层
但是并不绝对,很多交换机夜实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)
上面的内容我们只是懂了一些基本概念,还是达不到我们的目标,下面我们再次重新理解协议和协议分层
为什么要有TCP/IP协议?
首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:SATA,IDE,SCSI等。只不过我们感知不到罢了。而且这些协议都在本地主机各自的硬件中,通信的成本,问题比较少
其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会带来新的问题,有问题就要解决问题,所以需要新的协议
所以,为什么要有TCP/IP协议?本质就是通信主机距离变远了
什么是TCP/IP协议?
TCP/IP协议的本质是一种解决方案
TCP/IP协议能分层,前提是因为问题们本身能分层
TCP/IP协议与操作系统的关系(宏观上,怎么实现的)
所以究竟什么是协议?
截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了
OS源代买一般都是用C/C++语言写的
下面,仔细看看下面的图
问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?
回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol,也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有“共识”,能够识别对方发来的数据,这不就是约定吗?
关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型
因为协议栈是分层的,所以,每层双方都有协议,同层之间,互相可以认识对方的协议
网络购物,快递单的例子
二、网络传输的基本流程
局域网(以太网为例)通信原理
-
首先回答,两台主机在同一个局域网,是否能够直接通信?是的
-
原理类似于上课,老师和学生在同一个教室中,老师让张三同学起来,其他同学听见了,但是自动忽略这个信息,张三听见了,张三站了起来
-
每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac地址
认识MAC地址
✸ MAC地址用来识别数据链路层中相连的节点
✸ 长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
✸ 在网卡出厂时就确定了,不能修改,mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会会冲突;也有些网卡支持用户配置mac地址)
后续我们详细谈论数据链路层的时候,会谈mac帧协议,此处我们做一个了解即可
以太网中,任何时刻,只允许一台机器向网络中发送数据;如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞,所有发送数据的主机要进行碰撞检测和碰撞避免
没有交换机的情况下,一个以太网就是一个碰撞域,局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过mac地址判定
这里可以试着从系统角度来理解局域网通信原理,因为任何时刻,只允许一台机器向网络中发送数据,这不就是临界资源吗?对数据的访问就是对临界资源的访问
初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程
其中每层都有协议,所以当我们进行上述传输流程的时候,要进行封装和解包
下面我们明确一下概念
❍ 报头部分,就是对应协议层的结构体字段,我们一般叫做报头
❍ 除了报头,剩下的叫做有效载荷
❍ 故,报文 = 报头 + 有效载荷
然后我们在明确一下不同层的完整报文的叫法
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上一层协议处理。
最后,在整体复盘一下
在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,再自底向上进行向上交付
数据包封装和分用
下图为数据封装的过程
下图为数据分用的过程
从今天开始,我们学习任何协议,都要先宏观上建立这样的认识:
❍ 要学习的协议,是如何做到解包的?只有明确了解解包,封包也就能理解
❍ 要学习的协议,是如何做到将自己的有效载荷,交付给上层协议的?
网络中的地址管理-认识IP地址
IP协议有两个版本,IPv4和IPv6,我们接下来,凡是提到IP协议,没有特殊说明的,默认都是IPv4
-
IP地址是在IP协议中,用来标识网络中不同主机的地址
-
对于IPv4来说,IP地址是一个4字节,32位的整数
-
我们通常也使用“点分十进制”的字符串表示IP地址,例如 192.168.0.1;用点分割的每一个数字表示一个字节,范围是0-255;
跨网段的主机的数据传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
下面是一张示意图
首先理解一下IP地址的意义
-
为什么要去目标主机,要先走路由器?
网络互联:互联网是由无数个不同的网络组成的,这些网络可能是局域网、城域网或广域网。路由器是连接这些不同网络的设备,它们负责将数据从一个网络传输到另一个网络。
最优路径选择:路由器根据网络拓扑和路由协议,选择数据包从源主机到目的主机的最优路径。这个过程涉及到路由表的查询和更新。
数据包转发:当数据包到达路由器时,路由器会检查数据包的目的IP地址,然后根据路由表决定下一个转发节点,并将数据包发送出去。
地址解析:IP地址是一个逻辑地址,而实际的数据传输需要在物理网络上进行。路由器负责将逻辑地址解析为物理地址(如MAC地址),以便在物理网络上正确传输数据包。
网络隔离:路由器还可以提供网络隔离的功能,通过设置访问控制列表(ACL)等安全措施,防止未经授权的访问。
-
目的IP的意义?
目的IP地址在网络通信中具有至关重要的意义,以下是其主要作用和意义:
标识接收方:目的IP地址指定了数据包要发送到的最终目标设备。在网络中,每个设备都需要有一个唯一的IP地址,目的IP地址就是用来标识这个特定的接收设备。
数据包路由:网络中的路由器使用目的IP地址来确定数据包应该被转发到哪个网络。路由器根据目的IP地址在路由表中查找匹配的条目,以决定数据包的下一跳地址。
网络层寻址:在OSI模型中,IP地址属于网络层。网络层负责寻址和路由,目的IP地址是这一过程中的关键组成部分,它帮助网络层确定如何将数据包从源主机传输到目的主机。
分段和重组:在数据包传输过程中,如果数据包太大而无法在一个网络段中传输,它可能会被分段。每个分段都会包含目的IP地址,以确保所有分段都能正确地重组到目的地。
多播和广播:目的IP地址还可以用于特殊类型的通信,如多播(发送到一组特定的设备)和广播(发送到网络上的所有设备)。特殊的目的IP地址,如224.0.0.0到239.255.255.255用于多播,而255.255.255.255用于本地广播。
网络安全:目的IP地址在网络安全策略中也扮演重要角色。例如,防火墙可以使用目的IP地址来允许或拒绝特定的网络流量。
端到端通信:目的IP地址是实现端到端通信的关键,它确保了数据可以从发送方传输到接收方,无论这两者之间相隔多远或者经过多少个网络设备。
以下是目的IP地址的一些具体意义:
-
唯一性:目的IP地址必须是唯一的,以确保数据包能够准确地到达预期的设备。
-
层次性:IP地址具有层次结构,包括网络部分和主机部分,这有助于路由器高效地处理数据包。
-
可路由性:目的IP地址必须是可路由的,这意味着它必须是一个有效的公网或私网地址,且在路由器的路由表中有所记录。
总之,目的IP地址是网络通信中不可或缺的元素,它确保了数据能够被正确地发送、路由和接收。
然后结合封装与解包,体现路由器解包和重新封装的特点
对比IP地址和MAC地址的区别
◉ IP地址在整个路由的过程中,一直不变(目前,我们只能这样说明,后面在修正)
◉ Mac地址一直在变
◉ 目的IP是一种长远目标,Mac是下一阶段目标,目的IP是路径选择的重要依据,mac地址是局域网转发的重要依据
提炼IP网络的意义和网络通信的宏观流程
P网络层存在的意义:提供网络虚拟层,让世界的所有网络都是IP网络,屏蔽了最底层网络的差异