本文开始针对网络基础概念进行探讨
1.IP地址
IP地址是标识网络一台设备所在的位置——用于定位主机的网络地址
例如 陕西省 西安市 临潼区 西安科技大学
2.端口号
一台主机可能有多个程序,同时使用网络
端口号 是用来区分一台主机上不同程序的——用于定位主机上的进程
3.认识协议
当程序已经收到数据了,程序如何理解数据的含义?
网络协议——通信双方对于发送/接受 数据格式的约定
协议 最终体现为 网络上传输的数据包的格式
网络通信中,协议非常关键——多个主机认同并遵守同一套协议,此时通信才是有意义的
例如 国内同胞 可以互相交流通信,是因为遵守同一套协议——中国话
相反 我们和外国人 无法交流 协议不同——语言不同
4.五元组
- 源IP——标识源主机
- 源端口号——标识源主机中该次通信发送数据的进程
- 目的IP——标识目的主机
- 目的端口号——标识目的主机该次通信接收数据的进程
- 协议类型——标识 发生进程和接收进程双方约定的数据格式
例如
相当于 A从甲地 到乙地 找B

5.协议分层
由于网络通信非常复杂
如果设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂,非常庞大
使用要把一个庞大的协议——拆分成 若干个 功能单一的协议
为了方便管理进行归类分层
什么是协议分层? 相当于打电话时,定义不同的层次的协议:
5.1分层:
- 只有相邻两层协议之间可以进行交互
- 上层协议可以调用下层协议
- 下层协议可以给上层协议提供服务
- 协议之间的交互,不能跨层进行
例如 跨级汇报是职场大忌
5.2封装
上层协议,不需要了解下层协议的细节
例如打电话的人 会说话就行了,不需要理解电话机的工作原理
5.3解耦
分层之后,灵活的替换其中某一层,对于整体的工作进程影响很小

真实的互联网,具体是怎么分层的呢?
OSI——七层网络模型

这一套分层的体系,只是存在于教科书上
由于体系太复杂了,实际真实的网络分层方式更简化——TCP/IP 五层(四层)协议模型
6.TCP/IP 五层(四层)协议模型(经典面试题)

网络层的传输是基于数据链路层的
网络层:你要把小纸条 传给教室里的同学A
先交给前排同学 告诉他 “传给A”
前排同学再交给别人 告诉他“传给A”
数据链路层的传输是基于物理层的
你和你的同桌传纸条
物理层相当于在修路
网络=>物流系统 要想富,先修路
6.1例1 在淘宝买衣服,商家发货
商家站在传输层的角度,关心包裹从哪来,到哪去
把包裹交给快递小哥(物流公司)
物流公司,则要考虑好 包裹如何一步一步 到达我的手里
6.2例2 买一箱卫生纸
- 我只关心卫生纸到货之后 如何使用——应用层
- 卖家关心 收件人信息——传输层
- 物流公司关心 包裹通过哪些路径运输(所有露出)——网络层
- 快递小哥/货车司机考虑 相邻的节点(一小段路程)——数据链路层
注意: 有时候会把数据链路层 物理层看成一个整体 物理层与硬件设备直接相关
所以读 TCP/IP 四层协议模型也是正确的

6.3经典面试题
真实情况的工作过程不太一样,真实的路由器交换机 功能更强大 更丰富
现在的交换机 很多都有路由器的功能
路由器也可以开启特殊模式(mesh) 可以实现“交换机”的效果
7.网络数据通信的基本流程
例如 我通过qq 给对方 发送hello
7.1应用程序获取到用户输入,构造一个应用层的数据包
这个应用层的数据包 就会遵守 应用层协议
应用层的数据包:一般是“结构化数据”(类似 c的结构体 有很多属性)

假设 此处的协议格式为:发送者qq号,接收者qq号,消息的时间,消息正文

7.2 应用程序调用 传输层 提供的接口(API) 把数据交给传输层
传输层拿到数据之后,构造出“传输层数据包”
传输层 协议主要是两个(此处以TCP为例)
- TCP
- UDP

TCP数据包=TCP报头(header) + TCP载荷(payload)
- TCP报头(header) ——TCP功能相关属性(包含源端口 目的端口)
- TCP载荷(payload)——应用层数据包
7.3传输层构造好数据之后,继续调用网络层的API,把传输层的数据包交给网络层
网络层继续进行处理
网络层最主要的协议——IP协议,IP协议继续对上述数据包继续加工=>拼上IP报头

IP数据包=IP报头+IP载荷
- IP载荷(整个传输层的数据包)
- IP报头也包含很多信息(源IP 目的IP)
IP协议/TCP协议 本身不关心载荷内容
协议类型,其实不只是一份数据,有很多层。
其中IP报头里就会记录当前的传输层使用的是哪个协议
传输层报头中,也会记录应用层使用哪个协议(准确来说是 数据交给哪个应用程序)
数据链路层报头也会记录,网络层使用哪个协议
7.4IP协议继续调用 数据链路层的API,把IP数据包交给数据链路层
数据链路层中,核心协议,“以太网”
以太网这个协议,也会在网络层数据包的基础上进一步加工

以太网数据帧=帧头+载荷+帧尾
7.5以太网继续把这样的数据交给硬件设备(网卡)
网卡会把上述二进制数据,最终以光信号/电信号/电磁波信号 传播出去了
此时数据终于出门了
从上层到下层,数据都要进一步加工(添加报头) 封装
接受方法是从下到上依次解析,分用 ——封装的逆过程
7.6相关术语
谈到网络传输的“基本数据单位” 涉及到多个术语
网络数据包/帧/报/段
- 段(segment)——TCP用的
- 报(Datagram)——UDP用的
- 包(packet)——IP用的
- 帧(frame)——数据链路层 以太网数据帧
7.6图示流程
7.6.1数据封装过程

7.6.2数据分用的过程

1276

被折叠的 条评论
为什么被折叠?



