网络初识
- [1. 局域网和广域网](#1. 局域网和广域网)
-
- [1.1 局域网(LAN)](#1.1 局域网(LAN))
- [1.2 广域网WAN](#1.2 广域网WAN)
- [2. 网络通信基础](#2. 网络通信基础)
-
- [2.1 IP地址](#2.1 IP地址)
- [2.2 端口号](#2.2 端口号)
- [3. 协议 -- 重点](#3. 协议 -- 重点)
-
- [3.1 网络通信协议拆分成多层](#3.1 网络通信协议拆分成多层)
- [3.2 TCP/IP 五层网络协议](#3.2 TCP/IP 五层网络协议)
- [4. 封装和分用](#4. 封装和分用)
-
- [4.1 封装过程](#4.1 封装过程)
- [4.2 分用过程](#4.2 分用过程)
- [4.3 网络传输的数据单位](#4.3 网络传输的数据单位)
- [5. 网络编程中的客户端和服务器](#5. 网络编程中的客户端和服务器)
-
- [5.1 客户端和服务器之间交互模式](#5.1 客户端和服务器之间交互模式)
1. 局域网和广域网
1.1 局域网(LAN)
- 局域网,Local Area Network,Local即标识了局域网是本地,局部组建的一种私有网络。
- 局域网内主机之间能方便的进行网络通信,又称内网;局域网和局域网之间在没有连接的情况下是无法通信的。
- 常见的组建局域网的方式是通过路由器或者交换机
1.2 广域网WAN
- 广域网,Wide Area Network,简称WAN。
- 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部局域网都属于其子网。
== 常见笔试题==:交换机和路由器的区别 :
路由器是工作在网路层,交换机是工作在数据链路层。
2. 网络通信基础
2.1 IP地址
- IP地址,描述了一个设备在网络上的位置。
- 计算机中通过数字来描述地址,本质上是32位,4个字节的整数。为了方便表示,把IP地址表示成点分十进制,使用三个符号 . (点)来把这4个字节分成4个部分,每个部分1个字节取值范围是0-255。
2.2 端口号
- 描述一个主机上的哪个应用程序。有了IP地址可以确定主机,但是一个主机上可能有很多个程序在使用网络
- 主机收到网络数据就需要区分出是交给哪个程序使用数据
- 每个程序在进行网络通信过程中,都需要一个端口号(可能是用户手动指定也可能是系统自动分配的)。
- 同一个主机上,程序之间使用的端口号不能冲突
进行一次网络通信的过程中,涉及到的IP和端口其实各有两个,有目的IP和目的端口,源IP和源 端口。
3. 协议 -- 重点
协议,是一种通信过程中的约定,发送方和接收方需要提前商量好数据的格式,才能确保两者之间能正确进行沟通。
3.1 网络通信协议拆分成多层
- 把功能定位相似的协议放到同一层之中。
- 上层协议会调用下层协议的功能
- 下层协议给上层提供服务
- 只有相邻的层次之间可以进行沟通,不能跨层次调用
协议分层是为了让复杂的一个协议变成更简单的多个协议:
- 上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了) 。比如只要会说汉语就能打电话,不需要了解电话的工作原理。
2.某一层的协议进行替换之后,对于其他层没有影响
3.2 TCP/IP 五层网络协议
OSI 七层网络协议简化为 TCP/IP 五层协议。
- 应用层:传输的数据在应用程序中如何使用
- 传输层:负责关注 网络数据包 的起点和终点
- 网络层:负责关注 通信中的路径规则,(起点终点之间走那条路)
- 数据链路层: 负责关注 相邻节点之间的通信细节
- 物理层: 网络通信的基础设施
主机,它的操作系统内核实现从传输层到物理层的内容,即TCP/IP的下四层。
路由器,它实现了从网络层到物理层,下三层。
交换机,实现了从数据链路层到物理层,下两层。
集线器,只实现了物理层。
路由器工作在网络层,交换机工作在数据链路层,这里的路由器和交换机指的是经典的路由器交换机。事实上,很多交换机也具有一些路由器的功能,也能工作在网络层。很多路由器,也具有一些交换机的功能,也能工作在数据链路层。
4. 封装和分用
封装和分用是网络传输数据过程中最核心的流程。
4.1 封装过程
假设A通过QQ给B发送一个hello。
- 应用层(应用程序qq):
QQ从消息输入框获取到用户输入的hello,就把这个字符串构造成一个应用层的数据包,然后设置一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式来构造的。随后应用程序就会调用操作系统提供的api,把这个数据包交给传输层 。
- 传输层:
传输层就会把上述数据作为一个整体,再构造成一个传输层的数据包。传输层涉及的协议,主要是TCP和UDP ,此处假定使用UDP来进行通信,就会构成一个UDP的数据包 。随后调用下层协议提供的api,并且把刚才构造好的数据通过参数传过去,下层协议进行处理数据 。即调用网络层,网络层继续进行封装。
- 网络层:
网络层涉及的最核心的协议是IP协议。网络层IP协议,把传输层的UDP数据包作为一个整体,再拼上一个IP协议的报头,构造成一个IP数据包 。构造完之后IP协议继续调用数据链路层的api,把数据交给数据链路层这里的协议进行处理 。
- 数据链路层:
数据链路层的核心协议:以太网 ,以IP数据包作为一个整体,在这个基础上添加帧头和帧尾。然后调用物理层的api。
- 物理层 :
也就是硬件设备,把以太网数据帧,二进制结构(一串0 1 这样的数据),转换成光信号(光纤)/电信号(网线)/电磁波(无线wifi),然后进行发送。
4.2 分用过程
暂时不考虑中间过程,假定数据包已经到达B的网卡了,B的处理过程就叫分用。
- B的物理层,
收到了 光信号/电信号/电磁波,就会把这些物理信号 转换成 数字信号。得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层。 - 数据链路层:
按照以太网数据帧的格式来解析,取出其中的载荷,再交给上层协议。
- 网络层 IP协议:
按照IP协议的格式进行解析,取出其中的载荷交给上层协议。
- 传输层UDP协议:
按照UDP协议进行解析,并且取出载荷交给上层协议
- 应用层 QQ程序:
按照QQ应用程序内部的应用层协议格式来进行解析数据。
qq程序拿到这些信息之后在窗口弹出展示,即显示到聊天窗口上。
4.3 网络传输的数据单位
- 包(packet) IP数据包
- 段(segment) TCP数据段
- 报(datagram) UDP数据报
- 帧(frame) 以太网数据帧
5. 网络编程中的客户端和服务器
- 在网络中主动发起通信的这一方,称为 客户端,被动接受的这一方,称为 服务器。
- 同一个程序在不同的场景中,可能是 客户端也可能是服务器。
- 客户端给服务器发送的数据,称为请求(request)
- 服务器在客户端返回的数据,称为响应(response)
5.1 客户端和服务器之间交互模式
- 一问一答:一个请求对应一个响应,如网站开发
- 一问多答:一个请求对应多个响应,如下载。
- 多问一答:多个请求对应一个响应,如上传。
- 多问多答:一个请求可能对应多个响应,一个响应也可能对应多个请求。如远程控制,进行鼠标键盘操作,都会作为一个的请求发送,看到的画面,作为响应。