目录
[一. 局域网和广域网](#一. 局域网和广域网)
[1.1 局域网](#1.1 局域网)
[1.2 局域网组建网络的方式](#1.2 局域网组建网络的方式)
[1.3 广域网](#1.3 广域网)
[二. IP地址与端口号](#二. IP地址与端口号)
[2.1 IP地址的概念](#2.1 IP地址的概念)
[2.2 IP地址的概念](#2.2 IP地址的概念)
[2.3 端口号的概念](#2.3 端口号的概念)
[2.4 端口号的格式](#2.4 端口号的格式)
[三. 协议](#三. 协议)
[四. 五元组](#四. 五元组)
[五. 协议分层](#五. 协议分层)
[5.1 协议分层的概念](#5.1 协议分层的概念)
[5.2 协议分层的模型](#5.2 协议分层的模型)
[5.2.1 OSI(七层网络模型)--了解即可](#5.2.1 OSI(七层网络模型)--了解即可)
[5.2.2 TCP/IP五层(或四层)模型--重点](#5.2.2 TCP/IP五层(或四层)模型--重点)
[六. 网络数据传输的基本流程](#六. 网络数据传输的基本流程)
一. 局域网和广域网
1.1 局域网
局域网(Local Area Network,简称LAN) 是指在较小地理范围内(如单一办公室、家庭、学校教学楼、企业园区等),将多台计算机、服务器、打印机等设备通过有线或无线方式互联,实现设备间数据传输、资源共享的计算机网络。
1.2 局域网组建网络的方式
- 基于网线直连

- 基于集成器组建

- 基于交换机组建

- 基于交换机和路由器组建

路由器用来组建局域网,而交换机主要是用来扩展路由器的接口个数
路由器有WAN接口和LAN接口两种接口,WAN接口是用来连接广域网,而LAN接口是用来连接局域网的
而交换机只有LAN接口
1.3 广域网
广域网(Wide Area Network,简称WAN) 是覆盖大范围地理区域(如城市、国家、全球),将多个局域网(LAN)、城域网(MAN)等局部网络互联,实现跨地域数据传输和资源共享的计算机网络。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部 的局域网都属于其子网。

二. IP地址与端口号
2.1 IP地址的概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主 机的网络地址。就像我们发送快递⼀样,需要知道对方的收货地址,快递员才能将包裹送到⽬的地。
2.2 IP地址的概念
IP地址是⼀个32位的⼆进制数,通常被分割为4个"8位⼆进制数"(也就是4个字节),如: 01100100.00000100.00000101.00000110。通常⽤"点分⼗进制"的⽅式来表⽰,即a.b.c.d的形式(a,b,c,d都是0~255之间的⼗进制整数)。 如:100.4.5.6。
2.3 端口号的概念
在⽹络通信中,IP地址⽤于标识主机⽹络地址,端⼝号可以标识主机中发送数据、接收数据的进程。 简单说:端⼝号⽤于定位主机中的进程。 类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。
2.4 端口号的格式
端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据。
总的来说 :
- IP地址用来确定是哪个主机/硬件设施,而端口号确定的是这个主机中具体正在运行的哪个进程(同一个主机上的客服端/服务器上的IP地址一定是相同的,而同一个主机上的客服端/服务器的端口号通常是不同的)
- 一个主机可以同时拥有多个IP地址,取决于它有多少个物理/虚拟网卡(网卡是主机用来连接所有类型网络(局域网/广域网....)的通用通信接口),但是多个网卡可能连接在同一个局域网内)
- 一个主机的IP地址主要配备有两种:一种是在局域网中配置的私有IP(在同一个局域网中的不同IP地址必定是不同的),另一种是广域网中配备的公网IP(公网IP是由路由器的WAN接口连接互联网服务提供商的网络,所分配到的IP地址)--同一个路由器下连接的所有主机的公网IP是同一个
三. 协议
协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。 协议(protocol)最终体现为在⽹络上传输的数据包的格式。
就好⽐⻅⽹友,彼此协商胸⼝插⽀玫瑰花⻅⾯,这就是⼀种提前的约定,也可以称之为协议。
四. 五元组
在协议中,⽤五元组来标识⼀个⽹络通信:
-
源IP:标识源主机
-
源端⼝号:标识源主机中该次通信发送数据的进程
-
⽬的IP:标识⽬的主机
-
⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
-
协议号:标识发送进程和接收进程双⽅约定的数据格式

五. 协议分层
5.1 协议分层的概念
协议分层是将网络通信的复杂功能拆解为多个独立、有序的层次,每一层仅实现特定核心功能,并通过标准化接口与上下层交互,最终协同完成数据传输的设计方法。
简单来说,它类似快递运输:
-
寄件人(应用层)只负责打包物品、填写地址,不用管运输方式;
-
快递网点(传输层)负责给包裹贴单号、安排运输工具,不用管物品内容;
-
运输公司(网络层)负责规划路线、跨区域转运,不用管最后一公里怎么送。
每一层各司其职,只和直接相邻的层对接,降低了整体复杂度。
总的来说:上层协议不必关系下层协议的细节,就可以直接使用--达到解耦合的效果---通信协议中的每一层都可以灵活使用
5.2 协议分层的模型
5.2.1 OSI(七层网络模型)--了解即可
OSI七层模型划分为以下七层:

5.2.2 TCP/IP五层(或四层)模型--重点
TCP/IP五层(或四层)模型是OSI(七层网络模型)的简化与实用化版本
TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。
• 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
• 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机。
• ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
• 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
• 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。物理层我们考虑的⽐较少。因此很多时候也可以称为TCP/IP四层模型。
这五层就相当与网购的整个过程:
应用层 :决定了买来的东西是用来干什么的,即决定了应用程序是如何使用或者构造传输的数据,而这个数据是用来干啥的。
传输层 :约定了发货的起点和收件人的终点之间的通信的规则,不关心中间的通信过程。负责制定端到端的通信规则,不关心中间的传输过程。
网络层 :关心在快递运输的过程中,从起点如何到终点,中间的路线怎么走,都需要统一负责。核心职责是确定数据从源主机到目标主机的中间路径,统一负责路由选择。
数据链路层 :相当于快递公司的具体员工,负责两个相邻节点之间的具体传输过程。即专注于相邻两个网络设备之间的具体数据传输过程。
物理层:对应网购"提供交通基础设施(如高速、铁路)",在网络中负责约定物理传输介质的标准,比如网线、光纤的构造规范。
TCP/IP五层(或四层)模型是OSI(七层网络模型)的对比图:

TCP/IP五层协议,并不是唯一的网络协议层次划分方式,还有其它的一些方法
六. 网络数据传输的基本流程
网络数据传输的过程实际上就是是对数据的封装与分用
下面我以用QQ发送"hello"为例:
-
应用层 :在键盘上输入"hello",按下发送键--->QQ程序读取到输入框的内容(hello),把"hello"构造成一个"应用层数据包"--->调用传输层的接口,把上述数据包交给传输层(应用层数据包的内容格式、字段含义、组织方式等,都由对应的应用层协议明确规范。比如浏览器用HTTP协议,应用层数据就必须符合HTTP请求行、报头、载荷的格式,而传输层的协议;而传输层的协议只是用来传输已经构造好的应用层数据包的-数据的搬运工)
-
传输层:传输层有很多协议,假如我们这里使用UDP协议;在应用层数据包的基础上封装成传输层数据包-->调用网络层的接口,将封装好的传输层数据包交给网络层
-
网络层:网络层也有很多协议,此处假设使用IP协议;IP协议在传输层数据包的基础上进一步封装成网络层数据包-->调用数据链路层的接口,将封装好的网络层数据包交给数据链路层
-
数据链路层:数据链路层也有很多协议,此处假设使用以太网;以太网在传输层数据包的基础上进一步封装成数据链路层数据包-->调用物理层的接口,将封装好的数据链路层数据包交给物理层
-
物理层:通过网卡,把上述的二进制数据包转化为电信号/光信号/电磁波,传输出去了
下面是封装的过程图:

注意我们是在发送方本地把应用层数据包逐步封装成物理层数据包才发送出去,而不是在传输的过程中再依次的封装--物理层是数据能实际传输的"最终出口"
网络传输一次数据的基本单位:1.包(Packet)--网络层 2.段(segment)--传输层TCP 3.报(datagrame)--传输层UDP 4. 帧(frame)--数据链路层
而在数据传输的中间过程中 中间设备(如路由器、交换机)会对数据进行解封装(分用)和针对性的重新封装:
- 遇到交换机:交换机收到数据也会对其进行分用(实现精准的二层转发),只需分用解析物理层和数据链路层,分用到数据链路层后,重新封装即重新拼接上以太网数据帧,再重新转化成光电信号
- 遇到路由器:路由器收到数据后,也会分用/解析(实现精准的三层转发),只需要解析物理层,数据链路层和网络层,然后再从网络层逐层重新封装到物理层,再发送出去
而发送到接收方后的分用过程是封装的反过程,这里就不过多介绍了。