目录
一、网络通信
网络通信是指计算机之间通过网络传输数据,根据网络互联的模式可分为局域网和广域网。
1.局域网LAN
- 局域网是局部组建的一种私有网络。
- 内网:局域网内的主机之间网络通信较为方便。
- 局域网和局域网之间没有连接的情况下是无法通信的。
- 局域网组建网络的方式:基于网络直连、基于集线器组建、基于交换机组件、基于交换机和路由器组建。
2.广域网WAN
-
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于他的子网。
二、网络基础概念
1.IP地址
- IP地址用于标识网络主机、其他网络设备(如路由器)的网络地址。IP地址用于定位主机的网络地址。例如寄快递,收货地址就相当于ip地址。
2.端口号
-
在网络通信中, IP 地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。端口号就是用于定位主机中的进程 。例如寄快递,不但需要指定收货地址,还需要指定收件人,此时的收件人就相当于端口号。
3.协议
- 概念:协议是构成整个网络的基础,是一种约定,发送方和接收方约定好按照特定的格式来进行传输。网络通信中,主机之间传输的数据本质是光信号和电信号,当传输双方进行约定并遵守约定就可以进行数据传输。
- 协议分层:由于协议太过庞杂,把功能大的复杂的协议拆分成单一的小协议,再按照功能进行分类(协议分层),上层协议调用下层协议,下层协议给上层协议提供服务,但是有限定条件,不能隔层调用。
- 协议分层的好处:①封装,学习理解的成本较低,需要哪个学哪个;②方便维护,可以针对某层协议进行替换。
- 网络协议具体分层:①OSI七层;②TPC/IP五层(四层)。
3.1 OSI(七层)
3.2 TPC/IP五层(四层)
OSI七层模型把上面的三层合并就成了TCP/IP中的应用层。
只有应用层是需要自己编写代码,操作系统是操作系统内核实现的,设备驱动程序与网络接口是硬件和驱动实现的。
- 应用层:应用程序;
- 传输层:端到端的传输,只考虑起点和终点;
- 网络层:点到点的传输,不但要考虑起点终点,还得考虑怎么走保证速度快成本低,路径规划;
- 数据链路层:相邻节点之间的传输,一个节点一个节点的过程,比如买快递每到一个站点如何送,用飞机还是长途汽车;
- 物理层:底层基础设施,硬件设备,比如快递运输过程中的公路、铁路、航线等。
4.封装和分用
4.1 应用层
例如QQ应用程序,内部约定好了自己的应用层协议,QQ应用程序会把用户输入的字符串构造成约定好的应用层协议的报文,接下来把这个应用数据报交给传输层协议,传输层是操作系统内核实现的,操作系统会提供一些API(socket api)给应用程序,代码调用API把应用层的数据交给传输层。
4.2 传输层
传输层中有很多协议,最典型的就是TPC协议,以TPC协议为例,TPC协议在之前的数据的基础上加上一个TPC的协议报头,包含源端口和目的端口。就像我们买回来的快递就会进行层层包装,一方面是保护商品,另一方面就可以在包裹上贴快递单基本信息,加TPC协议报头就相当于贴快递单。
4.3 网络层
传输层需要继续把这个数据交给网络层进行处理,网络层最典型的就是IP协议,加上IP协议报头,提供源IP和目的IP。
4.4 数据链路层
构造好IP数据报之后,就继续交给数据链路层处理,数据链路层最典型的协议就是以太网,我们使用的网线也叫“以太网线”,对应的网线也需要遵守以太网的协议,以太网协议既处理数据链路层也处理物理层,所以通过以太网进行数据传输。以太网协议在之前的数据基础上加上一个以太网数据帧头和帧尾(报、包、段、帧,都是描述网络数据的叫法),除过帧头和帧尾,其余的部分叫做载荷。
4.5 物理层
数据链路层将数据继续交给物理层,就走到硬件设备,比如说网卡将上述数据的二进制bit流转换成光信号或者电信号并进行运输。
封装:以上过程中数据从上到下层层添加信息的过程就叫做封装。
分用:分用就是封装的逆过程,如果封装是包装快递,那分用就是一层一层拆快递,以下过程就是分用过程。
4.6 物理层
接收方的网卡这样的硬件设备就受到了光信号/电信号,将这个信号转成了二进制bit数据。
4.7 数据链路层
上面转换的数据交给数据链路层,由以太网负责解析,当前拿到以太网数据帧,由以太网协议去掉帧头和帧尾,取出载荷部分。
4.8 网络层
取出的载荷交给网络层,IP协议对IP数据报进行解析,去掉IP报头,得到载荷部分。
4.9 传输层
载荷部分交给传输层,TCP协议根据载荷进行解析,去掉TCP报头。
4.10 应用层
应用程序会根据应用层数据报进行解析,取出信息显示信息。
上述过程仅仅描述了发送方和接收方封装分用的过程,实际上还有很多省略掉的中间过程。
5.请求和响应
获取一个资源需要进行两次网络数据传输:请求数据发送->响应数据发送。发起请求后得到响应,就提供给我们想得到的东西。
6.客户端和服务器
- 客户端:获取服务的一方进程,称为客户端。
- 服务端:我们把提供服务的一方进程,称为服务端,可以提供对外服务。
-
常见的客户端服务端模型,客户端是指给用户使用的程序,服务端是提供用户服务的程序:1. 客户端先发送请求到服务端;2. 服务端根据请求数据,执行相应的业务处理;3. 服务端返回响应:发送业务处理结果;4. 客户端根据响应数据,展示处理结果(展示获取的资源,或提示保存资源的处理结果)。