1.概述
2. 五层协议
2.1 应用层
为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
2.2 运输层
提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。
运输层包括两种协议:
- 传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;
- 用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。
- TCP 主要提供完整性服务,UDP 主要提供及时性服务。
2.3 网络层
为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。
网络层把运输层传递下来的报文段或者用户数据报封装成分组。
2.4 数据链路层
网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供服务。
数据链路层把网络层传下来的分组封装成帧。
2.5 物理层
考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
3. OSI
其中表示层和会话层用途如下:
3.1 表示层
数据压缩、加密以及数据描述,这使得应用程序不必担心在各台主机中数据内部格式不同的问题。
3.2 会话层
建立及管理会话。
五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
4. TCP/IP
只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占用举足轻重的地位。
5. 数据在各层之间的传递过程
在向下的过程中,需要添加下层协议所需要的首部或者尾部;
而在向上的过程中不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。
5.1 物理层
5.1.1 通信方式
根据信息在传输线上的传送方向,分为以下三种通信方式:
- 单工通信:单向传输
- 半双工通信:双向交替传输
- 全双工通信:双向同时传输
5.1.2 带通调制
模拟信号是连续的信号,数字信号是离散的信号。
带通调制把数字信号转换为模拟信号。
5.2 数据链路层
基本问题
5.2.1. 封装成帧
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
5.2.2. 透明传输
透明表示一个实际存在的事物看起来好像不存在一样。
帧使用首部和尾部进行定界。
- 如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。
- 需要在数据部分出现首部尾部相同的内容前面插入转义字符。
- 如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。
- 在接收端进行处理之后可以还原出原始数据。
这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
5.2.3 差错检测
目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。
5.2.4 相关概念
信道分类、信道复用技术、CSMA/CD 协议、PPP 协议、MAC 地址、局域网、以太网、交换机、虚拟局域网
5.3 网络层
5.3.1 概述
因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。
网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
5.3.2 与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制报文协议 ICMP(Internet Control Message Protocol)
- 网际组管理协议 IGMP(Internet Group Management Protocol)
5.3.3 IP 数据报格式
- 版本 : 有 4(IPv4) 和 6(IPv6) 两个值;
- 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
- 区分服务 : 用来获得更好的服务,一般情况下不使用。
- 总长度 : 包括首部长度和数据部分长度。
- 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
- 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
- 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
- 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
- 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
数据报分片举例:
5.3.4 IP 地址编址方式
IP 地址的编址方式经历了三个历史阶段:
5.3.5 相关概念
路由器
5.4 运输层
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。
运输层提供了进程间的逻辑通信,运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个运输层实体之间有一条端到端的逻辑通信信道。
5.4.1 UDP 和 TCP 的特点
- 用户数据报协议 UDP(User Datagram Protocol): 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部) ,支持一对一、一对多、多对一和多对多的交互通信。
- 传输控制协议 TCP(Transmission Control Protocol): 是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块) ,每一条 TCP连接只能是点对点的(一对一)。
5.5 应用层
5.5.1 相关概念
- 域名系统DNS
- 文件传送协议FTP
- 动态主机配置协议DHCP
- 远程登录协议TELNET
- 电子邮件协议(SMTP/POP3/IMAP)
- 常用端口