文章目录
为了方便交流,人类发明了语言,约定了每个汉字符号代表的意思。同理,为了机器之间的交流,我们也需要一些“约定”,我们称这些约定为“协议”。
在互联网中,所有的计算机都是由 路由器和交换机 连接到一起的。计算机之间的传输媒介是光信号和电信号。通过“频率”和“强弱”来表示 0 和 1 这样的信息。要想传递不同的信息,就需要约定好双方的数据格式。
OSI七层协议
分层名称 | 功能 | 每层功能概述 |
---|---|---|
应用层 | 针对特定应用的协议 | 针对每个应用的协议: 电子邮件(电子邮件协议), 远程登陆(远程登录协议) |
表示层 | 设备固有的数据格式和 网络标准数据格式的转化 | 接受不同表示形式的信息, 如文字流,图像等 |
会话层 | 通信管理。负责建立和断开通信连接 (数据流动的逻辑通路)。管理传输层以下的分层 | 何时建立连接,何时断开连接?保持多久的连接? |
传输层 | 管理两个节点之间的数据传输。 负责可靠传输(确保数据被可靠地传送到目标地址) | 是否有数据丢失? |
网络层 | 地址管理与路由选择 | 经过哪个路由传递到目标地址? |
数据链路层 | 互联设备之间传送和识别数据帧 | 数据帧与比特流之间的转换 |
物理层 | 以“0”“1”代表电压的高低,灯光的闪灭。 界定连接器和网线的规格 | 比特流与电子信号之间的转换 |
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 |
数据包封装和分用
- 在不同的协议层对数据包有不同的称谓,在传输层叫做段(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结束接受一段数据。