网络协议入门:TCP/IP五层模型如何实现全球数据传输?

🔍 开发者资源导航 🔍
🏷️ 博客主页个人主页
📚 专栏订阅JavaEE全栈专栏

内容:

网络初识

什么是网络?

你有没有想过,我们每天依赖的互联网,最初是如何诞生的?

从两个设备间最简单的电流信号,到办公室里的局域网,再到如今覆盖全球的互联网------这条连接之路,远比我们想象的更精彩。

最初,工程师们只是想让两台计算机"对话",用简单的协议和物理线路传输数据;后来,随着设备增多,局域网(LAN)诞生了,让一个房间、一栋楼里的机器能彼此通信;而今天,TCP/IP协议族像一种"世界语",让地球任意角落的设备都能瞬间连接。

关键概念

路由器:连接各个网络节点的中转器。

交换机:一般的路由器只有两三个插口,交换机是路由器的扩展器,可以增加路由器的接口数量,相当于"插排"的作用。

ip地址:在网络中一台设备的所在位置,这个地址并不固定。

端口号:一个设备中可能有多个程序同时使用网络,端口号的作用就是用来区分谁是谁。

认识协议

网络协议是通信双方对于发送/接受数据格式的约定,我的数据怎么发,你就怎么来解析,只有双方同时遵守同一个协议,通信才是有意义的。

通信就好像是两个人在沟通,我只会汉语,你只会阿拉伯语,我们双方通过自己的语言解析收到的是一团乱码,彼此之间谁也听不懂谁在说什么,而如果我们约定使用同一个语言,我们直接的交流才是有意义的。

五元组

进行一次网络通信,涉及到五个非常关键的信息:源IP、 源端口、目的IP、目的端口、协议类型。

网络通过信息知道此次通信中:信息从哪里来,要到哪里去,用的什么格式进行传输。

协议分层

一个大的协议往往需要包含很多的内容,为了管理起来方便,通常会将一个大的协议拆成功能单一的小协议来进行管理。而再将这些协议按照功能划分,就可以得到分层的效果。

分层之后,只有两个相邻的层次之间可以进行交互,上次协议可以调用下层协议,下层协议为上层协议提供服务,协议之间不能夸层交互。

优点:

封装:上层协议不需要了解下层协议的内容,用到下一层时只需要调用接口即可。
解耦合:如果某一层需要替换或者修改,对其他层影响较小

OSI七层模型

OSI:即Open System Interconnection,开放系统互连。

OSI将网络协议从逻辑上分为了七层,但是因为这套分层体系太复杂了,因此只存在于教科书上。

TCP/IP五层(四层)协议模型

TCP/IP五层(四层)协议模型是上一个模型的简化版,实际中使用的的也较多。

在协议模型中越接近硬件部分、系统内核部分就越底层,越软件越高层。

按照从低到高该模型分为:

物理层:

物理层规定了网络通信中的一些硬件设备符合的要求,例如:网线、wifi、光纤等。

数据链路层:

完成两个相邻的设备之间如何进行通信,通过网线把设备连到路由器/交换机上。

先考虑一小步,把两个设备连起来,数据链路层是基于物理层实现的。

网络层:

两个任意的设备如何进行通信,这两个设备可能隔着很多个交换机和路由器。

网络层基于数据链路层实现。

传输层

任意两个设备之间的通信,不考虑中间过程,只看起点和终点。

应用层:

拿到包裹也就是传输信号后该怎么使用。

在应用时物理层我们考虑的⽐较少。因此很多时候会把数据链路层和物理层合在一起,也可以称为 TCP/IP四层模型。

各个设备涉及的层次

主机:物理层->应用层 通过应用程序满足通信要求。

路由器:物理层->网络层 组建局域网进行网络数据包的转发。

交换机:物理层->数据链路层 对路由器接口的扩展,不需要考虑组网的问题。

通信基本流程

传出数据

1.应用层

在获取用户的数据后,首先根据应用层的协议构造出一个应用层的数据包,应用层的协议往往是由程序员自己定义的,而这个数据也往往是结构化的数据,例如json格式的数据。

在发送和接受数据是要经过两个过程:

序列化: 把结构化的数据转换成二进制的比特流。

反序列化: 把二进制的比特流转换成结构化数据。

这么做的目的是为了数据可以进行传输,毕竟现在的数据传输都是二进制的嘛~

2.传输层

应用层将数据传递给传输层,传输层拿到数据之后,构造出"传输层数据包",传输层的协议主要是TCP以及UDP。

这里假设我们使用的是TCP协议~

TCP数据包 = TCP报头 + TCP载荷。

tcp报头包含源端口/目的端口以及其他很多信息,并且记录应用层使用的协议,而TCP载荷则是应用层传给它的数据包。

3.网络层

传输层传给网络层后,网络层接着对数据包进行处理,网络层使用的最主要的协议是IP协议,处理方式与上述类似,继续增添标签。

IP数据包 = IP报头 + IP载荷。

ip报头包含源ip/目的ip以及其他很多信息,并且记录传输层用的什么协议,IP载荷则是整个传输层的数据包。

4.数据链路层

数据链路层在网络层的基础上继续加工,该层主要的协议是"以太网"协议,和之前不同的是它不仅加了一个头还加了一个尾巴。

以太网数据帧 = 帧头 + 载荷 + 帧尾。

每个协议并不会关心他们的载荷,只需要添加标签即可,这也是协议分层的好处之一。

5.物理层

网卡将上述的二进制数据以各种信号的形式传播出去。

上述过程虽然复杂,但是对于计算机来说是一个极快的过程。

知识补充

上述的关键性名词并不严谨。

TCP数据使用的是段,UDP使用的是报,IP使用的是包,而以太网使用的是帧。

工作中并不会明确区分这些概念,混用即可。

传入数据

如果说传出数据是从上到下的一个封装过程,那么传入数据就是一个封装的逆向过程。

1.物理层

数据被传入到网卡,解析为二进制数据,并将其传入到数据链路层。

2.数据链路层

根据以太网协议进行解析,将帧头和帧尾取出,将剩下的载荷往上传递给网络层。

3.网络层

按照IP协议进行解析,取出IP报头,剩下的继续传递给传输层。

4.传输层

按照TCP协议进行解析,取出TCP报头,剩下的继续传递给应用层。

5.应用层

解析应用层数据拿到关键信息,将其展示到界面上。

上述提到过每一层的报头会记录其上一层使用的协议类型,因此拿到数据时可以知道用什么协议进行解析。


感谢各位的观看Thanks♪(・ω・)ノ,如果觉得满意的话留个关注再走吧。

相关推荐
天翼云开发者社区29 分钟前
WAAP对提升网站访问速度有什么作用?
网络
qq2439201611 小时前
搭建frp内网穿透
服务器·网络·运维开发
前进的程序员1 小时前
ZigBee 协议:开启物联网低功耗通信新时代
网络协议·zigbee
老六ip加速器1 小时前
不同电脑同一个网络ip地址一样吗?如何更改
网络·tcp/ip·电脑
IUings1 小时前
Window Server 2019--08 网络负载均衡与Web Farm
网络·虚拟机·windows服务器·vmvare·web负载均衡
小王努力学编程3 小时前
【Linux网络编程】传输层协议TCP,UDP
linux·网络·c++·udp·tcp
kyle~4 小时前
Linux---系统守护systemd(System Daemon)
linux·服务器·网络
奋斗者1号4 小时前
OpenSSL 签名格式全攻略:深入解析与应用要点
服务器·网络·web安全
邪恶的贝利亚4 小时前
万字详解RTR RTSP SDP RTCP
网络·sdp·rtsp·rtcp·rtr
车载诊断技术5 小时前
车载通信网络 --- 车载通信网络槪述
网络·汽车·车载通信网络·网关释放buffer的必要性·车载诊断概念·车载通信网络槪述