①ip地址:标记一台网络设备所在位置
端口号:一台主机上有多个程序同时用网,端口就是区分不同程序的
网络协议:通信双方用于规定接收/发送 的数据格式的约定
多个设备遵守同一协议才能通信
②网络通信五元组:
源ip
源端口
目的ip
目的端口
协议类型
- IP:找到设备
- 端口:找到程序
- 协议:约定格式
③协议分层:把网络通信的大任务,拆成好几层小任务,每层只干自己的事,互不干扰。
如果我们设计一个协议,要完成网络通信中各种问题,那肯定会很复杂,很多。为了方便一点,就把整一大个协议分成多个小协议
每层只做一层的事,不用管别的层怎么实现 ,这就是分层思想。
同时还能起到封装和解耦合的作用:上层协议不用管下层的协议,某一层更换协议,对其他层没影响
封装(Encapsulation)
- 下层对上层屏蔽细节
- 上层不用管下层怎么实现
- 上层只需要调用下层提供的功能就行
解耦合(Decoupling)
- 层与层之间独立
- 某一层更换协议 / 技术
- 对上下层完全没影响
具体是怎么分层的?
(1)OSI七层模型
OSI = Open Systems Interconnection 开放式系统互联
OSI 七层(从上到下)
- 应用层:给用户用的(HTTP、FTP、DNS)
- 表示层:数据加密、压缩、格式转换
- 会话层:建立 / 管理 / 断开会话
- 传输层:端到端传输(TCP、UDP)
- 网络层:寻址、路由(IP)
- 数据链路层:局域网传输(以太网)
- 物理层:电气信号、网线、光纤
但是由于7层太复杂,所以这个分层没有实现
现实里用的都是TCP/IP五层(或四层)模型
(2)TCP/IP 五层模型(上课、写代码用这个)
从上到下:
- 应用层: 负责数据最终怎么给应用程序使用,提供应用之间的通信交互
- 传输层:两个设备之间的通信,只考虑起点和终点
- 网络层: 负责跨网络的寻址与路由 ,确定数据包从源主机到目标主机走哪条路(路由器工作在这一层)。
- 数据链路层: 负责同一局域网内相邻设备之间的数据帧传输,负责设备识别、差错校验、帧同步(交换机工作在这一层)。
- 物理层:规定硬件设施的要求, 比如硬件电气 / 光信号传输,规定电压、接口、介质、传输速率等硬件标准。
・应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
・传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到⽬标主机。
・⽹络层:负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹络层。
・数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步 (就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测 (如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线 LAN 等标准。交换机(Switch)⼯作在数据链路层。
・物理层:负责光 / 电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线 (双绞线)、早期以太⽹采⽤的同轴电缆 (现在主要⽤于有线电视)、光纤,现在的 wifi ⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。
(2)TCP/IP 四层模型(工业、教材另一种说法)
把数据链路层 + 物理层合并成一层 ,叫网络接口层:
- 应用层
- 传输层
- 网络层
- 网络接口层
123层都跟5层模型一样,第四层就是把5层模型的4,5层合并了
④⽹络设备所在分层(以五层模型为例)
主机:从物理层→应用层(全部覆盖)
路由器:从物理层→网络层
交换机:从物理层→数据链路层
集线器:物理层
⑥网络分层对应
(1)同一个局域网里两台主机进⾏⽂件传输:
| 分层 | 对应协议 / 内容 |
|---|---|
| 应用层 | Telnet、FTP 和 e-mail 等 |
| 传输层 | TCP 和 UDP |
| 网络层 | IP、ICMP 和 IGMP |
| 链路层 | 设备驱动程序及接口卡 |

(2)跨⽹段的主机的⽂件传输:数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路
由器

⑦网络通信流程
(1)应用程序收到用户输入,构造一个应用层的数据包(数据包遵循应用层的协议)
↓
(2)应用程序调用传输层提供的api,把数据交给传输层
传输层拿到数据后,把应用层的数据包打包成"传输层数据包"
传输层的协议一般有两个:TCP/UDP(以TCP为例)
TCP数据包=TCP报头+TCP载荷(应用层的数据包)

(3)传输层调用网络层的api,把数据包交给网络层
网络层继续处理,使用ip协议
IP数据包=IP报头+IP载荷(传输层)

(4)IP协议(传输层)继续调用数据链路层的api,把ip数据包交给数据链路层
数据链路层,核心协议是以太网,以太网继续加工
以太网数据包=报头+载荷+报尾
以太网 = 就是数据链路层的具体实现!
- 数据链路层 = 层的名字(抽象概念)
- 以太网 = 这一层用的具体协议(实际干活的)

(5)以太网(数据链路层)把数据包交给硬件设备(网卡)
网卡把上述二进制数据,最后以光信号/电信号/电磁波信号 传播出去
每个报头里会记录上一层用的是什么协议