当前位置:网站首页>使用TCP/IP四层模型进行网络传输的基本流程
使用TCP/IP四层模型进行网络传输的基本流程
2022-07-07 02:18:00 【abs(ln(1+NaN))】
OSI七层模型将网络从逻辑上分成了7层,最主要的功能是实现了两台不同主机的通信。实际上OSI七层模型并不实用,我们一般使用其中的四层或者五层协议,四层的说法是 单纯的从软件方面来谈,我们需要了解四层,但是软件又是基于硬件,所以又有了五层的说法。
下面左半部分是七层模型,右半部分是四层模型,我们把这四层称为“TCP/IP五层(四层)模型”。这四层与计算机体系结构也有着一定的对应关系
目录
一、什么是协议
所谓的协议就是一种约定,一个宿舍有来自不同地方的人,如果大家只是各说各的方言,那根本无法沟通,此时有一个人提出建议,大家都说普通话,达成这个约定以后,大家就可以正常通信了。
站在网络的角度,在传输层有TCP和UDP协议,这个约定的是选择有连接传输还是无连接传输。
二、TCP/IP五层(四层)模型
TCP/IP是一组协议的代名词,你可以理解为几乎每一层都有自己的协议。
- 应用层:负责应用程序之间的沟通,如简单电子邮件传输协议(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)。
- 传输层:决定两台主机之间以什么样的方式进行的数据传输,如传输控制协议(TCP)。
- 网络层:负责地址管理和路由选择。可以理解为要走哪条路来传输数据到对方主机。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规 划出两台主机之间的数据传输的线路。路由器工作在该层。
- 数据链路层:负责设备之间的数据帧的传送和识别。例如冲突检测(如果检测到冲突,就自动重发)、数据差错校验等工作。交换机工作在数据链路层。
- 物理层:负责光/电信号的传递方式。我们常说的同轴电缆、光纤、wifi都属于该层的内容。可以简单理解为物理层的大多数内容都是有实体的。物理层决定了最大传输速率、抗干扰性等。集线器工作在物理层(将数据放大,降低数据损耗)。
三、网络传输的基本流程
你或许觉得,依然有点晦涩难懂,下面就以一个简单的例子来熟悉上面各层的作用,同时对网络传输有一个初步的了解。
网络传输可以看作是卖家和买家的关系,假设你从淘宝上买了一瓶洗发水,那么主机A的应用层就相当于卖家,主机B的应用层就相当于买家。
1、卖家(主机A)
(1) 应用层
卖家把洗发水装到盒子里,这个过程就相当于应用层给数据加上一个数据首部,这个首部包含了首部的长度、载荷的长度、上层协议是什么等信息。其实就相当于放到产品盒子里,产品盒子上有产品的质量、生产日期等信息。
应用层相当于OS中的用户,不管数据如何发送、以及数据如何送达。只负责处理应用程序的细节。
(2) 传输层
商品来到快递站以后,快递站要给商品贴上快递单,快递单上有发货地址。这个过程其实就相当于传输层又给数据加了一个数据首部。
这之后呢?那就是决定要发哪家快递了。传输层相当于OS的内核部分,通信方面的细节就是在这里,还有下一层的网络层决定的。传输层就是决定了数据的传输方式,是TCP还是UDP。
(3) 网络层
既然决定了发哪家快递,下面就要决定路线了。这一层同样要加一个首部。
网络层决定了数据的传输路线。
(4) 数据链路层
快递在路上了,假设现在到了南京,南京的快递站就会把你发给下一站浙江。数据链路层决定的是中转站传递数据这个过程。
2、买家(主机B)
买家收到货了,我们需要的东西可能被包了很多层,现在要一层一层拆。这个过程就是解包。
关于封装和解包的过程可以参考下面的博客。
边栏推荐
- How to keep accounts of expenses in life
- 雷特智能家居龙海祁:从专业调光到全宅智能,20年专注成就专业
- UIC (configuration UI Engineering) public file library adds 7 industry materials
- 哈趣投影黑马之姿,仅用半年强势突围千元投影仪市场!
- 如何解决数据库插入数据显示SQLSTATE[HY000]: General error: 1364 Field ‘xxxxx‘ doesn‘t have a default value错误
- Abnova 膜蛋白脂蛋白体技术及类别展示
- tkinter窗口选择pcd文件并显示点云(open3d)
- 微信小程序隐藏video标签的进度条组件
- dolphinscheduler3. X local startup
- JMeter function assistant - random value, random string, fixed value random extraction
猜你喜欢
反射(二)
Handling hardfault in RT thread
Programmers' daily | daily anecdotes
BindingException 异常(报错)处理
dolphinscheduler3.x本地启动
Redhat5 installing vmware tools under virtual machine
How to install swoole under window
Test the foundation of development, and teach you to prepare for a fully functional web platform environment
Learning notes | data Xiaobai uses dataease to make a large data screen
Unable to debug screen program with serial port
随机推荐
Developers don't miss it! Oar hacker marathon phase III chain oar track registration opens
程序员的日常 | 每日趣闻
ETCD数据库源码分析——从raftNode的start函数说起
Redis(一)——初识Redis
js装饰器@decorator学习笔记
A program lets you understand what static inner classes, local inner classes, and anonymous inner classes are
[opencv] morphological filtering (2): open operation, morphological gradient, top hat, black hat
直击2022ECDC萤石云开发者大会:携手千百行业加速智能升级
Which foreign language periodicals are famous in geology?
Problems and precautions about using data pumps (expdp, impdp) to export and import large capacity tables in Oracle migration
Apache ab 压力测试
mobx 知识点集合案例(快速入门)
Crudini profile editing tool
ICML 2022 | 探索语言模型的最佳架构和训练方法
安装VMmare时候提示hyper-v / device defender 侧通道安全性
JMeter function assistant - random value, random string, fixed value random extraction
Unity C# 函数笔记
Unable to debug screen program with serial port
How to solve sqlstate[hy000]: General error: 1364 field 'xxxxx' doesn't have a default value error
Handling hardfault in RT thread