文章目录
- 一、网络发展史
- 1.独立模式
- 2.网络互联
- 3.局域网(LAN)
- 4.广域网(WAN)
- 局域网组网的方式
- ①基于网线直连
- ②基于集线器(hub)组建
- ③基于交换机(switch)组建
- ④基于交换机和路由器组建
- 二、网络通信基础
- 1.ip地址与端口号
- 2.协议与协议分层
- 3.常见的协议分层模型——OSI&TCP/IP
- OSI七层模型
- TCP/IP五层模型
- 4.客户端与服务器
- 5.请求与响应
- 6.封装与分用
- 网络设备所在分层
- 概念
- 关于不同协议层的数据包
- 7.实例:两台主机之间的网络通信流程
一、网络发展史
1.独立模式
2.网络互联
ps:与计算机相同,计算机网络也是打仗打来的,即由军用逐渐过渡到商业上边的。
网络互联就是将多台计算机连接在一起,完成数据共享。而网络互联的本质又是网络数据传输,故网络互联又叫做网络通信。
而根据网络互联规模的不同,我们又分为了局域网和广域网。
3.局域网(LAN)
局域网即LAN(Local Area Network),是一种局部组建的私有网络。又因为局域网内的主机间可以方便的进行网络通信,而局域网与局域网之间没有相互连接的情况下是无法相互通信的,故又称为内网。
组建局域网的方式有很多,在讨论完网络的发展史之后我们进行总结说明。
4.广域网(WAN)
广域网即WAN(Wide Area Network),是通过路由器将多个局域网连接起来,在物理上组成了很大的网络,所以称为广域网,也称公网。广域网内的局域网都属于子网。
注意:需要特别说明的是,局域网和广域网只是一个相对的概念。例如,中国的网络对于全中国各个省份的局域网而言,就是广域网,而把中国网络放进全球而言,它又是一个局域网了。
局域网组网的方式
组网:就是主机直接连接主机。
多主机进行组网抽象模型一般有星型、总线型、环形、树形。
而下边我们主要讨论的是,实际生活中组建具体需要怎么做。
①基于网线直连
②基于集线器(hub)组建
③基于交换机(switch)组建
④基于交换机和路由器组建
二、网络通信基础
对于网络,我们必须掌握下边的概念/流程!
1.ip地址与端口号
(一)定义
ip地址:主要用来表示网络主机、其他网络设备(如路由器)的网络地址。
端口号:可以表示主机中发送数据、接收数据的进程。
对于它们的理解:ip地址用于定位主机的网络位置,端口号用于定位主机中的进程。就好比我们收发快递,ip地址就相当于我们的收件地址,端口号就相当于我们的手机号码,通过这两项收件人的身份可以被唯一确定。
(二)格式
- ip地址格式:ip地址是一个32位的二进制数,这也是它在网络通信中真实的模样。而为了方便我们查看,我们将其分割成4个“8位二进制数”(即4个字节,每个部分表示的范围为0~255(无符号)),也就是大名鼎鼎的“点分十进制”。
例如:01100100.00000100.00000101.00000110 转换为点分十进制就是100.4.5.6。
- 端口号格式:端口号是0~65535范围的数字。在网络通信中,进程可以通过绑定一个端口号。来发送及接收网络数据。
一般而言,OS会预留出一些数字给特定的程序,所以我们在指定时一般会避开这些端口号。(具体是哪些,暂时还没有去考究)
(三)注意事项
(1)在ip地址中有一类特殊的ip——127.*,叫做环回(loop back)ip,通常都是127.0.0.1。用于测试本机到本机之间的网络通信。
既然是网络通信,为什么要本机到本机??这是因为对于开发网络通信的程序(即网络编程)而言,常见的开发方式就是本机到本机之间的网络通信。此时系统内部为了性能,不会再走网络的方式进行传输。
而对于这种常见的网络编程手段而言,解决了如何定位网络的主机的问题,我们还要解决传输到目的机器后,哪个进程来接收这个数据?这就需要端口号来标识。
(2)两个不同的进程不能同时绑定一个端口号,但是一个继承可以绑定多个端口号。例如同一个进程可以绑定启动端口和收发数据的端口。
2.协议与协议分层
上边的ip地址和端口号解决了网络通信中的发送方和接收方的问题,那么问题又来了,网络通信是基于二进制0/1进行传输的,怎么告诉对方发送的数据是什么样的呢?到底什么内容?是什么格式?……基于此(网络数据传输),我们需要使用协议来规定双方的数据格式。
(一)协议的概念
协议即网络协议,网络协议是网络通信(即网络数据传输)经过的所有的网络设备都必须遵循的一组约定、规则。
简言之,协议就是对网络数据传输过程中发送方和接收方在数据格式上的限制。
协议的三要素:语法、语义、时序。
①语法:即数据与控制信息的结构或格式。相当于我们打电话时使用的语言。
②语义:即需要发出何种控制信息,完成何种动作与做出何种响应。相当于一方谈及一个话题,另一方不能不理,必须给予回应。
③时序:事件实现顺序的详细说明。相当于一方问了好几个问题,另一方要一一回应,与现实不同的是,这里回应的顺序是有要求的。
协议(protocol)最终体现在网络上传输数据包的格式。
(二)协议的作用
避免“语言不通”而导致的无法沟通,即为了顺利通信交流。
(三)网络通信五元组
在TCP/IP协议中,用五元组来标识一个网络通信。他们分别是源ip、源端口、目的ip、目的端口号、协议号。
其中源ip就是表示发送数据的主机,源端口号就是表示发送数据的主机的具体的进程,目的ip表示接收数据主机,目的端口表示接收数据的主机的具体的进程,
(四)协议分层的概念
将原本的通信协议拆分成小的模块,一层一层的,层与层之间又有定义好的转换规则,这个过程就叫做协议分层。
(五)协议分层的作用
- 通过封装,降低学习、使用和维护成本。
- 可以灵活针对某一层协议进行替换
这句话展开怎么理解呢?
网络通信比较复杂,需求场景复杂,实现的功能也会比较复杂,如果协议太复杂,学习成本太高,效率就会不尽任意。
所以针对复杂的大协议,拆分成了若干相对简单的小协议,对每层小协议再进行封装,每层封装之间又有定义好的转换规则,之后再进行组合,发现组合起来跟这个最终的大协议起到的作用是相同的。
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接
对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可
3.常见的协议分层模型——OSI&TCP/IP
OSI七层模型
OSI即Open System Interconnection,开放系统互联
说明:由于OSI七层模型复杂不实用,只在实验室存在过,最终没有落地商用,我们实际使用的协议分层也不是这个,所以我们这里只是介绍,重点放在后边的TCP/IP协议。
TCP/IP五层模型
TCP/IP协议其实是通过OSI演变过来的,TCP/IP是一组协议的代名词,他还包括很多协议,组成了TCP/IP协议族。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7ekLL8o-1676687583233)(F:\typora插图\image-20230218094106034.png)]
又因为物理层属于纯硬件,与程序员关系不大,所以四层TCP/IP协议栈的说法也不错。
4.客户端与服务器
客户端和服务器的概念是相对的。
主动发送请求的一方叫做客户端,接收请求的一方叫做服务器。
5.请求与响应
请求:请求就是客户端的向服务器发送的消息。
响应:响应就是服务器根据客户端的请求返回的消息。
6.封装与分用
要理解好清楚这对概念,我们就需要对网络设备所在的分层有所了解。
网络设备所在分层
- 一台主机的操作系统内核实现了从传输层到物理层的内容,也相当于TCP/IP中的应用层
- 一台路由器实现了从网络层到物理层,也相当于TCP/IP五层模型中的下三层(网络层+数据链路层+物理层)
- 一台交换机实现了从数据链路层到物理层 ,也相当于TCP/IP五层模型中的下两层(数据链路层和物理层)
- 一台集线器只实现了物理层
注:这里的路由器和交换机说的是传统意义上的(二层交换机、三层路由器)
概念
封装:应用层数据通过协议栈发送到网络上时,每层协议都要加上一个数据首部,称为封装。首部信息中包含了类似首部长度、载荷长度等相关信息。
分用:数据包发送到目的主机上后,会再逐层“剥掉”这些头部,根据这些头部进行解析,经过各层的合作下,最终得到正确的信息。
关于不同协议层的数据包
传输层:段(segment)
网络层:数据报(datagram)
链路层:帧(frame)
包(packet)
这里知道有这几个叫法,一般情况下不细分,用到再说。
7.实例:两台主机之间的网络通信流程
假设我们要发qq消息给另一个人,那么我们就是发送方,对方就是接收方,基于此,我们进行分析。