网络由单机发展到局域网发展到广域网发展到移动互联网。
1.路由器和交换机
当多个电脑插入一台路由器时,就能构成局域网,而路由器与路由器之间相连,就构成了广域网。路由器一次能接入的设备数量是有限的,当超过界限是,会影响网络信号。交换机就相当于路由器的拓展坞。
2.IP地址
IP地址是用来标识一台设备在网络中的位置。
3.端口号
一台主机上可能有多个程序使用网络,端口号就是用来区分这些程序的。
4.网络协议
网络协议就是指通信双方对于数据发送和接收的格式的约定。网络通信中协议非常关键,当多个主机都认同并遵守同一套协议时,网络通信才有意义。
5.五元组
进行一次网络通信涉及到5个非常关键的信息,分别源IP,源端口,协议类型,目的IP,目的端口,它们称为五元组。
6.协议分层
网络通信的过程非常复杂,如果我们只设计一份协议来解决方方面面的问题,那么这份协议势必会非常复杂,此时可以把一个大的协议拆分成若干个功能单一的小协议,将它们分组分层。
规定只有相邻两层协议之间可以进行交互,上层协议可以调用下层协议,下层协议可以为上层协议提供服务,协议之间的交互不能跨层执行。
1.分层的优点
1.封装
上层协议不需要了解下层协议的细节,直接调用即可
2.解耦
分层之后,灵活的替换某一层,对整体工作流程影响较小。
7.TCP/IP五层网络模型
如图所示,分为五层,越靠下就越接近底层(操作系统,硬件),越靠上就越接近软件层面。有些地方也称为四层模型,它们将物理层和数据链路层视为一层,因为物理层与硬件设备直接相关,很难和数据链路层解耦。
1.简单介绍
1.物理层
物理层规定了网络通信中一些硬件设施(网线,光纤,WIFI)的要求。
2.数据链路层
数据链路层规定了两个相邻设备之间是如何进行通信的,例如电脑和路由器/交换机,路由器和交换机等
3.网络层
网络层规定了任意两个设备之间是怎么进行通信的,中间可能隔着很多路由器和交换机。
4.传输层
也是任意两个设备之间是怎么进行通信的,不过只需要考虑起点和终点,不需要考虑中间的过程。
5.应用层
考虑数据拿到之后要怎么使用
2.不同设备
1.主机
工作过程主要涉及物理层到应用层
2.路由器
工作过程主要涉及物理层到网络层
3.交换机
工作过程主要涉及物理层到数据链路层
8.网络数据通信的基本流程
1.封装
这里以发送一条QQ消息为例,通过QQ发送hello给对方。
1.应用程序获取到用户的输入,构造一个应用层的数据包。这个应用层数据包会遵守应用层协议。这个协议一般是由开发这个程序的程序员自己定义的。这里我们假设协议规定需要发送者的QQ号,接收者的QQ号,发送信息,发送时间。
数据包里往往是结构化数据,发送数据的时候把结构化数据转化为字符串/二进制比特流(序列化),接收数据的时候把字符串/二进制比特流转化为结构化数据(反序列化)。
2.应用程序调用传输层提供的接口,把数据交给传输层,传输层拿到数据之后构造传输层数据包。传输层的协议主要由两个,TCP协议和UDP协议,这里我们示例的是TCP协议。TCP数据包主要包含TCP报头(TCP功能相关的属性)和TCP载荷(应用层数据包)
3.传输层构造好数据包之后,继续调用网络层的api,把传输层的数据包交给网络层,让网络层继续处理数据包。网络层最主要的协议是IP协议,IP数据包包含IP报头(源IP目的IP等信息)和IP载荷(传输层数据包)协议类型不只是一份数据,会有很多层,IP报头里就会记录传输层使用的协议。
目前为止,数据都还只在主机上。
4.IP协议继续调用数据链路层的api,把数据包交给数据链路层。数据链路层的核心协议是以太网。以太网协议也会在网络层数据包的基础上进一步加工。以太网数据包包括报头,载荷,尾巴
5.以太网继续将数据包交给硬件设备(网卡),网卡会将上述数据以光信号/电信号/电磁波的形式传输出去。
2.中间过程
传输的中间过程也是涉及到封装分用的,交换机只需要封装到数据链路层即可。
1.主机到交换机
交换机收到数据之后,物理层解析,数据链路层解析(没有网络层),重新构造出新的以太帧,发给下一个设备。数据链路层中,得到的以太网报头就足以进行交换机之间的工作了。
2.主机到路由器
路由器收到数据之后,物理层解析,数据链路层解析,网络层解析(没有传输层),重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发。
3.分用
数据到达接收方主机,逐层进行解析。
1.数据到达接收方网卡,将光电信号转化成二进制数据,然后将二进制数据交给数据链路层。
2.数据链路层按照以太网协议进行解析,把报头和尾巴取出来,剩下的载荷往上传输给网络层
3.网络层拿到数据之后,按照IP协议进行解析,把载荷交给传输层。
4.传输层拿到数据之后,按照TCP协议进行解析,把载荷交给应用层。
5.应用程序拿到数据,进行操作。
9.其他
1.只工作在物理层的设备,集线器,用来延长网线的,
2.只工作在传输层的设备,