当前位置:网站首页>使用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)
买家收到货了,我们需要的东西可能被包了很多层,现在要一层一层拆。这个过程就是解包。
关于封装和解包的过程可以参考下面的博客。
边栏推荐
- Jmeter 5.5版本发布说明
- How to solve sqlstate[hy000]: General error: 1364 field 'xxxxx' doesn't have a default value error
- Redis(二)—Redis通用命令
- Abnova 膜蛋白脂蛋白体技术及类别展示
- Programmers' daily | daily anecdotes
- Developers don't miss it! Oar hacker marathon phase III chain oar track registration opens
- Markdown displays pictures side by side
- A program lets you understand what static inner classes, local inner classes, and anonymous inner classes are
- CloudCompare-点对选取
- Unity C# 函数笔记
猜你喜欢
途家、木鸟、美团……民宿暑期战事将起
Overview of FlexRay communication protocol
Redis (I) -- getting to know redis for the first time
Three updates to build applications for different types of devices | 2022 i/o key review
Can't you really do it when you are 35 years old?
「运维有小邓」符合GDPR的合规要求
MySQL installation
程序员的日常 | 每日趣闻
JWT certification
dolphinscheduler3. X local startup
随机推荐
一段程序让你明白什么静态内部类,局部内部类,匿名内部类
肿瘤免疫治疗研究丨ProSci LAG3抗体解决方案
缓存在高并发场景下的常见问题
String (explanation)
Array proof during st table preprocessing
FlexRay通信协议概述
C language interview to write a function to find the first occurrence of substring m in string n.
谷歌 Chrome 浏览器发布 103.0.5060.114 补丁修复 0-day 漏洞
Party A's requirements for those who have lost 800 yuan
怎样查找某个外文期刊的文献?
Redis(一)——初识Redis
反射(二)
博士申请 | 上海交通大学自然科学研究院洪亮教授招收深度学习方向博士生
docker-compose启动redis集群
Installing redis and windows extension method under win system
Abnova 体外转录 mRNA工作流程和加帽方法介绍
ETCD数据库源码分析——从raftNode的start函数说起
How can I check the DOI number of a foreign document?
C language sorting (to be updated)
"Parse" focalloss to solve the problem of data imbalance