“TCP/IP五层模型”与“数据包封装和分用”

为了方便交流,人类发明了语言,约定了每个汉字符号代表的意思。同理,为了机器之间的交流,我们也需要一些“约定”,我们称这些约定为“协议”。

在互联网中,所有的计算机都是由 路由器和交换机 连接到一起的。计算机之间的传输媒介是光信号和电信号。通过“频率”和“强弱”来表示 0 和 1 这样的信息。要想传递不同的信息,就需要约定好双方的数据格式。

1. OSI七层协议(物数网传会表应)
分层名称功能作用
应用层针对特定应用的协议针对每个应用的协议:
电子邮件(电子邮件协议),
远程登陆(远程登录协议)
表示层可确保一个系统的应用层所发送的信息
可以被另一个系统的应用层读取。

设备固有的数据格式和
网络标准数据格式的转化
会话层通过传输层建立数据传输的通路。
通信管理。负责建立和断开通信连接
(数据流动的逻辑通路)。管理传输层以下的分层
何时建立连接,何时断开连接?保持多久的连接?
传输层定义了传输数据的协议和端口号。如TCP和UDP。
管理两个节点之间的数据传输。
负责可靠传输(确保数据被可靠地传送到目标地址)
主要是将从下层接收的数据
进行分段和传输,
到达目的地后再进行重组,
常常把这一层数据叫做段
网络层在位于不同地理位置的网络中的
两个主机系统之间提供连接和路径选择。
即地址管理与路由选择
经过哪个路由传递到目标地址?
数据链路层定义了如何让格式化数据以帧为单位进行传输,
以及如何让控制对物理介质的访问。
这一层还提供错误检测与纠正,
以确保数据的可靠传输。
数据帧与比特流之间的转换
物理层主要定义物理设备标准。
如:网线的接口类型、
光纤的接口类型、
各种传输介质的传输速率等。
传输比特流,就是由“0”“1”转化为电路强弱来进行传输、
到达目的地后再转化为1,0。
也就是我们常说数模转换与模数转换,
这一层的数据叫做比特。
2.TCP/IP五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇,是常用的网络协议,所以要记住每一层及其含义。

TCP/IP协议通讯采用了5层的层级结构,每一层都呼叫它的下一层所提供的的网络来完成自己的需求。

分层名称描述设备常用协议
物理层负责光/电信号的传递方式,
比如现在以太网通用的网线(双绞线),
早期以太网采用的同轴电缆(现在主要用于有线电视),
光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。
物理层的能力决定了最大传输速率,传输距离,抗干扰性等。
集线器(Hub)工作在物理层硬件
数据链路层负责设备之间的数据帧的传送和识别。例如网卡设备的驱动,帧同步(就是说从网线上检测到什么信号算作新帧的开始),冲突检测(如果检测到冲突就自动重发),数据差错校验等工作交换机(Switch)以太网,令牌环网,无线LAN等标准
网络层负责地址管理和路由选择,例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)路由器(Router)ARP, IP, ICMP
传输层负责两台主机之间的数据传输,如传输控制协议(TCP),能够确保数据可靠地从源主机发送到目标主机TCP, UDP, UDP-Lite,
SCTP, DCCP
应用层负责应用程序之间沟通,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)DNS, URI,HTML,
HTTP,TLS/SSL,SMTP,
POP,IMAP,MIME,
TELNET,SSH,FTP,
SNMP,MIB,SIP,RIP,LDAP
3. 数据包封装和分用

我们已经了解到TCP/IP四层模型,那么数据在网络中到底是如何传输的呢?比如说A主机现在打算给B主机传输一条消息:“约吗?朋友”,我们直接把这条消息丢到网络中去传输,可以吗?当然是不行。因此我们就需要了解到数据报封装和分用的内容了。

  • 在不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在数据链路层叫做帧(frame)
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。
封装过程

在这里插入图片描述
如上图所示:应用层的一段数据,经过逻辑封装,TCP封装,IP封装,帧封装,然后从网卡出去;接收端则是逆过程。其中TCP及以下的封装,一般不需要我们自己动手,仅考虑应用层的封装即可。

对于应用层的封装来说,有两种方法:
1、设置Appl首部。“用户数据”就是你实际要发送的数据,比如我们打算发送一个字符串:”asdfgh”,Appl首部就是你自己设计的一个包结构,比如在Appl首部里面设计一个4个字节的int数据,用来表示后面内容的长度:那么当你发送”asdfgh”的时候,Appl首部里面就是这个字符串的长度6,接收端先接受4个字节,得到长度,再按照长度接受内容。
2、另一种方法是在用户数据末端加上“结束标志”,http协议就是这么干的,用**\r\n\r\n**表示一段内容结束(当然你也可以选择其他的特定字符作为结束标志)。那么当你发送”asdfgh”的时候,其实就是发送”asdfgh\r\n\r\n”,接收端接受数据,遇到\r\n\r\n结束接受一段数据。

分用过程

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值