目录
前言:接下来我们将走进计算机网络,初步了解网络知识,掌握基本的网络知识。
1.局域网与广域网
1.1:局域网
用几根线把几个主机连接起来,或者借助交换机,路由器将多个主机连接起来,这样组成一个局域网。
: 这里的路由器其实有两类端口,WAN口:这里是通过WAN口连接到另外一个局域网,入户宽带一般就是插在wan口上面。 LAN口:其中插在lan口上的设备,是在一个局域网里面)如上图,可以视为A是B的局域网中的一个设备。
一个局域网内部的主机之间就可以相互进行访问。
1.2:广域网
广域网其实和局域网之间,没有明确界限。认为比较大的局域网,就可以称为"广域网",全世界最大的广域网,叫做Internet(因特网)。
2:网络基础知识
1.IP地址
IP地址主要用于标识网络主机,简单来说:IP地址用于定位主机的网络地址。格式:是一个32位的整数,但是由于32位的整数,不方便人来读和记忆~~,一般常见的操作都是把这个32位的整数,按照每个字节,分成四个部分~~,中间用.来进行分割,"点分十进制"。
2.端口号
端口号描述了一个主机上的莫个应用程序,用于定位主机中的进程。端口号是0-65535范围的数字
注意:两个不同的进程,不能绑定同一个端口号,但是一个进程可以绑定多个端口号。
3.协议
协议的本质上就是约定,发出来的数据是啥样的格式,接受方按照对应的格式来进行解析。计算机之间的协议,通常由三要素组成:
1.语法:既数据与控制信息的结构或样式。
2.语义:既需要发出何种控制信息,完成何种动作以及何种响应。
3.时序:既事件实现顺序的详细说明。
协议最终体现为在网络上传输的数据包的格式。
3.协议分层
3.1:分层的好处
好处1:每层协议不需要理解其他层协议的细节(封装)。
好处2:把对应层的协议替换成其他协议(更好的解耦合)。
3.2:TCP/IP五层(或四层)模式
物理层:网络通信中的硬件设备,网线/网卡....针对硬件设备的约定,就是物理层协议所负责的范畴,需要保证所有的主机和网络设备之间,都是相互匹配的。
数据链路层:负责完成相邻的两个设备之间的通信的,相邻是一根网线相连接的两个设备。
网络层:负责点到点之间的通信,网络中的任意节点到任意节点之间的通信(不一定是相邻了,更多的值不相邻的。)网络层就负责在这两个点之间,规划出一条最合适的路线。
传输层:负责端到端之间(起点和终点)的通信。只是关注结果(数据到没到)不关注过程(不关注数据是走哪条路进行转发的)
应用层:和应用程序密切相关,是取决于程序猿的编写。
4:封装和分用
4.1:封装
这里跟Java中的继承,封装,多态中的封装不是同一个意思。
1.应用层:
这样的一个应用层的协议报文的格式是虚拟的。应用层的协议是根据程序猿进行编写的。应用层协议来构造一个应用层的数据报文。
应用层协议就调用操作系统提供的API(称为socket API)把应用层的数据交给传输层(这时候就已经操作系统内核了)
2.传输层(操作系统内核)
根据刚才传过来的数据,基于当前使用的传输层协议,来添加出一个传输层的协议报文,传输层最典型的协议,UDP,TCP
TCP的报头中有很多信息,其中最重要的,就是"源端口"和"目的端口"。
TCP的数据报= TCP报头+数据载荷(也就是一个完整的应用层数据)。
接下来就会把这个传输层的数据报,交给网络层。
3.网络层(操作系统内核)
拿到了完整的传输层数据报,就会再根据当前使用的网络层(例如IP),再次进行封装....把TCP数据报构造成IP数据报,还是添加上一个网络协议报头
IP的协议报头:这个报头也有很多重要的信息,最重要的就是源IP和目的IP。
IP数据报=IP协议报头+载荷(完整的TCP/UDP的数据报)
紧接着,当前的网络层协议就会把这个IP数据报,交给数据链路层。
4.数据链路层(驱动程序)
在刚才的IP数据报基础上,根据当前使用的数据链路层的协议,给构造成一个数据链路层的数据报,典型的数据链路层的协议,叫做"以太网",就会构造一个"以太网数据帧"。
以太网数据帧=帧头+IP数据报+帧尾
帧头:最重要的信息,接下来要传给下一个网络节点设备(相邻节点)的地址是啥。
帧尾:校验和(后面会详细的介绍)。
5.物理层(硬件设备)
这里做的工作,就是根据刚才的以太网数据帧(其实就是一组 0 1)把这里的01变成高低电频,通过网线传输出去。
4.2:分用
分用就是封装的逆过程。
1.物理层(硬件设备,网卡)
主机B的网卡感知到一组高低电频,就会把这些电频翻译成0 1的一串数据,然后这一串0 1就是一个完整的以太网数据帧。
物理层就把这个数据交给了数据链路层。
2.数据链路层(驱动)
数据链路层负责对这个数据进行解析,去掉帧头和帧尾,取出里面的IP数据报,然后交给网络层协议。
3.网络层(操作系统)
网络层协议(IP协议)又会对这个数据进行解析,去掉IP协议报头,取出里面的TCP数据报,然后再交给传输层。
4.传输层(操作系统内核)
传输层协议(TCP协议)又会对这个数据进行解析,去掉TCP协议报头,取出里面的TCO数据报,交给应用层。
5.应用层(应用程序)
应用层就会调用socket API从内核中读取到这个应用层数据报,再按照应用层协议进行解析,根据解析结果给显示到应用窗口中。
上面的封装和分用只考虑了起点和终点的情况,那如果起点和终点有交换机和路由器的话,那该咋办勒?
4.2.1:交换机
交换机先分用数据,解析到数据链路层,更新以太网数据帧的帧头里的地址,然后再重新封装,并进行转发 。
4.2.2:路由器
路由器先分用数据到网络层,拿到IP地址之后,进行下一个阶段的路径规划,然后重新往下封装并进行转发。
无论网络多么复杂,这里整体的传输过程都是类似的,只是在不停的重复封装和分用的过程。
总结:
以上就是我总结的基本的网络原理知识,若有不对的地方,请各位铁子留言纠错,若感觉不错,请一键三连。